Dopo quattro anni di sviluppo, è stato pubblicato il rilascio del motore di gioco open source Godot 4.0, adatto per la creazione di giochi 2D e 3D. Il motore supporta un linguaggio di scripting facile da apprendere per la logica di gioco, un ambiente grafico per la progettazione dei giochi, un sistema di distribuzione dei giochi con un clic, ampie possibilità di animazione e simulazione dei processi fisici, un debugger integrato e un sistema di individuazione dei colli di bottiglia delle prestazioni. Il codice del motore di gioco, dell'ambiente di progettazione dei giochi e degli strumenti di sviluppo associati (motore fisico, server audio, backend di rendering 2D/3D, ecc.) è distribuito sotto licenza MIT.
I codici sorgente del motore sono stati resi disponibili nel 2014 dallo studio OKAM, dopo dieci anni di sviluppo di un prodotto proprietario di livello professionale, utilizzato per creare e pubblicare numerosi giochi per PC, console e dispositivi mobili. Il motore supporta tutte le principali piattaforme fisse e mobili (Linux, Windows, macOS, Wii, Nintendo 3DS, PlayStation 3, PS Vita, Android, iOS, BBX), oltre allo sviluppo di giochi per il Web. Sono state generate costruzioni binarie pronte all'uso per Linux, Android, Windows e macOS.
Il ramo Godot 4.0 include circa 12.000 modifiche e 7.000 bug corretti. Circa 1.500 persone hanno partecipato allo sviluppo del motore e alla scrittura della documentazione. Tra le modifiche principali:
- Sono stati proposti due nuovi backend di rendering (clusterizzato e mobile) basati sull'API grafica Vulkan, che sostituiscono i backend che effettuavano il rendering tramite OpenGL ES e OpenGL. Per dispositivi più vecchi e a bassa potenza è stato integrato un backend di compatibilità basato su OpenGL, che utilizza una nuova architettura di rendering. Per il rendering dinamico a risoluzione inferiore è stata utilizzata la tecnologia di super campionamento AMD FSR (FidelityFX Super Resolution), che impiega algoritmi di upsizing e ricostruzione dei dettagli per ridurre la perdita di qualità dell'immagine durante l'ingrandimento e la conversione a una risoluzione più alta. È stato implementato un motore di rendering basato su Direct3D 12, che migliorerà il supporto per le piattaforme Windows e Xbox.

- È stata aggiunta la possibilità di lavorare con l'interfaccia in modalità multi-finestra (vari pannelli e parti dell'interfaccia possono essere separati in finestre indipendenti).

- È stato aggiunto un nuovo editor per interfacce utente e un nuovo widget di progettazione visiva.

- È stato aggiunto un nuovo editor di temi.

- È stata completamente riscritta la gestione dell'illuminazione e delle ombre, che utilizza la tecnologia di illuminazione globale in tempo reale SDFGI (Signed Distance Field Global Illumination). È stata notevolmente migliorata la qualità del rendering delle ombre.

- Il nodo GIProbe, utilizzato per riempire la scena con luce riflessa, è stato sostituito dal nodo VoxelGI, ottimale per l'elaborazione in tempo reale dell'illuminazione in scene con interni di piccole o medie dimensioni. Per l'hardware a bassa potenza è rimasta la possibilità di rendering anticipato della luce e delle ombre tramite mappe di illuminazione, per accelerare il rendering di cui ora è utilizzato il GPU.

- Sono state implementate nuove tecniche di ottimizzazione del rendering. È stata aggiunta la ritaglio di occlusione automatica (occlusion culling), che determina e rimuove dinamicamente i modelli nascosti dietro altre superfici per migliorare le prestazioni del rendering e ridurre il carico su CPU e GPU.

