Después de cuatro años de desarrollo, se publica la versión del motor de juegos gratuito Godot 4.0, adecuado para crear juegos en 2D y 3D. El motor soporta un lenguaje sencillo para aprender la lógica del juego, un entorno gráfico para el diseño de juegos, un sistema de implementación de juegos con un solo clic, amplias capacidades de animación y simulación de procesos físicos, un depurador integrado y un sistema de detección de cuellos de botella en el rendimiento. El código del motor de juegos, el entorno de diseño de juegos y las herramientas de desarrollo complementarias (motores físicos, servidor de sonido, backends de renderizado 2D/3D, etc.) se distribuyen bajo la licencia MIT.
Los códigos fuente del motor fueron abiertos en 2014 por el estudio OKAM, después de diez años de desarrollo de un producto propietario de nivel profesional que se utilizó para crear y publicar muchos juegos para PC, consolas de videojuegos y dispositivos móviles. El motor es compatible con todas las plataformas de escritorio y móviles populares (Linux, Windows, macOS, Wii, Nintendo 3DS, PlayStation 3, PS Vita, Android, iOS, BBX), así como el desarrollo de juegos para la web. Se han generado versiones binarias listas para ejecutar para Linux, Android, Windows y macOS.
La rama Godot 4.0 incluye alrededor de 12,000 cambios y se han corregido 7,000 errores. Alrededor de 1,500 personas participaron en el desarrollo del motor y la redacción de la documentación. Entre los cambios clave se encuentran:
- Se han propuesto dos nuevos backends de renderizado (clusterizado y móvil) basados en la API gráfica Vulkan, que reemplazan a los backends que realizaban el renderizado a través de OpenGL ES y OpenGL. Para dispositivos antiguos y de bajo rendimiento, se ha integrado un backend de compatibilidad basado en OpenGL, utilizando una nueva arquitectura de renderizado. Para el renderizado dinámico con una resolución más baja, se emplea la tecnología de super muestreo AMD FSR (FidelityFX Super Resolution), que utiliza algoritmos de escalado espacial y reconstrucción de detalles para reducir la pérdida de calidad de imagen al hacer zoom y transformarlo a una resolución más alta. Se ha implementado un motor de renderizado basado en Direct3D 12, que mejorará el soporte para las plataformas Windows y Xbox.

- Se ha añadido la posibilidad de trabajar con la interfaz en modo de múltiples ventanas (varios paneles y partes de la interfaz se pueden desacoplar como ventanas independientes).

- Se ha añadido un nuevo editor de interfaces de usuario y un nuevo widget de diseño visual.

- Se ha añadido un nuevo editor de temas.

- Se ha reescrito completamente el sistema de gestión de luces y sombras, que utiliza la tecnología de iluminación global SDFGI (Signed Distance Field Global Illumination) en tiempo real. Se ha mejorado considerablemente la calidad de la representación de las sombras.

- El nodo GIProbe, usado para llenar la escena con luz reflejada, ha sido reemplazado por el nodo VoxelGI, óptimo para procesar iluminación en tiempo real en escenas con interiores pequeños o medianos. Para equipos de bajo rendimiento, se ha dejado la opción de pre-renderizado de luz y sombras utilizando mapas de luz, para acelerar la representación de los cuales ahora se utiliza la GPU.

- Se han implementado nuevas técnicas de optimización de renderizado. Se ha añadido recorte oclusivo automático (occlusion culling), que determina y elimina dinámicamente modelos ocultos detrás de otras superficies para aumentar el rendimiento de renderizado y reducir la carga en la CPU y la GPU.

