🪢 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, qui forment alors 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

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. Alors que dans Unity un GameObject est une sorte de coquille vide dans laquelle on va venir 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 vient dicter son rôle. Par exemple :

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

Le fait que les noeuds soient organisés en arborescence, signifie qu’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 naviguée en utilisant des chemins un peu comme pour les fichiers.

Soit l’arbre de noeuds suivant:

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

À la racine de l’arbre du jeu se trouve toujours un noeud spécial appelé root (présent sur les figures précédentes), accessible via le chemin absolu /root, il s’agit de 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 va se faire relativement à son parent. Par exemple, le positionnement des enfants va se faire relativement au repère découlant de la transformation du parent.

Autres spécificités

L’arborescence détermine également plusieurs autres aspects du comportement des noeuds tels que 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, qui sont étroitement liées aux noeuds : une scène c’est une collection de noeuds. C’est un arbre de noeuds configurés d’une certaine façon, que l’on enregistre dans un fichier.

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 donc 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 venir former des arborescences plus complexes. Ce processus s’appelle l’instanciation de scènes.

Arbre composé d’instances de scènes

En fait, une scène c’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 qu’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 :

Les scènes Godot sont différentes des scènes Unity. Elles ressemblent davantage au concept de Prefabs.

Voici un exemple d’une scène représentant un joueur. Sa racine est un noeud de type CharacterBody2D qui est 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 :