Introducción al desarrollo del editor

En esta pagina aprenderás:

  • Las decisiones de diseño detrás del editor de Godot.

  • Cómo trabajar eficientemente en el código C++ del editor de Godot.

Esta guía está dirigida a los colaboradores actuales o futuros del motor de Godot. Para crear complementos de editor en GDScript, consulta Creando plugins en su lugar.

Ver también

Si eres nuevo en Godot, te recomendamos que leas Filosofía del diseño de Godot antes de continuar. Dado que el editor de Godot es un proyecto de Godot escrito en C++, gran parte de la filosofía del motor se aplica al editor también.

Elecciones tecnicas

El editor de Godot se dibuja utilizando el motor de renderizado y el sistema de interfaz de usuario de Godot. No depende de un kit de herramientas como GTK o Qt. Esto es similar en espíritu a software como Blender. Si bien el uso de kits de herramientas facilita lograr una apariencia "nativa", también son bastante pesados y su licencia no es compatible con la de Godot.

El editor está completamente escrito en C++. No puede contener ningún código GDScript o C#.

Estructura de directorios

El código del editor está completamente contenido en la carpeta editor/ del repositorio de código fuente de Godot.

Algunas funcionalidades del editor también se implementan mediante módulos. Algunos de estos módulos solo están habilitados en las compilaciones del editor para reducir el tamaño binario de las plantillas de exportación. Consulta la carpeta modules/ en el repositorio de código fuente de Godot para obtener más información.

Algunos archivos importantes en el editor son:

  • editor/editor_node.cpp: Archivo principal de inicialización del editor. Es efectivamente la "escena principal" del editor.

  • editor/project_manager.cpp: Archivo principal de inicialización del administrador de proyectos. Es efectivamente la "escena principal" del administrador de proyectos.

  • editor/plugins/canvas_item_editor_plugin.cpp: El visor de edición 2D y la funcionalidad relacionada (barra de herramientas en la parte superior, modos de edición, ayudantes o paneles superpuestos, ...).

  • editor/plugins/spatial_editor_plugin.cpp: El visor de edición 3D y la funcionalidad relacionada (barra de herramientas en la parte superior, modos de edición, paneles superpuestos, ...).

  • editor/spatial_editor_gizmos.cpp: Donde se definen y dibujan los gizmos del editor 3D. Este archivo no tiene un equivalente en 2D, ya que los gizmos en 2D son dibujados por los propios nodos.

Dependencias del editor en archivos de scene/

Cuando trabajas en una función del editor, es posible que tengas que modificar archivos en los nodos de la interfaz gráfica de Godot, los cuales puedes encontrar en la carpeta scene/.

Una regla importante a tener en cuenta es que no debes introducir nuevas dependencias a inclusiones de editor/ en otras carpetas, como por ejemplo scene/. Esto se aplica incluso si usas #ifdef TOOLS_ENABLED.

Para hacer que la base de código sea más fácil de seguir y esté más autocontenido, el orden de dependencia permitido es el siguiente:

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

Esto significa que los archivos en editor/ pueden depender de inclusiones de scene/, servers/ y core/. Pero, por ejemplo, mientras que scene/ puede depender de inclusiones de servers/ y core/, no puede depender de inclusiones de editor/.

Actualmente, existen algunas dependencias en inclusiones de editor/ en archivos de scene/, pero se encuentran en proceso de ser eliminadas. Esto es parte de los esfuerzos para mantener el código más autocontenido y seguir la regla de dependencia permitida.

Tips de desarrollo

Para iterar rápidamente en el editor, te recomendamos configurar un proyecto de prueba y abrirlo desde la línea de comandos después de compilar el editor. De esta manera, no tendrás que pasar por el administrador de proyectos cada vez que inicies Godot.