Je travaille sur des projets de loisirs depuis 3 ou 4 ans. Des jeux 2D et 3D simples. Mais dernièrement, j'ai commencé un plus grand projet. Au cours des deux derniers mois, j'ai essayé de concevoir une classe d'objets de jeu qui peut être la base de tous mes objets de jeu. Donc, après de nombreux essais, je me suis tourné vers Google, ce qui m'a rapidement indiqué certains PDF GDC et PowerPoints. Et maintenant, j'essaie de saisir les objets de jeu basés sur des composants.
Je comprends que le moteur crée un objet de jeu et attache ensuite différents composants qui gèrent des choses comme la santé, la physique, le réseautage et tout ce que vous leur faites faire. Mais ce que je ne comprends pas, c'est comment le composant X sait si Y a changé l'état de l'objet. Comme comment le Composant Physique sait-il si le joueur est vivant, parce que la santé est contrôlée par le Composant Santé ..? Et comment le HealthComponent joue-t-il "l'animation du joueur décédé"?
J'avais l'impression que c'était quelque chose comme ça (dans le HealthComponent):
if(Health < 0) {
AnimationComponent.PlayAnimation("played-died-animation")
}
Mais là encore, comment le HealthComponent sait-il que l'objet de jeu auquel il est attaché a un AnimationComponent attaché? La seule solution que je vois ici est
Vérifiez si un composant d'animation est attaché ou non (à l'intérieur du code du composant ou du côté moteur)
Avoir des composants nécessite d'autres composants, mais cela semble combattre toute la conception des composants.
Écrivez comme, HealthWithAnimationComponent, HealthNoAnimationComponent, et ainsi de suite, ce qui semble encore une fois lutter contre toute l'idée de conception des composants.