Filosofía del diseño de Godot

Ahora que te ensuciaste las manos, hablemos del diseño de Godot.

Cada motor de videojuegos es diferente y se ajusta a diferentes necesidades. No sólo ofrecen un amplio rango de características, si no que el diseño de cada motor es único. Esto lleva a diferentes flujos de trabajo y diferentes modos de construir la estructura de tus juegos. Todo esto surge de sus respectivas filosofías de diseño.

En esta página está para ayudar a comprender cómo funciona Godot. comenzando con algunos de sus pilares fundamentales. Esta no es una lista de características disponibles ni una comparación de motores. Para saber si un motor es bueno para tu proyecto, deberás probarlo por tí mismo y comprender su diseño y limitaciones.

Por favor mire Godot explained in 5 minutes si está buscando una descripción general de las características del motor.

Diseño orientado a objetos y composición

Godot adopta un diseño orientado a objetos desde el núcleo con su sistema flexible de escenas y jerarquía de nodos. Esto intenta mantenerlo lejos de patrones de programación estrictos para ofrecer un modo intuitivo de estructurar su juego.

Godot permite componer o agregar escenas. Esto es como prefabs anidados: puede crear una escena LuzIntermitente y una escena LamparaRota que usa LuzIntermitente. Luego cree una ciudad llena de múltiples LamparaRota. Cambie el color de LuzIntermitente, guarde, y todos los LamparaRota en la ciudad se actualizarán instantáneamente.

Además, puede heredar desde cualquier escena.

Una escena de Godot puede ser un Arma, un Personaje, un Item, una Puerta, un Nivel, parte de un nivel… cualquier cosa que quieras. Esto funciona como una clase en código puro, excepto que eres libre de diseñarla usando el editor, usando sólo código, o una mezcla de las dos.

Esto es diferente de los prefabs que se encuentran en distintos motores 3D, ya que se pueden heredar y extender las escenas. Puedes crear un Mago que extienda su Personaje. Modifique el Personaje en el editor y el Mago también se actualizará. Esto le ayuda a construir sus proyectos de forma tal que su estructura se ajuste al diseño del juego.

image0

Observa también que Godot ofrece diferentes tipos de objetos llamados nodos, cada uno con un propósito específico. Los nodos son parte de un árbol y siempre heredan de sus padres hacia arriba hasta la clase Node. Aunque el motor presenta algunos nodos como formas de colisión que usará un cuerpo de física principal, la mayoría de los nodos funcionan de forma independiente entre sí.

En otras palabras, los nodos de Godot no funcionan como componentes en otros motores de juegos.

image1

Sprite2D es un Node2D, un CanvasItem y un Node. Todos estos tienen las propiedades y características de sus clases padre, como transformaciones o la habilidad de dibujar figuras personalizadas y renderizar con un shader personalizado.

Paquete con todo incluído

Godot intenta proporcionar sus propias herramientas para las necesidades más comunes. Tiene un espacio de trabajo dedicado a scripting, un editor de animaciones, un editor de tilemaps, un editor de shader, un depurador, un perfilador, la habilidad de recargar localmente y en dispositivos remotos, etc.

image2

The goal is to offer a full package to create games and a continuous user experience. You can still work with external programs as long as there is an import plugin available in Godot for it.

Esa es también en parte la razón por la que Godot ofrece su propios lenguaje de programación GDScript junto con C#. GDScript está diseñados para las necesidades de los desarrolladores y diseñadores de juegos y están estrechamente integrados en el motor y el editor.

GDscript te permite escribir código utilizando una sintaxis basada en indentación, sin embargo detecta tipos y ofrece la calidad de autocompletado de un lenguaje estático. También está optimizado para el código del juego con tipos integrados como vectores y colores.

Observa que con GDExtension se puede escribir código de alto rendimiento usando lenguajes compilados como C, C++, Rust, D, Haxe o Swift sin recompilar el motor.

Fíjate que el área de trabajo 3D no tiene tantas herramientas como el 2D. Necesitarás programas externos, add-ons para editar terrenos, animar personajes complejos, etc. Godot provee un API completa para extender la funcionalidad del editor usando código de juegos. Ver The Godot editor is a Godot game debajo.

Código abierto

Godot offers a fully open source codebase under the MIT license. This means that the codebase is free for anyone to download, use, modify, or share, as long as its license file is kept intact.

All technologies that ship with Godot, including third-party libraries, must be legally compatible with this open source license. Therefore, most parts of Godot are developed from the ground up by community contributors.

Cualquiera puede agregar herramientas propietarias para las necesidades de sus proyectos — simplemente no se incluyen con el motor. Esto puede incluir Google AdMob o FMOD. Cualquiera de estos puede utilizarse como plugin de terceros.

Por otra parte, tener una base de código abierta significa que puede aprender y extender el motor todo lo que desee. También puedes depurar juegos fácilmente, ya que Godot imprimirá errores con un volcado de pila, aún si estos vienen del propio motor.

Nota

Esto no afecta el modo en que trabajes con Godot de ningún modo: no hay "ataduras" al motor o a ninguna cosa que hagas con este.

Dirigido por la comunidad

Godot es hecho por su comunidad, para la comunidad y para todos los creadores de videojuegos Son la necesidad de los usuarios y las discusiones abiertas las que dirigen las actualizaciones fundamentales. Las nuevas características creadas por los desarrolladores principales normalmente se enfocan primero en lo que beneficie a la mayoría.

Dicho esto, aunque un puñado de desarrolladores principales trabajan en él a tiempo completo, el proyecto tiene más de 600 colaboradores en el momento de escribir este artículo. Programadores voluntarios trabajan en características que ellos mismos pueden necesitar, por lo que se verán mejoras en todos los rincones del motor al mismo tiempo en cada versión principal.

El editor de Godot es un juego de Godot

El editor de Godot funciona desde el motor de juego. Utiliza el propio sistema de UI del motor, puede recargar en vivo código y escenas cuando se prueban los proyectos, o ejecutar código de juego en el editor. Esto significa que puede usar el mismo código y las mismas escenas para sus juegos, o construir plugins y extender el editor.

Esto lleva a un sistema confiable y flexible para UI, ya que lo usa el editor mismo. Con la anotación @tool, puede ejecutar cualquier código de juego en el editor.

../../_images/introduction_rpg_in_a_box.webp

RPG in a Box is a voxel RPG editor made with Godot. It uses Godot's UI tools for its node-based programming system and for the rest of the interface.

Coloca la anotación @tool al principio de cualquier archivo GDScript y se ejecutará en el editor. Esto le permite importar y exportar plugins, crear plugins como editores de nivel personalizados o crear scripts con los mismos nodos y API que se utilizan en los proyectos.

Nota

El editor está completamente escrito en C++ y está compilado estáticamente en el binario. Esto significa que no puede importarlo como un proyecto típico que tendría un archivo project.godot.

Motores 2D y 3D separados

Godot ofrece motores de renderizado 2D y 3D dedicados. Como resultado, la unidad base para escenas 2D son los píxeles. Aunque los motores están separados, puede renderizar 2D en 3D, 3D en 2D, y superponer sprites 2D e interfaces sobre su mundo 3D.