Naziv pozicije: Gameplay Programer
Naziv poslodavca: Ubisoft Annecy
Godina diplomiranja: 2018.
Mentor: Vladimir Čeperić/Zoran Kalafatić
Profil/smjer studija: Računarstvo/Računarska znanost
Bok! Ja sam Patrik i trenutno radim kao Gameplay Programer u Ubisoft Annecy. U slobodno vrijeme igram nogomet, jedem francusku hranu i pokušavam uzgojiti paradajze na balkonu.
Kako si pronašao svoj prvi posao nakon FER-a?
Za prvi mi je pravi posao trebalo nekoliko pokušaja. Na ljeto između 4.i 5. godine listao sam firme na FER praksama i naišao na CroTeam što mi je zvučalo interesantno u tom trenutku. Javio sam im se i odradio intervju. Bili su toliko oduševljeni mojim vještinama da su me odbili i proslijedili u Gamepires s kojima su tada surađivali na igri SCUM. Tamo su se složili s njima i također mi rekli da “naučim C++ i pokušam ponovo”.
Budući da su me prije intervjua već proveli po firmi i upoznali sa svima bilo bi mi neugodno da se nikad ne vratim pa sam odlučio naučiti C++ i pokušati ponovo.
Idućih sam godinu dana učio C++ i paralelno radio malu igru kao dokaz da sam nešto naučio. U međuvremenu sam diplomirao, odradio svoje posljednje slobodno ljeto bez brojanja godišnjeg i vratio se na još jedan intervju. I tako sam ostao u Gamepires-u skoro 4 godine.
Kada i kako si se odlučio da se želiš baviti područjem kojim se trenutno baviš?
Kad sam davne 2013. godine upisao FER nisam imao pojma čime se želim baviti u životu, a programiranje i elektrotehnika su mi zvučali podjednako interesantni. Nakon dva semestra sam odlučio da više volim kompjutore od struje i odabrao računarstvo. Kako su semestri odmicali bio sam sve sigurniji da želim biti programer samo me i dalje mučilo što želim programirati. Većina područja s kojima sam se susreo na faksu su mi zvučala dosadno sve do mog susreta s CroTeamom i nadalje Gamepiresom kada sam shvatio da je game development sasvim realna opcija za karijeru, čak i u Hrvatskoj.
Nakon što sam odradio svoja dva neuspjela intervjua odlučio sam dati šansu igrama. Što sam više vremena provodio radeći svoju (nikad dovršenu) prvu igru bio sam više oduševljen kako se moj kôd koji je u principu samo tekst može pretvoriti u nešto vizualno i interaktivno kao što je igra. Svaka nova promjena u kôdu bi dodala novu mogućnost u igri pa je tako moj lik prvo samo stajao na ekranu, a na kraju skakao po platformama, pucao strijele iz luka i uništavao robote (vrlo originalno, znam). Kad sam napokon dobio svoj prvi posao i počeo raditi na pravoj igri koju igraju igrači koji nisu moj brat ili ja odlučio sam da je game development definitivno karijera za mene.
U svojoj sam relativno kratkoj karijeri upoznao mnogo ljudi koji su voljeli igre i htjeli raditi svoje igre pa su učili programirati, modelirati ili bilo koju vještinu koja bi im to omogućila. Ja sam osobno više volio programirati dok su igre bile nešto što mi je najzabavnije programirati i još me plaćaju da to radim.
Jesi li i privatno zaljubljenik u gaming? Je li posao u gaming industriji smanjio tvoju ljubav prema igrama kad znaš što se krije “iza njih”?
Tijekom života sam često igrao igre međutim ne bi sebe nazvao “gamerom”. Vjerujem da me je moja karijera dodatno potaknula da igram razne igre, djelomično naravno iz profesionalne znatiželje, a djelomično jer radeći okružen ljudima koji vole igre saznam za nebrojene igre koje zvuče dovoljno zanimljivo da ih isprobam. Činjenica da zaposlenici Ubisoft-a mogu besplatno igrati sve njihove igre također pomaže.
Potencijalni minus ove karijere jest profesionalna deformacija gdje dok igram igre paralelno razmišljam kako su to implementirali i potencijalno umanjujem “magiju” igre i također automatski tražim bugove.
Kako izgleda tvoj tipični radni dan?
Razvoj igre je dosta dinamičan i varira između ležernog rada kada ima vremena i totalnog kaosa kada dođu rokovi. Također ovisi o vrsti igre te kako firma planira razvoj.
Prva stvar koju napravim kada dođem na posao najčešće je syncanje – dohvaćanje zadnje verzije kôda i asseta (3d modeli, animacije, zvuk, …) te pokretanje build procesa. Srećom imam praktičnu skriptu koja to sve odradi za mene u petnaestak minuta, taman da si napravim kavu i pojedem kroasan.
U međuvremenu skrolam po mailovima i teams chatu, uglavnom da vidim je li se dogodilo nešto kritično što treba hitno popravljati. Mail mi služi kao centralni hub u kojem dobivam notifikacije o više manje svemu uključujući promjene u taskovima, razne izvještaje o stanju igre ili kritičnim bugovima i slično.
Prosječan dan se svodi na rad na svojim taskovima, isprekidan povremenim sastancima ili playsessionima – igranjem trenutne verzije igre. Budući da nisam menadžer moji sastanci su većinom tjedni timski sastanci ili komunikacija s ljudima s kojima radim, koji su često po raznim Ubisoft studijima diljem Europe.
Koji su izazovi s kojima se susrećeš na radnom mjestu?
Video igre su ustvari vrlo komplicirani software – igra se najčešće mora osvježavati barem 60 puta u sekundi, nerijetko sadrži multiplayer što uključuje programiranje networka te konačno mora izgledati dobro i biti zabavna.
Najteži zadatak koji svakodnevno rješavam je kako napraviti svoj posao dobro bez da potrgam igru. Moderne video igre su pune međuzavisnih sustava koji čine kompleksnu cjelinu te je potrebno uzimati ih sve u obzir kod razvoja. Uzmimo jednostavni primjer – moram napraviti da naš lik hoda. Prvo moram napraviti da se lik stvarno kreće i reagira na unose igrača. Tada vjerojatno želimo da je lik animiran i da to lijepo izgleda. Da ne propadne kroz pod ili prolazi kroz zidove znači treba koristiti nekakvu simulaciju fizike. Ako je igra multiplayer potrebno je kretanje lika sinkronizirati ostalim igračima što uključuje korištenje mreže, često najkompliciraniji dio igre. Konačno taj hod mora izgleda dobro i imati dobar “feel”. O svim tim aspektima potrebno je razmišljati što ranije u razvoju da ne shvatimo nakon mjesec dana da naša inicijalna arhitektura jednostavno ne omogućuje ono što želimo.
Razvoj jedne video igre zahtjeva puno različitih disciplina koje uz programere uključuju razne 3D modelere, concept artiste, audio inženjere, testere, project managere s kojima svakodnevno surađujem. Bitno je shvatiti da većina tih ljudi nisu programeri te je potrebno prilagoditi komunikaciju da sve svi međusobno razumijete i zajedno napravite dobru igru. Također, rad u velikoj međunarodnoj firmi uključuje suradnju s kolegama raznih nacionalnosti i, bitnije, naglasaka.
Koje vještine i znanja koristiš u svom poslu? Što si od toga naučio tijekom studija, a što neovisno o studiju ili naknadno?
Većinu vještina koje smatram potrebnim sa svoj posao nisam direktno naučio tijekom studija. Najvažnija stvar koju FER daje studentima su odlične osnove koje kasnije samostalno nadograđujemo ovisno kojim se poslom odlučimo baviti. Cijela IT industrija napreduje tolikom brzinom da znanja koja danas učimo kao nova ili “cutting-edge” već iduće godine postanu zastarjela. Zato je potrebno naučiti kontinuirano raditi na svom znanju i adaptirati se ovisno o okolini.
Dvije najvažnije stvari koji sam dobio od studija su dovoljno široko znanje da programiram ono što želim i dovoljno vremena da odlučim što želim.
Moja karijera u gamedev industriji je praktički počela tako da sam uzeo Demistificirani C++ i samostalno naučio dovoljno C++ jezika da me netko zaposli. Nitko na FER-u me nije učio C++ niti kako programirati igre, međutim, učio sam nešto o C-u, Javi i Pythonu, osnove grafike te dosta matematike i fizike. Također sam naučio koristiti najkorisniji alat za jednog profesionalnog programera – Google.
Danas postoje svima dostupni game enginei poput Unreal Enginea i Unityja s mnoštvom odličnih tutoriala i dokumentacije na internetu za samostalno učenje. Svatko može samostalno (i besplatno) pokušati napraviti vlastitu igru i pokušati riješiti probleme kako nailaze.
Koji savjet bi dao studenticama i studentima koji razmišljaju o karijeru u tvom području?
Da pokušaju i ne odustaju lako.
U mojim prethodnim odgovorima vidite da mi je trebalo nekoliko pokušaja da saznam što trebam naučiti da dobijem prvi posao u industriji. Ranije sam spomenuo da su video igre kompleksni programi što znači da postoji mnogo različitih poslova koje programer može raditi. Ja osobno programiram gameplay s fokusom na game sisteme što znači da uglavnom radim na logici same igre. U firmi, međutim, imamo i programere koji se koncentriraju na game engine ili grafiku (uključuje puno low-level programiranja koje nije nužno direktno vezano uz samu igru), neki rade na mrežnom sloju enginea i igre ili pak rade na nekom od alata koji podržavaju razvoj igre poput raznih editora, skripti itd. Čak se unutar gameplay programiranja može specijalizirati na područja poput umjetne inteligencije (ne onu znanstvenu već primjerice likove u igri koje kontrolira sama igra, a ne ljudski igrač).
Ukratko, ako vas imalo zanima to područje, skinite neki od dostupnih game enginea i pokušajte napraviti malu igru. Osobno preporučujem Unity ako nikada niste koristili engine jer ima jako dobre tutoriale i dokumentaciju te koristi C# koji je malo više “user friendly” za početak od C++-a. Ako ste bolje upoznati s C++-om, istražite Unreal Engine.
Ako vas više zanimaju grafika ili engine, pokušajte napraviti svoj jednostavni engine i malo igru u njemu (to je bio moj pristup učenju C++-a).
Kada mislite da ste spremni, javite se nekom od studija u Hrvatskoj. Ako i ne prođete intervju, oni će vas uputiti što trebate naučiti ako vas stvarno zanima taj posao. Iz mog osobnog iskustva Gamepires je mjesto gdje ćete puno raditi, ali i vrlo brzo naučiti stvari od iskusnih game developera.