- È stata aggiunta la modalità SSIL (Screen Space Indirect Lighting), che consente di migliorare la qualità del rendering su hardware ad alte prestazioni grazie a una migliore elaborazione delle aree scure e dell'illuminazione indiretta. Inoltre, sono state fornite ulteriori impostazioni per la simulazione dell'illuminazione indiretta diffusa tramite la tecnica SSAO (Screen Space Ambient Occlusion), come la selezione del livello di influsso della luce diretta.
- Sono state proposte unità di illuminamento realistiche che consentono di regolare l'intensità della luce e utilizzare per controllare la luminosità della scena finale le impostazioni standard della fotocamera, come diaframma, esposizione e ISO.
- Sono stati aggiunti nuovi strumenti per la modifica dei livelli per giochi bidimensionali. Sono state apportate modifiche radicali al processo di sviluppo dei giochi 2D. È stato aggiunto un nuovo editor di mappe a piastrelle (tilemap), che offre supporto per i livelli, il riempimento automatico del paesaggio, la disposizione randomizzata di piante, rocce e vari oggetti e la selezione flessibile degli oggetti. È stata unificata l'elaborazione delle mappe a piastrelle e dei set di frammenti per la costruzione della mappa (tileset). È stato garantito l'ampliamento automatico dei frammenti nel set per escludere spazi vuoti tra frammenti adiacenti. È stata aggiunta una nuova funzione di posizionamento degli oggetti sulla scena, che può essere utilizzata, ad esempio, per aggiungere personaggi nelle celle della griglia delle piastrelle.
- Nella rasterizzazione 2D è stata implementata la possibilità di utilizzare gruppi di canvas, che consentono di mescolare elementi sovrapposti del canvas; ad esempio, è possibile unire più sprite e mixarli con lo sfondo, come se questi sprite fossero un unico elemento. È stata aggiunta la proprietà Clip Children, che consente di utilizzare qualsiasi elemento 2D come maschera. Allo stesso modo, è stata aggiunta un'opzione al motore 2D che permette l'uso del metodo di antialiasing MSAA (Multisample Anti-Aliasing) per migliorare la qualità delle immagini e creare bordi più lisci.

- Migliorato il lavoro con luci e ombre nei giochi 2D. Significativamente aumentata la performance nell'uso di più fonti di luce. Aggiunta la possibilità di simulare la tridimensionalità variando il livello di illuminazione sulle mappe delle normali, così come la creazione di effetti visivi come le lunghe ombre, gli aloni e i contorni nitidi.

- Aggiunto l'effetto di nebbia volumetrica, che utilizza la tecnica di reproiezione temporale per ottenere un aspetto realistico e alte prestazioni.

- Aggiunti shader per le nuvole, che permettono di generare nuvole dinamicamente, che cambiano in tempo reale.

- Implementato il supporto per i "decals", un metodo di proiezione del materiale sulla superficie.
- Aggiunti effetti basati su particelle utilizzabili nell'intero spazio di gioco, che utilizzano la GPU e supportano attrattori, collisioni, scie ed emettitori.
- Ampliate le funzionalità dell'interfaccia per la modifica visiva degli shader.

- Espanso il linguaggio degli shader, che ora supporta strutture, macro del preprocessore, inclusione di shader (operatore include), array unificati e utilizzo di "varying" per il trasferimento di dati dal gestore di frammenti al gestore dell'illuminazione.
- Aggiunta la possibilità di applicare shader computazionali, che utilizzano la GPU per accelerare gli algoritmi.
- Nel linguaggio di scripting GDScript è stato migliorato il sistema di tipizzazione statica, aggiunta una nuova sintassi per la definizione delle proprietà, introdotte le parole chiave await e super, aggiunte operazioni map/reduce, implementato un nuovo sistema di annotazioni, e resa possibile l'uso di caratteri unicode nei nomi delle variabili e nei nomi delle funzioni. È stato aggiunto uno strumento per la generazione automatica della documentazione. Le prestazioni e la stabilità del runtime di GDScript sono state migliorate. Nell'ambiente di sviluppo è stata fornita la possibilità di visualizzare più errori contemporaneamente e sono stati aggiunti nuovi avvisi per problematiche comuni.

