Godot ( / ˈ ɡ ɒ d oʊ / GOD -oh ) [a] es un motor de juegos multiplataforma , gratuito y de código abierto lanzado bajo la licencia permisiva MIT . Fue desarrollado inicialmente en Buenos Aires por los desarrolladores de software argentinos Juan Linietsky y Ariel Manzur [6] para varias empresas en América Latina antes de su lanzamiento público en 2014. [7] El entorno de desarrollo se ejecuta en muchas plataformas y puede exportar a varias más. Está diseñado para crear juegos tanto 2D como 3D destinados a plataformas de PC , móviles y web y también se puede utilizar para desarrollar software que no sea de juegos, incluidos editores.
Godot permite a los desarrolladores de videojuegos crear juegos tanto en 3D como en 2D utilizando múltiples lenguajes de programación, como C++ , C# y GDScript. [8] Hace uso de una jerarquía de nodos para facilitar la experiencia de desarrollo. [9] Las clases se pueden derivar de un tipo de nodo para crear tipos de nodos más especializados que heredan el comportamiento. Los nodos se organizan dentro de "escenas", que son grupos de nodos reutilizables, instanciables , heredables y anidables. Todos los recursos del juego, incluidos los scripts y los activos gráficos, se guardan como parte del sistema de archivos de la computadora (en lugar de en una base de datos ). Esta solución de almacenamiento está destinada a facilitar la colaboración entre los equipos de desarrollo de juegos que utilizan sistemas de control de versiones de software . [10]
El motor admite la implementación en múltiples plataformas y permite especificar configuraciones de resolución y compresión de texturas para cada plataforma. El sitio web proporciona archivos binarios solo para las plataformas del editor, y la exportación de proyectos a otras plataformas se realiza dentro del editor Godot.
El editor Godot, utilizado para crear juegos de Godot, es compatible con las siguientes plataformas:
El motor permite exportar proyectos a muchas más plataformas, incluidas todas las plataformas de edición. Las plataformas compatibles actualmente a partir de Godot 4.0 son: [15]
El motor Godot se puede ejecutar en consolas , aunque las consolas populares no reciben soporte oficial ya que no permiten que su código específico de la plataforma se publique bajo una licencia de código abierto . [17] Los juegos se pueden portar a consolas a través de empresas de terceros. [18] [19] Actualmente se está trabajando en el soporte de Godot 4 para consolas por parte de equipos de terceros. [15] W4 Games, una empresa comercial cofundada por algunos miembros del liderazgo de Godot, ha anunciado planes para ofrecer servicios de portación de juegos de Godot 4.0 a las plataformas de Microsoft , Nintendo y Sony . [20] [21]
Para las arquitecturas de CPU, Godot admite oficialmente x86 en todas las plataformas de escritorio (tanto de 32 bits como de 64 bits donde estén disponibles) y tiene soporte ARM oficial en macOS, Linux, [22] plataformas móviles y plataformas Oculus independientes (tanto de 32 bits como de 64 bits donde estén disponibles). La plataforma web utiliza WebAssembly de 32 bits . El soporte para RISC-V y PowerPC Linux no es oficial y es experimental. [23] [24]
Godot admite una variedad de lenguajes de programación para crear juegos, incluido el lenguaje integrado GDScript, C++ [25] y C# . Además, el motor incluye GDNative, una función para crear enlaces con otros lenguajes. Los lenguajes GDNative oficialmente admitidos incluyen C y C++ . [26] Los lenguajes admitidos por la comunidad incluyen Rust , Nim , Haskell , Clojure , Swift y D. [27] La codificación visual también es compatible, a través del lenguaje de terceros de código abierto Orchestrator. [28] La codificación visual originalmente era compatible con el lenguaje integrado VisualScript, diseñado para ser un equivalente visual de GDScript. [ 19] VisualScript se eliminó del motor principal en Godot 4.0. [29] Los juegos de Godot que se ejecutan en el navegador pueden interactuar con el código JavaScript del navegador .
El editor Godot incluye un editor de texto con sangría automática , resaltado de sintaxis y finalización y plegado de código . También cuenta con un depurador con la capacidad de establecer puntos de interrupción y programación por pasos . [30]
Godot tiene su propio lenguaje de scripting incorporado , GDScript, [30] un lenguaje de programación de alto nivel , de tipado gradual que es sintácticamente similar a Python . A diferencia de Python, GDScript está optimizado para la arquitectura basada en escenas de Godot y puede especificar tipado estricto de variables. Los desarrolladores de Godot han declarado que se probaron muchos lenguajes de scripting de terceros alternativos como Lua , Python y Squirrel antes de decidir que el uso de un lenguaje personalizado permitía una optimización superior y la integración del editor. En la versión 4.0, se implementó una nueva característica llamada Matriz tipada [31] en GDScript. Esto permite a los usuarios cambiar fácilmente una matriz regular a tipada y viceversa sin cambiar mucho código. [30] En una actualización posterior de la 4.0, también se agregaron diccionarios tipados, lo que permite a los usuarios declarar pares clave-valor tipados para aumentar aún más la seguridad de tipo de los scripts. [32] Los tipos estáticos opcionales permiten que el back end de C++ aplique optimizaciones que dan como resultado un rendimiento notablemente mayor; Se ha observado que GDScript tipado estáticamente se ejecuta más de un 40% más rápido en versiones de lanzamiento. [33] [34]
Un programa simple de " Hola mundo " se puede escribir así:
func _ready (): print ( "Hola Mundo" )
También son posibles programas más complejos, como generar una secuencia de Fibonacci :
func _ready (): var nterms = 5 print ( "Secuencia de Fibonacci:" ) para i en rango ( nterms ): print ( fibonacci ( i )) func fibonacci ( n ): si n <= 1 : devolver n más : devolver fibonacci ( n - 1 ) + fibonacci ( n - 2 )
El motor gráfico de Godot 3.x utiliza OpenGL ES 3.0 para todas las plataformas compatibles; de lo contrario, se utiliza OpenGL ES 2.0. Vulkan es compatible a partir de la versión 4.0 y también incluye la posibilidad de compatibilidad con Metal mediante MoltenVK . [35] El motor admite mapeo normal , especularidad , sombras dinámicas mediante mapas de sombras , iluminación global dinámica y horneada , y efectos de posprocesamiento de pantalla completa como bloom , profundidad de campo , renderizado de alto rango dinámico y corrección gamma . También se incorpora un lenguaje de sombreado simplificado , similar a GLSL . Los sombreadores se pueden utilizar para materiales y posprocesamiento . Alternativamente, se pueden crear manipulando nodos en un editor visual.
Godot también incluye un motor gráfico 2D independiente que puede funcionar independientemente del motor 3D, pero ambos pueden funcionar al mismo tiempo en la misma pantalla, para así realizar mezclas complejas entre 2D y 3D. El motor 2D admite funciones como luces, sombras, sombreadores, conjuntos de mosaicos , desplazamiento de paralaje , polígonos , animaciones, física y partículas. También es posible mezclar 2D y 3D utilizando un "nodo de ventana gráfica".
Para respaldar la interfaz de usuario y el soporte de activos gráficos vectoriales 2D, Godot ha integrado una biblioteca de terceros, ThorVG (Thor Vector Graphics). [36]
Godot contiene un sistema de animación con una interfaz gráfica de usuario para animación esquelética , mezcla, árboles de animación, transformación y escenas cinemáticas en tiempo real. Casi cualquier variable definida o creada en una entidad de juego puede ser animada. [37] Godot tiene su propio motor de física interno y, a partir de Godot 4.x, permite que terceros integren su propia física a través de GDExtension. En Godot 3.x, el motor de física Bullet está incluido y se usa de forma predeterminada. [38]
Juan 'reduz' Linietsky y Ariel 'punto' Manzur cofundaron Codenix en 1999, una empresa de consultoría de desarrollo de juegos. Ya en 2001, comenzaron a trabajar en un motor cuyo nombre en código era "Larvotor", que fue licenciado a empresas de terceros en Argentina. [39] [40] [41] [42] En el transcurso de los siguientes diez años, el motor pasó a llamarse "Legacy", "NG3D", "Larvita" y finalmente "Godot". El nombre "Godot" fue elegido debido a su relación con la obra de Samuel Beckett Esperando a Godot , ya que representa el deseo interminable de agregar nuevas características al motor, lo que lo acercaría a un producto exhaustivo, pero nunca lo hará. [43] Linietsky y Manzur se unieron a OKAM y la compañía trabajó con varios estudios en la era del código cerrado, incluido Square Enix . Linietsky indicó que su trabajo se vio obstaculizado por la inestabilidad política y económica que imperaba en Argentina en ese momento. [44]
En 2014, Linietsky estaba planeando mudarse de Argentina y lanzó el código fuente de Godot al público en GitHub bajo la licencia MIT . [45] Godot se unió a Software Freedom Conservancy (SFC) el 4 de noviembre de 2015. [46] El 22 de junio de 2016, Godot recibió un premio "Mission Partners" de $20,000 de Mozilla Open Source Support (MOSS) para ser utilizado para agregar soporte para WebSockets , WebAssembly y WebGL 2.0. [16]
La actualización 3.0 de Godot implicó abordar una larga lista de características deseadas que requirieron una refactorización importante del motor que había sido imposible bajo restricciones comerciales en la era del código cerrado. Con el apoyo de Miguel de Icaza , Godot recibió una donación de $24,000 de Microsoft en 2017 para implementar C# como lenguaje de scripting en Godot. [47] Se lanzó un Patreon, que permitió a Linietsky y Verschelde trabajar en el proyecto a tiempo completo. La versión 3.0 se lanzó en 2018. La actualización 3.1 agregó un renderizador OpenGL ES 2.0 destinado al hardware móvil, ya que el soporte móvil para ES 3.0 por parte de los fabricantes era limitado. [48]
En 2019 se formaron dos equipos, el de Linietsky se centró en la rama Vulkan (que luego se lanzó como 4.0) y el de Verschelde se encargó de las actualizaciones posteriores de la rama 3.x. Linietsky indicó que parte del problema era que la rama 3.x se creó teniendo en cuenta principios arquitectónicos más antiguos, como los procesadores de un solo núcleo. Por lo tanto, la intención era volver a desarrollar la arquitectura central para la versión 4.0 y tener en cuenta los principios modernos. [49] En 2020, Godot recibió un premio de 250 000 dólares de Epic Games para mejorar la representación de gráficos y el lenguaje de desarrollo de juegos integrado del motor, GDScript, que se utilizó para pagar a Linietsky y George Marques durante dos años y liberar el dinero de las donaciones para otros fines. [50] [51] Godot también recibió subvenciones de Reality Labs de Meta Platforms en 2020 y 2021. [52] [53] [54] La rama 4.0 se lanzó en forma alfa a principios de 2022 y se pulió a lo largo del año. [49] Ese agosto, Linietsky y varios otros miembros del equipo de Godot establecieron W4 Games para ofrecer servicios comerciales basados en el motor, incluidos los puertos de consola que no se pueden incluir en su base de código abierto. [55] [20] En noviembre, Godot anunció planes para la transición de SFC a su propia Fundación Godot recién formada. [56] [57] [58] [59]
El lanzamiento completo de la actualización 4.0 con soporte para Vulkan se produjo en 2023, así como la llegada del motor Godot a Epic Games Store. La versión en Epic es idéntica a otras en términos de contenido y licencias, y la tienda se usa simplemente como un medio de distribución y actualización. [60] Sin embargo, la versión del motor con soporte para .NET/C# no está disponible en Epic Games Store, ni tampoco en Itch y Steam. [ 61 ] En septiembre, Unity Technologies anunció cambios importantes en las licencias del motor Unity , incluida la adición de " tarifas de tiempo de ejecución " que se cobrarían a los usuarios por la instalación de juegos de Unity. Como resultado, Re-Logic donó $100,000 a Godot y anunció además que donaría $1,000 al mes en el futuro, con el interés de respaldar una alternativa de código abierto a Unity. [62]
Godot alcanzó la versión 1.0 el 15 de diciembre de 2014, marcando la primera versión estable y la adición de lightmapping , soporte navmesh y más shaders . [63] La versión 1.1 fue lanzada el 21 de mayo de 2015, agregando autocompletado mejorado en el editor de código, un editor de sombreadores visuales, una nueva API al sistema operativo para administrar pantallas y ventanas, física 2D mejorada y un motor 2D reescrito, mejor soporte Blender Collada y un nuevo tema oscuro. [64]
Godot 2.0 se lanzó el 23 de febrero de 2016, agregando mejores instancias y herencia de escenas, un nuevo navegador de sistema de archivos, edición de múltiples escenas y un depurador mejorado. [65] [7] Esto fue seguido por la versión 2.1 en agosto de 2016, que introdujo una base de datos de activos, un generador de perfiles y una API de complementos. [66]
La versión 3.0 se lanzó el 29 de enero de 2018, agregando un nuevo renderizador PBR implementado en OpenGL ES 3.0 , compatibilidad con realidad virtual y soporte para C# (a través de Mono ) [38] gracias a una donación de $24,000 de Microsoft. [67] La versión 3.0 también agregó el motor de física Bullet además del back-end de física 3D integrado del motor y fue la primera versión de Godot que se incluyó en Debian.
Godot 3.1 se lanzó el 13 de marzo de 2019, y sus características más notables fueron la incorporación de § GDScript tipado estáticamente, un sistema de clases de script para GDScript y un renderizador OpenGL ES 2.0 . [68] Godot 3.2 se lanzó el 29 de enero de 2020, y sus características más notables fueron mejoras masivas en la documentación, compatibilidad con C# muy mejorada y compatibilidad con archivos glTF 2.0 . [69]
El desarrollador principal, Juan Linietsky, pasó la mayor parte de su tiempo trabajando en una rama independiente de Vulkan que luego se fusionaría con la rama maestra para la versión 4.0, [70] por lo que el trabajo en la versión 3.2 fue realizado principalmente por otros colaboradores. El trabajo en la versión 3.2 continuó como una versión de soporte a largo plazo durante un año, [69] incluyendo Godot 3.2.2 el 26 de junio de 2020, una gran versión de parche que agregó características como el procesamiento por lotes de OpenGL ES 2.0 y compatibilidad con C# para iOS. [71] El 17 de marzo de 2021, se cambió la estrategia de control de versiones para reflejar mejor el control de versiones semántico, con una rama estable 3.3 y una rama 3.x para incorporar características a una futura versión 3.4. [72]
Godot 3.3 se lanzó el 21 de abril de 2021, con características como compatibilidad con ARM en macOS, compatibilidad con Android App Bundles , compatibilidad con MP3, compatibilidad con Autodesk FBX , compatibilidad con WebXR y un editor web. [73]
Godot 3.4 se lanzó el 6 de noviembre de 2021 después de seis meses de desarrollo, implementando características faltantes o correcciones de errores que son fundamentales para publicar juegos 2D y 3D con Godot 3 y haciendo que las características existentes sean más optimizadas y confiables. [74]
Godot 3.5 se lanzó el 5 de agosto de 2022 después de nueve meses de desarrollo. Al igual que Godot 3.4, se centró en implementar funciones faltantes o correcciones de errores importantes para los videojuegos 2D y 3D creados con Godot 3. [13] Las funciones incluyen interpolación de física en 3D, compilación de sombreadores asincrónicos y más. [13]
Godot 3.6 se lanzó el 9 de septiembre de 2024 después de 2 años de desarrollo, agregando interpolación de física 2D y selección jerárquica, y fusión de malla 3D, nivel de detalle, selección de sombras más estricta, materiales ORM y más. [75]
Godot 4 se lanzó el 1 de marzo de 2023. Es una actualización importante que revisa el sistema de renderizado, agrega soporte para la API de gráficos Vulkan , mejora el rendimiento y la usabilidad de GDScript, mejora los sistemas de física y animación e introduce muchas otras características y correcciones de errores. El desarrollo de Godot 4 comenzó en 2019 con una reescritura del renderizador para usar Vulkan por parte de Linietsky. En 2020, varios colaboradores se unieron al equipo de desarrollo y trabajaron en varios aspectos de Godot 4, como mejoras de GDScript, revisión del motor de física, reescritura del sistema de animación, mejoras de usabilidad del editor y más.
La primera versión alfa de Godot 4 se lanzó para pruebas por parte de los primeros usuarios en enero de 2022. [76] Incluía nuevas características como iluminación global basada en SDF, partículas basadas en GPU y sombras suaves dinámicas. En septiembre de 2022, Godot 4 alcanzó la etapa beta con estabilidad y rendimiento mejorados. [77] También agregó soporte para WebXR , soporte de C# para Android e iOS y nuevas funciones de audio. El 1 de marzo de 2023, Godot 4 se lanzó oficialmente como una versión estable después de varias compilaciones beta y correcciones de errores. Mejoró la calidad de los gráficos, las técnicas de optimización de renderizado y agregó funciones de accesibilidad. [15]
A esto le siguió Godot 4.1 más tarde en 2023, que agregó multiprocesamiento de escenas experimental, mejoras del editor y mejoras de C#. [78]
Godot 4.2 se lanzó el 30 de noviembre de 2023, implementando una reelaboración de la herramienta de animación y el sistema de partículas, agregó GDExtension, mejoró el flujo de importación y agregó soporte para FSR 2.2. [79]
Godot 4.3, lanzado el 15 de agosto de 2024, agregó sincronización de GPU a través de gráficos acíclicos, efectos de compositor de canalización de renderizado y redireccionamiento de animación 3D mejorado. [80]
Muchos juegos de OKAM Studio se han realizado utilizando Godot, incluido Dog Mendonça & Pizza Boy , que utiliza la extensión de juego de aventuras Escoria. [86] Además, se ha utilizado en el plan de estudios de la escuela secundaria de Virginia Occidental , debido a su facilidad de uso para los no programadores y los materiales de aprendizaje ya existentes. [87] El creador de RPG Maker , Gotcha Gotcha Games ha anunciado planes para utilizar Godot para su propio nuevo sistema de creación de juegos (que será un sucesor de Pixel Game Maker MV de 2018 ). El nuevo sistema, Action Game Maker , está previsto para su lanzamiento en 2025. [88]
En pocas palabras, Godot no puede ser un proyecto de código abierto impulsado por la comunidad y dar soporte a las consolas al mismo tiempo. Pero hay formas de evitarlo, por lo que W4 espera ganar dinero ofreciendo un servicio de portabilidad para ayudar a los desarrolladores a convertir sus juegos existentes a un formato compatible con consolas.