Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

Comprendre les Entities

Comprenons maintenant le concept d'Entity dans Cave. Les entities sont les objets de base à l'intérieur d'une scène Cave.

Si une scène est un niveau, un menu ou un espace de test, les entities sont les choses qui existent dans cet espace. Par exemple, un joueur, un ennemi, une porte, une lumière, une caméra, un déclencheur, un bouton UI, une source sonore, et un dossier peuvent tous être des entities.

Dans cette leçon, vous apprendrez à propos de :

  • Les noms.
  • Les IDs.
  • L'état actif.
  • La hiérarchie parent-enfant.
  • Les dossiers.
  • L'ordre hiérarchique.
  • Les tags et propriétés.
  • Les instances de template.

Ces détails peuvent sembler mineurs, mais font une grande différence lorsque la scène passe de quelques objets à un vrai niveau.

Qu'est-ce qu'une Entity ?

Une Entity est un objet dans une scène.

Une entity peut représenter :

  • Un objet 3D visible.
  • Un assistant invisible.
  • Un déclencheur de gameplay.
  • Un élément UI.
  • Une source sonore.
  • Ou simplement un dossier utilisé pour l'organisation.

image.png

Par exemple, une caisse est une entity visible. Un point d'apparition peut être invisible lors du gameplay, mais reste une entity car il marque un emplacement où quelque chose doit se produire.

Cave garde cette idée simple : les scènes sont construites à partir d'entities.

Les Entities sont des conteneurs de composants

Les entities ne font pas grand-chose seules, leurs fonctions viennent des composants. Par exemple :

Entity Composants qu'elle peut avoir
Caisse Transform, Mesh, Rigidbody.
Joueur Transform, Character, Camera, Python, Audio.
Porte Transform, Mesh, Rigidbody, Logic Bricks.
Torche Transform, Mesh, Light, Audio.
Bouton Transform, UI Element, Logic Bricks ou Python.
---

C'est pourquoi les entities sont flexibles. Une porte n'est pas un type d'objet codé en dur totalement séparé. C'est une entity constituée de pièces : un mesh pour la voir, une collision pour bloquer le joueur, et une logique pour ouvrir ou fermer.

Lorsque vous comprenez cela, la création d'objets devient plus pratique. Vous arrêtez de demander « quel type d'objet ai-je besoin ? » et commencez à demander « quels composants cette entity doit-elle avoir ? »

Noms des Entities

Chaque entity a un nom. Vous pouvez renommer une entity depuis son menu d'édition rapide dans le Scene Graph ou depuis l'onglet Properties.

Il est important de noter que les noms sont d'abord pour les humains :

  • Ils facilitent la lecture du Scene Graph.
  • Ils facilitent le débogage.
  • Ils facilitent la communication des objets avec les coéquipiers.
  • Ils vous aident à comprendre votre scène plus tard.

Cave ne requiert pas que chaque nom d'entity soit unique. Plusieurs entities peuvent partager le même nom, ce qui est utile pour des objets répétés comme des rochers, pièces, caisses ou ennemis.

Cependant, ne considérez pas le nom comme l'identifiant unique fiable d'une entity.

Les bons noms sont simples et descriptifs :

Nom faible Nom meilleur
Mesh Caisse en Bois
Empty Départ Joueur
Light Lumière Entrée de Cave
Folder Groupe Ennemi

Le but n'est pas de rendre les noms sophistiqués. Le but est de rendre la scène lisible.

Les noms d'entity peuvent aussi être utilisés dans le code pour référencer une entity spécifique dans votre scène, mais puisque vous savez déjà que plusieurs entities peuvent avoir le même nom, vous devez aussi être conscient que si vous référez une entity par son nom, et qu'il y a plusieurs entities avec ce nom, cela peut entraîner un comportement indéfini car vous n'avez pas de garantie sur l'entity renvoyée par la scène pour ce nom. Elle renverra la première trouvée lors de la recherche. Donc, si c'est important pour vous d'obtenir un objet spécifique par code, comme le joueur, assurez-vous de lui donner un nom unique.

IDs des Entities

Cave suit les entities en interne avec des IDs uniques.

Vous n'avez généralement pas besoin de modifier ou vous préoccuper de ces IDs. Ils existent pour que le moteur puisse identifier les entities de manière fiable, même quand les noms sont dupliqués. En fait, les IDs uniques sont immuables, ce qui signifie que vous ne pouvez pas les changer. Ils sont attribués automatiquement par le moteur.

Retenez ceci :

Élément But
Nom Vous aide à lire la scène.
ID Aide Cave à suivre l'objet en interne.

Si deux ennemis s'appellent tous deux Enemy, Cave peut toujours les différencier en interne.

État actif des Entities

Les entities peuvent être actives ou inactives.

image.png

Dans le Scene Graph et l'onglet Properties, cela est montré par un contrôle actif style œil.

État Signification
Actif L'entity participe normalement à la scène.
Inactif L'entity reste dans la scène, mais est désactivée.

Selon l'entity et ses composants, la désactivation peut affecter :

  • Le rendu.
  • La physique.
  • La logique.
  • Les mises à jour à l'exécution.
  • Le comportement des composants.

Une entity désactivée ne verra aucun appel de mise à jour de ses composants, et dès que vous désactivez une entity, la méthode end du composant est appelée, et quand vous la réactivez, la méthode start est appelée.

Vous pouvez supposer en toute sécurité qu'une entity désactivée ne contribue pas aux calculs physiques, à la logique, aux déclencheurs, etc. Sauf si vous interrogez manuellement ces entities dans la scène et ignorez leur état désactivé, bien sûr.

L'idée pratique est simple : inactif signifie « gardé ici, mais ne participe pas actuellement. »

Désactivation vs Suppression

Désactiver et supprimer ne sont pas la même chose.

