U ovom blog postu bavićemo se pozicijom frontend inženjera u industriji video igara. Naglasak će biti na tome kako se ova pozicija u gejmingu razlikuje u odnosu na ostatak industrije softvera.

Frontend inženjer

Kod velike većine modernih aplikacija postoje jasno razdvojen klijent (frontend deo aplikacije) i server (bekend deo aplikacije). Klijent ili frontend deo aplikacije predstavlja sav softver koji se izvršava na uređaju korisnika - mobilnom telefonu, PC računaru, laptopu itd. Frontend inženjer bavi se razvojem upravo ovog dela aplikacije - klijentskog ili frontend dela.

Frontend inženjer razvija sve što korisnik može da vidi na svom uređaju i sve komponente sa kojima korisnik može da intereaguje.

Frontend inženjer bavi se razvojem svega što se izvršava na uređaju korisnika.

Proces razvoja video igre

Tokom godina u većem delu industrije softvera, takođe i u gejmingu, bio je zastupljen proces sa jasno razdvojenim fazama razvoja softvera. U ovakvom procesu menadžment odlučuje o tome koja funkcionalnost će sledeća biti implementirana. Dizajneri zatim detaljno osmišljavaju funkcionalnost. Nakon što dizajneri završe detaljno dizajniranje počinje faza implementacije, u kojoj frontend inženjer i ostali inženjeri obavljaju svo programiranje. Na kraju QA inženjeri testiraju implementiranu funkcionalnost.

U ovakvom procesu uloga frontent inženjera uglavnom je striktno vezana za fazu implementacije. Frontend inženjer bavi se programinjanjem i arhitekturom koda, i ne meša se u ostale faze razvoja.

Poslednjih godina u različitim delovima industrije softvera, a pogotovu u industriji video igara, primenjuje se novi proces, u kome je svaka rola aktivno uključena u svaku fazu razvoja. Menadžment donosi odluke u saradnji sa dizajnerima i inženjerima. Dizajneri organizuju i predvode proces dizajniranja tako što u dizajn uključuju inženjere, menadžment i sve ostale role.
U ovakvom procesu frontend inženjer ima ozbiljan uticaj na sve faze razvoja.

Kako frontend inženjer utiče na odluke u različitim fazama razvoja možemo da vidimo na konkretnom primeru. Među korisnicima igre Top Eleven veoma su popularni vremenski ograničeni događaji koji se nazivaju lajv iventovi (eng. Live Events). Pri razvoju jednog takvog lajv iventa - King of Rio - važan doprinos u donošenju strateških odluka dali su upravo frontend inženjeri. Oni su pružili informaciju o potrebnom vremenu i riziku prilikom implementacije. S obzirom da su slični lajv iventovi već bili implementirani nekoliko puta ranije, vreme implementacije i rizici bili su relativno mali. Frontend inženjeri su detaljno diskutovali sa menadžmentom i dizajnerima, i zajedno odlučili da iskoriste većinu funkcionalnosti prethodnih lajv iventova.

Dobijen je King of Rio lajv događaj, koji se pokazao kao sjajno rešenje. Bio je veoma zanimljiv korisnicima, a kreiran je za relativno kratko vreme.

Specifični izazovi frontend inženjera u gejmingu

Interakcija korisnika sa aplikacijom je kod video igara veoma intenzivna u poređenju sa standardnim aplikativnim softverom. Zbog toga frontend inženjeri u gejmingu moraju posebno da se bave implementacijom velike količine korisničkog interfejsa (eng. UI - User Interface).
Na primeru igre Top Eleven možemo da vidimo koliko veliki broj različitih ekrana i grafičkih komponenti može da ima jedna video igra. Pri tome korisnik može da intereaguje sa skoro svakom od ovih komponenata - da je klikne, prevuče itd, pri čemu se prikazuju nove komponente.

Prikaz malog dela korisničkog interfejsa igre Top Eleven

Samo programiranje velikog broja grafičkih komponenata možda ne zvuči kao previše zabavan posao. Posao frontend inženjera je mnogo više od toga. Frontend inženjer kreira čitave sisteme koji omogućavaju da se komponente efikasno prave i dobro izgledaju.

Igrajući video igre često uživamo u velikoj količini grafike. Video igre sadrže veliki broj animacija, tekstura, 3D modela i vizuelnih efekata (eng. VFX - Visual Effect).
U velikim firmama postoje stručnjaci specijalizovani za razvoj tih grafičkih elemenata. Frontend inženjer je taj koji sve te elemente treba da poveže i obezbedi da se ispravno prikazuju u pravom trenutku.

Nakon što sva funkcionalnost proradi, posao frontend inženjera se ne završava. Frontend inženjer mora da obezbedi da video igra radi na velikom broju uređaja, što uključuje i neke veoma stare mobilne telefone niskih performansi. Na primer, igra Top Eleven radi i na uređajima kao što su Apple iPhone 4s iz 2011. godine, i Samsung Galaxy S3 iz 2012. godine.

Video igra Top Eleven uspešno radi čak i na uređajima kao što su Apple iPhone 4s iz 2011. godine i Samsung Galaxy S3 iz 2012. godine.

Igranjem video igara možemo da uživamo u veoma suptilnim efektima kao što su, na primer, realistično prelamanje sunčeve svetlosti od površine peska ili vode.

Journey - Izvor: Thatgamecompany
Izvor: Unity

Ovakav efekat ne može da se postigne klasičnim programiranjem u programskim jezicima kao što su C, C++, Java, Python….Programi napisani u klasičnim programskim jezicima izvršavaju se na procesoru (CPU). Da bi se postigli efekti kao što je realistično prelamanje svetlosti neophodno je napisati poseban program - šejder (eng. shader) koji se izvršava direktno na grafičkoj kartici (eng. GPU). Ukoliko vam ovo zvuči zanimljivo, preporučujem da na internetu potražite više informacija o ovom veoma specifičnom načinu programiranja.

Igra je, u svojoj suštini, specijalizovana baza podataka sa izuzetno maštovitim grafičkim interfejsom. Naravno, postoji mnogo gejmplej kodova između dva sloja, ali programiranje igara se sastoji iz prenosa informacija u bazu podataka i iz nje koristeći strukturirane podatke iz grafičkog korisničkog interfejsa.

Frontend inženjer ima dve uloge - kreativni dizajner i tehnički programer. Kao kreativni dizajner, koristi svoju desnu polovinu mozga koja je odgovorna za vizuelne, prostorne i perceptivne informacije; Kao programer koristi svoj svoju levu polovinu, logičkog i analitičkog partnera svom umetniku s desne strane.