Application des principes orientés objet dans Godot

Le moteur offre deux principaux moyens de créer des objets réutilisables : les scripts et les scènes. Aucun de ces deux moyens ne définit techniquement des classes sous le capot.

Néanmoins, de nombreuses bonnes pratiques d'utilisation de Godot impliquent l'application des principes de la programmation orientée objet aux scripts et aux scènes qui composent votre jeu. C'est pourquoi il est utile de comprendre comment nous pouvons les considérer comme des classes.

Ce guide explique brièvement le fonctionnement des scripts et des scènes dans le noyau du moteur pour vous aider à comprendre comment ils fonctionnent sous le capot.

Comment les scripts fonctionnent dans le moteur

Le moteur fournit des classes intégrées comme Node. Vous pouvez les étendre pour créer des types dérivés à l'aide d'un script.

Ces scripts ne sont pas techniquement des classes. Au lieu de cela, ce sont des ressources qui indiquent au moteur une séquence d’initialisations à effectuer sur l’une des classes intégrées du moteur.

Les classes internes de Godot ont des méthodes qui enregistrent les données d'une classe avec un ClassDB. Cette base de données fournit un accès runtime aux informations de classe. ClassDB contient des informations sur les classes comme :

  • Propriétés.
  • Méthodes.
  • Constantes.
  • Signaux.

Ce ClassDB est ce que les objets vérifient quand ils exécutent une opération comme accéder à une propriété ou appeler une méthode. Il vérifie les enregistrements de la base de données et les enregistrements des types de base de l'objet pour voir si l'objet supporte l'opération.

Attacher un Script à votre objet étend les méthodes, propriétés et signaux disponibles à partir de ClassDB.

Note

Même les scripts qui n'utilisent pas le mot-clé extends héritent implicitement de la classe de base du moteur Reference. En conséquence, vous pouvez instancier des scripts sans le mot-clé extends du code. Mais comme ils étendent de Reference, vous ne pouvez pas les attacher à une classe Node.

Les scènes

Le comportement des scènes présente de nombreuses similitudes avec les classes, il peut donc être logique de considérer une scène comme une classe. Les scènes sont des groupes de nœuds réutilisables, instanciables et héritables. Créer une scène est similaire à avoir un script qui crée des nœuds et les ajoute comme des enfants en utilisant add_child().

Nous couplons souvent une scène avec un nœud racine scripté qui utilise les nœuds de la scène. En tant que telle, la scène est souvent une extension du code déclaratif du script.

Le contenu d'une scène aide à définir :

  • Quels nœuds sont disponibles pour le script
  • Comment ils sont organisés
  • Comment ils sont initialisés
  • Quelles connections signal elles ont, les une avec les autres

Pourquoi l'organisation de la scène est-elle si importante ? Parce que les instances de scènes sont des objets. Par conséquent, de nombreux principes orientés objet qui s'appliquent au code écrit s'appliquent également aux scènes : responsabilité unique, encapsulation, et autres.

La scène est toujours une extension du script attaché à son noeud racine, vous pouvez donc l'interpréter comme faisant partie d'une classe.

La plupart des techniques expliquées dans cette série de bonnes pratiques s'appuient sur ce point.