Izazov u AAA Game Dev industriji – prelazak sa C# na C++

Share

Mnogi programeri kažu da je pravljenje video igara zanimljivije nego njihovo igranje. Nekome se dopada rad u dobrom društvu, neko je inspirisan kreativnošću koju ima priliku da ispolji, dok perfekcionisti uživaju u uređivanju i optimizaciji sistema.

Pored svega pomenutog postoji i nezamenljiv osećaj zadovoljstva u trenutku kada plod dugoročnog rada velikog tima ugleda svetlost dana i kada više miliona igrača krene u istraživanje sveta u čijim se delu nalaze vaše ostvarene ideje i trud.

Za razliku od mnogih zapadnih zemalja u kojima se industrija video igara intenzivno razvija već nekoliko decenija, kod nas i u zemljama regiona, do nedavno nije bilo uobičajeno sresti nekoga ko se profesionalno bavi razvojem video igara. Ovaj trend se veoma brzo menja i došli smo u sitauaciju da su mnogi svoju karijeru započeli u drugim oblastima jer tada njihov posao snova nije postojao.

C++ u razvoju igara

Jedna od prvih informacija koju programeri saznaju o razvoju AAA igara je da se se one prave u programskom jeziku C++, dok se za programiranje većine ostalog softvera koriste programski jezici kao što su Java i C#. Ovo mnogima od njih izgleda kao velika prepreka i upravo zbog toga se često pokreću rasprave o mogućnosti upotrebe drugih programskih jezika u razvoju AAA igara.

Postoji jedan očigledan razlog za izbor upravo C++-a sa kojim takve rasprave najčešće počinju i sa kojim se završavaju. U pitanju su performanse izvršavanja programa na virtuelnoj mašini koje ne mogu dostići brzinu izvršavanja koda pisanog direktno za određenu platformu.

Kod manjih igara to možda i nije presudno pitanje, ali kod AAA igara u kojima se teži ka što boljem prikazu stvorenog sveta gde je uključivanje igrača u njega ključ sticanja nezaboravnog iskustva, važno je iskoristiti sav potencijal procesora, memorije i grafičke kartice.

Pored ovoga, postoji i jedan drugi razlog koji se ne spominje tako često.

Podrška za nove tehnologije često dolazi sa zakašnjenjem čak i u drajvere, pa bi bilo nerealno očekivati da virtuelne mašine i kompajleri viših programskih jezika odmah implementiraju podršku za sve što se pojavi na svim platformama. Zbog toga se za optimalno korišćenje ciljanih platformi koriste niži programski jezici.

Naš studio se i sam susreo sa većim brojem primera gde je rad na AAA igrama podrazumevao rad sa najnovijim tehnologijama. Pri tome je ovo “najnovijim” donekle eufemistična ocena jer se često radi sa još uvek neobjavljenim tehnologijama.

Jedan od njih je korišćenje najavljene grafičke kartice dok još nije bilo ni procurelih slika ni informacija o njoj.

Izdvojio bih i primer u vezi sa razvojem prve igre na kojoj je radio Ubisoft Beograd – Ghost Recon Wildlands, kada smo implementirali tada još uvek neobjavljene tehnologije koju je razvijala kompanija NVIDIA za svoje grafičke kartice – NVIDIA Turf.

U pitanju je podrška za preciznu simulaciju kretanja trave prilikom kretanja čvrstih tela preko nje. Kako se radnja igre odvija u divljim prostranstvima Bolivije, ova nova tehnologija je savršeno odgovarala potrebama igre. Inženjer iz kompanije NVIDIA i jedan inženjer sa naše strane radili su zajedno učinivši da Ghost Recon Wildlands postane prva igra koja je implementirala NVIDIA Turf.

Na kraju, nešto skoriji primer bi mogle biti buduće generacije igračkih konzola za koje se prave još nenajavljene igre, a koje treba detaljno prilagoditi i optimizovati za njih mnogo pre objavljivanja samih konzola.

Avantura

