Már sok éve volt, de még tisztán emlékszem arra, mikor én is ugyanezzel a kérdéssel küzdöttem. A lehetőségek számariasztó lehet főleg egy kezdőnek, de egy tapasztalt fejlesztő is könnyen érezheti magát elveszve.
Először arra kellett rájönnöm, hogy ha játékot akarok készíteni, nem igazán kézenfekvő teljesen a nulláról, csupán egy grafikus könyvtár (pl.: OpenGL) használatával nekiállni a munkának. Messze nem lehetetlen és nem is előnyök nélküli az sem, ám csak akkor ajánlanám bárkinek, ha kihívásból vagy tanulási szándékkal vágna bele egy játék lefejlesztésének, mondhatni puszta kézzel.
2022-re a széles közönség számára elérhető játékmotorok száma és minősége egy olyan szintet ért el, hogy nagyon kevés előnye maradt sajátot építeni a nulláról. Ez különösen igaz egy-néhány fős csapatokra. Viszont akár száz fejlesztőt is meghaladó nagy projekteknél sem ritka, hogy belső céges engine fejlesztése helyett inkább vesznek, előfizetnek egy már létezőre.Na de vissza az eredeti kérdéshez!
Ha felismertem, hogy meg kell tanulnom egy motor használatát melyikkel kezdjem? Melyik a legjobb?
Ez utóbbi kérdésre, természetesen nincs helyes válasz. Mindegyiknek megvan a maga erőssége, gyengesége. Különböző projektek és fejlesztők különböző eszközöket kívánnak. Inkább arra fogok megkísérelni válaszolni, hogy mihez nyúljon egy kezdő programozó, aki nem konkrét projekthez szeretne játékkészítést tanulni, hanem általánosan akar belekóstolni a játékfejlesztésbe. A válaszom ugyanaz akkor is, ha az illető csak hobbi szinten szeretne videojátékokat fabrikálni egymagában vagy kis csapatban, de akkor is, ha előbb utóbb állást is szeretne találni a frissen megszerzett tudásával és hosszú távú karriert építeni. Azt hiszem,nem csak az elfogultság beszél belőlem, mikor azt mondom, ebben az esetben a legjobb választás a Unity Engine és ezt az állítást meg is kísérlem alátámasztani.
A legtöbb piacon lévő játékmotor története valahogy így hangzik: Egy cég 10-20-25 éve készített egy játékot. Aztán mikor az sikeres lett, és megrendelték a folytatást, a fejlesztők felismerték, hogy a kód egy tetemes részét nincs szükség újraírni. A szoftver és grafikus fejlesztő környezetmagja, a motorközel egyezni fog az előzővel, így át is emelték azt. Minél többféle játékhoz lett felhasználva, annál jobban bővült a motor eszköztára, dokumentációja és általános felhasználhatósága. Végül a motor annyira kiforrott, hogy a cég úgy dönt, hogy egy teljesen új termékként elérhetővé teszi egyéb stúdióknak vagy akár széles közönség számára is. A Unity története hasonlóan indult, de nem sokáig. Volt itt is egy kezdeti játék GooBall néven, csakhogy ez egyanyagi bukás volt. A készítők ahelyett, hogy új játékötleten kezdtek volna dolgozni, nagyon hamar meglátták a fantáziát abban, hogyha csak a motorra koncentrálnak és azt széles rétegeknek elérhetővé teszik. A készítők megfogalmazása szerint a cél a játékfejlesztés demokratizálása lett, hogy bárki leülhessen játékot írni, ez ne csak nagy cégek és képzett mérnökök kiváltsága legyen. Itt valamire ráéreztek, ugyanis a 2005-ös debütálásuk után nem sokkal berobbant a játékvilág Indie forradalma, ezzel független fejlesztők serege szabadult a piacra: fiatalok,képzetlenek, fegyelmezetlenek és végtelenül kreatívok. Sokaknak sikerült is pénzt csinálni, céget alapítani az egyedibbnél egyedibb játékötleteikből, ami nem illeszkedett a korábbi nagy kiadók által meghatározott iparba. A Steam, Google Play és Apple App Store pedig platformot biztosítottak az egyszerű és olcsó digitális kiadáshoz. Ilyenkor volt a Unity jókor jó helyen. Egy cég, ami nem elsősorban játékokat készít vagy ad ki és mellette mellékesen fejlesztgeti a saját engine-jét, hanem egy aminek az egyetlen terméke és fő fókusza egy általános játékmotor.
És ez egyedi pozícióba helyezte a céget és vele a motort. Egyfelől más Engine-ek, mint az Unreal vagy CryEngine sokáig jobbak voltak (talán még mindig azok) abban, hogy valamennyire speciális típusú játékot készíts. (Fenti példában realisztikus grafikájú 3D játékot.) Ugyanakkor kiütközik, hogy nagyobb az ellenállás, ha nem olyasmit akar velük csinálni az ember, amihez eredetileg készültek. Ezzel szemben a Unity egyedi üzleti modelljéből adódóan megengedhette, hogy minden energiáját a motor általánosításába fektesse és ez látszik is. Emellett évről évre lassan minden fronton közelebb és közelebb került az specifikus feladatokban is a specifikusabb motorokhoz. Emellett mivel nincs játékok formájában egyéb bevételi forrása a Unitynek, létfontosságú, hogy a motorját minél többen használják.
Emiatt úgy tervezték meg, hogy a tanulási görbéje olyan laposan induljon, amennyire lehetséges. Ezen gondolkodásmódra jó példa,hogy C# nyelven lehet és kell is programozni Unity alatt. Habár ez kevésbé hardware közeli nyelv, mint a például a játékfejlesztésben egyébként uralkodó C++, sokkal kezdő barátabb annál. (A teljesítmény miatt nem nagyon kell aggódni, a C#-pal sem veszítünk sokat, de ebbe nem megyek most bele.) Habár lapos tanulási görbe és az általánosság önmagában is meggyőző érvek a motor mellett,ezek következéből fakad a legfőbb ok, amiért kimertem jelenteni, hogy ezzel érdemes belekóstolnia játékfejlesztésben.
Főleg a fentiek miatt a motor népszerűsége hatalmasra nőtt. 2022-re a Google keresések száma a Unity motorra jóval meghaladja, őt követő 10 engine kereséseinek összegét is.Ez önmagában nem mond el semmit a motor minőségéről, de arról igen mennyien használják. És ezen a téren semmi meg sem közelíti a Unity-t. Na de miért érdekel minket az, hogy hányan használják, fontos ez? Az egyik legfontosabb! A fejlesztés része az elakadás. Nem fog senki megtanulni programozni anélkül,hogy párszor bele ne futna kőfalakba. De a hosszú ideje fejlesztők életének is szerves része, hogy elakadnak egy technikai problémán. Ekkor nagyon sokat számít az, hogy ugyanebben a feladatban hány másik fejlesztőnek tört már ki a bicskája. Ugyanis az ő kérdéseik és megoldásaik már elérhetőek lesznek különböző online fejlesztői fórumokon, amik drasztikusan lerövidíthetik ezen legfrusztrálóbb részét a programozói életnek. Nem csak a megakadáskor szerencsés ez a fene nagy népszerűség, általános Unity oktatóanyagokból és tutorialokból is kimeríthetetlen az internet tárháza.
Másik nagy igazsága a fejlesztésnek, hogy bizonyos részben legózásra is hasonlít. Nem mindig csak saját gyártású kódot, és egyéb anyagokat használunk, hanem azon dolgozunk, hogy mások cuccait beépítsük a saját szoftverünkbe. Ebben is nagy segítséget jelent a Unity elterjedtsége. A cég által fenntartott úgy nevezett Asset Store-ban az ingyenes és fizetős Unityhez készült fejlesztői tartalmaknak se vége se hossza. Nagy segítséget tud nyújtani, mikor valaki már elkészítette a mentési rendszer, útvonalkeresés vagy egy szükséges fejlesztői funkció kódját és nekünk csak 10-20 dollárt kell fizetnünk, hogy használjuk ezzel akár heteket, hónapokat és súlyos pénzeket spórolva. De az AssetStore-ban kapható dolgok nem korlátozódnak kódra, Modell pakkokat, animációkat, UI és Icon készleteket, vizuális effekteket,hangokat, zenéket lehet venni és mindent mást,amit el tudsz képzelni a játékfejlesztéshez.
És végül nem utolsó szempont az sem, ha hosszú távon a fejlesztői karriert sem vetjük el, hogy az elérhető állások puszta száma is ennél a játékmotornál a legmagasabb. Szóval röviden ezek lennének az érveim a Unity mellett, mint ideális választás a játékfejlesztésbe kóstolóknak.
Marosi Csaba, Unity/C# oktató
Jelentkezz az alapozó UNITY tanfolyamra, (szuperintenzív, kis csoportos személyes oktatás Budapesten) vagy végezd el előbb Blender 3D Generalist tanfolyamunkat!
Kedves olvasónk, amennyiben érdekel a 3D, a játékfejlesztés, a Unity és a Blender világa, és rendszeresen szeretnél ezekről értesülni, kövess minket Facebookon:
https://www.facebook.com/3dStudioHungary