După patru ani de dezvoltare, a fost lansată versiunea 4.0 a engine-ului de jocuri open-source Godot, potrivit pentru crearea de jocuri 2D și 3D. Engine-ul suportă un limbaj de scripting ușor de învățat pentru logica jocului, un mediu grafic pentru proiectarea jocurilor, un sistem de implementare a jocurilor cu un singur clic, capacități extinse de animație și simulare a proceselor fizice, un debugger încorporat și un sistem de identificare a bottleneck-urilor de performanță. Codul motorului de joc, mediu de proiectare a jocurilor și instrumentele de dezvoltare aferente (motor fizic, server audio, backend-uri pentru randare 2D/3D etc.) sunt distribuite sub licența MIT.
Codurile sursă ale motorului au fost deschise în 2014 de către studioul OKAM, după zece ani de dezvoltare a unui produs proprietar de nivel profesional, utilizat pentru crearea și publicarea multor jocuri pentru PC, console de jocuri și dispozitive mobile. Motorul suportă toate platformele populare de stație și mobile (Linux, Windows, macOS, Wii, Nintendo 3DS, PlayStation 3, PS Vita, Android, iOS, BBX), precum și dezvoltarea de jocuri pentru Web. Pachetele binare gata de rulare sunt disponibile pentru Linux, Android, Windows și macOS.
Ramura Godot 4.0 include aproximativ 12.000 de modificări și 7.000 de bug-uri corectate. La dezvoltarea motorului și la redactarea documentației au participat aproximativ 1.500 de persoane. Printre modificările cheie se numără:
- Sunt propuse două noi backend-uri de randare (clusterizat și mobil) bazate pe API-ul grafic Vulkan, care înlocuiesc backend-urile care realizau randarea prin OpenGL ES și OpenGL. Pentru dispozitivele mai vechi și cu performanțe mai slabe, a fost integrat un backend de compatibilitate bazat pe OpenGL, care utilizează o nouă arhitectură de randare. Pentru randarea dinamică cu o rezoluție mai mică este utilizată tehnologia de supersampling AMD FSR (FidelityFX Super Resolution), care folosește algoritmi de scalare spațială și reconstrucție a detaliilor pentru a reduce pierderea calității imaginii la creșterea scalei și conversia într-o rezoluție mai mare. A fost realizat un motor de randare bazat pe Direct3D 12, care va îmbunătăți suportul pentru platformele Windows și Xbox.

- S-a adăugat suport pentru interfața în modul multi-fereastră (diferite panouri și părți ale interfeței pot fi detașate ca feronier separate).

- A fost adăugat un nou editor de interfețe utilizator și un nou widget de proiectare vizuală.

- A fost adăugat un nou editor de teme.

- Sistemul de gestionare a iluminatului și umbrelor a fost rescris complet, utilizând tehnologia de iluminare globală SDFGI (Signed Distance Field Global Illumination) care funcționează în timp real. Calitatea randării umbrelor a fost semnificativ îmbunătățită.

- Nodul GIProbe, utilizat pentru a umple scena cu lumină reflectată, a fost înlocuit cu nodul VoxelGI, optim pentru procesarea iluminării în timp real a scenelor cu interior mic sau mediu. Pentru echipamentele de joasă putere, a fost păstrată opțiunea de redare preventivă a luminii și umbrelor prin intermediul hărților de iluminare, pentru accelerarea redării căror acum este utilizat GPU.

- S-au implementat noi tehnici de optimizare a redării. A fost adăugată decuparea occlusivă automată (occlusion culling), care determină și elimină dinamic modelele ascunse în spatele altor suprafețe pentru a îmbunătăți performanța redării și a reduce sarcina pe CPU și GPU.

