Je suis en train de repenser mon système d'entité , pour C ++, et j'ai beaucoup de gestionnaires. Dans ma conception, j'ai ces classes, afin de lier ma bibliothèque. J'ai entendu beaucoup de mauvaises choses en ce qui concerne les classes "manager", peut-être que je ne nomme pas mes classes de manière appropriée. Cependant, je n'ai aucune idée quoi d'autre pour les nommer.
La plupart des gestionnaires, dans ma bibliothèque, sont composés de ces classes (bien que cela varie un peu):
- Conteneur - un conteneur pour les objets dans le gestionnaire
- Attributs - attributs pour les objets dans le gestionnaire
Dans mon nouveau design pour ma bibliothèque, j'ai ces classes spécifiques, afin de lier ma bibliothèque ensemble.
ComponentManager - gère les composants dans le système d'entité
- ComponentContainer
- ComponentAttributes
- Scène * - une référence à une scène (voir ci-dessous)
SystemManager - gère les systèmes dans le système d'entité
- SystemContainer
- Scène * - une référence à une scène (voir ci-dessous)
EntityManager - gère les entités dans le système d'entités
- EntityPool - un pool d'entités
- EntityAttributes - attributs d'une entité (cela ne sera accessible qu'aux classes ComponentContainer et System)
- Scène * - une référence à une scène (voir ci-dessous)
Scène - relie tous les managers
- ComponentManager
- SystemManager
- EntityManager
Je pensais simplement mettre tous les conteneurs / pools dans la classe Scene elle-même.
c'est à dire
Au lieu de cela:
Scene scene; // create a Scene
// NOTE:
// I technically could wrap this line in a createEntity() call in the Scene class
Entity entity = scene.getEntityManager().getPool().create();
Ce serait ceci:
Scene scene; // create a Scene
Entity entity = scene.getEntityPool().create();
Mais je ne suis pas sûr. Si je devais faire ce dernier, cela signifierait que beaucoup d'objets et de méthodes seraient déclarés dans ma classe Scene.
REMARQUES:
- Un système d'entités est simplement une conception utilisée pour les jeux. Il est composé de 3 parties principales: composants, entités et systèmes. Les composants sont simplement des données, qui peuvent être "ajoutées" aux entités, afin que les entités soient distinctives. Une entité est représentée par un entier. Les systèmes contiennent la logique d'une entité, avec des composants spécifiques.
- La raison pour laquelle je modifie la conception de ma bibliothèque, c'est parce que je pense qu'elle peut être beaucoup modifiée, je n'aime pas le toucher / le flux pour le moment.