Conception d'ECS

a marqué ce sujet comme résolu.

Bonjour,

Je m’intéresse depuis quelques temps aux Entity Component System et, bien qu’il me semble avoir compris le principe général, j’ai encore une ou deux questions avant de me lancer dans ma propre implémentation.

  • J’ai un CollisionSystem qui gère toutes les entités contenant un PhysicComponent ET un LocationComponent (en gros le système gère les collisions pour les entités soumises à la physique et qui ont une position). Supposons maintenant que certaines entités créent des chocs mous (sans rebond) et d’autre des chocs élastiques (avec rebonds) lorse qu’elles se collisionnent. Préconiseriez-vous d’avoir 2 PhysicComponent différents (ElasticPhysicComponent et SoftPhysicComponent) ou de rajouter une variable booléenne bool isElastic; à mon PhysicComponent ?
  • Autre cas qui me tracasse particulièrement : Les systèmes d’intelligence artificielle. Il n’est pas rare dans un jeu d’avoir plusieurs ennemis différents qui peuvent chacun avoir leur propre IA. Si je prend l’exemple d’un petit RPG avec des archers et des soldats, leur IA ne sera certainement pas la même, les premiers cherchant à s’éloigner et à se mettre à couvert pour tirer à l’abri alors que les seconds foncent dans le tas. Comment feriez-vous dans ce cas? Un IAComponent pour chaque type d’IA différent? Et pour le système, feriez-vous un système par IAComponent ou un seul qui gère tous les types d’IA?

Notez que j’ai essayé de prendre des exemples pas trop tirés par les cheveux mais ça reste perfectible :)

Merci d’avoir pris le temps de me lire (et même éventuellement de répondre :D )

+0 -0

1) je te préconise de faire 2 entités differentes car les rigid body et les softs body n'ont absolument pas le meme comportement et ils vont necessiter des parametres différents et propres. 2) la plupart du temps les IA sont gérées par scripting (lua, python, etc) et non pas hard codées dans le system. Ca permet plus de flexibilité. A ce moment le system aura plutot le role d'aller appeler le script correspondant a l'unité ;)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte