Siniša Mikolić iz Digital Godsa, Fran Grgec iz poljskog Far From Homea i Filip Dobrinić iz GD Entertainmenta ponudili su svoje karijerne savjete i uvid u rad developera koji primarno rade s Unreal Engineom.
Game developeri temeljni su stupovi u stvaranju jedne video igre. Oni pretvaraju ideje u stvarnost. Iz koda nastaju zgrade, palače, pejzaži i najraznolikiji likovi koji s tim okruženjem mogu interagirati. Nemali pothvat, često podcijenjen u široj tehnološkoj zajednici. Zato vam uz developere iz industrije želimo predstaviti njihovu ekspertizu i iskustva iz područja.
Do sada smo predstavili pisce, producente, dizajnere, marketingaše i 3D Artiste koji rade u domaćoj gaming industriji, a sada pozornost prebacujemo na C++ developere koji koriste Unreal Engine (ili jednostavno Unreal) u svojem svakodnevnom poslu. To je drugo po redu najzastupljenije zanimanje u hrvatskoj gaming industriji.
Kako su ovi developeri završili u gamingu s Unreal Engineom kao glavnim alatom?
Filipovi počeci u game developmentu krenuli su još s Warcraft 3 editorom i programom koji se zove Alice, a tijekom faksa počeo je raditi u Unityju u sklopu jednog kolegija. Profesionalno iskustvo stekao je u Cateia Gamesu gdje je, kako ističe, imao odlične mentore i kolege. Prijelaz na Unreal, Filip je napravio kada su započinjali novi projekt u gaming studiju gdje trenutno radi. Tada mu se taj program činio kao zanimljiva alternativa Unityju:
Optimiziraniji je i ima koliko-toliko spreman multiplayer. To su bile dvije glavne stvari zbog čega smo odlučili prijeći na njega, a i uvijek dobro dođe imati znanje u još jednom game engineu.
Franova gaming avantura počela je još u prvom razredu srednje škole. Pustio se u duboku analizu i shvatio kako je Unreal najbolji izbor za ono što ga zanima. Tako je počela njegova “strma krivulja učenja”, ali smatra kako je to svejedno bilo dobra odluka. Uz to, upisivanjem FERIT-a u Osijeku dobio je smjernice za početak učenja programiranja, što mu je pomoglo da napravi prvu igru pomoću C++ jezika.
Krajem ljeta 2021. dobio je svoj prvi ne-studentski posao kao game developer za tvrtku Gamecan iz Estonije. Kako je tada već bio vješt u području, tako je dobio ponudu za preseljenje u tu zemlju:
Uspješno sam obavljao svoje zadatke, a i predlagao dobre ideje za razne probleme. Početkom 2022. dobio sam vlastiti projekt na kojem sam bio Lead iliti, blago rečeno, bačen u vatru katastrofalnog projekta u punom mahu developmenta, za koji smo imali tri mjeseca vremena za popravak. Srećom, sve je završilo uspješno.
Siniša je u game developmentu završio, moglo bi reći, da zadovolji svoju potrebu za igrom koje nema na tržištu. Tako se samostalno uputio u vode koje su ga oduvijek zanimale.
Što Unreal Engine čini posebnim u gaming industriji?
Kad se radi s Unrealom, developeri najčešće programiraju u jeziku C++ i blueprintima – što je kompletni sustav skriptiranja igre koji se temelji na korištenju čvorova (eng. node). Manje-više svaka C++ funkcija je dostupna i kroz tzv. blueprinte:
Multiplayer i gameplay ability sustav pripremaju se kroz C++. Generalno, rad s blueprintima je brži, ali neke kompleksnije, zahtjevnije stvari je bolje napisati u C++.
Filip smatra kako je najbolji pristup koji kombinira C++ i blueprinte, ali pritom je potrebno paziti da bluperintovi ostaju čitki i organizirani kako bi se lakše moglo snaći u njima i nadograđivati ih.
Fran također ističe blueprinte kao nešto specifično za Unreal, što je poprilično korisno u pisanju prototype koda koji se kasnije prebaci u C++:
Osobno mi se uvijek sviđao C++ koji je naspram ostalih objektno orijentiranih programskih jezika izrazito low level i pri tome brži te pruža više slobode kada dođe do funkcionalnosti koda (što je izrazito važno kod game developmenta).
Fran još dodaje kako ne treba zaboraviti kako je Unreal besplatan, a source code se može mijenjati po volji developera. Modularnost isto tako otvara vrata za izradu projekata samo kroz plugine, što može značajno skratiti vrijeme projekta ako je napravljeno kako treba, zaključuje.
Pored blueprintova, Siniša ističe kako je Garbage Collector također jedna značajka koja čini Unreal posebnim:
Unreal koristi mehanizam “Garbage Collection” za upravljanje memorijom, što omogućuje programerima da se ne moraju brinuti o oslobađanju zauzete memorije. Međutim, potrebno je razumijevanje procesa kompiliranja i različitih alata koji se koriste u Unrealu, poput editora, debugera i klijenta za izgradnju projekata.
Unreal je moćan alat čija zajednica korisnika nije razvijena
Naravno, nijedan program nije savršen pa zato Filip mrzi kada se dogodi crash baš neposredno nakon što provede C++ compiling ili, drugim riječima, prevođenje C++ izvornog koda u izvršni program:
Dogodilo mi se X puta da sam ostao bez napretka i izgubio neke stvari zato što se Unreal nasumično srušio.
Ono što Filip voli kod Unreala je činjenica što je on game engine u pravom smislu te riječi, odnosno da sadrži toliko stvari već spremnih za igre:
Primjerice, sadrži funkciju koja se zove “Launch Character” koja doslovno lansira tvog lika X, Y, Z brzinom.
Siniša ne vidi nešto što mu se ne bi moglo svidjeti kod Unreala. Svaki dan ga koristi i još mu nije dosadio, a kada jednom usvojite osnove, ne možete prestati učiti, ističe. Zato jako voli Unreal, zbog konstantnog unaprjeđivanja i brzine kojom se to dovija te što program donosi nove alate.
Velika prednost jezika C++ je njegova modularnost, ističe Fran. Kako je uvijek više vukao na tehničku stranu game developmenta, tako mu je važna dobra arhitektura softvera u kojem radi, a i njegova fleksibilnost kao i performanse. Što se tiče loših iskustava s Unrealom, najviše su vezana za nedostatak dobre dokumentacije, što inače dobra zajednica donekle popravi, ali pronaći nešto napredniji sadržaj već je teže, objašnjava nam:
Tvrtke i pojedinci većinom drže znanje za sebe pa je zapravo od intermediate do advance razine malo teže doći, zbog (ne)dostupnosti znanja, a ponajviše za konzole koje se i najviše traže u današnje vrijeme.
Koji su najveći izazovi u karijeri s kojima su se susreli?
Filip se susreo s raznim izazovima, ali njegov najveći problem je ono što je i Franu istaknuo, a to je činjenica što Unreal nema razvijenu zajednicu kao što to ima Unity. Zato često možete naići na loša rješenja i loše prakse pa čak i krive odgovore:
Na kraju sam shvatio da je najbolje čitati dokumentaciju u izvornom C++ kodu. Što se tiče nekih izazova, bilo ih je pri izradi svakog sustava, ali to je normalna stvar s programiranjem.
Najveći je izazov bio portanje igara na konzole jer je za testiranje ipak potreban dev kit od Sonyja ili Xboxa. Također, i dokumentacija za njih, čemu je običnom “smrtniku” malo teže pristupiti jer je potreban poseban partnerski ugovor, objašnjava nam Filip.
S druge strane, Siniša je svoj najveći izazov pronašao na jednom određenom projektu. Radio je na open world multiplayer igri, a one zahtijevaju posebna znanja i vještine koje tada nije imao:
To me je kasnije koštalo 6 mjeseci redizajna cjelokupne konstrukcije igre kako bi se riješili problemi koji su nastali. Kako bih se nosio s tim izazovom, morao sam raditi na proučavanju i usavršavanju vještina te konzultirati se s drugim stručnjacima u industriji. Također, ključno je bilo pravilno planiranje i organizacija rada, kako bi se izbjegli daljnji problemi i ubrzao proces razvoja igre.
Koliko je Unreal Engine primjeren za početnike?
Unreal je zapravo dosta prijateljski nastrojen početnicima, ali dobro je imati predznanje u kodiranju zbog lakšeg razumijevanja nekih stvari i logike, ističe Filip:
Da osoba i nema predznanja, mislim da bi se nakon nekog vremena i određenog broja tutorijala snalazila u Unrealu bez problema.
Za izradu igre definitivno treba barem neko znanje programiranja, ali ne mora nužno biti baš C++, već može biti i samo u blueprintima, ali za veće projekte najbolje je to izbjeći, kaže Fran:
Što se tiče same težine Unreala, ako se osoba zna koristiti Googleom kako spada, ne bi uopće trebao biti problem za početnika. Ipak, za prijeći na advance level znanja potrebno je više truda i neko vrijeme rada u industriji.
Ovdje se Siniša slaže s Filipom i Franom, ali stavlja malo veći naglasak na poznavanje C++ jer to je ono što će olakšati cijeli proces učenja. Također, kao i Fran, navodi mogućnost skriptiranja u blueprintima koji olakšava i ubrzava cijeli proces razvoja igre, ali cijeli proces može biti loše optimiziran:
Ako ste dovoljno uporni, uz nekoliko mjeseci rada možete izraditi jednostavniju igru u Unrealu.
Koji bi savjet iz današnje perspektive dali samima sebi u prošlosti kada su tek počeli učiti Unreal?
Filip bi sebi savjetovao da više kombinira C++ i blueprinte, a same blueprinte da drži organiziranijima:
Ako radiš s multiplayerom, simuliraj latenciju od 50 ms kako bi ranije uočio probleme. Također, uči gameplay ability sustav jer se s njim može svašta!
Code style i pisanje komentara najvažnije su vještine koje – što se prije nauče, to bolje, inače će čitanje staroga koda biti pakao, napominje Fran. S druge strane, Siniša zaključuje da je organizacija vrlo bitan faktor u ovom poslu jer je “bolje potrošiti 5 minuta više kako ne bi ispaštao par mjeseci kasnije”.
Sukladno članku 94. Zakona o elektroničkim medijima, komentiranje članaka na Netokraciji dopušteno je samo korisnicima koji ostave svoje ime i prezime te mail adresu i prihvate pravila ponašanja.
Pravila ponašanja
Na Netokraciji za vas stvaramo kvalitetan, autorski potpisan sadržaj i zaista se veselimo vašim kvalitetnim, kontruktivnim komentarima. Poštujmo stoga jedni druge prilikom komentiranja, kao i Zakon, držeći se sljedećih pravila ponašanja:
Kako koristimo podatke koje ostavljate? Bacite oko na našu izjavu o privatnosti.
Sve ostale komentare ćemo s guštom spaliti, jer ne zaslužuju svoje mjesto na internetu.
Komentari
Vid Mioković
04. 05. 2023. u 8:21 am
Super tekst!
A sada jos cekamo i “Kako rade (C#) developeri u Unityu?” 🙂
Marin Pavelić
04. 05. 2023. u 8:52 am
To nam je iduće na popisu 🙂