Négy év fejlesztés után megjelent a Godot 4.0 szabad játékmotor, amely alkalmas 2D és 3D játékok létrehozására. A motor egy könnyen tanulható játékelméleti nyelvet, grafikai tervezőfelületet, egy kattintással történő játékkiadási rendszert, széleskörű animációs és fizikai szimulációs lehetőségeket, beépített hibakeresőt és a teljesítmény szűk keresztmetszeteinek feltárási rendszerét támogatja. A játékmotor, a játéktervező környezet és a kapcsolódó fejlesztői eszközök (fizikai motor, hangszolgáltató, 2D/3D renderelési backend stb.) MIT licenc alatt érhetők el.
A motor forráskódjait 2014-ben az OKAM stúdió nyitotta meg, tíz évnyi professzionális, saját termék fejlődése után, amelyet számos PC, játékkonzol és mobil eszköz játékának létrehozására és kiadására használtak. A motor támogatja az összes népszerű álló és mobil platformot (Linux, Windows, macOS, Wii, Nintendo 3DS, PlayStation 3, PS Vita, Android, iOS, BBX), valamint lehetővé teszi a játékok webes fejlesztését. A futtatásra kész bináris csomagok Linuxra, Androidra, Windowsra és macOS-ra készültek.
A Godot 4.0 ágból körülbelül 12 ezer változtatás került be, és 7 ezer hibát javítottak ki. A motor fejlesztésében és a dokumentáció írásában körülbelül 1500 ember vett részt. A kulcsfontosságú változások között szerepel:
- Két új renderelési backend (klaszterezett és mobil) került javaslatra a Vulkan grafikai API alapjain, amelyek helyettesítik az OpenGL ES és OpenGL alapú renderelési backendeeket. Régi és gyenge teljesítményű eszközök számára egy OpenGL alapú kompatibilitási backend integrálása történt meg, amely új renderelési architektúrát használ. Az alacsonyabb felbontású dinamikus rendereléshez az AMD FSR (FidelityFX Super Resolution) szupermintavételezési technológiája került bevezetésre, amely térbeli nagyítási és részletrekonstrukciós algoritmusokat alkalmaz a képminőség csökkenésének minimalizálására nagyobb felbontásra való felnagyításkor. A Direct3D 12 alapú renderelési motor is megvalósult, amely javítja a Windows és Xbox platformok támogatását.

- Új lehetőség került hozzáadásra a többablakos módban való munkavégzésre (különböző panelek és az interfész részei leválaszthatók külön ablakok formájában).

- Új felhasználói felület-szerkesztő és új vizuális tervező widget került hozzáadásra.

- Új téma-készítő szerkesztő került bevezetésre.

- Teljesen átírták a fény- és árnyékgazdálkodási rendszert, amely a valós idejű globális világítási technológiát, az SDFGI-t (Signed Distance Field Global Illumination) alkalmazza. Az árnyékrajzolás minősége jelentősen javult.

- A GIProbe csomópontot, amely a színpad fényvisszaverődését tölti ki, lecserélték a VoxelGI csomópontjára, amely a kis vagy közepes belső terek világításának valós idejű feldolgozására optimalizált. Az alacsony teljesítményű berendezések számára lehetőség maradt a fény és árnyék előzetes renderelésére világító térképek segítségével, amelynek gyorsítására most a GPU-t is felhasználják.

- Új renderelési optimalizálási technikák kerültek bevezetésre. Automatikus elhalványító vágás (occlusion culling) került hozzáadásra, amely dinamikusan meghatározza és eltávolítja a más felületek mögött rejtőző modelleket a renderelési teljesítmény növelése és a CPU és GPU terhelésének csökkentése érdekében.

