Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

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: 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.

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

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

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.

image4

Un plugin editor de Máquina de Estados en Godot 2 por kubecz3k. Te permite gestionar estados y transiciones visualmente.

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