Od dizajna do veštačke inteligencije — Kako će te pravljenje igara učiniti boljim programerom?

Većina game developera, čak i ako se identifikuju kao programeri, vrlo brzo shvati koliko je doživljaj igre bitan. Vremenom nauče dosta toga o modeliranju, teksturama, zvuku, level dizajnu i sličnim “ne-programerskim” stvarima.

Aleksa Vidović
30/11/2016

Pravljenje igara je zanimljiv način da početnik nauči programiranje, ali može da predstavlja izazov i za one iskusnije. Iako nam današnji engine-i omogućavaju da bez stvarnog znanja programiranja napravimo prilično dobru igru, poznavanje onoga što se dešava ispod haube daje nam veću kontrolu nad situacijom.

Programiranje u igrama možemo da radimo na različitim nivoima kompleksnosti — od jednostavnog skriptovanja karaktera i predmeta u okolini, do pisanja engine-a od nule.

Iako kompleksniji projekti pokrivaju veliki broj oblasti u programiranju, izdvojio sam neke za koje gejm developeri kažu da su najteže, ali ujedno nude i najveću nagradu.

Upravljanje memorijom

Ako pravite manji projekat, ili igru pomoću engine-a, ovo vam uglavnom neće biti potrebno jer manjim projektima ne treba optimizacija, a engine-i imaju ugrađene garbage collectore.

Sa druge strane, ukoliko pravite in-house engine u vašoj kompaniji ili jednostavno pravite lični projekat u potpunosti od nule, čeka vas mnogo rada na ovom polju.

Za mnoge aplikacije par sekundi povremenog kašnjenja je prihvatljivo, sve dok se ne narušava korisnikov doživljaj, ali to nije slučaj i sa igrama.

Ne postoji opravdanje za igru koja ne radi na FPS-u dovoljno velikom da imamo tečan doživljaj, a frame drop je najiritantnija stvar koja može da se desi prilikom igranja — ne računajući saigrače iz Rusije.

Velika optimizacija performansi se postiže boljim i pametnijim upravljanjem memorijom, iako to nije jedini način da ubrzate svoju igru (ili aplikaciju, uopšte).

Ozbiljniji naslovi zahtevaju mnogo veštog upravljanja memorijom, i zato se uglavnom prave u C-u i C++-u, jezicima koji programerima daju direktan pristup memoriji.

game_pointers

Upravljanje memorijom je veština koja vam omogućava da pravite programe visokih performansi, a tu veštinu možete primeniti i van industrije igara — bilo gde gde su performanse na ceni.

Multiplejer

Da li vam simuliranje fizike na serveru i renderovanje zahtevne grafike na osnovu podataka sa mreže koje dobijate u realnom vremenu zvuči jednostavno?

Ni meni.

Pravljenje multiplejer moda je teško. Kao da pravljenje igre samo po sebi nije dovoljno komplikovano, multiplejer zahteva da se bakćete sa mrežom, konkurentnim programiranjem, računanjem veličine svakog paketa, predikcijom događanja unutar igre.

I samo upravljanje ogromnim brojem korisnika je izazov sa kojim se susreću game developeri. Velike igre imaju posebne servere sa bazama podataka u kojima se čuvaju sesije i statistike igara. Toliko o tome kako za igre nije potrebno znanje baza.

Pravljenje multiplejera je jedan od onih izazova koji zahteva više raziličitih veština, mnogo vremena i truda. Ipak, ukoliko se upustite u ovako nešto, nagrade su ogromne — naučićete svašta, od linearne algebre, preko principa rada interneta i mreža pa sve do fizike.

Po pitanju multiplejera, naslov koji zaslužuje da bude spomenut je Counter Stirke, koji igračima pruža neverovatno brz doživljaj čak i na sporijoj konekciji, i zato se smatra za jedan od boljih naslova po ovom pitanju. Naravno, to dolazi po cenu mogućnosti hakovanja i varanja u igri, ali i to je ublaženo u poslednjim godinama.

AI

Igre sa dobrim AI protivnicima nisu toliko česte — zato se uglavnom oduševljavamo kada naiđemo na igru koja nudi dobar izazov na ovom planu.

Lako je napraviti da protivnici budu jaki — teško je napraviti da budu inteligentni.

Za AI se u industriji koriste brojne tehnike i nema jednog rešenja za sve slučajeve, što dodatno komplikuje stvari za nekoga ko tek ulazi u ovu oblast. Poslednji trend u veštačkoj inteligenciji je mašinsko učenje, koje se koristi i u industriji igara. Pomoću njega kompjuterski protivnici mogu da nauče kako neko igra i da prilagode svoje ponašanje kako bi mu se bolje suprotstavili.

U poslednjih nekoliko godina pojavilo se nekoliko velikih igara čiji AI zaista vredi spomenuti, kao što su Max Payne 3 i GTA V. Naravno, tu je i legendarni F.E.A.R., čiji AI sistem se i dan danas smatra remek delom u gejm industiji.

Mašinsko učenje nalazi svoju primenu širom nauke i tehnologije, tako da njegovo poznavanje garantuje da ćete uvek imati šta da radite u svojoj karijeri. A ima li lepšeg načina da ga naučite nego kroz zadavanje noćnih mora igračima?

Dizajn

Učenje dizajna pokazuje se kao korisno za developere, slično kao što se učenje osnova programiranja pokazuje korisnim za dizajnere — daje im širu i potpuniju sliku.

Većina game developera, čak i ako se identifikuju kao programeri, vrlo brzo shvati koliko je doživljaj igre bitan. Vremenom nauče dosta toga o modeliranju, teksturama, zvuku, level dizajnu i sličnim “ne-programerskim” stvarima.

U indie studijima posao osmišljavanja igre i nivoa često ostaje ljudima koji programiraju ili rade art, što u velikim kompanijama nije slučaj. One imaju posebne ljude za to, a ovaj posao je u široj zajednici neretko potcenjen — neopravdano.

Da li vam se nekad desilo da se vratite igrama koje su bile aktuelne pre deset i više godina, iako imaju grafiku od koje vas bole oči? To je zbog dobro osmišljenog gejmpleja i nivoa.

Moj omiljeni Tomb Raider je The Last Revelation, i vraćam mu se često jer mi je beskonačno zabavan. Ima tu i malo nostalgije, ali shvatate poentu.

tomb_raider_4

Definitivno nije zbog grafike

Naučiti dizajn(bilo grafički, gejm ili level) znači shvatiti korisnika, a to znanje važno je pri kreiranju bilo čega što bi neko drugi trebalo da koristi. Zato razne ne-programerske aktivnosti sa kojima programeri mogu da se susretnu mogu umnogome da obogate njihov skup veština.

Pored navedenih oblasti, postoje još brojne aktivnosti u razvoju igara koje mogu da postanu veoma komplikovane ukoliko ste ambiciozni i želite da radite bez mnogo korišćenja postojećeg koda — pre svega programiranje grafike, zvuka i fizike.

Ono što je sigurno jeste da će vas programiranje igara učiniti boljim programerom, i da ćete se dobro zabaviti u procesu.

Aleksa Vidović

Objavio/la članak.

sreda, 30. Novembar, 2016.

IT Industrija

🔥 Najčitanije