- SSIL (Screen Space Indirect Lighting) mód került bevezetésre, amely lehetővé teszi a renderelés minőségének javítását nagy teljesítményű felszereléseken a sötét területek és a közvetett világítás jobb kezelésével. Ezenkívül további beállítások állnak rendelkezésre a közvetett fény szórásának szimulálására az SSAO (Screen Space Ambient Occlusion) technika segítségével, például a közvetlen fény hatásának szintjének kiválasztása.
- Realisztikus világítási egységek kerültek javaslatra, amelyek lehetővé teszik a fény intenzitásának szabályozását, és a fényerősség kezeléséhez a kamera beállításait, mint például a rekesz, záridő és ISO használatát.
- Új szintszerkesztő eszközök kerültek hozzáadásra kétdimenziós játékokhoz. Radikális változtatások történtek a 2D-játékok fejlesztési folyamatában. Bevezettük az új tilemap szerkesztőt, amely támogatja a rétegeket, a táj kitöltését, a növények, kövek és különböző objektumok véletlenszerű elhelyezését, valamint a rugalmas objektumkiválasztást. Egységesítettük a tilemap-ek és a térképépítő fragementek (tileset) használatát. Automatikus fragmentbővítést biztosítunk a szomszédos fragmentek közötti rések elkerülésére. Új objektumelhelyező funkció került bevezetésre a színtérre, amely például felhasználható karakterek hozzáadására a tile háló celláiba.
- 2D-rendertéssel megvalósítottuk a vászoncsoportok használatának lehetőségét, amelyek lehetővé teszik a fedő elemek összeolvasztását. Például több sprite egyesíthető és összekeverhető a háttérrel, mintha ezek a sprite-ok egyetlen elem lennének. Bevezetésre került a Clip Children tulajdonság, amely lehetővé teszi bármely 2D-elem maszkként való használatát. A 2D-motorhoz hozzáadtuk azt az opciót, amely lehetővé teszi a MSAA (Multisample Anti-Aliasing) simítási módszer használatát a képek minőségének javítása és simább szélek létrehozása érdekében.

- Javítottunk a világítással és árnyékokkal való munkán a 2D-játékokban. Jelentősen nőtt a teljesítmény több fényforrás egyidejű használatakor. Lehetőség nyílt a háromdimenzionalitás szimulálására a normál térképeken lévő világítási szint változtatásával, valamint olyan vizuális effektusok, mint a hosszú árnyékok, fénygyűrűk és éles kontúrok létrehozására.

- Hozzáadtunk egy volumetrikus köd effektust, amely időbeli re-projekción alapul a realisztikus megjelenés és a magas teljesítmény elérése érdekében.

- Felhőárnyékoló shaderek kerültek bevezetésre, amelyek lehetővé teszik a felhők dinamikus generálását, amelyek valós időben változnak.

- Megvalósítottuk a „decal” támogatását, amely egy anyagprojektálási módszer a felületeken.
- Egy, az egész játékteret érintő részecskealapú effektusokat hoztunk létre, amelyek GPU-t használnak és támogatják az vonzókat, ütközéseket, csóvákat és kibocsátókat.
- Kibővítettük az interfész lehetőségeit a shaderek vizuális szerkesztésére.

- Kiterjesztették a shader nyelvet, amely támogatja a struktúrákat, a preprocessor makrókat, a shader cserét (include operátor), az egységesített tömböket és a „varying” használatát az adatok átvitelére a fragmentum kezelőből a világítási kezelőbe.
- Lehetőség nyílt számítási shaderek alkalmazására, amelyek a GPU-t használják az algoritmusok felgyorsítására.
- A GDScript szkript nyelvben javították a statikus típusellenőrzés rendszerét, új szintaxis került bevezetésre a tulajdonságok definiálására, új kulcsszavakat, mint az await és a super, adtak hozzá, megvalósították a map/reduce műveleteket, bevezetésre került egy új annotációs rendszer, lehetővé vált a unicode karakterek használata a változók és a függvények neveiben. Egy automatikus dokumentációgeneráló eszközt is hoztak létre. Növelték a GDScript runtime teljesítményét és stabilitását. A fejlesztői környezetben lehetőség nyílik több hiba azonnali megjelenítésére, új figyelmeztetések kerültek bevezetésre tipikus problémákra.

