Diluer l’ECS


Commission: Mad Scientist by Culpeo-Fox on DeviantArt

Dans cet article, je décrirai grossièrement le modèle ECS et mon implémentation dans le Flame Steel Engine Game Toolkit. Le modèle Entity Component System est utilisé dans les jeux, incl. sur le moteur Unity. Chaque objet du jeu est une essence remplie de composants.  Pourquoi est-ce nécessaire s’il y a de la POO ?
Puis de modifier les propriétés, le comportement, l’affichage des objets directement pendant le déroulement du jeu. De telles choses ne se trouvent pas dans les applications du monde réel ; la dynamique de modification des paramètres, des propriétés des objets, de l’affichage et du son est plus caractéristique des jeux que des logiciels de comptabilité.


Nous n’avons pas passé de bananes

Disons que nous avons un cours de banane dans notre jeu. Et le concepteur du jeu voulait que les bananes soient utilisées comme armes. Disons que dans l’architecture actuelle, les bananes n’ont rien à voir avec les armes. Faire d’une banane une arme ? Fabriquer tous les objets comme des armes ?
ECS propose une solution à ce problème urgent : Tous les objets du jeu doivent être constitués de composants. Auparavant, Banana était la classe Banana, nous allons maintenant la créer, ainsi que tous les autres objets, la classe Entity, en leur ajoutant des composants. Disons qu’une banane se compose désormais des composants suivants :

  1. Composant de position (coordonnées dans le monde du jeu : x, y, z)
  2. Composant de rotation (coordonnées x, y, z)
  3. Composant calorique d’une banane (le personnage principal ne doit pas trop grossir)
  4. Composant image banane

Nous ajoutons maintenant un nouveau composant pour toutes les bananes, qui est un indicateur indiquant qu’elles peuvent être utilisées comme une arme – ; Composant d’arme. Désormais, lorsque le système de jeu voit qu’un joueur s’est approché d’une banane, il vérifie la présence d’un composant d’arme sur la banane, et si c’est le cas, il arme le joueur avec une banane.
Dans mon jeu Flame Steel Call Of The Death Mask, le motif ECS est utilisé partout. Les objets sont constitués de composants et les composants eux-mêmes peuvent contenir des composants. En général, diviser l’objet < – > le composant manque dans mon implémentation, mais c’est même un plus.

screenshot_2016-09-24_14-33-43

Le fusil de chasse dans cette capture d’écran est un composant du joueur, et en même temps, le deuxième fusil de chasse est simplement suspendu sur la carte du jeu comme un objet ordinaire.
Dans cette capture d’écran, deux systèmes sont en cours d’exécution : moteur de rendu de scène et moteur de rendu d’interface. Le moteur de rendu de scène fonctionne avec le composant d’image de fusil de chasse sur la carte, le moteur de rendu d’interface fonctionne avec le composant d’image de fusil de chasse dans les mains du joueur.

Liens connexes :
https://habrahabr.ru/post/197920/
https://www.youtube.com/watch?v=NTWSeQtHZ9M

Leave a Comment

Your email address will not be published. Required fields are marked *