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

Des Entités à la Scène (Partie 2)

Dans la partie précédente, nous avons vu comment créer et gérer des Entités, maintenant, dans cette deuxième partie nous allons voir comment intégrer tout ça dans une scène et gérer plusieurs scènes en même temps.

Une Scene est donc un objet possédant un manager d’entités, son rôle est d’être un accès à ce manager et doit pouvoir également être mis en différentes couche avec d’autres scène via un SceneManager (qu’on codera plus bas).

La Scene étant utilisée comme couche de dessin, on doit pouvoir la contrôler en lui définissant un état, qu’elle soit visible ou non selon nos besoin. Prenons l’exemple d’un menu de jeu. Quand vous êtes en jeu et que vous appuyez sur la touche échappe en général un menu apparaît.
Parfois même on peut voir le jeu continuer à tourner en arrière plan, c’est ce que la scène permet, entre autre, de faire.

Lire l’article en entier

Des Entités à la Scène (partie 1)

Scène de théâtre, par Pietro Longhi (vers 1780) – Wikipédia.

Quand on regarde une image, ou plus précisément un dessin, une photo, une peinture, on y voit toujours l’expression de quelque chose. Un sentiment, une explication logique, un moment, des émotions, etc…
En général l’artiste place ses éléments sur sa scène et cherche à montrer et exprimer quelque chose. Le peintre ou le dessinateur créeront des personnages dans une posture précises, employant des couleurs et/ou des formes choisies précisément, un photographe attendra le bon moment, la bonne expression ou choisira un angle de vue bien précis pour laisser apparaître ce qu’il veut montrer ou exprimer.

Placer et montrer des éléments, montrer des expressions, des couleurs, des formes, parler au spectateur pour transmettre une information, voilà ce qu’est une scène pour moi.

Dans notre cas, notre toile c’est Canvas, notre scène sera une classe Scene et ses éléments seront des entités rassemblées dans un tableau.

Lire l’article en entier