- A fost adăugat modul SSIL (Screen Space Indirect Lighting), care permite îmbunătățirea calității redării pe echipamente de înaltă performanță prin îmbunătățirea procesării zonelor întunecate și a iluminării indirecte. În plus, sunt oferite setări suplimentare pentru simularea iluminării indirecte difuze prin tehnica SSAO (Screen Space Ambient Occlusion), cum ar fi selectarea nivelului de influență a luminii directe.
- Sunt propuse unități realiste de iluminare, permițând ajustarea intensității luminii și utilizarea setărilor standard ale camerei, cum ar fi diafragma, timpul de expunere și ISO, pentru a controla strălucirea scenei finale.
- Au fost adăugate noi instrumente pentru editarea nivelurilor pentru jocurile 2D. Au fost efectuate modificări radicale în procesul de dezvoltare a jocurilor 2D. A fost adăugat un nou editor de hărți de tip tilemap, care include suport pentru straturi, completarea automată a peisajului, distribuirea aleatorie a plantelor, rocilor și diverselor obiecte, precum și selecția flexibilă a obiectelor. A fost unificată lucrul cu hărțile tilemap și seturile de fragmente pentru construirea hărții (tileset). A fost asigurat un extinderea automată a fragmentelor din set pentru a elimina spațiile între fragmentele adiacente. A fost adăugată o nouă funcție de plasare a obiectelor în scenă, care, de exemplu, poate fi folosită pentru a adăuga personaje în celulele rețelei de tilemap.
- În desenarea 2D a fost implementată posibilitatea utilizării grupurilor de canvase, ceea ce permite amestecarea elementelor suprapuse de canvas, de exemplu, mai multe sprite-uri pot fi combinate cu fundalul, ca și cum aceste sprite-uri ar fi un singur element. A fost adăugată proprietatea Clip Children, care permite utilizarea oricărui element 2D ca mască. De asemenea, motorul 2D a primit opțiunea de a utiliza metoda de anti-aliasing MSAA (Multisample Anti-Aliasing) pentru a îmbunătăți calitatea imaginilor și a crea margini mai fine.

- Performanța iluminării și a umbrelor în jocurile 2D a fost îmbunătățită. Performanța a crescut semnificativ în utilizarea mai multor surse de lumină. A fost introdusă posibilitatea de a simula tridimensionalitatea prin modificarea nivelului de iluminare pe hărțile de normală, precum și crearea de efecte vizuale precum umbre lungi, aure și contururi clare.

- A fost adăugat efectul de ceață volumetrică, care utilizează tehnica reproiecției temporale pentru a obține un aspect realist și o performanță ridicată.

- Au fost adăugate shader-uri pentru nori, care permit generarea dinamică a norilor care se schimbă în timp real.

- A fost implementat suportul pentru "decaluri", metoda de proiecție a materialului pe suprafață.
- Au fost adăugate efecte bazate pe particule aplicabile în întregul spațiu de joc, care utilizează GPU și sprijină atractori, coliziuni, dâre și emițătoare.
- Funcționalitatea interfeței pentru editarea vizuală a shader-elor a fost extinsă.

- Limbajul shader-elor a fost extins, având acum suport pentru structuri, macrocomenzi de preprocesare, includerea shader-elor (operatorul include), tablouri unificate și utilizarea 'varying' pentru transmiterea datelor din procesorul de fragmente în procesorul de iluminare.
- A fost adăugată posibilitatea aplicării shader-elor computaționale, care utilizează GPU pentru accelerarea algoritmilor.
- În limbajul de scriptare GDScript a fost îmbunătățită sistemul de tipizare statică, a fost adăugat un nou sintax de definire a proprietăților, au fost propuse cuvintele cheie await și super, au fost adăugate operațiuni map/reduce, s-a implementat un nou sistem de anotări, a apărut posibilitatea utilizării caracterelor unicode în numele variabilelor și al funcțiilor. A fost adăugat un instrument pentru generarea automată a documentației. Performanța și stabilitatea runtime-ului GDScript au fost îmbunătățite. În mediul de dezvoltare a fost asigurată posibilitatea de a afișa mai multe erori deodată, fiind adăugate noi avertizări pentru problemele tipice.