Udobnost razvoja softvera u programskom jeziku C# i sistematičnost celokupnog okruženja skidaju veliki teret sa leđa inženjera i čine njegovo putovanje kroz tehničke izazove znatno spokojnijim. Zbog toga mnogima ideja o prelasku na C++ izgleda kao avantura koja sa sobom nosi previše uzbuđenja.

Shvatajući da su mnogi zaljubljenici u video i igre i njihov razvoj pred velikim iskušenjem razmišljajući o ovoj mogućnosti, u Ubisoftu Beograd smo odlučili da ovaj prelaz učinimo lakšim svakome ko želi da se bavi razvojem AAA igara, a do sada je profesionalno koristio samo C#.

Program podrške ima nekoliko delova:

  • mentor u svom timu
  • vođa tima
  • razgovori o detaljima programskog jezika C++

Programer pre svega dobija mentora unutar tima kome se priključuje, koji je zadužen za upoznavanje sa projektom i alatima koji se svakodnavno koriste. On je zadužen i za pomoć oko podešavanja razvojnog okruženja, što ne zvuči previše zanimljivo, ali okruženje koje omogućava stotinama ljudi iz brojnih studija širom sveta da rade na jednom projektu istovremeno, na istoj grani koda, je u najmanju ruku intrigantno.

Pored mentora tu je i vođa tima da pomogne oko bilo kakvih organizacionih pitanja i koji vodi računa ide li sve po planu. Vođe timova imaju vidljivost na nivou projekta i najčešće su izvor novih zanimljivih informacija koje tim svakodnevno dobija i koje često stavljaju zadatke u širi kontekst i produbljuju njihovo razumevanje. Svim članovima tima te informacije su neprocenjive jer sloboda u izradi svog dela igre povlači i odgovornost u donošenju odluka koje će direktno uticati na iskustvo igrača.

Svi novi programeri koji prelaze sa jezika C# učestvuju u nedeljnim sastancima sa iskusnijim programerima o detaljima iz različitih oblasti jezika C++. Seniornije vođe timova unutar studija zadužene su da olakšaju prelazak na novi programski jezik, razjasne sve nedoumice i pomognu oko temeljnijeg shvatanja novih koncepata. Novi član tima dobija neophodnu literaturu i deo radnog dana je posvećen projektu, a deo C++ literaturi. Ovi sastanci su prilika da se prokomentarišu teme iz literature, da se povežu sa primerima iz prakse i sagledaju u svetlu primene u razvoju igara.

Naše dosadašnje iskustvo

Celokupni program prelaska sa C# na C++ traje mesec dana. Prvi put smo ga realizovali početkom ove godine i kroz njega je do sada prošlo nekoliko naših trenutnih kolega koje je zanimalo pravljenje video igara, a nisu imali profesionalnog iskustva u programiranju u jeziku C++.

Svi oni su se uspešno priključili svom timu bez obzira na tip projekta i svoj prethodni nivo znanja jezika C++. Njihovo iskustvo u programiranju pomoglo im je da jako brzo preuzmu značajne odgovornosti i imaju zavidan uticaj na ceo projekat.

Na kraju izgleda da uprkos velikim razlikama u ova dva programska jezika, nema velikih prepreka prilikom prelaženja sa jednog na drugi. Najveća prepreka ostaje strah od promene koju lako može pobediti ljubav prema video igrama. Mi smo tu da taj korak učinimo što prijatnijim 🙂

Share

Prijavi se da prvi dobijaš nove blogove i vesti.

Оставите одговор

Nenad Tešović

Lead Programmer @Ubisoft
mm

Nenad Tešović je rođen u Beogradu gde je diplomirao na Elektrotehničkom fakultetu na smeru Računarska tehnika i informatika. Profesionalno se bavi programiranjem u jeziku C++ od 2001. godine. Kao ljubitelj video igara 2015. godine spaja posao i zadovoljstvo prelaskom u Ubisoft, jednu od vodećih svetskih kompanija koje se bave razvojem AAA video igara. Na poziciji lead programmer-a radi skoro 5 godina uspešno vodeći razvojne timove na igrama Ghost Recon Wildlands, Steep, Ghost Recon Breakpoint, itd.

Prijavi se da prvi dobijaš nove blogove i vesti.

Категорије