Dopo cinque mesi di sviluppo, è stato pubblicato il rilascio del motore di gioco gratuito Godot 4.2, 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'interfaccia grafica per la progettazione di giochi, un sistema di distribuzione dei giochi con un clic, ampie funzionalità di animazione e simulazione fisica, un debugger integrato e un sistema per identificare colli di bottiglia nelle prestazioni. Il codice del motore di gioco, dell'ambiente di progettazione dei giochi e degli strumenti di sviluppo correlati (motore fisico, server audio, back-end 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.
Variazioni principali:
- Per gli sviluppatori di giochi 2D è stata aggiunta la supporto per il ridimensionamento intero forzato, permettendo di ottenere una griglia di pixel quadrata, indipendentemente dal rapporto d'aspetto effettivo. È stata fornita la possibilità di ottenere le coordinate baricentriche della normale dai punti di intersezione di un oggetto con un raggio. Sono stati aggiunti i metodi Rotate_toward e Angle_difference per una corretta gestione della rotazione e degli angoli. È stata aggiunta la proprietà "closed" nei nodi Line2D per creare linee chiuse con riempimento continuo.

- Sono stati effettuati lavori per aumentare l'affidabilità del sistema di animazione. Sono stati riprogettati e unificati i nodi AnimationPlayer e AnimationTree, le parti comuni delle quali sono state estratte in una classe intermedia AnimationMixer. È stata aggiunta un'opzione per il mixing deterministico. Nella visualizzazione dell'animazione è stata aggiunta una modalità di sovrapposizione (onion skinning), che include la visualizzazione di sovrapposizioni semitrasparenti con i fotogrammi precedenti e successivi dell'animazione.

- Le funzionalità di "baking" della griglia di navigazione (baking, conversione in forma statica) per il 2D sono simili a quelle precedentemente disponibili nella navigazione 3D; ad esempio, per le griglie 2D è stata implementata la supporto per interagire con corpi fisici, istanze di mesh poligonali, semplici poligoni e mappe tile (tilemap). In servers Nella navigazione 2D e 3D è stato aggiunto il supporto per il baking multithread dei mesh.

- È stata effettuata una rifattorizzazione del codice per lavorare con i tile e le mappe tile. Le operazioni di raggruppamento dei blocchi e ordinamento lungo l'asse Y sono state ottimizzate, permettendo di ridurre significativamente i tempi di aggiornamento dei tile. È stato lavorato per migliorare la facilità di creazione delle mappe tile e il loro utilizzo. È stato aggiunto uno strumento per ruotare e capovolgere i tile durante il posizionamento. Sono stati migliorati gli strumenti per l'editing dei poligoni e delle scene tile.

- Nel editor di script GDScript è stata aggiunta la possibilità di creare aree di codice nominate per comprimere blocchi durante l'editing e semplificare la navigazione. Nel debugger degli script è stato aggiunto il supporto completo per codice multithread, stack di esecuzione e punti di interruzione. Negli script basati su C#/.NET è stato implementato il supporto per le piattaforme Android (richiesta .NET 7.0+) e iOS (richiesta .NET 8.0). Negli script GDScript è stato ampliato il supporto per il codice staticamente tipizzato, è stato aggiunto il supporto per i letterali di stringa r-string (raw string) e ampliate le funzionalità dell'operatore match.

- Nella viewport 3D è stato migliorato il supporto per la gestione delle trasformazioni in stile Blender, utilizzando il mouse e le scorciatoie da tastiera. La visualizzazione delle informazioni visive avanzate nella viewport 3D ora avviene solo per gli oggetti selezionati. Sono stati aggiunti indicatori aggiuntivi per elementi come decalcomanie e volume di nebbia. È stato migliorato il lavoro con il gizmo: ora si può espandere separatamente qualsiasi lato delle forme volumetriche nella finestra di visualizzazione.

- Migliorati i menu contestuali e i suggerimenti nelle schede "Ispezione" e "Segnali". Nell'editor temi sono stati aggiunti suggerimenti che descrivono le proprietà. Nella pannello per la gestione del filesystem è stata aggiunta la possibilità di evidenziare visivamente le cartelle assegnando loro colori diversi. È stata riprogettata l'interfaccia dell'editor delle risorse dei gradienti. Nell'editor delle aree texture è stata uniformata l'operazione con tutte le risorse supportate, inclusi stili e atlanti.

- Nella biblioteca degli asset è migliorata la visualizzazione dei risultati di ricerca e aggiunta la possibilità di scegliere un'altra cartella per l'installazione di un'estensione o risorsa.

- Nel gestore dei progetti è stata ristrutturata la disposizione dei principali elementi di controllo e modernizzata l'interfaccia di importazione del progetto.

- Espanse le possibilità di sviluppo di plugin per l'editor. Garantito l'accesso a tutta la funzionalità dell'editor attraverso la classe EditorInterface. Implementati metodi comodi per un accesso diretto alle viewport 2D e 3D. Aggiunta la possibilità di visualizzare un dialogo di avviso sulle modifiche non salvate.
- Proseguito lo sviluppo del sistema sperimentale di estensioni GDExtension, che consente l'uso di linguaggi a basso livello come C++ come linguaggi di scripting per i giochi, senza ricompilare il motore e senza apportare modifiche al codice. Aggiunta la possibilità di utilizzare le GDExtensions durante l'esportazione in Web.
- Nell'interfaccia utente è stata modificata la gestione del focus. Implementata la possibilità di trasferire il focus su singole schede nella barra delle schede, anche durante la navigazione tramite tastiera. Nei nodi di controllo (Control) è stato aggiunto un metodo per cercare il prossimo elemento focalizzabile adiacente. Sono stati significativamente riprogettati i nodi di costruzione dei grafi (GraphEdit e GraphNode). Espanse le possibilità di personalizzazione della barra degli strumenti del nodo principale GraphEdit.

- Aggiunta la possibilità di modificare il tipo di importazione degli asset al volo con aggiornamento automatico di scene e risorse, senza necessità di riavviare l'editor. Espansi i parametri di importazione disponibili e fornita la possibilità di modificare le proprietà fisiche degli oggetti importati, nonché i parametri delle ombre e della visibilità. Aggiunta la possibilità di anteprima delle animazioni nella finestra di dialogo di importazione. Espansa la supporto per l'importazione di asset da Blender nel formato GLTF. Aggiunta la supporto per l'importazione di immagini nel formato KTX.

- Sono state implementate ottimizzazioni finalizzate a migliorare le prestazioni del rendering. Per accelerare il funzionamento sui dispositivi mobili, sono state separate le barriere raster in componenti vertex e fragment. È stata accelerata la generazione di texture rumorose. È stato aggiunto un passaggio preliminare per il calcolo della profondità. È stato ridotto il tempo di caricamento e compilazione degli shader. È stato ottimizzato lo stoccaggio delle mesh poligonali in memoria. È stato aggiunto il supporto per la compressione delle mesh poligonali per ridurre la larghezza di banda durante la loro trasmissione.
- È stata aggiunta la possibilità di creare i propri oggetti texture (esempio di utilizzo degli shader per la creazione di texture con effetto acqua).
- È stata aggiunta un'API per chiamare codici nel thread di rendering, necessaria, ad esempio, quando è necessario sincronizzare lo shader computazionale con il rendering.
- È stato aggiunto il supporto per la versione 2.2 della tecnologia di supersampling AMD FSR (FidelityFX Super Resolution), che utilizza algoritmi di scaling spaziale e ricostruzione dei dettagli per ridurre la perdita di qualità dell'immagine durante lo scaling e la conversione a risoluzioni più elevate.
- È stato proposto un nuovo riduttore di rumore JNLM, che utilizza mappe di illuminazione (lightmapper) e shader computazionali. JNLM è significativamente più veloce della precedente libreria di riduzione del rumore OIDN (Open Image Denoise), ma in alcune situazioni può risultare inferiore in qualità.
- Nei metodi di rendering Forward+ e Mobile è stato aggiunto il supporto per il rendering 2D in un intervallo dinamico di luminosità esteso (HDR), che consente di realizzare in giochi 2D alcuni effetti 3D, come l'illuminazione. Nel metodo di rendering Compatibility è stato aggiunto il supporto per ombre tridimensionali.
- Per macOS e Windows è stato proposto un nuovo driver di rendering OpenGL, che utilizza il layer ANGLE, trasponendo le chiamate OpenGL nell'API Direct3D 11 e Metal.
- Il sistema di simulazione delle particelle è stato riprogettato per semplificare la manutenzione e ampliare il controllo del movimento delle particelle. Ad esempio, ora è possibile animare e ereditare la velocità di movimento, oltre a modificare il numero di particelle emesse. È stato aggiunto uno strumento per convertire il codice di generazione di particelle che utilizza la CPU in un codice equivalente che utilizza la GPU.
- È stata aggiunta la supporto per utilizzare i dialoghi di selezione file nativi per Linux, macOS e Windows, oltre alla possibilità di copiare e incollare le immagini tramite il sistema degli appunti.
- Architettura di Godot per la piattaforma Android rielaborata, che ha eliminato il legame con il componente Android Fragment, riducendo così il tempo di avvio delle applicazioni e dei giochi e consentendo il lavoro con più finestre.
- È stata stabilita la creazione di versioni ufficiali di Linux dell'editor Godot per piattaforme ARM a 32 e 64 bit.
Fonte: opennet.ru