Action Résultat
Désactiver L'entity reste dans la scène, mais est éteinte.
Supprimer L'entity est retirée de la scène.

Désactivez une entity si vous pourriez en avoir besoin plus tard. Supprimez une entity lorsque vous êtes sûr qu'elle doit être retirée.

Pour les tests, désactiver est souvent plus sûr. Si une rencontre d'ennemis est trop difficile, désactivez quelques ennemis d'abord et testez le niveau. Si le changement vous convient, vous pouvez nettoyer la scène plus tard.

Hiérarchie parent-enfant des Entities

Les entities peuvent être rattachées en parenté à d'autres entities.

Quand une entity a un parent, elle fait partie de la hiérarchie de ce parent. Si vous déplacez le parent, les enfants bougent avec lui.

La parenté est utile pour :

  • Une épée attachée à un personnage.
  • Une lumière attachée à une torche.
  • Une caméra attachée à un véhicule.
  • Un groupe de décors organisé sous un dossier.
  • Des éléments UI regroupés sous un panneau parent.

La parenté affecte aussi les transforms. Le transform d'une entity enfant est évalué relativement à la hiérarchie parente.

C'est une des façons les plus simples de garder des objets liés ensemble.

Entities dossier

Les entities dossier servent à l'organisation. Elles sont particulièrement utiles quand votre scène commence à contenir beaucoup d'objets.

Par définition, ce qui fait d'une entity un dossier est essentiellement l'absence de composants, en particulier un Transform et un UI Element, car si une entity n'a pas de transform dans le monde et pas d'élément UI, elle est probablement utilisée comme un dossier. Mais c'est surtout une convention de nommage, gardez cela en tête.

Parmi les groupes de dossiers courants on trouve :

  • Environnement.
  • Déclencheurs de gameplay.
  • Ennemis.
  • Décors.
  • Éclairage.
  • UI.
  • Audio.
  • Assistants de débogage.

Les dossiers ne sont pas que pour la propreté. Un Scene Graph propre vous aide à travailler plus vite car vous trouvez rapidement l'objet dont vous avez besoin sans fouiller dans des centaines d'entities éparses.

Ordre hiérarchique des Entities

L'ordre des entities dans le Scene Graph importe pour l'organisation, et dans certains cas il peut influencer comment les choses sont traitées ou affichées.

Si vous ouvrez un dossier et voyez la structure suivante, elle est plus difficile à parcourir :

Caisse
Joueur
Lumière
Ennemi
Caméra
Roche
Déclencheur

Mais celle-ci est plus facile :

Joueur
Caméra
Éclairage
Ennemis
Environnement
Déclencheurs de gameplay

Le but n'est pas de rendre la hiérarchie sophistiquée, mais utile.

Si vous pouvez ouvrir une scène après une semaine d'absence et comprendre immédiatement où sont les objets importants, votre hiérarchie fait son travail.

Note importante ici : du fait de la façon dont le moteur optimise son scene graph interne, l'ordre d'apparition des entities au premier niveau, c'est-à-dire celles sans parent, sera aléatoire, mais les enfants peuvent avoir un ordre défini, que vous pouvez organiser en faisant un clic droit sur chaque entity dans l'éditeur et en la déplaçant vers le haut, le bas, le début ou la fin.

Propriétés et Tags des Entities

Les entities peuvent stocker des propriétés personnalisées et des tags.

Fonctionnalité But
Propriété Stocke une valeur éditable.
Tag Ajoute une étiquette utilisée pour l'identification ou le regroupement.

Par exemple, un ennemi pourrait avoir :

  • Un tag Damageable.
  • Une propriété health.
  • Une propriété team.
  • Une propriété patrolRadius.

Les scripts et la logique peuvent utiliser ces données pour prendre des décisions.

Un système de dégâts pourrait rechercher les entities avec le tag Damageable. Un script ennemi pourrait lire patrolRadius pour décider jusqu'où l'ennemi peut se déplacer.

Propriétés et tags permettent d'ajouter un sens gameplay à une entity sans nécessiter un composant spécifique pour chaque petite donnée.

Les tags sont plus rapides à interroger que les propriétés, donc ils sont plus adaptés pour identifier une entity pouvant recevoir des dégâts ou étant un ennemi, etc. Mais ils ne contiennent aucune valeur. Une propriété est plus lente à interroger, mais elle porte une valeur. En termes de code, les propriétés d'entity sont littéralement des dictionnaires Python.

Aperçu d'une instance de Entity Template

Certaines entities sont des instances de Entity Templates. Le joueur que vous trouverez dans le projet par défaut de Cave, par exemple, est une instance de ce template ici :

image.png

Les instances de template sont affichées différemment dans le Scene Graph, en utilisant la couleur du template de Cave. Cela vous aide à reconnaître qu'une entity provient d'un asset template réutilisable.

Quand une entity est une instance de template :

  • Ses enfants internes appartiennent au template.
  • L'instance placée appartient à la scène.
  • La structure du template est modifiée en ouvrant l'asset template.
  • Les valeurs locales peuvent toujours être ajustées lorsqu'elles sont exposées en tant que propriétés.

La prochaine leçon explique les Entity Templates plus en détail.

Le modèle mental de l'Entity

Pensez à une entity comme à un petit conteneur :

  • Le nom vous aide à la comprendre.
  • L’ID aide Cave à la suivre.
  • L’état actif contrôle sa participation.
  • Le parent contrôle où elle appartient.
  • Les components définissent ce qu’elle fait.
  • Les propriétés et tags décrivent des données de gameplay supplémentaires.

C'est le cœur de la création de scènes dans Cave.

Une fois que les entities prennent sens, le Scene Graph devient bien plus qu'une liste d’objets. Il devient la structure de votre monde de jeu.