- Ampliate le possibilità di sviluppo della logica di gioco nel linguaggio C#. Aggiunta la supporto per la piattaforma .NET 6 e il linguaggio C# 10. Per i valori scalari sono stati utilizzati tipi a 64 bit. Molte API sono state trasferite da tipi int e float a long e double. È stata fornita la possibilità di definire segnali sotto forma di eventi C#. È stata aggiunta la possibilità di sviluppare estensioni GDExtensions nel linguaggio C#.
- Aggiunta la supporto sperimentale per le estensioni (GDExtension), che possono essere utilizzate per ampliare le funzionalità del motore senza ricompilarlo e senza modificare il codice.
- È stato proposto di default il motore di simulazione dei processi fisici Godot Physics, ottimizzato per risolvere problemi tipici dei videogiochi e raggiunto il parità nelle funzionalità con il motore precedentemente utilizzato Bullet (ad esempio, in Godot Physics è stata introdotta la gestione di nuove forme di collisione, il supporto per le mappe di altezza e la possibilità di utilizzare nodi SoftBody per la simulazione dei vestiti). È stata condotta un'ottimizzazione delle prestazioni e ampliato l'uso del multithreading suddividendo il carico tra i diversi core della CPU nella simulazione dei processi fisici in ambienti 2D e 3D. Sono stati risolti molti problemi legati alla simulazione.
- È stato proposto un nuovo sistema di rendering del testo, che offre un maggiore controllo sul ritaglio e sul ritorno a capo del testo, garantendo anche un'alta chiarezza a qualsiasi risoluzione dello schermo.
- Ampliate gli strumenti per la localizzazione e il lavoro di traduzione.
- Aggiunto un dialogo separato per l'importazione di risorse 2D e 3D, che supporta l'anteprima e la modifica delle impostazioni della scena, dei materiali e delle proprietà fisiche importate.

- Sono stati aggiunti nuovi widget all'editor, come un pannello per annullare le modifiche e una nuova finestra di selezione del colore e aggiornamento della palette.

- Aggiornata l'interfaccia di ispezione, dashboard la scena e l'editor di script. Migliorata la sintassi, aggiunta la possibilità di visualizzare più cursori, forniti strumenti per la modifica di formati JSON e YAML.
- Ampliate le funzionalità dell'editor di animazione, che ora supporta il miscelamento delle forme e migliora i processi basati sulle curve di Bezè. Riscritta la codifica per l'animazione 3D, che implementa il supporto per la compressione per ridurre l'uso di memoria. Riscritta la sistema per il miscelamento dell'animazione e la creazione di effetti di transizione. Ampliate le possibilità di creare animazioni complesse. Sono state proposte librerie di animazione per l'archiviazione e il riutilizzo delle animazioni create.

- Aggiunta la modalità di creazione di film, che esegue il rendering frame per frame della scena con la massima qualità per la creazione di intro e registrazioni video.
- Espansa la compatibilità con i visori 3D e le piattaforme di realtà virtuale. Supporto integrato nel motore per lo standard OpenXR, che definisce un'API universale per la creazione di applicazioni di realtà virtuale e aumentata. In Windows e Linux è garantito il supporto per tutti i visori 3D più popolari, inclusi quelli di SteamVR, Oculus e Monado.
- Aumentata la stabilità del sottosistema per l'organizzazione del gioco in rete e semplificato il processo di sviluppo di giochi multiplayer.
- Ampliate le capacità del sistema audio, integrato il supporto per la polifonia, aggiunta un'API per la sintesi vocale e implementata la possibilità di loop del suono.
- Garantita la possibilità di avviare l'interfaccia di Godot su tablet Android e in un browser web.

- Aggiunto un nuovo sistema di compilazione di giochi per diverse architetture CPU. Ad esempio, ora è possibile compilare per Raspberry Pi, Microsoft Volterra, Surface Pro X, Pine Phone, VisionFive, ARM Chromebook e Asahi Linux.
- Modifiche all'API che rompono la compatibilità. Il passaggio da Godot 3.x a Godot 4.0 richiederà una revisione delle applicazioni, ma per il ramo Godot 3.x è garantito un lungo ciclo di supporto, la cui durata dipenderà dalla domanda degli utenti per la vecchia API.

Fonte: opennet.ru

















