Sites


Utiliser Godot Game Engine 3.0

Les nodes et les scènes

Dans Godot, on retrouve de nombreux types d’éléments structurés qui aident dans l’organisation de son jeu. Les nodes et les scènes sont les plus importants, en plus d’être un moyen de définir comment les éléments se mélangent. Ils sont accessibles par l’utilisateur via l’option de l'interface qui aide n’importe quel contributeur à travailler sur son domaine de compétence sans avoir la moindre connaissance en programmation.

Il s’agit du panneau Scène. Nous verrons ultérieurement que chaque ressource peut être considérée comme une scène qui contiendra sa structure. Godot repose lui-même sur ce principe d’héritage de ressources qui permet une meilleur réutilisation des éléments dont les scripts et les assets.

Les nodes

Les nodes sont très commun dans diverses technologies de logiciels. Le plus connu d’entre eux reste le langage XML, sur lequel le langage HTML est basé.

Le principe des nodes est simple, à la manière d’une boite dans une boite dans une boite… :

  • Vous avez un premier élément appelé root. Cet élément peut avoir des propriétés, comme sa position.
  • Dans cet élément, vous en rajouterez. Ils seront alors considérés comme des enfants du premier élément, qui devient alors un parent. Dans la plupart des cas, les enfants héritent des propriétés de leurs parents mais peuvent aussi avoir les leurs. Dans notre cas, la position de l’enfant par défaut sera la même que son parent mais peut aussi être modifié indépendamment. Définir si une propriété peut ou non être modifiée est un choix de design.
  • En outre, ces nodes enfants peuvent avoir leurs propres enfants et ainsi de suite. A la fin, cela peut résulter à une organisation complexe mais structurée.

Dans l’éditeur, le panneau Scène affiche l’arborescence de node de la scène actuelle. Pour aider le designer dans la production du jeu, les développeurs de Godot ont créée des nodes spécialisés qui ont des propriétés et des méthodes spécifiques. Par exemple, vous avez le node Sprite pour ajouter une simple image, ou bien le node AnimatedSprite pour ajouter une série d’image lues successivement pouvant être utilisé pour une animation ; vous avez aussi le node SamplePlayer pour jouer des effets sonores, mais aussi SpacialSamplePlayer un résultat semblable, mais en prenant en compte la position 3D du joueur ou de la caméra dans le jeu.

Certains nodes sont spécifiques aux jeux 2D tandis que d’autres sont pensé pour la 3D. Bref, vous verrez à l’utilisation qu’une bonne connaissance des nodes sera nécessaire

Pourquoi tout cela ? justement pour nous faciliter la tâche car chaque type de nœud vient avec des  propriétés toutes prêtes  et ces dernières peuvent aisément être modifiés depuis l’interface de l’éditeur, ou au runtime via les scripts, ce qui accélère grandement le processus de production. Les nodes de Godot peuvent être vus comme des objets de jeu prédéfinis que vous n’avez pas à programmer « from scratch » (de zéro). Combiner les nodes est un moyen de créer des mécaniques de jeu complexes à partir de simples objets de base. Godot comprend une grande quantité de types de nodes ; évidement, cela prend du temps d’apprendre comment se servir que chacun d’entres eux, mais la plupart des jeux ne nécessitent qu’une poignée d’entre eux.

Les propriétés des nodes peuvent être définis ainsi :

  • Un node possède des propriétés éditables relatif à son type,
  • Un node a un nom qui peut être utilisé comme identifiant,
  • Un node se place dans une arborescence de nodes (node tree) et est l’enfant d’un parent (sauf pour le node root) et une quantité illimitée d’enfants,
  • Un node est extensible (via le script ou l’arborescence),
  • Un node est scriptable (peut contenir un script et en appliquer les effets).

Pour la plupart d’entre nous, la difficulté dans l’apprentissage des node réside dans la prise de décisions : comment composer son arborescence pour objectif le résultat escompté ? Toutes ces décisions devraient d’abord être pensées lors du game design du jeu puis implémentées dans Godot. Pour cela, Il est préférable d’aborder sous l’angle des assets. Certains types d’assets ne vont pas correctement fonctionner ensembles car ils ne sont pas pensés pour, idem pour les nodes en eux-mêmes, la manière dont votre arborescence sera construite influera sur le résultat final (par exemple, la position sur un layer d’un Sprite sera définis par son placement dans l’arborescence par rapport aux autres Sprites). En revanche, Godot est très flexible et permet d’atteindre un même résultat avec des méthodes différentes et ci cela peut paraitre intimidant, il ne faut cependant pas hésitez à essayer des combinaisons simples qui fonctionnes pour vous pour les retravailler plus tard. Apprendre en faisant reste de loin le plus efficace.

Les scènes

Si combiner les nodes représente la partie la plus importante du développement du jeu sur Godot, pourquoi avons-nous besoin de scènes ?

En fait, aussi puissant le système de node soit-il, on atteint rapidement l’indigestion. Placer des nodes dans des nodes dans des nodes amène rapidement à une arborescence complexe. On risque de se perdre dans son propre projet. C’est là que les scènes interviennent !

Les scènes vont alors être un moyen de simplifier son arborescence. Dans Godot, une scène n’est pas un endroit ou un niveau ou des choses se déroulent. Il s’agit simplement d’une combinaison de nodes sauvegardé sur le disque dont nous allons nous servir pour diviser les éléments de notre jeu en plus petites partie (comme un joueur, un ennemi). Plus ces parties sont petites, plus simple sera leur organisation. Par exemple, la préparation d’un asset, prenons un PNJ, peut être une scène.

Les scènes peuvent êtres décrites ainsi :

  • Une scène est un fichier .scn (binary) .xscn ou .xml.
  • Une scène peut être instanciée dans d’autres scènes.
  • Une scène contient des nodes qui compose l’arborescence du jeu.

Le fait que la scène soit un fichier est intéressant car cela permet aussi de créer des scènes directement à partir d’autres outils comme Gimp, Inskscape ou Krita. Sur ce sujet, reportez vous aux scripts créé par Cédric Gémy, d’Activdesign et Activstudio.

En quelques sortes, nous divisons l’arborescence de nodes en listes de node et en scènes instanciées. Cette liste est très pratique pour s’organiser et, au final, le jeu ressemblera plus à une arborescence de scènes composée comme celle des nodes. En fait, lancer son jeu correspond à lancer la scène principale définis dans les préférences du projet. et celle-ci ira importer les autres en fonction de la structure que nous aurons définie

Le plus gros avantage à utiliser ces scènes est le gain de performance. Puisque les scènes sont instanciables, les performances d’exécution seront améliorées car l’utilisation de la mémoire sera moindre. Evidemment, il s’agit d’une approche d’optimisation de base, mais si cela n’est pas fait à ce stade, il sera difficile de l’améliorer par la suite. Les scènes sont la principale ressource que nous allons utiliser pour configurer le jeu et elles valent la peine d’apprendre à les utiliser.

Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.

Vous devriez rafraîchir la page.