Je m'intéresse au système d'entités basé sur les composants depuis un certain temps, et j'ai lu d'innombrables articles dessus (Les jeux Insomiac , le joli standard Evolve Your Hierarchy , la T-Machine , Chronoclast ... pour n'en nommer que quelques-uns).
Ils semblent tous avoir une structure à l'extérieur de quelque chose comme:
Entity e = Entity.Create();
e.AddComponent(RenderComponent, ...);
//do lots of stuff
e.GetComponent<PositionComponent>(...).SetPos(4, 5, 6);
Et si vous apportez l'idée de données partagées (c'est le meilleur design que j'ai vu jusqu'à présent, en termes de ne pas dupliquer les données partout)
e.GetProperty<string>("Name").Value = "blah";
Oui, c'est très efficace. Cependant, ce n'est pas exactement le plus facile à lire ou à écrire; il se sent très maladroit et travaille contre vous.
J'aimerais personnellement faire quelque chose comme:
e.SetPosition(4, 5, 6);
e.Name = "Blah";
Bien que, bien sûr, le seul moyen d'accéder à ce type de conception soit de retour dans le type de hiérarchie Entity-> NPC-> Enemy-> FlyingEnemy-> FlyingEnemyWithAHatOn que cette conception essaie d'éviter.
Quelqu'un a-t-il vu une conception pour ce type de système de composants qui est toujours flexible, tout en conservant un niveau de convivialité? Et d'ailleurs, parvient-il à contourner le stockage de données (probablement le problème le plus difficile) dans le bon sens?
Quelles conceptions existe-t-il pour un système d'entités basé sur des composants qui soit convivial mais toujours flexible?