Introduction au développement de l'éditeur

Sur cette page, vous allez apprendre :

  • Les décisions de conception derrière l'éditeur Godot.

  • Comment travailler efficacement sur le code C++ de l'éditeur Godot.

Ce guide est destiné aux contributeurs actuels ou futurs du moteur. Pour créer des plugins d'éditeur dans GDScript, consultez plutôt Création de plugins.

Voir aussi

Si vous êtes nouveau à Godot, nous vous recommandons de lire La philosophie de design de Godot avant de continuer. L'éditeur Godot étant un projet Godot écrit en C++, une grande partie de la philosophie du moteur s'applique à l'éditeur.

Choix techniques

L'éditeur Godot est dessiné à l'aide du moteur de rendu de Godot et du système d'interface utilisateur UI system. Il ne repose pas sur une boîte à outils telle que GTK ou Qt. L'esprit est similaire à celui de logiciels comme Blender. Si l'utilisation de boîtes à outils permet d'obtenir plus facilement un aspect "natif", elles sont également assez lourdes et leur licence n'est pas compatible avec celle de Godot.

L'éditeur est entièrement écrit en C++. Il ne peut pas contenir de code GDScript ou C#.

Structure du répertoire

Le code de l'éditeur est entièrement autonome dans le dossier editor/ du dépôt de sources de Godot.

Certaines fonctionnalités de l'éditeur sont également implémentées via modules. Certains d'entre eux ne sont activés que dans les builds de l'éditeur pour diminuer la taille binaire des modèles d'exportation. Voir le dossier modules/ dans le dépôt des sources de Godot.

Certains fichiers importants de l'éditeur sont :

  • editor/editor_node.cpp : Fichier d'initialisation de l'éditeur principal. Effectivement, la "scène principale" de l'éditeur.

  • editor/project_manager.cpp : Fichier d'initialisation principal du gestionnaire de projet. Effectivement, la "scène principale" du gestionnaire de projet.

  • editor/plugins/canvas_item_editor_plugin.cpp : Le viewport de l'éditeur 2D et les fonctionnalités associées (toolbar at the top, editing modes, overlaid helpers/panels, …).

  • editor/plugins/spatial_editor_plugin.cpp : Le viewport de l'éditeur 3D et les fonctionnalités associées (toolbar at the top, editing modes, overlaid panels, …).

  • editor/spatial_editor_gizmos.cpp : Là où les gizmos de l'éditeur 3D sont définis et dessinés. Ce fichier n'a pas d'équivalent en 2D car les gizmos 2D sont dessinés par les nœuds eux-mêmes.

Dépendances de l'éditeur dans les fichiers scene/

Lorsque vous travaillez sur une fonctionnalité de l'éditeur, vous pouvez avoir à modifier des fichiers dans les nœuds de l'interface graphique de Godot, que vous pouvez trouver dans le dossier scene/.

Une règle à garder à l'esprit est que vous ne devez pas introduire de nouvelles dépendances aux includes de editor/ dans d'autres dossiers tels que scene/. Ceci s'applique même si vous utilisez #ifdef TOOLS_ENABLED.

Pour rendre la base de code plus facile à suivre et plus autonome, l'ordre de dépendance autorisé est le suivant :

  • editor/ -> scene/ -> servers/ -> core/

Cela signifie que les fichiers de editor/ peuvent dépendre des includes de scene/, servers/, et core/. Mais, par exemple, alors que scene/ peut dépendre des includes de servers/ et core/, il ne peut pas dépendre des includes de editor/.

Actuellement, il y a quelques dépendances aux includes de editor/ dans les fichiers scene/, mais elles sont en train d'être supprimées <https://github.com/godotengine/godot/issues/29730>`__.

Conseils de développement

Pour itérer rapidement sur l'éditeur, nous recommandons de mettre en place un projet de test et l'ouvrir depuis la ligne de commande après avoir compilé l'éditeur. De cette façon, vous n'avez pas à passer par le gestionnaire de projet à chaque fois que vous démarrez Godot.