Após quatro anos de desenvolvimento, foi lançado o percurso do motor de jogo Godot 4.0, adequado para criar jogos 2D e 3D. O motor suporta uma linguagem de programação fácil de aprender para lógica de jogos, um ambiente gráfico para design de jogos, um sistema de implantação de jogos com um clique, amplas capacidades de animação e simulação de processos físicos, um depurador integrado e um sistema de identificação de gargalos de desempenho. O código do motor de jogo, do ambiente de design de jogos e das ferramentas de desenvolvimento associadas (motor físico, servidor de som, backends de renderização 2D/3D, etc.) é distribuído sob a licença MIT.
Os códigos-fonte do motor foram tornados públicos em 2014 pelo estúdio OKAM, após dez anos de desenvolvimento de um produto proprietário de nível profissional, que foi utilizado para criar e publicar muitos jogos para PC, consoles de jogos e dispositivos móveis. O motor suporta todas as populares plataformas de desktop e móveis (Linux, Windows, macOS, Wii, Nintendo 3DS, PlayStation 3, PS Vita, Android, iOS, BBX), bem como o desenvolvimento de jogos para a Web. Compilações binárias prontas para execução foram criadas para Linux, Android, Windows e macOS.
O Godot 4.0 inclui cerca de 12 mil alterações e 7 mil erros corrigidos. Aproximadamente 1500 pessoas participaram do desenvolvimento do motor e da redação da documentação. Entre as mudanças principais:
- Foram propostos dois novos backends de renderização (clusterizada e móvel) com base na API gráfica Vulkan, que substituíram os backends que realizavam a renderização através do OpenGL ES e OpenGL. Para dispositivos antigos e de baixo desempenho, foi integrado um backend de compatibilidade baseado em OpenGL, utilizando uma nova arquitetura de renderização. Para renderização dinâmica em resoluções mais baixas, foi utilizada a tecnologia de superamostragem AMD FSR (FidelityFX Super Resolution), que emprega algoritmos de escalonamento espacial e reconstrução de detalhes para reduzir a perda de qualidade de imagem ao aumentar a escala e transformar em uma resolução mais alta. Foi implementado um motor de renderização com base no Direct3D 12, que melhorará o suporte nas plataformas Windows e Xbox.

- Adicionada a capacidade de trabalhar com a interface em modo de múltiplas janelas (várias painéis e partes da interface podem ser destacadas como janelas separadas).

- Adicionado um novo editor de interfaces de usuário e um novo widget de design visual.

- Adicionado um novo editor de temas.

- Todo o sistema de gerenciamento de iluminação e sombras foi reescrito, incorporando a tecnologia de iluminação global SDFGI (Signed Distance Field Global Illumination) que funciona em tempo real. A qualidade da renderização de sombras foi significativamente melhorada.

- O nó GIProbe, utilizado para preencher a cena com luz refletida, foi substituído pelo nó VoxelGI, ideal para o processamento em tempo real de iluminação em cenas com interiores pequenos ou médios. Para equipamentos de baixo desempenho, foi mantida a opção de pré-renderização de luz e sombras usando mapas de luz, cuja renderização agora utiliza a GPU.

- Novas técnicas de otimização de renderização foram implementadas. Foi adicionada a ocultação de oclusão automática (occlusion culling), que determina e remove dinamicamente modelos ocultos por outras superfícies para melhorar o desempenho da renderização e reduzir a carga na CPU e GPU.

- Foi adicionado o modo SSIL (Screen Space Indirect Lighting), que melhora a qualidade da renderização em hardware de alto desempenho, aprimorando o processamento de áreas escuras e iluminação indireta. Além disso, foram fornecidas configurações adicionais para simulação de iluminação indireta difusa usando a técnica SSAO (Screen Space Ambient Occlusion), como a escolha do nível de influência da luz direta.
- Foram propostas unidades de iluminância realistas que permitem ajustar a intensidade da luz e usar configurações padrão da câmera, como abertura, exposição e ISO, para controlar o brilho da cena final.
- Novas ferramentas de edição de níveis para jogos 2D foram adicionadas. Foram realizadas mudanças radicais no processo de desenvolvimento de jogos 2D. Um novo editor de mapas de tiles (tilemap) foi criado, que agora suporta camadas, preenchimento automático do terreno, disposição randomizada de plantas, pedras e vários objetos, além de seleção flexível de objetos. O trabalho com mapas de tiles e conjuntos de fragmentos para construção de mapas (tileset) foi unificado. Foi garantida a expansão automática de fragmentos no conjunto para evitar espaços entre fragmentos adjacentes. Uma nova função de posicionamento de objetos na cena foi adicionada, que pode ser utilizada, por exemplo, para adicionar personagens nas células da grade de tiles.
- Na renderização 2D, foi implementada a capacidade de usar grupos de canvas, permitindo misturar elementos de canvas sobrepostos. Por exemplo, é possível unir vários sprites e misturá-los com o fundo, como se esses sprites fossem um único elemento. Foi adicionada a propriedade Clip Children, permitindo o uso de qualquer elemento 2D como máscara. Também foi adicionada a opção de usar o método de suavização MSAA (Multisample Anti-Aliasing) no motor 2D para melhorar a qualidade das imagens e criar bordas mais suaves.

- O desempenho na iluminação e nas sombras em jogos 2D foi aprimorado. A performance foi significativamente aumentada ao usar várias fontes de luz. Adicionou-se a capacidade de simular tridimensionalidade através da modificação do nível de iluminação em mapas normais, além de criar efeitos visuais como sombras longas, halos e contornos nítidos.

