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 Entités

Maintenant, comprenons le concept d'une Entité dans Cave. Les entités sont les objets de base dans une scène Cave.

Si une scène est un niveau, un menu ou un espace de test, les entités sont les choses qui existent à l'intérieur de cet espace. Par exemple, un joueur, un ennemi, une porte, une lumière, une caméra, un déclencheur, un bouton d'interface utilisateur, une source sonore et un dossier peuvent tous être des entités.

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

  • Noms.
  • IDs.
  • État actif.
  • Parenté.
  • Dossiers.
  • Ordre hiérarchique.
  • Étiquettes et propriétés.
  • Instances de modèle.

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

Qu'est-ce qu'une Entité ?

Une Entité est un objet dans une scène.

Une entité peut représenter :

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

image.png

Par exemple, un caisson est une entité visible. Un point de respawn peut être invisible pendant le gameplay, mais c'est toujours une entité car il marque où quelque chose doit se produire.

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

Les Entités sont des Conteneurs de Composants

Les entités ne font pas grand-chose seules, leurs fonctionnalités proviennent des composants. Par exemple :

Entité Composants Qu'elle Peut Avoir
Caisson Transform, Mesh, Rigid Body.
Joueur Transform, Character, Camera, Python, Audio.
Porte Transform, Mesh, Rigid Body, Logic Bricks.
Torche Transform, Mesh, Light, Audio.
Bouton Transform, UI Element, Logic Bricks ou Python.
---

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

Quand vous comprenez cela, la construction d'objets devient plus pratique. Vous cessez de demander "quel type d'objet ai-je besoin ?" et commencez à demander "quels composants cette entité a-t-elle besoin ?"

Noms des Entités

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

Il convient de mentionner que les noms sont d'abord destinés aux humains :

  • Ils rendent le Scene Graph plus facile à parcourir.
  • Ils facilitent le débogage.
  • Ils facilitent la communication à propos des objets avec des coéquipiers.
  • Ils vous aident à comprendre votre propre scène plus tard.

Cave ne nécessite pas que chaque nom d'entité soit unique. Plusieurs entités peuvent partager le même nom, ce qui est utile pour des objets répétés tels que des rochers, des pièces, des caissons ou des ennemis.

Cependant, ne considérez pas le nom comme le seul identifiant fiable d'une entité.

De bons noms sont simples et descriptifs :

Nom Faible Meilleur Nom
Mesh Caisson en Bois
Empty Point de Départ Joueur
Light Lumière d'Entrée de la Caverne
Folder Groupe d'Ennemis

L'objectif n'est pas de rendre les noms élégants. L'objectif est de rendre la scène lisible.

Les noms des entités peuvent également être utilisés dans le code pour référencer une entité spécifique de votre scène, mais puisque vous savez déjà que plusieurs entités peuvent avoir le même nom, vous devriez également être conscient que si vous référencez une entité par son nom, s'il y a plusieurs entités avec ce nom, cela peut entraîner un comportement indéfini car vous n'avez pas de garantie sur l'entité que la scène retournera pour ce nom. Elle retournera la première qu'elle trouve en recherchant votre requête. Donc, s'il est important pour vous d'obtenir un objet spécifique par le code, comme le joueur, assurez-vous de lui donner un nom unique.

IDs des Entités

Cave suit les entités en interne avec des IDs uniques.

Vous n'avez généralement pas besoin de modifier ou de vous inquiéter de ces IDs. Ils existent pour que le moteur puisse identifier les entités de manière fiable, même lorsque les noms sont répétées. En fait, les IDs uniques sont immuables, ce qui signifie que vous ne pouvez pas les changer. Ils sont automatiquement attribués par le moteur.

Rappelez-vous cela :

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

Si deux ennemis sont tous deux nommés Enemy, Cave peut toujours les distinguer en coulisse.

État Actif de l'Entité

Les entités peuvent être actives ou inactives.

image.png

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

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

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

  • Rendu.
  • Physique.
  • Logique.
  • Mises à jour en temps réel.
  • Comportement des composants.

Une entité désactivée n'aura aucune mise à jour de ses composants appelée en tout temps, et au moment où vous désactivez une entité, cela appellera également la méthode de fin du composant, et lorsque vous la réactivez, elle appellera la méthode de début du composant.

Vous pouvez supposer en toute sécurité qu'une entité désactivée ne contribuera pas aux calculs physiques de la scène, à la logique, aux déclencheurs, etc. À moins que vous ne interrogiez manuellement ces entités depuis la scène et ignoriez le fait qu'elles sont désactivées, bien sûr.

L'idée pratique est simple : inactif signifie "gardé ici, mais ne participant pas actuellement."

Désactiver vs Supprimer

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

