Développement d'un moteur de jeu
Je prévois un jeu vidéo et son moteur. Il y aura un monde en 3 dimensions avec une vue à la première personne et ce sera pour le moment en solo. Le langage de programmation est C ++ et il utilise OpenGL.
Décision de conception centrée sur les données
Ma décision de conception est d'utiliser une architecture centrée sur les données où il y a un gestionnaire d'événements global et un gestionnaire de données global . Il existe de nombreux composants comme la physique, l'entrée, le son, le rendu, l'IA, ... Chaque composant peut déclencher et écouter des événements . De plus, chaque composant peut lire, éditer, créer et supprimer des données .
La question concerne le gestionnaire de données.
Utiliser ou non une base de données relationnelle
Dois-je utiliser une base de données SQL, par exemple SQLite ou MySQL, pour stocker les données du jeu? Celui-ci contient pratiquement tout le contenu du jeu comme des objets, des personnages, des inventaires, ... À l'exception des maillages et des textures qui sont encore plus liés aux performances, je les garderai donc en mémoire.
Une base de données SQL est-elle assez rapide pour l'utiliser pour lire et écrire des informations de jeu en temps réel, comme la position d'un personnage en mouvement? Je dois également me soucier de la compatibilité multiplateforme. En plus de tout garder en mémoire, quelles alternatives ai-je?
Les avantages seraient
Les avantages d'utiliser une base de données relationnelle comme MySQL seraient la structure orientée données qui permet un calcul rapide. Je n'aurais pas besoin d'objets pour représenter des entités. Je pouvais facilement interroger les données d'objets proches du lecteur nécessaires au rendu. Et je n'ai pas à me soucier des données d'objets éloignés. De plus, il n'y aurait pas besoin de sauvegardes car l'état du jeu de trous est enregistré dans la base de données. Enfin, étendre le jeu à un jeu en ligne serait relativement facile car il existe déjà un endroit où l'état du jeu de trous est stocké.