( Wabbitseason | 2023. 03. 15., sze – 17:46 )

A Godot meglepően ügyes, hasznos kis jószág. Még telepíteni sem kell, és elindítás után azonnal dolgozhat vele az ember, még bejelentkezni/regisztrálni sem kell sehova. A fejlesztés sokkal-sokkal gyorsabb a Unityhez, pláne az Unrealhez hasonlítva, bár komoly 3D-s játékokhoz alkalmatlan. 2D-s játékokkal viszont gond nélkül elvan, és még a saját nyelvének teljesítménye is elegendő, ha ügyesen használják, illetve a komolyabb részfeladatokhoz használható C# vagy C++, akár egy projekten belül vegyesen is.

Elvileg az editor mindent tartalmaz, amire szüksége lehet az embernek egy nem túl nagy játékhoz, tehát még kódszerkesztő is van benne, ami a Godot saját scriptnyelvéhez nyújt némi támogatást. Sajnos ez a támogatási szint nem túl impresszív, még változónevek átnevezésében sem segít, valamint a debuggerben komoly hibák és hiányosságok vannak rettentő régóta. Maga a scriptnyelv is hiányos és suta, de az alap dolgokra alkalmas és elég tömören lehet benne fogalmazni. Külsőre a Pythonra emlékeztet, de C++ aggyal kell gondolkodni hozzá, és természetesen nem használhatók Python libraryk sem.

Mivel open source az engine, tulajdonképpen van rá lehetőség, hogy a hiányosságokat és a hibákat saját kezűleg javítsa az ember, ha hajlandó és képes C++-hoz nyúlni. (Nekem ez jelenleg meghaladja a képességeimet.) Szintén az open source jellege miatt van, hogy inkább a "cool feature"-öket fejlesztik, míg bugok és hiányosságok, pláne az "unalmas" vonatkozásúak túl sokáig maradnak érintetlenül. Emellett pár dolgot túl sokféleképpen lehet megközelíteni, és e lehetőségek egyike sincs tökéletesítve. Főleg a UI része az, ami nagyon hatékony és rugalmas lehetne, de van néhány kőkorszakból örökölt hülyesége, amit még nem tisztáztak rendesen.

De miután a gyakoribb problémákat megismeri az ember és kitalálja, hogyan tudja megkerülni vagy megoldani, elég jól lehet vele dolgozni.

Új projektnél mindenképpen megnézném, mennyire működik már a C# integráció, de sokkal valószínűbb, hogy Unityvel dolgoznék. A Unity mellett leginkább (majdnem kizárólag) a kiforrottsága szól, vagyis az, hogy rengeteg tool létezik hozzá -- például a Jetbrains Rider plugin --, és hogy az asset store-ból is csomó olyan alapfokú dolgot könnyen meg lehet szerezni, ami akár a prototípusok fejlesztési idejét csökkenti, de kevésbé fontos részfeladatokhoz is gyors megoldást kínálhat. Például nekem kellett saját serializert/deserializert írnom, pedig milyen jó lett volna egy Protobuf, és egyes shadereket is inkább letöltöttem és módosítottam volna, ahelyett, hogy napokat töltöttem el a saját shadernyelv és annak hiányosságai/megkötései miatti kísérletezésekkel. Végül mindent meg tudtam oldani, de nem volt két perc.

Nemrég (pár hete) jelent meg a Godot 4-es verziója, több éves fejlesztés után. Alapvető változások/javítások történtek, de úgy gondolom, a 4.1-es, de inkább a 4.2-es verzió előtt a 4-es vonalat még rizikós lehet használni. A 3-as verzió még nincs elásva, de tudatában kell lenni, hogy a 4-essel új korszak kezdődött. Úgy sejtem, a következő évek során a Godot sokat fog erősödni, és akit egy kicsit is érdekel a játékfejlesztés (bár akár általános, cross-platform appokhoz is alkalmas lehet, noha nyilván nem ideális), az mindenképpen jól teszi, ha kipróbálja.

Hogy miért használtam épp Godot-t? Nem igazán tudom megmagyarázni. 2016 óta dolgozgattam a játékom alapötletén, és rengeteg prototípust csináltam, sima JavaScriptben, Pythonban, aztán LibGDX frameworkkel (Java), aztán Unityben (C#), majd Godot 3.0-ban, majd megint Unityben. Azt hiszem, valami GUI dolgot nem tudtam jól megoldani (UX-szempontból, nem kódbéli probléma volt), és a véletlen úgy adta, hogy épp egy Godot-s tesztben sikerült megtalálnom a megoldást, és aztán amikor kiderült, hogy a Godot prototípus a köré épített többi feladatot is képes végrehajtani, ott rekedtem. Aztán mire kiderültek a komolyabb hiányosságok (amik nem voltak showstopperek, csak idegesítőek), már túl sok munkám volt benne, semhogy kedvem lett volna megint újrakezdenem.