Action Résultat
Désactiver Garde l'entité dans la scène, mais l'éteint.
Supprimer Supprime l'entité de la scène.

Désactivez une entité lorsque vous pourriez vouloir l'utiliser à nouveau plus tard. Supprimez une entité lorsque vous êtes sûr qu'elle doit être supprimée.

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

Parenté des Entités

Les entités peuvent être parentées à d'autres entités.

Lorsqu'une entité a un parent, elle devient partie de la hiérarchie de ce parent. Si vous déplacez le parent, les enfants se déplacent 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 accessoires organisés sous un dossier.
  • Des éléments d'interface utilisateur regroupés sous un panneau parent.

La parenté affecte également les transformations. La transformation d'une entité enfant est évaluée par rapport à la hiérarchie parentale.

C'est l'un des moyens les plus simples de garder des objets liés ensemble.

Entités Dossier

Les entités dossier sont utilisées pour l'organisation. Elles sont particulièrement utiles lorsque votre scène commence à contenir de nombreux objets.

Par définition, ce qui fait qu'une entité est un dossier est essentiellement l'absence de composants en elle, notamment un Transform et un UI Element, car si une entité n'a pas de transform dans le monde et n'a pas d'élément UI, elle sera probablement utilisée comme un dossier. Mais c'est surtout une convention de nommage, alors gardez cela à l'esprit.

Les groupes de dossiers communs incluent :

  • Environnement.
  • Déclencheurs de gameplay.
  • Ennemis.
  • Accessoires.
  • Éclairage.
  • UI.
  • Audio.
  • Aides au débogage.

Les dossiers ne concernent pas seulement la propreté. Un Scene Graph propre vous aide à travailler plus vite parce que vous pouvez trouver l'objet dont vous avez besoin sans chercher à travers des centaines d'entités disparates.

Ordre de Hiérarchie des Entités

L'ordre des entités dans le Scene Graph a son importance pour l'organisation, et dans certains cas, cela peut importe pour la manière dont les choses sont traitées ou affichées.

Si vous ouvrez un dossier et voyez la structure ci-dessous, c'est plus difficile à parcourir :

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

Mais ceci est plus facile :

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

L'objectif n'est pas de rendre la hiérarchie élégante, mais de la rendre utile.

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

Remarque importante ici : en raison de la façon dont le moteur optimise son graph interne de scène, l'ordre d'apparition des entités au niveau supérieur, c'est-à-dire les entités qui n'ont pas de parent, sera aléatoire, mais les entités enfants, les enfants, peuvent avoir un ordre spécifique, et vous pouvez l'organiser en faisant un clic droit sur chaque entité individuelle dans l'éditeur et en la déplaçant vers le haut ou le bas ou vers le haut ou le bas.

Propriétés et Étiquettes des Entités

Les entités peuvent stocker des propriétés et des étiquettes personnalisées.

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

Par exemple, un ennemi pourrait avoir :

  • Une étiquette Endommageable.
  • Une propriété santé.
  • Une propriété équipe.
  • Une propriété rayonPatrouille.

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

Un système de dommages pourrait rechercher des entités avec l'étiquette Endommageable. Un script d'ennemi pourrait lire rayonPatrouille pour décider jusqu'où l'ennemi peut errer.

Les propriétés et les étiquettes vous permettent d'attacher un sens au gameplay à une entité sans avoir besoin d'un composant spécial pour chaque petit morceau de données.

Les étiquettes sont plus rapides à interroger que les propriétés, donc elles sont mieux adaptées, par exemple, pour identifier une entité qui peut subir des dommages ou qui est un ennemi, etc. Mais elles ne portent pas de valeur en elles-mêmes. Une propriété est plus lente à interroger, mais vous pouvez ajouter une valeur. En termes de codage, les propriétés des entités sont littéralement des dictionnaires Python.

Prévisualisation des Modèles d'Entités

Certaines entités sont des instances de Modèles d'Entités. Le Joueur que vous trouverez dans le Projet Cave par défaut, par exemple, est une instance de ce modèle ici :

image.png

Les instances de modèle sont affichées différemment dans le Scene Graph, utilisant la couleur de modèle de Cave. Cela vous aide à reconnaître que l'entité provient d'un actif de modèle réutilisable.

Lorsque qu'une entité est une instance de modèle :

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

La leçon suivante explique les Modèles d'Entité plus en détail.

Le Modèle Mental de l'Entité

Pensez à une entité 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 composants définissent ce qu'elle fait.
  • Les propriétés et les tags décrivent des données supplémentaires sur le gameplay.

C'est le cœur de la construction de scènes dans Cave.

Une fois que les entités sont claires, le Graphique de Scène devient bien plus qu'une liste d'objets. Il devient la structure de votre monde de jeu.