Description de l'architecture
Je crée (conçois) un système d'entités et j'ai rencontré de nombreux problèmes. J'essaie de le garder axé sur les données et efficace autant que possible. Mes composants sont des structures POD (tableau d'octets pour être précis) allouées dans des pools homogènes. Chaque pool a un ComponentDescriptor - il contient juste le nom du composant, les types de champ et les noms de champ.
L'entité n'est qu'un pointeur vers un tableau de composants (où l'adresse agit comme un ID d'entité). EntityPrototype contient le nom de l'entité et un tableau de noms de composants. Enfin le sous-système (système ou processeur) qui fonctionne sur les pools de composants.
Problème réel
Le problème est que certains composants dépendent d'autres (Model, Sprite, PhysicalBody, Animation dépend du composant Transform) ce qui pose beaucoup de problèmes pour les traiter.
For example, lets define some entities using [S]prite, [P]hysicalBody and [H]ealth:
Tank: Transform, Sprite, PhysicalBody
BgTree: Transform, Sprite
House: Transform, Sprite, Health
and create 4 Tanks, 5 BgTrees and 2 Houses and my pools will look like:
TTTTTTTTTTT // Transform pool
SSSSSSSSSSS // Sprite pool
PPPP // PhysicalBody pool
HH // Health component
Il n'y a aucun moyen de les traiter à l'aide d'indices. Je passe 3 jours à travailler dessus et je n'ai toujours pas d'idées. Dans les conceptions précédentes, TransformComponent était lié à l'entité - mais ce n'était pas une bonne idée. Pouvez-vous me donner quelques conseils sur la façon de les traiter? Ou peut-être devrais-je changer la conception globale? Je devrais peut-être créer des pools d'entités (pools de pools de composants) - mais je suppose que ce sera un cauchemar pour les caches CPU.
Merci