- A C# nyelven a játéklogika fejlesztési lehetőségei bővültek. Támogatták a .NET 6 platformot és a C# 10 nyelvet. A skáláris értékekhez 64 bites típusokat alkalmaztak. Sok API-t átállítottak int és float típusokról long és double típusokra. Lehetőség nyílt jelek definiálására C# eseményformájában. Bevezették a GDExtensions kiterjesztések fejlesztésének lehetőségét C# nyelven.
- Kísérleti támogatást nyújtanak a kiterjesztésekhez (GDExtension), amelyeket a motor funkcionalitásának bővítésére lehet használni, anélkül, hogy újra kellene fordítani a motort vagy módosítani a kódot.
- Alapértelmezettként bemutatták a Godot Physics fizikai folyamatok szimulációs motorját, amely optimalizálva lett a számítógépes játékokhoz szükséges feladatokhoz, és amely funkcióit a korábban használt Bullet motor szintjére emelték (például a Godot Physics új ütközési formák kezelésével, magassági térképek támogatásával és SoftBody csomópontok használatával a ruházat szimulálására bővült). Teljesítményoptimalizálást hajtottak végre, és kibővítették a több szálú alkalmazást a fizikai folyamatok 2D- és 3D-környezeteiben a CPU különböző magjaira történő terhelésmegosztás révén. Sok problémát megoldottak a szimulációval kapcsolatban.
- Javaslatot tettünk egy új szövegrenderelő rendszerre, amely nagyobb ellenőrzést biztosít a szövegvágás és -törés felett, valamint magas élességet biztosít bármilyen képernyőfelbontás mellett.
- Kibővítettük a lokalizálási és fordításhoz szükséges eszközöket.
- Új párbeszédablak került hozzáadásra a 2D és 3D források importálásához, amely támogatja a meglévő jelenet, anyagok és fizikai tulajdonságok beállításainak előnézetét és módosítását.

- Új widgetek kerültek be az editorba, mint például a módosítások visszavonásához szükséges panel és új színválasztó párbeszédablak, amely frissíti a palettát.

- Frissítettük az ellenőrző felületet, vezérlőpanel a jelenetet és a szkript szerkesztőt. Fejlesztettük a szintaxis kiemelését, hozzáadtuk a több kurzor megjelenítésének lehetőségét, és biztosítottuk a JSON és YAML formátumok szerkesztési eszközeit.
- Kibővítettük az animációs editor lehetőségeit, amely most már támogatja a figurák keverését, és javítottuk a Bézier-görbék alapú folyamatokat. Átírtuk a 3D animációs kódot, amely támogatja a tömörítést a memóriafogyasztás csökkentése érdekében. Újraíródott az animációk keverésére és átmeneti effektusok készítésére szolgáló rendszer. Fejlesztettük a komplex animációk készítésének lehetőségeit. Animációk létrehozásának és újrafelhasználásának céljából animációs könyvtárakat kínálunk.

- Új filmes készítési mód került hozzáadásra, amely képkockánként rendereli a jelenetet maximális minőségben, hogy előzetes szalagcímeket és videofelvételeket készíthessünk.
- Kibővítettük a 3D sisakok és virtuális valóság platformok támogatását. Az engine fő összetevőjeként beépített támogatást nyújtunk az OpenXR szabványhoz, amely egy univerzális API-t határoz meg a virtuális és kiterjesztett valóság alkalmazások fejlesztésére. A Windows és Linux rendszerekben támogatja az összes népszerű 3D sisakot, beleértve a SteamVR, Oculus és Monado sisakokat.
- Növelve a hálózati játék szervezésének alrendszerének stabilitását, egyszerűsítettük a többjátékos játékok fejlesztési folyamatát.
- Kibővítettük a hangrendszer lehetőségeit, beépítettük a polifónia támogatását, API-t adtunk a beszédszintézishez, valamint megvalósítottuk a hang loopsítását.
- Lehetővé tettük a Godot interfész futtatását Android táblagépeken és webböngészőkben.

- Új játékbuild rendszert vezettünk be különböző CPU architektúrákhoz. Például most már lehetővé vált a Raspberry Pi, Microsoft Volterra, Surface Pro X, Pine Phone, VisionFive, ARM Chromebook és Asahi Linux számára történő buildelés.
- Az API-ban változások történtek, amelyek sértik a kompatibilitást. A Godot 3.x-ről a Godot 4.0-ra való áttérés az alkalmazások újragondolását igényli, de a Godot 3.x ág számára hosszú távú támogatási ciklus biztosított, amely a régi API iránti kereslettől függ.

Forrás: opennet.ru

