- Foi adicionado um efeito de neblina volumétrica que utiliza a técnica de reprojeção temporal para alcançar uma aparência realista e alta performance.

- Shaders de nuvens foram adicionados, permitindo a geração dinâmica de nuvens que mudam em tempo real.

- Foi implementado suporte para 'decals', um método de projeção de material em uma superfície.
- Foram adicionados efeitos de partículas aplicáveis a todo o espaço de jogo, utilizando GPU e suportando atratores, colisões, rastros e emissores.
- As capacidades da interface para edição visual de shaders foram ampliadas.

- A linguagem de shaders foi ampliada, agora suportando estruturas, macros de pré-processador, substituição de shaders (operador include), arrays unificados e o uso de 'varying' para transmitir dados do manipulador de fragmentos para o manipulador de iluminação.
- Foi adicionada a possibilidade de aplicar shaders computacionais que utilizam GPU para acelerar algoritmos.
- No linguagem de scripts GDScript, o sistema de tipagem estática foi aprimorado, um novo sintaxe para definição de propriedades foi adicionada, as palavras-chave await e super foram propostas, operações de map/reduce foram implementadas, um novo sistema de anotações foi introduzido, e a possibilidade de usar caracteres unicode em nomes de variáveis e funções foi acrescentada. Uma ferramenta para geração automática de documentação foi incorporada. O desempenho e a estabilidade do runtime GDScript foram melhorados. Na IDE, agora é possível exibir várias mensagens de erro ao mesmo tempo, e novos avisos para problemas comuns foram adicionados.

- As capacidades de desenvolvimento de lógica de jogos na linguagem C# foram ampliadas. O suporte à plataforma .NET 6 e à linguagem C# 10 foi adicionado. Tipos de 64 bits foram utilizados para valores escalares. Muitos APIs foram convertidos de tipos int e float para long e double. Agora é possível definir sinais na forma de eventos C#. A possibilidade de desenvolver extensões GDExtensions na linguagem C# foi incluída.
- Foi adicionada suporte experimental para extensões (GDExtension), que podem ser usadas para ampliar as capacidades do motor sem a necessidade de recompilação e sem alterações no código.
- Foi proposto por padrão o novo motor de simulação de processos físicos Godot Physics, otimizado para resolver problemas comuns em jogos de computador, alcançando paridade funcional com o motor anteriormente utilizado, Bullet (por exemplo, o Godot Physics agora inclui tratamento de novas formas de colisão, suporte para mapas de alturas e a possibilidade de usar nós SoftBody para simulação de roupas). A otimização de desempenho foi realizada, e o uso de multithreading foi ampliado, dividindo a carga entre diferentes núcleos de CPU ao simular processos físicos em ambientes 2D e 3D. Muitos problemas de simulação foram resolvidos.
- Foi proposta um novo sistema de renderização de texto, oferecendo maior controle sobre o corte e a quebra de texto, além de garantir alta nitidez em qualquer resolução de tela.
- As ferramentas para localização e trabalho em traduções foram ampliadas.
- Foi adicionado um diálogo separado para importar recursos 2D e 3D, suportando pré-visualização e modificação de configurações da cena importada, de materiais e de propriedades físicas.

- Novos widgets foram adicionados ao editor, como um painel para desfazer alterações e um novo diálogo para seleção de cores e atualização da paleta.

- A interface de inspeção foi atualizada, painel de controle a cena e o editor de scripts. A realce de sintaxe foi aprimorada, agora é possível exibir múltiplos cursores, e foram fornecidos recursos para editar formatos JSON e YAML.
- As capacidades do editor de animações foram expandidas, agora com suporte para mistura de formas e processos aprimorados baseados em curvas de Bézier. O código para animação 3D foi reescrito, implementando suporte para compressão para reduzir o consumo de memória. O sistema para mistura de animações e criação de efeitos de transição também foi reescrito. As possibilidades para criar animações complexas foram ampliadas. Bibliotecas de animação foram propostas para armazenar e reutilizar animações criadas.

- Foi adicionado um modo de criação de filmes, que realiza renderização quadro a quadro da cena com a máxima qualidade para a criação de animações e gravação de vídeo.
- O suporte a headsets 3D e plataformas de realidade virtual foi expandido. O suporte ao padrão OpenXR, que define uma API universal para a criação de aplicativos de realidade virtual e aumentada, foi integrado ao núcleo do motor. Em Windows e Linux, o suporte para todos os headsets 3D populares, incluindo os headsets SteamVR, Oculus e Monado, foi garantido.
- A estabilidade do subsistema para organização de jogos online foi melhorada e o processo de desenvolvimento de jogos multiplayer foi simplificado.
- As capacidades do sistema de som foram ampliadas, com suporte a polifonia, adição de uma API para síntese de voz e implementação da possibilidade de repetição de som.
- Foi garantida a possibilidade de executar a interface Godot em tablets Android e em navegadores web.

- Foi adicionada um novo sistema de compilação de jogos para diversas arquiteturas de CPU. Agora é possível compilar para Raspberry Pi, Microsoft Volterra, Surface Pro X, Pine Phone, VisionFive, ARM Chromebook e Asahi Linux.
- Mudanças foram feitas na API que quebram a compatibilidade. A transição de Godot 3.x para Godot 4.0 exigirá retrabalho dos aplicativos, mas para a linha Godot 3.x será assegurado um longo ciclo de suporte, cuja duração dependerá da demanda dos usuários pelo antigo API.

Fonte: opennet.ru

















