🪢 Les Noeuds & 🎬 Les Scènes

🪢 Les Noeuds

Les noeuds (ou nodes en anglais) sont les briques de base servant Ă  construire un jeu dans Godot.

Ces noeuds sont organisés en arborescence, et forment ensemble les différentes entités et systèmes du jeu. En somme, un jeu Godot, c’est un arbre de noeuds.

Illustration d’un arbre de noeuds
📝 Note

Les noeuds sont similaires aux GameObjects dans Unity, dans le sens où les deux sont utilisés pour composer des arborescences.

La grande différence, c’est que dans Godot un noeud a un type : il est quelque chose. Il dispose directement d’un ensemble de propriétés et de comportements.

Dans Unity, un GameObject est plutĂ´t une sorte de conteneur vide auquel on vient attacher des composants.

Typage

Comme évoqué ci-dessus, les noeuds sont typés, et chaque type de noeud vient avec son ensemble de propriétés et de comportements. Le type d’un noeud dicte son rôle. Par exemple :

📌 Important

Le typage des noeuds suit le principe de polymorphisme par héritage : un type de noeud hérite forcément d’un autre, à l’exception du type de base Node.

Par exemple : Sprite2D ⊂ Node2D ⊂ CanvasItem ⊂ Node

Naturellement, un type de noeud hérite des propriétés et des fonctionnalités fournies par ses super-types.

Arborescence

Les noeuds étant organisés en arborescence, ils forment une hiérarchie parent-enfant.
Chaque noeud (sauf la racine) possède un parent, et peut lui-même avoir des enfants.

Cette organisation vient avec plusieurs spécificités.

Chemins

Tout d’abord, la structure peut être parcourue en utilisant des chemins, un peu comme pour les fichiers.

🔥 Exemple

Soit l’arbre de noeuds suivant :

  World
  └─ Player
     ├─ Collision
     └─ Body
        └─ Hat
📝 Note

À la racine de l’arbre du jeu se trouve toujours un noeud spécial appelé root (présent sur les figures précédentes).
Il est accessible via le chemin absolu /root et correspond Ă  la fenĂŞtre du jeu.

Transformations hiérarchiques

La structure d’arbre apporte une deuxième caractéristique essentielle : la gestion des transformations hiérarchiques pour les noeuds 2D et 3D.

Illustration des transformations hiérarchiques

La transformation de chaque noeud se fait relativement Ă  son parent.
Par exemple, le positionnement des enfants se fait relativement au repère issu de la transformation du parent : si le parent se déplace, tourne ou change d’échelle, ses enfants suivent le mouvement.

Autres spécificités

L’arborescence détermine également d’autres aspects du comportement des noeuds, comme l’ordre d’exécution et la propagation des événements.
Ces spécificités seront explorées durant le workshop.

🎬 Les Scènes

Le deuxième concept fondamental de Godot, ce sont les scènes, étroitement liées aux noeuds : une scène, c’est une collection de noeuds.

C’est un arbre de noeuds configuré d’une certaine façon, que l’on enregistre dans un fichier (d’extension .tscn ou .scn).

📝 Note

Une scène possède toujours un noeud racine, qui est le parent de tous les autres noeuds de cette scène.

Une scène peut représenter un joueur, un ennemi, un niveau ou tout autre élément du jeu. C’est à nous de définir le niveau de granularité.

Les scènes ont vocation à être composées ensemble pour former des arborescences plus complexes.

Ce processus s’appelle l’instanciation de scènes.

Arbre composé d’instances de scènes
📝 Note

En fait, une scène est le « plan » de construction d’un arbre de noeuds.
À l’exécution du jeu, il n’y a plus de scènes à proprement parler, mais une unique arborescence de noeuds, composée de différents sous-arbres pouvant être des instances de scènes.

En pratique, ce système permet :

⚠️ Attention

Les scènes Godot sont différentes des scènes Unity. Elles sont plutôt comparables aux Prefabs.

🔥 Exemple

Voici un exemple de scène représentant un joueur.
Sa racine est un noeud de type CharacterBody2D, un corps physique destiné à être contrôlé par l’utilisateur.

Capture d’écran de l’éditeur

Parmi les noeuds enfants, on peut notamment trouver :

On identifie aussi des instances d’autres scènes :