Construction de l’Entity Component System

Actuellement on est devant plusieurs problématiques, comment construire des entités configurables à souhait ? Comment intégrer des fonctionnalités aussi simplement qu’en ajoutant une configuration ? D’ailleurs comment ajouter ou retirer une fonctionnalité d’une entité en jeu ? Comment rendre une entité polymorphe ?

Les Component ou Composants sont la réponse et en fait tout le pattern Entity Component System est la réponse.
Le fonctionnement est simple, une Entity au départ doit être un objet vide auquel on va lui coller des Components pour lui donner des fonctionnalités via les Systems
Par exemple on voudrait dessiner un Rectangle Rouge, de grandeur 50×50, à une position x -> 5 et y -> 5 et on voudrait qu’il bouge dans une certaine direction. Tout ça est composable avec :

  • Composant Size : qui donne une hauteur et une largeur
  • Composant Position : qui donne deux points x et y pour une position sur le plan 2D, on pourrait rajouter un point Z pour rendre la position 3D
  • Composant RenderRectangle : qui comprend une configuration concernant sa couleur et pourquoi pas une donnée sur une éventuelle bordure (on pourrait aussi en faire un composant).
  • Composant Speed: donne deux points x et y pour exprimer une vitesse par seconde sur l’axe X et l’axe Y.

Tous ces composants inclus dans l’entité seront analysés et seront utilisés par les systèmes qui en ont besoin. Par exemple, le composant Speed pourrait être utilisé par un Move System qui serait fait pour mouvoir l’entité dans le plan. Le Pattern ECS donne vraiment BEAUCOUP de possibilités !

Lire l’article en entier