Bravo pour cette explication du paradigme entity/system.
Je me suis intéressé aussi à ça il y a quelques semaines. J'ai donc regardé ton code rapidement (à l'époque j'ai regardé attentivement entityx).
J'ai quelques remarques d'ordre techniques :
Je n'aime pas trop le fait de devoir spécifier l'id unique de chaque composant (static const es::ComponentType type = 3;), dans entityx, il utilise un système d'attribut statique qui dépend d'un template.
Effectivement au sens strict une entité est juste un entier (j'ai eu du mal à comprendre pourquoi on ne stocke pas les composants directement dans entité, c'est en manipulant le concept que c'est devenu très clair : une entité est une structure abstraite et légère que l'on manipule entre les systèmes.), cependant, moi j'ai envie de manipuler les composants des entités comme cela par exemple :
Entity e = createEntity();
e.assign();
Dernier point, une des caractéristique intéressante en C++11 est les pointeurs partagés, je pense que ce serait pas mal de les utiliser dans ton code.
# quelques remarques
Posté par petux . En réponse à la dépêche Je crée mon jeu vidéo E01 : les systèmes à entités. Évalué à 2.
Bravo pour cette explication du paradigme entity/system.
Je me suis intéressé aussi à ça il y a quelques semaines. J'ai donc regardé ton code rapidement (à l'époque j'ai regardé attentivement entityx).
J'ai quelques remarques d'ordre techniques :
Je n'aime pas trop le fait de devoir spécifier l'id unique de chaque composant (static const es::ComponentType type = 3;), dans entityx, il utilise un système d'attribut statique qui dépend d'un template.
Effectivement au sens strict une entité est juste un entier (j'ai eu du mal à comprendre pourquoi on ne stocke pas les composants directement dans entité, c'est en manipulant le concept que c'est devenu très clair : une entité est une structure abstraite et légère que l'on manipule entre les systèmes.), cependant, moi j'ai envie de manipuler les composants des entités comme cela par exemple :
Entity e = createEntity();
e.assign();
Dernier point, une des caractéristique intéressante en C++11 est les pointeurs partagés, je pense que ce serait pas mal de les utiliser dans ton code.