Je travaille sur un jeu multijoueur en temps réel qui nécessitera une base de données (pour des fonctionnalités telles que les profils des joueurs, les amis, les déverrouillages, les actualités, etc.) Il s'agit d'un jeu PC standard (non basé sur un navigateur) et utilisera un client-serveur architecture. Je suis novice dans l'utilisation des bases de données et j'ai fait des recherches au cours des derniers jours lorsque je suis tombé sur un débat houleux: RDBMS vs NoSQL. Actuellement, je penche pour NoSQL, mais après avoir lu les utilisations de chacun (RDBMS et NoSQL), je suis tenté d'utiliser les deux. Je sais que cela peut sembler étrange, mais permettez-moi d'expliquer ma situation:
Mon équipe a un package d'hébergement Web partagé qui offre un stockage et une bande passante mySQL illimités, la seule mise en garde étant que nous ne pouvons avoir que 25 connexions ouvertes en même temps (règle d'hébergement partagé). J'ai l'intention de l'utiliser pour mon site Web (une utilisation typique sans aucun doute) afin de publier des mises à jour de nouvelles, de prendre en charge les fonctionnalités de la communauté (comme les commentaires, le téléchargement de fan art, etc.) et autres. C'est très bien et bon - mais! c'est là que les choses deviennent intéressantes ... Je veux afficher ces mêmes informations qui sont affichées sur mon site Web, dans le jeu. Cela signifie utiliser mySQL pour mon site Web et mon jeu. En plus des articles de presse et autres, je prévois de l'utiliser dans le jeu pour des choses comme le chat et une liste de serveurs. Je m'inquiète principalement de cette règle des 25 connexions.
Ce qui m'amène à poser la question n ° 1: cela fonctionnera-t-il et existe-t-il une meilleure alternative?
Maintenant, en plus de cela, j'ai lu à quel point NoSQL fonctionne bien et convient aux jeux en temps réel (je peux me tromper, j'ai traversé une énorme guerre de flammes RDBMS vs NoSQL pour arriver ici et je suis probablement brûlé). Fondamentalement, je voudrais utiliser MongoDB pour toutes mes données d'objet de jeu.
Et encore une fois, il sera utile de fournir un certain contexte: j'ai trouvé un hôte (MongoLab) qui propose gratuitement un paquet MongoDB de 240 Mo, que j'ai l'intention d'utiliser jusqu'à ce qu'il soit nécessaire de mettre à niveau. Compte tenu de 240 Mo, j'ai calculé que je serais en mesure de stocker environ 60 000 joueurs (si chaque joueur fait environ 4 Ko et que nous ignorons les autres éléments qui pourraient être stockés). L'espace de stockage, et devoir payer plus cher à l'avenir (si notre jeu réussit) n'est pas un problème. La seule raison pour laquelle j'ai actuellement l'intention d'utiliser MongoDB pour toutes mes données d'objet de jeu est la fréquence à laquelle ces données d'objet de jeu seront consultées (par exemple, lorsqu'un joueur est tué, ramasse un objet, tire une arme à feu, etc.) I comme les documents simples sans schéma (qui facilitent la cartographie des données d'objets de jeu). Je dois noter qu'à un moment donné,
J'ai l'intention d'utiliser le même MongoDB dans mon site Web, pour afficher les informations de profil du joueur (je ne suis pas concerné par la cohérence complète, un certain retard par rapport aux mises à jour en jeu est très bien). Ce qui m'amène à ma deuxième question, question n ° 2: est-ce une bonne idée ou y a-t-il quelque chose de mieux que je devrais faire?
Le jeu aura une expérience de démarrage similaire à celle-ci:
- Le client se connecte (MongoDB)
- Le client se trouve sur la page d'accueil du jeu avec des salles de discussion (MySQL)
- Le client accède à la liste des serveurs (MySQL)
Le client se connecte à un serveur et y joue
Le serveur communique les mises à jour pour tous les joueurs (MongoDB)
C'est juste la façon dont j'imaginais que cela fonctionnerait. Cela vous semble-t-il bien ou avez-vous des suggestions sur la façon dont ce plan peut être amélioré?