- Se ha añadido el modo SSIL (Screen Space Indirect Lighting), que permite mejorar la calidad del renderizado en equipos de alto rendimiento mediante una mejor gestión de las áreas oscuras y la iluminación indirecta. Además, se han proporcionado configuraciones adicionales para simular la iluminación indirecta difusa utilizando la técnica SSAO (Screen Space Ambient Occlusion), como la selección del nivel de influencia de la luz directa.
- Se han propuesto unidades realistas de iluminación, que permiten ajustar la intensidad de la luz y utilizar configuraciones estándar de la cámara para controlar el brillo de la escena final, como la apertura, la velocidad de obturación y el ISO.
- Se han añadido nuevas herramientas para la edición de niveles para juegos en 2D. Se han realizado cambios radicales en el proceso de desarrollo de videojuegos en 2D. Se agregó un nuevo editor de mapas de mosaicos (tilemap) que ahora incluye soporte para capas, auto-relleno de paisajes, distribución aleatoria de plantas, piedras y varios objetos, así como selección flexible de objetos. Se ha unificado el trabajo con los mapas de mosaicos y los conjuntos de fragmentos para la construcción del mapa (tileset). Se asegura la expansión automática de los fragmentos en el conjunto para evitar espacios entre fragmentos adyacentes. Se ha añadido una nueva función para colocar objetos en la escena, que se puede utilizar, por ejemplo, para añadir personajes en las celdas de la cuadrícula de mosaicos.
- En la representación 2D se ha implementado la posibilidad de utilizar grupos de lienzos, permitiendo mezclar elementos superpuestos del lienzo. Por ejemplo, se pueden combinar varios sprites y mezclarlos con el fondo, como si fueran un único elemento. Se ha añadido la propiedad Clip Children, que permite usar cualquier elemento 2D como máscara. También se ha añadido una opción en el motor 2D para utilizar el método de suavizado MSAA (Suavizado Multimuestra) para mejorar la calidad de las imágenes y crear bordes más suaves.

- Se ha mejorado el manejo de la iluminación y las sombras en los juegos en 2D. Se ha aumentado significativamente el rendimiento al usar múltiples fuentes de luz. Se ha añadido la capacidad de simular tridimensionalidad a través de cambios en el nivel de iluminación en los mapas de normales, así como crear efectos visuales como sombras largas, halos y contornos definidos.

- Se ha añadido un efecto de niebla volumétrica que utiliza la técnica de reproyección temporal para lograr una apariencia realista y un alto rendimiento.

- Se han añadido shaders de nubes que permiten generar nubes de forma dinámica, cambiando en tiempo real.

- Se ha implementado soporte para 'decal' (decalcos), un método de proyección de material sobre superficies.
- Se han añadido efectos aplicables a todo el espacio del juego basados en partículas, que utilizan GPU y soportan atractores, colisiones, estelas y emisores.
- Se han ampliado las capacidades de la interfaz para la edición visual de shaders.

- Se ha ampliado el lenguaje de sombreadores, que ahora incluye soporte para estructuras, macros del preprocesador, inclusión de sombreadores (operador include), arreglos unificados y el uso de «varying» para la transferencia de datos del manejador de fragmentos al manejador de iluminación.
- Se ha añadido la capacidad de aplicar sombreadores computacionales que utilizan la GPU para acelerar algoritmos.
- En el lenguaje de scripts GDScript se ha mejorado el sistema de tipado estático, se ha añadido una nueva sintaxis para definir propiedades, se han propuesto las palabras clave await y super, se han añadido operaciones de map/reduce, se ha implementado un nuevo sistema de anotaciones, y se ha dado la posibilidad de usar caracteres unicode en los nombres de variables y funciones. Se ha añadido una herramienta para la generación automática de documentación. Se ha mejorado el rendimiento y la estabilidad del runtime de GDScript. En el entorno de desarrollo se ha proporcionado la opción de mostrar múltiples errores a la vez, y se han añadido nuevas advertencias para problemas comunes de tipado.

