Godot ( / ˈ ɡ ɒ d oʊ / [a] ) es un motor de juegos multiplataforma , gratuito y de código abierto lanzado bajo la licencia permisiva del MIT . Inicialmente fue desarrollado 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 exportarse a varias más. Está diseñado para crear juegos 2D y 3D dirigidos a PC , dispositivos móviles y plataformas 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 3D y 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 hereden 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 recursos 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 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 la compresión de texturas y la configuración de resolución para cada plataforma. El sitio web proporciona archivos binarios sólo 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 Godot, admite las siguientes plataformas:
El motor admite la exportación de proyectos a muchas más plataformas, incluidas todas las plataformas de edición. Las plataformas actualmente soportadas a partir de Godot 4.0 son: [15]
El motor Godot se puede ejecutar en consolas , aunque las consolas populares no cuentan con soporte oficial ya que no permiten que el código específico de su 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 portabilidad de juegos Godot 4.0 a las plataformas Microsoft , Nintendo y Sony . [20] [21]
Para las arquitecturas de CPU, Godot admite oficialmente x86 en todas las plataformas de escritorio (tanto de 32 como de 64 bits, cuando estén disponibles) y tiene soporte oficial para ARM en macOS, Linux, [22] plataformas móviles y plataformas Oculus independientes (tanto de 32 como de 32 bits). 64 bits donde esté disponible). 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 idiomas. Los lenguajes GDNative admitidos oficialmente incluyen C y C++ . [ 26] Los lenguajes admitidos por la comunidad incluyen Rust , Nim , Haskell , Clojure , Swift y D. [27] También se admitió la codificación visual , a través del lenguaje integrado VisualScript, diseñado para ser un equivalente visual de GDScript. [19] Visual Scripting se eliminó del motor central en Godot 4.0. [28] 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 programar pasos . [29]
Godot tiene su propio lenguaje de secuencias de comandos incorporado , GDScript, [29] un lenguaje de programación de alto nivel tipado dinámicamente 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 tipos estrictos de variables. Los desarrolladores de Godot han declarado que se probaron muchos lenguajes de programación alternativos de terceros, como Lua , Python y Squirrel , antes de decidir que el uso de un lenguaje personalizado permitía una optimización e integración del editor superiores. En la versión 4.0, se implementó una nueva característica llamada Matriz escrita [30] en GDScript. Esto permite a los usuarios cambiar fácilmente una matriz normal a escrita y viceversa sin cambiar mucho código. [29]
Un programa simple " Hola mundo " se puede escribir así:
func _ready (): imprimir ( "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 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 soporte para Metal usando MoltenVK . [31] El motor admite mapeo normal , especularidad , sombras dinámicas usando mapas de sombras , iluminación global dinámica y horneada , y efectos de posprocesamiento de pantalla completa como floración , 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 de gráficos 2D independiente que puede funcionar independientemente del motor 3D, pero ambos también pueden funcionar al mismo tiempo en la misma pantalla, para 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 usando un 'nodo de ventana gráfica'.
Godot contiene un sistema de animación con una GUI para animación esquelética , fusión, árboles de animación, transformación y escenas en tiempo real. Casi cualquier variable definida o creada en una entidad de juego se puede animar. [32] Godot tiene su propio motor de física interno y, a partir de Godot 4.x, permite a terceros integrar su propia física a través de GDExtension. En Godot 3.x, el motor de física Bullet se incluye y se utiliza de forma predeterminada. [33] La biblioteca Thor Vector Graphics (ThorVG) permite crear GUI con recursos vectoriales. [34]
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 con el nombre en código "Larvotor" que fue licenciado a terceras empresas en Argentina. [35] [36] [37] [38] En el transcurso de los siguientes diez años, el motor pasó a llamarse "Legacy", "NG3D", "Larvita" y finalmente a "Godot". El nombre "Godot" fue elegido por su relación con la obra de Samuel Beckett Esperando a Godot , ya que representa el deseo interminable de añadir nuevas características al motor, que lo acercarían a un producto exhaustivo, pero que nunca lo harán. . [39] 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 en Argentina en ese momento. [40]
En 2014, Linietsky planeaba mudarse de Argentina y lanzó al público el código fuente de Godot en GitHub bajo la licencia MIT . [41] Godot se unió a Software Freedom Conservancy (SFC) el 4 de noviembre de 2015. [42] El 22 de junio de 2016, Godot recibió un premio "Mission Partners" de Mozilla Open Source Support (MOSS) de 20 000 dólares que se utilizará para agregar WebSockets , WebAssembly y Soporte WebGL 2.0. [dieciséis]
La actualización 3.0 para 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. [43] Se lanzó un Patreon, lo 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 dirigido al hardware móvil, ya que el soporte móvil para ES 3.0 por parte de los fabricantes era entonces limitado. [44]
En 2019 se formaron dos equipos: el equipo de Linietsky se centró en la rama Vulkan (posteriormente lanzada como 4.0) y el equipo de Verschelde cubrió más actualizaciones de la rama 3.x. Linietsky indicó que parte del problema era que la rama 3.x se construyó teniendo en mente principios arquitectónicos más antiguos, como los procesadores de un solo núcleo. Por tanto, la intención era volver a desarrollar la arquitectura central para 4.0 y tener en cuenta los principios modernos. [45] En 2020, Godot recibió un premio de Epic Games de 250.000 dólares para mejorar la representación de gráficos y el lenguaje de desarrollo de juegos integrado en el motor, GDScript, que se utilizó para pagar a Linietsky y George Marques durante dos años y al mismo tiempo liberar dinero de donaciones para otros fines. [46] [47] Godot también recibió subvenciones de Reality Labs de Meta Platforms en 2020 y 2021. [48] [49] [50] La rama 4.0 se lanzó en forma alfa a principios de 2022 y se pulió a lo largo del año. . [51] Ese agosto, Linietsky y varios otros miembros del equipo de Godot establecieron W4 Games para ofrecer servicios comerciales basados en el motor, incluidos puertos de consola que no pueden incluirse en su código base de código abierto. [52] [20] En noviembre, Godot anunció planes para la transición de la SFC a su propia recién formada Fundación Godot. [53] [54] [55] [56]
El lanzamiento completo de la actualización 4.0 con soporte Vulkan se produjo en 2023, así como la llegada del motor Godot a Epic Games Store. La versión de Epic es idéntica a otras en términos de contenido y licencia, y el escaparate se utiliza simplemente como medio de distribución y actualización. [57] Sin embargo, la versión compatible con .NET/C# del motor no está disponible en Epic Games Store, ni tampoco en Itch y Steam . [58] 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 cobrarían a los usuarios por la instalación de juegos Unity. Como resultado, Re-Logic donó 100.000 dólares a Godot y anunció además que donaría 1.000 dólares al mes en el futuro, con el fin de apoyar una alternativa de código abierto a Unity. [59]
Godot alcanzó la versión 1.0 el 15 de diciembre de 2014, lo que marcó la primera versión estable y la adición de lightmapping , compatibilidad con navmesh y más sombreadores . [60] La versión 1.1 se lanzó el 21 de mayo de 2015, agregando un autocompletado mejorado en el editor de código, un editor de sombreado visual, una nueva API para el sistema operativo para administrar pantallas y ventanas, física 2D mejorada y un motor 2D reescrito, mejor Soporte para Blender Collada y un nuevo tema oscuro. [61]
Godot 2.0 se lanzó el 23 de febrero de 2016 y agregó mejores instancias y herencia de escenas, un nuevo navegador de sistema de archivos, edición de escenas múltiples y un depurador mejorado. [62] [7] A esto le siguió la versión 2.1 en agosto de 2016, que introdujo una base de datos de activos, un perfilador y una API de complemento. [63]
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 C# (a través de Mono ) [33] gracias a una donación de 24 000 dólares de Microsoft. [64] La versión 3.0 también agregó el motor de física Bullet además del motor de física 3D incorporado 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 las características más notables son la adición de § GDScript de tipo estático, un sistema de clases de script para GDScript y un renderizador OpenGL ES 2.0 . [65] Godot 3.2 se lanzó el 29 de enero de 2020, y las características más notables son mejoras masivas en la documentación, compatibilidad con C# muy mejorada y compatibilidad con archivos glTF 2.0 . [66]
El desarrollador principal, Juan Linietsky, pasó la mayor parte de su tiempo trabajando en una rama separada de Vulkan que luego se fusionaría con master para 4.0, [67] por lo que el trabajo en 3.2 lo realizaron principalmente otros contribuyentes. El trabajo en 3.2 continuó como una versión de soporte a largo plazo durante un año, [66] incluido Godot 3.2.2 el 26 de junio de 2020, una versión de parche grande que agregó características como el procesamiento por lotes de OpenGL ES 2.0 y compatibilidad con C# para iOS. [68] 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 respaldar funciones a una futura versión 3.4. [69]
Godot 3.3 se lanzó el 21 de abril de 2021, con características como compatibilidad con ARM en macOS, compatibilidad con paquetes de aplicaciones de Android , compatibilidad con MP3, compatibilidad con Autodesk FBX , compatibilidad con WebXR y un editor web. [70]
Godot 3.4 se lanzó el 6 de noviembre de 2021 después de seis meses de desarrollo, implementando funciones faltantes o correcciones de errores que son fundamentales para publicar juegos 2D y 3D con Godot 3 y hacer que las funciones existentes sean más optimizadas y confiables. [71]
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 que los primeros usuarios la probaran en enero de 2022. [72] 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. [73] También agregó soporte para WebXR , soporte C# para Android e iOS y nuevas funciones de audio. El 1 de marzo de 2023, Godot 4 se lanzó oficialmente como versión estable después de varias versiones beta y correcciones de errores. Mejoró la calidad de los gráficos, las técnicas de optimización de la representación y agregó funciones de accesibilidad. [15] A esto le siguió Godot 4.1 más adelante en 2023, que agregó subprocesos múltiples de escenas experimentales, mejoras en el editor y mejoras en C#. [74]
Muchos juegos de OKAM Studio se han creado con Godot, incluidos Dog Mendonça y Pizza Boy , que utilizan la extensión del juego de aventuras Escoria. [83] 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 lo que se describe como una "gran cantidad de materiales de aprendizaje que ya existen para el software". [84]
En pocas palabras, Godot no puede ser un proyecto de código abierto impulsado por la comunidad y admitir consolas al mismo tiempo.
Pero hay formas de evitar esto, razón por la cual W4 espera ganar dinero ofreciendo un servicio de portabilidad para ayudar a los desarrolladores a convertir sus juegos existentes a un formato compatible con la consola.