Azaz milyen motorral kezdjek el játékot fejleszteni?
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áma riasztó 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 meg. Inkább arra fogok megkísérelni válaszolni, hogy mihez nyúljon egy kezdő programozó, aki nem konkrét projekthez keres eszközt, hanem általánosan akar belekóstolni a játékfejlesztésbe.
Erre nekem van egy személyes válaszom, ami talán némileg elfogult, de nem légből kapott. Ez a bizonyos gameEngine a Unity, és megvannak a magam érvei, miért tartom a motort kifejezetten jó kezdő választásnak. Én legszívesebben ezt ajánlanlom bárkinek 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.
Miért pont Unity?
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örnyezet magja, a motor közel egyezni fog az előzővel, így át is emelték azt. Minélt 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 egy anyagi 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, hogy 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. A Unity ekkorra az a cég lett, ami nem első sorban játékokat készít vagy ad ki és mellette mellékesen fejlesztegeti a saját engin-ét, hanem egy aminek az egyetlen terméke és fő fókusza egy általános játékmotor.
Mindez egyedi pozícióba helyezte a céget és vele a motort. Egy felő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 és kezdőbaráti jellegébe fektesse. Ez látszik is. Emellett évről évre lassan minden fronton közelebb és közelebb került az specifikus feladatokban is a kevéssé általános motorokhoz.
Emellett mivel nincs játékok formájában egyéb bevételi forrása a Unity-nek, létfontosságú, hogy a motorját minél többen használják. Emiatt úgy tervezték azt 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 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 nagyon sokat, de ebbe nem megyek most bele.)
A Unity mindenhol ott van
Habár a lapos tanulási görbe és az általánosság önmagában is meggyőző érvek a motor mellett, ezek következtéből fakad a legfőbb ok, ami miatt ki mertem jelenteni, hogy ezzel érdemes belekóstolni a játékfejlesztésbe.
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, miért fontos ez?
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 Unity-hez 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 Asset Storban 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. Sorolhattam volna a különböző funkcióit az Unity-nek vagy érvelhettem volna azok minősége mellett, de nem tartottam ezt a legjobb útnak. Nem csak, hogy ezen a fronton korlátozza a véleményalkotást, hogy nem ismerem a világ összes motorját közel sem annyira jól, mint a Unity-t, de emellett is nagyon nehéz felül emelkedni a szubjektív személyes preferenciákon.
Ehelyett fókuszáltam inkább az általános felhasználhatóságra, elérhetőségre és az elterjedtségéből fakadó nagy-nagy előnyökre, amik talán valamivel objektívebb megfontolások.
Szerző: Marosi Csaba
📞 Telefonszám: +36 20 359 7422
📧 E-mail cím: marosicsaba91@gmail.com
Ha érdekel a kódolás és játékfejlesztés, fontold meg a jelentkezést egyik tanfolyamomra→