- Se han ampliado las capacidades para desarrollar lógica de juegos en C#. Se añade el soporte para la plataforma .NET 6 y el lenguaje C# 10. Los valores escalares utilizan tipos de 64 bits. Muchos APIs han sido trasladados de tipos int y float a long y double. Se ha proporcionado la posibilidad de definir señales en forma de eventos en C#. También se ha añadido la posibilidad de desarrollar extensiones GDExtensions en C#.
- Se ha añadido soporte experimental para extensiones (GDExtension), que se pueden utilizar para ampliar las capacidades del motor sin necesidad de recompilarlo ni modificar el código.
- Se ha propuesto por defecto un motor de simulación de procesos físicos propio llamado Godot Physics, optimizado para resolver tareas típicas de los videojuegos, y que ha alcanzado paridad funcional con el motor previamente utilizado, Bullet (por ejemplo, Godot Physics incluye el manejo de nuevas formas de colisiones, soporte para mapas de altura y la posibilidad de utilizar nodos SoftBody para simular ropa). Se ha optimizado el rendimiento y se ha ampliado el uso de multihilo, distribuyendo la carga de trabajo entre diferentes núcleos de CPU durante la simulación de procesos físicos en entornos 2D y 3D. Se han resuelto muchos problemas de simulación.
- Se ha propuesto un nuevo sistema de renderizado de texto que proporciona un mayor control sobre el truncado y el ajuste del texto, además de asegurar una alta claridad en cualquier resolución de pantalla.
- Se han ampliado las herramientas para la localización y el trabajo en las traducciones.
- Se ha añadido un diálogo separado para importar recursos 2D y 3D, que soporta la vista previa y la modificación de las configuraciones de la escena importada, los materiales y las propiedades físicas.

- Se han incorporado nuevos widgets al editor, como un panel para deshacer cambios y un nuevo diálogo para seleccionar colores y actualizar la paleta.

- Se han actualizado la interfaz de inspección, panel de control la escena y el editor de scripts. Se ha mejorado la resaltación de la sintaxis, se ha añadido la posibilidad de mostrar múltiples cursores y se han proporcionado herramientas para editar formatos JSON y YAML.
- Se han ampliado las capacidades del editor de animación, que ahora incluye soporte para la mezcla de formas y se han mejorado los procesos basados en la curva de Bézier. Se ha reescrito el código para la animación 3D, implementando soporte para la compresión con el fin de reducir el consumo de memoria. Se ha reescrito el sistema de mezcla de animación y creación de efectos de transición. Se han ampliado las posibilidades para crear animaciones complejas. Se han propuesto bibliotecas de animación para almacenar y reutilizar animaciones creadas.

- Se ha añadido un modo de creación de películas que realiza el renderizado cuadro por cuadro de la escena con la máxima calidad para crear intros y grabar videos.
- Se ha ampliado el soporte para cascos 3D y plataformas de realidad virtual. El motor ahora integra soporte para el estándar OpenXR, que define una API universal para aplicaciones de realidad virtual y aumentada. En Windows y Linux se garantiza soporte para todos los cascos 3D populares, incluidos los cascos SteamVR, Oculus y Monado.
- Se ha mejorado la estabilidad del subsistema para la organización de juegos en red y se ha simplificado el proceso de desarrollo de juegos multijugador.
- Se han ampliado las capacidades del sistema de sonido, se ha integrado soporte para polifonía, se ha añadido una API para síntesis de voz y se ha implementado la posibilidad de bucle en el sonido.
- Se ha garantizado la posibilidad de ejecutar la interfaz de Godot en tablets Android y en navegadores web.

- Se ha añadido un nuevo sistema de compilación de juegos para diversas arquitecturas CPU. Por ejemplo, ahora se puede realizar una compilación para Raspberry Pi, Microsoft Volterra, Surface Pro X, Pine Phone, VisionFive, ARM Chromebook y Asahi Linux.
- Se han realizado cambios en la API que rompen la compatibilidad. La transición de Godot 3.x a Godot 4.0 requerirá una reestructuración de las aplicaciones, pero se garantiza un ciclo de soporte prolongado para la rama Godot 3.x, cuyo periodo dependerá de la demanda del antiguo API por parte de los usuarios.

Fuente: opennet.ru

