- Capabilitățile de dezvoltare a logicii de joc în limbajul C# au fost extinse. A fost adăugată suportul pentru platforma .NET 6 și limbajul C# 10. Tipurile de date de 64 de biți au fost folosite pentru valorile scalare. Multe API-uri au fost traduse din tipurile int și float în long și double. A fost oferită posibilitatea de a defini semnale sub formă de evenimente C#. A fost adăugată posibilitatea de a dezvolta extensii GDExtensions în limbajul C#.
- A fost adăugată suportul experimental pentru extensii (GDExtension), care pot fi utilizate pentru a extinde capabilitățile motorului fără a-l recompila și fără a modifica codul.
- A fost propusă, implicit, propriul motor de simulare a proceselor fizice Godot Physics, optimizat pentru a rezolva problemele specifice jocurilor pe calculator, și adus la paritate în funcționalitate cu motorul folosit anterior, Bullet (de exemplu, în Godot Physics a fost adăugată gestionarea de noi forme de coliziune, suport pentru hărți de înălțime și posibilitatea utilizării nodurilor SoftBody pentru simularea îmbrăcămintei). A fost optimizată performanța și extinsă utilizarea multithreading-ului prin împărțirea sarcinii pe diferite nuclee CPU în timpul simulării proceselor fizice în medii 2D și 3D. Multe probleme de simulare au fost rezolvate.
- A fost propus un nou sistem de redare a textului, care oferă mai mult control asupra tăierii și întreruperii textului, asigurând în același timp o claritate ridicată la orice rezoluție de ecran.
- Instrumentele pentru localizare și traducere au fost extinse.
- A fost adăugat un dialog separat pentru importul resurselor 2D și 3D, care suportă previzualizarea și modificarea setărilor scenei importate, materialelor și proprietăților fizice.

- Editorul a adăugat widget-uri noi, cum ar fi o bară pentru revenirea la modificări și un nou dialog de selecție a culorii și actualizării paletei.

- Interfața de inspectare a fost actualizată, panoul de control scena și editorul de scripturi. S-a îmbunătățit evidențierea sintaxei, s-a adăugat suportul pentru afișarea mai multor cursor și s-au furnizat instrumente pentru editarea formatelor JSON și YAML.
- Funcționalitățile editorului de animație au fost extinse, având acum suport pentru amestecarea figurilor și procese îmbunătățite bazate pe curba Bézier. Codul pentru animația 3D a fost rescris, implementând suport pentru compresie pentru a reduce consumul de memorie. Sistemul pentru amestecarea animației și crearea de efecte de tranziție a fost rescris. S-au extins posibilitățile de a crea animații complexe. Au fost propuse biblioteci de animație pentru stocarea și reutilizarea animațiilor create.

- A fost adăugat un modul de creare a filmelor, care efectuează renderizarea cadru cu cadru a scenei cu cea mai bună calitate pentru a crea intro-uri și înregistrări video.
- S-a extins suportul pentru căști 3D și platforme de realitate virtuală. Engine-ul a integrat suportul pentru standardul OpenXR, care definește o API universală pentru crearea aplicațiilor de realitate virtuală și augmentată. În Windows și Linux, suportul pentru toate căștile 3D populare, inclusiv căștile SteamVR, Oculus și Monado, a fost asigurat.
- Stabilitatea subsistemului pentru organizarea jocurilor online a fost îmbunătățită, iar procesul de dezvoltare a jocurilor multiplayer a fost simplificat.
- Funcționalitățile sistemului audio au fost extinse, având acum suport pentru polifonie, s-a adăugat o API pentru sinteza vocală și s-a implementat posibilitatea de a repeta sunetul.
- A fost asigurată posibilitatea de a lansa interfața Godot pe tablete Android și în browsere web.

- A fost adăugată o nouă sistem de construire a jocurilor pentru diverse arhitecturi de CPU. De exemplu, acum se poate construi pentru Raspberry Pi, Microsoft Volterra, Surface Pro X, Pine Phone, VisionFive, Chromebook ARM și Asahi Linux.
- În API au fost efectuate modificări care afectează compatibilitatea. Trecerea de la Godot 3.x la Godot 4.0 va necesita reproiectarea aplicațiilor, dar pentru ramura Godot 3.x a fost asigurată o durată lungă de suport, perioada acesteia depinzând de cererea utilizatorilor pentru vechiul API.

Sursa: opennet.ro

















