Filosofía del diseño de Godot

Ahora que te has ensuciado 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, mira Discover Godot 3, the Free game engine (la presentación está disponible en otros idiomas en`<https://github.com/GDquest/godot-3-presentation>`) si estás buscando un resumen 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: puedes crear una escena LuzIntermitente y una escena LamparaRota que usa LuzIntermitente. Luego crea una ciudad llena de LamparaRota. Cambia el color de la LuzIntermitente, graba y todas las 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 tu Personaje. Modifica el Personaje en el editor y el Mago se actualizará. Esto ayuda a construir tus proyectos de forma tal que su estructura se ajustan al diseño del juego.

|imagen0|

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 posee componentes como las figuras de colisión, esos son la excepción, no la regla.

image1

Sprite es un Node2D, un CanvasItem y un Node. Todos estos tienen las propiedades y carecterísticas de sus clases padre, como transforms y la habilidad de dibujar figuras personalizadas o utilizar 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

El objetivo es ofrecer un paquete completo para crear juegos y una buena experiencia de usuario continuada. Se pueden utilizar programas externos siempre que haya un plugin de importación para este. O puedes crear uno como el Tiled Map Importer.

Esta es una de las razones por la que Godot ofrece su propio lenguaje de programación GDscript y VisualScript, junto con C#. Están diseñados para las necesidades de los desarrolladores y diseñadores de videojuegos, y están fuertemente integrados al motor y el editor.

GDscript permite escribir código simple utilizando una sintaxis similar a la de Python, pero detecta tipos y ofrece la calidad de autocompletado de un lenguaje estático. También está optimizado para código de juegos con tipos integrados como Vectors y Colors.

Observa que con GDNative se puede escribir código de alto rendimiento usando lenguajes compilados como C, C++, Rust o Python (usando el compilador Cython) sin recompilar el motor.

image3

VisualScript es un lenguaje de programación basado en nodos que se integra al editor. Puedes arrastrar y soltar nodos o recursos dentro del grafo para crear nuevos bloques de código.

Fíjate que el area 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.

image4

Un plugin del editor State Machine en Godot 2, por kubecz3k. Permite gestionar visualmente estados y transiciones.

Código abierto

Godot ofrece un código base completamente abierto bajo la licencia MIT. Esto significa que todas las tecnologías que se distribuyen con él también tienen que ser Libres (es decir, en libertad). En su mayor parte, son desarrollados por los contribuidores desde el inicio.

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 puedes aprender y extender el motor todo lo que quieras. Puedes también depurar juegos fácilmente, ya que Godot imprimirá errores con un volcado de pila, aún si 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 Es la necesidad de los usuarios y discusiones abiertas las que dirigen las actualizaciones fundamentales. Nuevas característias creadas por los desarrolladores principales normalmente se enfocan en beneficios para la mayoría primero.

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 puedes usar el mismo código y las mismas escenas para tus 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 palabra clave tool, puedes ejecutar cualquier código de juego en el editor.

image5

RPG in a Box es un editor de RPG de voxel hecho con Godot 2. Utiliza las herramientas de UI de Godot para su sistema de programación basado en nodos y para el resto de la interfaz.

Coloca la palabra clave 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.

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, puedes renderizar 2D en 3D, 3D en 2D, y superponer sprites 2D e interfaces sobre tu mundo 3D.