RAČUNALNE IGRE 2020

Modeliranje „znanstvene metode“ kao igraće mehanike u domaćoj igri Trip the Ark Fantastic

Aleksandar Gavrilović

[email protected] ƒ‡ Š—  

Sažetak

ƒ†’‘stavlja tezu da je znanost čest motiv u videoigrama, ali da način na koji •‡ œƒ•–˜‡‹‡ ‹‰”ƒ — ˜‹†‡‘igrama ne koristi stvarne metode znanosti već sadrže ludonarativnu disonancu. Nakon toga, rad analizira mehanike u nadolazećoj hrvatskoj igri Trip the Ark ƒ–ƒ•–‹ koja želi simulirati dijelove œƒstvene metode te njih potaknuti igrače na razmišljanje o znanosti ƒ‘‘ƒˆ— ‹‘‹”ƒǤƒođer se okvirno opisuju neke filozofske, znanstvene i Ključnepolitičke tema riječi koje igra problematizira.  ǣ ”‹’ –Š‡ ” ƒ–ƒ•–‹ ǡ ‡•ƒ–—•–™‡”ǡ ˜‹†‡‘‹‰”ƒǡ Uvodœƒ•–˜‡ƒ‡–‘†ƒǡ•‹—Žƒ ‹Œƒ   Portrayals of Technoscience in Video Games: A Potential Avenue for Informal Science Learning ‡–‘ istraživanje iz 2014. godine Sveučilišta u Teksasu  ’‘ƒœƒŽ‘ Œ‡ †ƒ œƒ‘•–pokazuje ‹‰”ƒ ˜‡Ž‹— —Ž‘‰— — ƒ”ƒ–‹˜‹ƒ ˜‹†‡‘‹‰ƒ”ƒ – ’‘ •—†‹‘‹ ‹ƒƒ‡–‡ȋŒ‹Š͵ͲʹȌǡœƒ‘•–‹‰”ƒ˜‡Ž‹——Ž‘‰——ƒ”ƒ–‹˜—‰‘–‘˜‘–”‹ četvrtine igara, a igra  kako se znanost „zapravo događa“ („actually happening“) u 60% igara [1].ludonarativne disonance  Half Life Unatoč tome, česta je pojava to jest raskoraka između ‡Šƒ‹‡ ‹‰”‡ ‹ ƒ”ƒ–‹˜ƒ ‹‰”‡Ǥ  ‹‰”‹  (1998), igračev lik je doktor teorijske fizike, a igra se prolazi tako da se on uspješno bori protiv cijelih četa –”‡‹”ƒ‹Š˜‘Œ‹Š‘’‡”ƒ–‹˜ƒ ƒǤ  Želeći se pozabaviti izazovom realnog prikazivanja rada znanosti kroz ‡Šƒ‹‡ ‹‰”‡ ‹ ‹œ„Œ‡‰ƒ˜ƒŒƒ Ž—†‘ƒ”ƒ–‹˜‡ †‹•‘ƒ ‡ǡ –‹ — •–—†‹Œ— Gamechuck je odlučio za svoju avanturu Trip the Ark Fantastic pokušati ”‡”‡‹”ƒ–‹œƒ•–˜‡—‡–‘†—Ǥ  Ovaj rad ukratko objašnjava kako će se kroz mehaniku igre rekreirati neki ‘•‘˜‹ ’”‹ ‹’‹ œƒ•–˜‡‡ ‡–‘†‡ ‹ ƒ‘ „‹ –ƒ˜ƒ ‡Šƒ‹ƒ ‘‰Žƒ „‹–‹ ‘”‹•ƒœƒ†‡‹•–‹ˆ‹ ‹”ƒŒ‡œƒ‘•–‹Ǥ 1 RAČUNALNE IGRE 2020

Trip the Ark Fantastic

Priča igre Trip the Ark Fantastic je smještena u •˜‹Œ‡– „ƒ•‡ – životinje su svjesne, pričaju i žive u monarhiji zvanoj Životinjsko carstvo, koje tehnološki i znanstveno podsjeća na svijet 19. stoljeća. Igračev lik je jež Charles, eminentni œƒ•–˜‡‹ ƒ”•–˜ƒ ‘Œ‹ Œ‡ †obio zadatak pronaći znanstvene doƒœ‡ ‘ postojanju mitske Arke Čudesne („Ark Fantastic“). Legenda o arki je u sredštu mitologije Životinjskog Carstva i čini osnovu njihovog društvenog sustava i ”‡Ž‹‰‹Œ‡ –‡ „‹ †‘ƒœ‹˜ƒŒ‡ Œ‡‘‰ ’‘•–‘ŒƒŒƒ ‹Ž‹ ‡’‘•–‘ŒƒŒƒ ‹ƒŽ‘ ˜‡Ž‹‡ ’‘•ŽŒ‡†‹ ‡ ƒ Œ‹Š‘˜o društvo u cjelosti – hoće li Životinjsko Carstvo ostati ‘ƒ”Š‹Œƒ ‹Ž‹ •‡ –”ƒ•ˆ‘”‹”ƒ–‹ — †‡‘”ƒ ‹Œ—ǡ ‹Ž‹ ’ƒ ƒƒ”Š‹Œ— – ‘˜‘ predstavlja osnovno političko pitanje za igrača.  Još više detalja o igri može se pročitati u zborniku radova stručne konferenciŒ‡ Računalne igre 2019ȏʹȐǤ  Charles kroz igru riješava ne samo pitanje postojanja Arke već i mnoga druga ’‹–ƒŒƒ ”‘œ ”ƒœ‡ ‹•–‡”‹Œ‡ ‹ œƒ†ƒ–‡ ƒ ‘Œ‡ ƒ‹Žƒœ‹ — –‹Œ‡— ‹‰”‡Ǥ •‘˜‹ ’”‹ ‹’a koji Charles riješava zadatke u igri (quests) je trenutno jed‹•–˜‡— •˜‹Œ‡–—˜‹†‡‘Viđenja znanstvene‹‰ƒ”ƒ–koristeći metode apstrahiranu formu znanstvene metode. 

Ž—•–”‹”ƒ– će se različita viđenja znanstvene metode kroz primjer dvije škole ‹•Ž‹˜‡œƒ‡œƒŒ—Ǥ The Logic of Scientific Jedno viđenje znanstvene metode je vezano uz djeŽ‘ƒ”Žƒ‘’’‡”ƒ ‹• ‘˜‡”›ǡ ‰†Œ‡ •‡ œƒ•–˜‡ƒ –‡‘”‹Œƒ ”ƒœŽ‹—Œ‡ ‘† ‡œƒ•–˜‡‡ œƒ–‘Œ‡”‘ƒ‘”‹•–‹‡’‹”‹Œ•‡‡–‘†‡–’‘‰Žƒ˜‹–‘”‘œ‡•’‡”‹‡–‡‘Œ‹ƒ se teorija pokušava osporiti (falsifikabilnost)ȏ͵ȐǤ  Drugo viđenje je ono Thomasa Kuhna koje je definirao u djelu Š‡–”— –—”‡‘ˆ  ‹‡–‹ˆ‹  ‡˜‘Ž—–‹‘•„normalna, koje znanost“ kritizira paradigmatično•– œƒ‘•–‹ –‡ ’‘•–ƒ˜ŽŒƒ –‡œ— †a kada znanstvenici naiđu na podatke koj‹ ne pašu u postojeće ’ƒ”ƒ†‹‰‡ǡ  —Œ‡•–‘ ’”‡‹•’‹–‹˜ƒŒƒ ’ƒ”ƒ†‹‰‡ ‹Ž‹ nadograđuje paradigmu ili drugačije interpretira podatke, i tako sve dok ne dođe do paradigmatsk‡’”‘Œ‡‡ȏͶȐǤ ƒ‡ Š— ǡ•–—†‹‘‹œƒ‹‰”‡”‹’–Š‡” ƒ–ƒ•–‹ ǡ’”‡†•–ƒ˜ŽŒƒ•—‘„‘˜‡†˜‹Œ‡ teorije kao sukob između dvij—˜‹œ‹Œ‡–znanost kao racionalistička metoda bez značajnih utjecaja vanjskih sila, ili znanost kao većinski rezultat povijesnoǦ ƒ–‡rijalnih sila koje utječu na znanstvenu zajednicu te samim time i na znanost. Kroz mehaniku igre, upravo se pokušava igračimƒ ’”‡†•–ƒ˜‹–‹ ‹ ’”‡‹•’‹–ƒ–‹‘˜‡†˜‹Œ‡˜‹œ‹Œ‡Ǥ–‹ƒ——, prvo je važno napraviti apstrahirani

2 RAČUNALNE IGRE 2020

•—•–ƒ˜ ‘Œ‹ †‘˜‘ŽŒ‘ †‘„”‘ ƒ’”‘•‹‹”ƒ œƒ•–˜‡— ‡–‘†—Ǥ ƒ –‘ •— — ƒ‡ Š— —- ‹œƒ„”ƒ‹‡‹ključn‹‡Ž‡‡–‹œƒ•–˜‡‡‡–‘†‡ǣ  - ’‹”‹œƒ–†‘„‹˜ƒŒ‡’‘†ƒ–ƒƒ”‘œ‘„œ‡”˜ƒ ‹Œ—•–˜ƒ”‘‰•˜‹Œ‡–ƒ ‡†— ‹Œƒ – –‡”’”‡–ƒ ‹Œƒ ‘†ƒ„”ƒ‘‰ ‹œƒ ’‘†ƒ–ƒƒ ‹ •–˜ƒ”ƒŒ‡ - zaključaka ǦŠ‹’‘–‡œ‡ †— ‹Œƒ – Prijašnje recenzirani radovi mogu služiti kao empirijska - osnova za buduće radove ‡ ‡œ‹”ƒŒ‡ – „Œƒ˜ŽŒ‹˜ƒŒ‡ Š‹’‘–‡œƒ ƒ‘ „‹ ‰ƒ ‘•–ƒ–ƒ œƒŒ‡†‹ ‡ Empirizam‘‰ƒ‘–‡•–‹”ƒ–‹‹Ž‹”‹–‹œ‹”ƒ–‹ u Trip the Ark Fantastic 

’‹”‹œƒ •‡ •˜‘†‹ ƒ •—’ŽŒƒŒ‡ ’‘†ƒ–ƒƒ — •ƒ‘ •˜‹Œ‡–— ‹‰”‡Ǥ ‰”ƒ Œ‡ predstavljena u 2D prostoru u kojem se lik kreće iz profila kroz razne lokacije – gradove Životinjskog carstva. Interakcija s različitim objektima pokreće istraživački razgovor u kojemigrač može obzervacijom prikupljati’‘†ƒ–‡Ǥ 

Slika br. 1: Isječak iz or r t r antast 

 ƒ slici 1 vidi se dio igre u kojem Charles kroz interaktivni dijalog istražuje moguće uzročnike bolesti koja je zadesila zečeve u gradu Burrows, u •Ž‘’— œƒ•–˜‡‘‰”ƒ†ƒ–Š‡ƒ—•‡•‘ˆ–Š‡ƒ„„‹–’‹†‡‹ Ǥ •‹‹œ”ƒ˜‡‘’•ervacije, igrač kroz igru može skupljati razne alate kojima će moći raditi detaljnije op•ervacije i skupiti više informacija.  Uređaji koje igračev lik može koristiti odražavajusvijet 19. stoljeća u kojem je ‹‰”ƒsmještena, pa tako Charles može kor‹•–‹–‹‹”‘•‘’‹Ž‹ƒ‡”—ǡƒŽ‹Œ‡œƒ potrebe igre i zanimljivosti zadataka ovo prošireno i na nestvarne ili fantastične elemente Ǧpoput korištenja uzgojenih lišajeva koji mijenjaju „‘Œ— ‘˜‹•‘ ‘ •–ƒ”‘•–‹ —‰ŽŒ‹ƒ ȋ–ƒ‘zvani „carbon dating mould“, nepostojeći u •–˜ƒ”‘•˜‹Œ‡–—ȌǤ 3 RAČUNALNE IGRE 2020

 Neki od ovih uređaja su lako dostupni svima (poput recimo mikroskopa), a neki se tek počinju koristiti i njihova prihvaćenost u znanstvenom svijetu nije ’‘–’—ƒ ȋ’‘’—– ”‡ ‹‘ ‰‘”‡ •’‘‡—–‹Š Ž‹šajeva), a neke zbog cijene nije DedukcijaŒ‡†‘•–ƒ˜‘†‘„‹–‹•˜ƒ‘œƒ•–˜‡‹—ȋ’‘’—–”‡ ‹‘ˆ‘–‘ƒ’ƒ”ƒ–ƒ—„‘Œ‹ȌǤ u Trip the Ark Fantastic  

Do podataka koji su dostupni igraču za stvaranje vlastitih hipoteza se †‘Žƒœ‹ kroz posebno sučelje igre u kojem •‡ˆ‹Ž–”‹”ƒŒ—•˜‹†‘•–—’‹’‘†ƒ ‹–‡•–˜ƒ”ƒŒ— ‘˜‹œƒ•–˜‡‹”ƒ†‘˜‹Ǥ 

la r Sučelje o r r t r antast ator 

 U desnom dijelu sučelja na slici 2 vidi se kako su podaci •‘”–‹”ƒ‹ — –”‹ ƒ–‡‰‘”‹Œ‡ǣ ‘’•ervacije koje je igrač sam pronašao, podaci na koje se igrač poziva iz knjiga i tuđih radova te podaci na koje se igrač poziva iz razgovora s drugim likovima u igri (u ulozi stručnjaka, očevidca i slično). Odabirom određenog izvora(određena knjiga, nečiji iskaz ili op•‡”˜ƒ ‹Œƒ•‡‡Ž‘ƒ ‹Œ‡Ȍǡ †‘„‹˜ƒ•‡’‘’‹•’‘†ƒ–ƒƒ†‘„‹˜‡‹Š‹œ–‘‰‹œ˜‘”ƒǡƒ‘ƒ•Ž‹ ‹͵Ǥ 

la r Sučelje o r r t r antast – os oataa 

4 RAČUNALNE IGRE 2020

 ‘”‡–‘ǡ ƒ •Ž‹ ‹ ͵ •‡ — †‡•nom dijelu sučelja vidi popis podataka iz određenog izvora (u ovom slučaju iz knjige koju je Charles pročitao u knjižnici). Igrač bira koje od tih podataka želi dodati u svoj izvještaj.   Klikom na podatak, on se pojavljuje kao ikona na lijevom dijelu sučeŽŒƒǤ ‘ drugi podaci koji već jesu u izvještaju podržavaju taj podatak, oni se vežu ravnom crtom, a ako su oprečni jedan s drugim onda se vežu valovitom crtom. ‘Œ‡†ƒ’‘†ƒ–ƒ‹–‡”’”‡–‹”ƒ†”—‰‹ǡ‘‹•—’‘˜‡œƒ‹‹•’”‡‹†ƒ‘ ”–‘Ǥ  ‘Œ‹†‹‘Ž‹Œ‡˜‘‰•—čelja ƒslici 3 predstavlja sve moguće zaključke koj‹•‡• –”‡utačnimpodacima mogu zaključiti. Dodatak podatka iz slike 2 do slike 3 (ikona mača) je povećao broj mogućih zaključaka za +3, što je također ’”‹ƒœƒ‘ƒsučelju. Može se dodati više različitih zaključaka u izvještaj, čak i oprečnih, a različita kombinacija zaključaka može otključati dodatne zaključke.   Završni zaključak je onaj koji predstavlja tezu znanstvenog rada, a svi ostali zaključci mogu biti hipo–‡œ‡ ‘Œ‡ •‡ †‘ƒœ—Œ— ‹Ž‹ ‘’‘˜”‰ƒ˜ƒŒ—Ǥ ƒ†ƒ Œ‡ postavljena teza članka, on se može objaviti pristiskom ƒ ‰—„   („Predaj“) ƒsučelju, kao što se vidi ƒ•Ž‹ ‹ͶǤ 

Sučelje – objava teze članka 

 ČitavIndukcija’”‹Œ‡”†‘•–—’ƒŒ‡‹—˜‹†‡‘‘„Ž‹— u Trip the Ark Fantastic ȏͷȐǤ 

‡œ‡Šƒ”Ž‡•‘˜‹Š”ƒ†‘˜ƒ‹Œ‹Š‘˜‡”‡ ‡œ‹Œ‡•—ƒ•‹Œ‡†‘•–—’‡ƒ‘’‘†ƒ ‹• kojima igrač može nastaviti pisati druge radove i razvijati svoju tezu ili j‡ pobijati. Na ovaj način može se doći do zanimljivijih i kompleksnijih stajališta od onih koja su dostupna samo korištenjempodataka „prvog reda“.   5 RAČUNALNE IGRE 2020

Recenziranje u Trip the Ark Fantastic

Ovisno o reputaciji igrača, sugovornika ili autora knjige, svi podaci koje igrač koristi uz sebe nose i određenu znanstvenu reputaciju. Njihovo korištenje u članku dodaje ili oduzima određenunumeričku vrijednost na vjerodostojnost •ƒ‘‰œƒ•–˜‡‘‰”ƒ†ƒǤ  Također, zaključci (hipoteze i završna teza) vežu uz sebe numeričke ˜”‹Œ‡†‘•–‹ ‘Œ‡ ’”‡†•–ƒ˜ŽŒƒŒ— ‘Ž‹‘ •— ‘‹ ˜ƒŽŒƒ‘ ‹œ˜‡†‡‹ ‹œ †‘•–—’‹Š podataka, koliko su kontroverzni kao zaključak te koliko su politički nabijeni (ako se radi recimo o znanstvenom članku koji preispituje povijest Carstva kao — •Ž‹ƒƒ ʹǡ͵ǡͶǡ ili je na drugi način vezano uz neku društvenu temu – ekonomski članak o razlozima siromaštva u Carstvu i slično). Moguće je u i‰”‹ napisati članak koji će podići igraču reputaciju u određenim krugovima bliskim kralju, ali mu spustiti reputaciju među antimonarhističkim œƒ•–˜‡‹ ‹ƒ—ƒ”•–˜—Ǥ  Također, igračeva prijašnja reputacija može igrati određenu ulogu kao —Ž–‹’Ž‹ƒ–‘”‘Œi može ublažiti učinke ovih vrijednosti na reputaciju čitavog članka.  Ovi numerički podaci nisu vidljivi igraču, ali igrač vidi”‡œ—Ž–ƒ–”‘œ”‡ ‡œ‹Œ‡ svog rada („peer review“) koje može čitati u novinama gdje su njegovi radovi —˜‹Œ‡ ‘„Œƒ˜ŽŒ‡‹ǡ ƒŽ‹ ‹ roz razgovore s drugim likovima u igri, kao što je vidljivo iz negativno nabijenog dijaloga s krčmarom ƒ•Ž‹ ‹ͷǤ 

Sučelje – 

 Ovdje u igru dolazi i političko pitanje koje je središnje u samoj igri–hoće li igrač probati „izigrati“ sustav tako da u Carstvu potvrdi tezu koja je igraču politički bliža (recimo vezano za vlada˜‹— ”ƒŽŒ‡˜ƒ ƒ˜‘˜ƒ — ƒ”•–˜— ‹Ž‹ œƒ istinitost mita o Arki i slično) ili će se pokušati držati znanstvenih načela i 6 RAČUNALNE IGRE 2020

‹•–‹‡ ’‘ svaku cijenu. Kroz ovakav sustav, igraču je dopušteno istraživati ‘†‰‘˜‘”‡ƒ‘˜ƒ’‹–ƒŒƒ•ƒ‘•–ƒŽ‘Reference–bez navođenja.  

 ȏͳȐ „Portrayals of Technoscience in Video Games: A Potential Avenue for Informal Science Learning“, Anthony Dudo, Vincent CicchiriŽŽ‘ǡ — › Atkinson, Samantha Marx; izdavač SAGE Publications, 2014. ȏʹȐ „Trip the Ark Fantastic kao Gesamtkunstwerk“, Aleksandar Gavrilović, Matija Vigato, Zbornik radova Računalne igre ʹͲͳͻǡ izdavač Fakultet organizacije i informatike, Sveučilište u Zagrebu, ʹͲͳͻǤ ȏ͵Ȑ „Logic of Scientific Discovery“, Karl R. Popper, izdavač Julius Springer, ͳͻ͵Ͷ ȏͶȐ „–”— –—”‡‘ˆ ‹‡–‹ˆ‹ ‡˜‘Ž—–‹‘•“, Thomas S. Kuhn, izdavač University ‘ˆŠ‹ ƒ‰‘ǡͳͻ͸ʹ ȏͷȐ Š‡ Žƒ „ƒ” ‹• ”‡’ƒ › ǡ †‘•–—’‘ ƒ Š––’•ǣȀȀ™™™Ǥ›‘—–—„‡Ǥ ‘Ȁ™ƒ– Šǫ˜αͳŒ˜ ͺͲ‘ǡͳͲǤͳʹǤʹͲʹͲǤ

7 RAČUNALNE IGRE 2020

Izrada video igre žanra Metroidvania u programskom alatu Unity

Luka Rožić, Danijel Radošević i Mladen Konecki

Fakultet organizacije i informatike, Sveučilište u Zagrebu Sažetak

  ‘˜‘ radu opisat će se glavne karakteristike video igara žanra Metroidvania. Nakon definiranja žanra opisat ćese elementi igre „Knivader“, igre koja je izrađena u programskom alatu Unity, a koja ima sve osnovne karakteristike video igara žanra Metroidvania. Opisat će se na koji način su implementirane osnovne mehanike igre. Na kraju će se donijeti zaključak o Ključne’”‘˜‡†„‹‹œ”ƒ†‡˜‹†‡‘‹‰”‡‘˜‘‰–‹’ƒ—’”‘‰”ƒ•‘ƒŽƒ–—‹–›Ǥ riječi:    računalna igra, dvodimenzionalna igra, Unity, C#, ‡–”‘‹†˜ƒ‹ƒǡ’”‘‰”ƒ‹”Uvod ƒŒ‡ǡƒŽ‰‘”‹–‹ 

 Razvoj industrije računalnih igara je u neprestanom porastu i predviđanja su da se rast neće zaustaviti [1]. Na tržištu postoji velika ponuda različitih kućnih konzola, igre se igraju na osobnim računalima, a u najvećem porastu je ig”ƒŒ‡ putem mobilnih uređaja. Na tržištu su naravno jako dobro prihvaćene igre ˜‡Ž‹‹h proizvođača poput Ubisofta ili Nintenda, no također vidimo da i manji studiji također pronalaze svoje mjesto na tržištu. Upravo zbog velike raznolikosti želja i potreba igrača, vidimo kako na tržištu pronalazimo igre najrazličitijih žanrova. Zbog velike konkurencije, uvijek je potrebno osmišljati ‘˜‡ ‘ ‡’–‡ ‹‰”ƒŒƒǡ ‘˜‡ ‡Šƒ‹‡ ‹‰”ƒŒƒǡ „‹–‹ ”‡ƒ–‹˜ƒ ‹ ‹‘˜ƒ–‹˜ƒǤ Jedan on žanrova koji je i danas popularan, koji imƒ•˜‘Œ—’—„Ž‹—‹‘†‡”‡ uspješne naslove je i žanr Metroidvania [2], podžanr akcijsko avanturističkih Elementi‹‰ƒ”ƒȏ͵ȐǤ Metroidvanie   Sami naziv žanra potječe od serijala igara  ȏͶȐ ‹  ȏͷȐǤ Metroidvania igre su poznate po pažljivo osmišljenim dinamičnom svijetu koji igrač istražuje, po ugođaju, atmosferi, s naglaskomƒƒ”ƒ–‹˜‘†‹Œ‡Ž—‹‰”‡ǡƒ Œ‡†ƒ‘ –ƒ‘ ‹ ƒ ‹œƒœ‘˜‘Œ ‹‰”‹˜‘•–‹ ȋ‡‰ŽǤ ). Na početku igre igrač ima ograničen set mogućnosti i vještina te su mnogi dijelovi svijeta zaključani ili nedostupni. Kako igrač istražuje svijet, tako skuplja iskustvo, ‘’”‡—ǡ‘˜ƒ

8 RAČUNALNE IGRE 2020

oružja, moći i mogućnosti. Kako stječe nove mogućnosti borbe i kretanja, tako sve više može otkrivati prije nedostupne dijelove svijeta i boriti se s jačim ‡prijateljima koje prije nije eventualno mogao savladati. Još jedna učestala ƒ”ƒ–‡”‹•–‹ƒ Œ‡ ’‘•–‘ŒƒŒ‡ –ƒŒ‹Š •‘„ƒ ‹ •”‹˜‡‹Š ’—–‘˜ƒ ‘Œ‹ †‘’”‹‘•‡ zanimljivosti svijetu u kojem se igrač nalazi. Dizajn razina je vrlo pomno promišljen, čest je koncept stvaranja određenih regija unutar svijeta i svaka ”‡‰‹Œƒ ‹ƒ •˜‘Œ‡ Œ‡†‹•–˜‡‡ ƒ”ƒ–‡”‹•–‹‡ǡ ƒ‘ •–‹Ž•‡ –ƒ‘ ‹ ’‘ ˜”•–‹ neprijatelja i načinu borbe.  Česta pojava je da igrač mora prolaziti više puta istim dijelovima svijeta. Kako –ƒŒ•‡‰‡–‹‰”‡‡„‹igraču bio monoton, koristi se rješenje da s vremenom neprijatelji postaju jači ili da se mijenja na određeni način svijet u kojem se igrač nalazi. Lijep primjer implementacije takvog koncepta vidljiv je primjerice — ‹‰”‹  ȏ͸ȐǤ ƒ‘ „‹ •‡ ƒ˜‹gacija olakšala igraču, igrač često ‘”‹•–‹ ‡‹ ‘„Ž‹ ƒ”–‡ •˜‹Œ‡–ƒ — ‘Œ‡ •‡ ƒŽƒœ‹Ǥ ƒ ”ƒœ‹ †‹Œ‡Ž‘˜‹ƒ ‹‰”‡ nalaze se mnogi neprijatelji koje igrač treba savladati kako si napredovao u igri. Također se u igrama pojavljuju i platformerski elementi. Osim toga često igrač mora odgonetnuti razne zagonetke koje se nalaze u svijetu. Jednak‘–ƒ‘ se i prilikom borbe s neprijateljima javljaju elementi rješavanja problema, najčešće u borbama s glavnim neprijateljima. Igrač mora odgonetnuti vrste ƒ’ƒ†ƒ ‡’”‹Œƒtelja kako bi ih mogao izbjeći i otkriti u kojem trenutku je Izr‡’”‹Œƒ–‡ŽŒ”ƒŒ‹˜Ǥada vlastite igre Knivader 

 Imajući na umu osnovne karakteristike Metroidvania žanra, kreirana je igra . Samo ime igre dolazi od dvije engleske riječi, ‹ što u prijevodu znači vitez i osvajač. Glavnog protagonista igre je zli čarobnjak zajedno s ostalim čudovištima iz svijeta fantazije teleportirao na vanzemaljski Protagonistplanet te je cilj igre viteza - vitez pronaći način kako da se vrati u svoj svijet. 

 Igrač se nalazi u ulozi viteza koji na početku igre ima 5 životnih bodova koji su vidljivi na sučelju u obliku srca u gornjem lijevom dijelu zaslona. Osim standardne mogućnosti kretanja igrač može također i skočiti. Što se tiče ‹–‡”ƒ ‹Œ‡ • ‡’”ijateljima, igraču je odmah na raspolaganju mač koji može koristiti dok stoji ili dok se kreće po zemlji. Dok je u zraku tj. dok skače ne može koristiti oružje. Igrač igranjem skuplja iskustvo. Nakon što igrač skupi određenu količinu iskust˜ƒȋ‡‰ŽǤ ) igrač postaje sve jači i udarac mača postaje snažniji te nanosi više štete neprijateljima. Na slici br. 1 vidljiva je scena s početka igre gdje igrač napada neprijatelja koji se nalazi ispred njega.   9 RAČUNALNE IGRE 2020

Slika br. 1: Vitez mačem napada n 

 ‰raču je dostupna i karta putem koje može lakše navigirati prostorom u kojem se nalazi te kako bi znao koje prostorije je do sada posjetio, a koje su još neistražene. Na mapi su horizontalne prostorije označene plavom bojom, a ˜‡”–‹ƒŽ‡ ’”‘•–‘”‹Œ‡ •— ƒœƒčene zelenom bojom. Sivom bojom označen je prostor koji je nešto izazovniji i koji je u potpunosti opcionalan. Žute sobe su •‘„‡‰†Œ‡•‡ƒŽƒœ‹–œ˜Ǥ , tj. kontrolna točka. To je točka na koju se igrač vraća u slučaju gubitka života tj. u slučaju •”–‹Ǥƒ”ƒŒǡ ”˜‡ƒ•‘„ƒŒ‡ •‘„ƒ—‘Œ‘Œ•‡ƒŽƒœ‹‰Žƒ˜‹‡’”‹Œƒ–‡ŽŒ‹‰”‡ȋ‡‰ŽǤ ȌǤ 

10 RAČUNALNE IGRE 2020

Posebni predmeti koje igrač može sakupiti u igri su leteće čizme koje igraču omogućavaju dvostruki skok u zraku (engl. Ȍǡ˜‘†‡ƒ‡†ƒŽŒƒ‘Œƒ igraču omogućava kretanje pod vodom istom brzinom kao i izvan vode, kandža za zid koja igraču omogućava’‡ŒƒŒ‡’‘œ‹†——˜‡”–‹ƒŽ‘•Œ‡”—”‡–ƒŒƒ‹ polagano klizanje po zidu prema dolje te magična energija pomoću koje igrač ože zamahom mača ispucati projektil prema neprijateljima. Posebna vrsta dodatka je i zlatno srce koje povećava kapacitet životn‹Š bodova igrača za NeprijateljiŒ‡†‘•” ‡Ǥ u igri 

 U igri postoji 5 vrsta neprijatelja. Prvi neprijatelj je rak koji ima mogu搑•– ”‡–ƒŒƒŽ‹Œ‡˜‘Ȁ†‡•‘’‘’Žƒ–ˆ‘”‹ƒ‘Œ‘Œ•‡ƒŽƒœ‹–‡—‡’‘•”‡†‘Œ„Ž‹œ‹‹• igračem ga može napasti. U slučaju da rak dođe do kraja platforme ili ako naiđe na nekog drugog neprijatelja, promijenit će svoj smjer kretanja na •—’”‘–— •–”ƒ—Ǥ ”—‰ƒ vrsta neprijatelja je hobotnica koja ima mogućnost ispucavanja otrova na daljinu. U slučaju da se igrač približi ovom neprijat‡ŽŒ— na određenu odaljenost, on će ispucati otrov u smjeru igrača. Osim što mogu pucati na daljinu, ovi neprijatelji se kreću brže od rakova i imaju malo više životnih bodova. Treći neprijatelj je neprijatelj koji se nalazi na stropovima ’”‘•–‘”‹Œƒ ‹ — •Ž—čaju da se igrač nađe ispod njih oni „padaju“ prema dolje i pokušavaju na taj način ozlijediti igrača. Ako igrač dođe u neposreda†‘†‹”• ovim neprijateljem, gubi životne bodove. 

Slika br. 3: Mini glavni neprijatelj kostur se štiti 

 Četvrta vrsta neprija–‡ŽŒƒ Œ‡ ‘•–—”ǡ ‹‹ ‰Žƒ˜‹ ‡’”‹Œƒ–‡ŽŒ ‘Œ‹ ’”‡†•–ƒ˜ŽŒƒ nešto veći izazov za savladati od prva tri neprijatelja. Kostur ima mogućnost praćenja pozicije igrača i neprestano se kreće prema igraču. Za detekciju 11 RAČUNALNE IGRE 2020

etor.istane igrača koristi se funkcija  [7] koja vraća vrijednost udaljenosti između pozicija dvaju objekata, u ovom slučaju pozicija viteza i kostura. Ako se igrač dovoljno približi kosturu, kostur će napasti igrača sa svojim mačem. Ako igrač zamahne sa svojim mačem, neće moću udariti ‘•–—”ƒŒer će kostur iskoristiti obranu štitom koji drži u drugoj ruci. Jednako tako, ako igrač preskoči kostura i pokuša ga napasti, neće mu nauditi jer kostur drži štit na suprotnoj strani od strane prema kojoj gleda. Igrač mora ’”‡’‘œƒ–‹†ƒŒ‡Œ‡†‹‹–”‡—–ƒkada je kostur ranjiv jest trenutak nakon što kostur zamahne svojim mačem. Tada se igrač mora približiti kosturu i napasti ‰ƒǤObrana kostura štitom vidljiva je na slici br. 3. 

Slika br. 4: Glavni neprijatelj napada mačem 

 ƒ†Œ‹ ‡’”‹Œƒ–‡ŽŒ — ‹‰”‹ Œ‡ glavni neprijatelj u igri, a to je zli čarobnjak. Čarobnjak koristi kombinaciju 4 različita napada (mačem i čarolijama). Prva ˜”sta napada je neposredni napad mačem koji će čarobnjak izvesti ako se igrač ƒŽƒœ‹—‡’‘•”‡†‘Œ„Ž‹œ‹‹Ǥ”—‰‹ƒ’ƒ†Œ‡ƒ’ƒ†˜ƒ–”‘–čarobnjak će se zatrčati prema igraču, zakotrljati i ostaviti trag vatre. Kako bi izbjegao ovu vrstu napada igrač mora preskočiti čarobnjaka. Treća vrsta napada je grmljavina koju igrač također mora preskočiti. Za vrijeme tog napada čarobnjak ima obranu s one strane na kojoj mu se nalazi štit. Posljednji napad je napad ledom. Kako bi izbjegao ovu vrstu napada igrač se mora ’‘œ‹ ‹‘‹”ƒ–‹ između padajućih komada leda. Slika br. 4. prikazuje napad mačem zlog čarobnjaka. 

Slika br. : anealjski svijet igre „Knivader“ vidljiv unutar Unityja 

12 RAČUNALNE IGRE 2020

Dizajniranje svijeta

ile alette ƒ ‹œ”ƒ†— dvodimenzionalnog svijeta u kojem se igrač nalazi korišten je [8] prozor u programskom alatu Unity u kojem se definiraju sličice koje •‡ ‘„‹‹”ƒŒ‡ ‘”‹•–‡ œƒ •–˜ƒ”ƒnje svijeta. Sličice koje su korištene za izradu igre su preuzete s Unity Asset Storea [9]. Na slici br. 5 moguće je vidjeti ‘Zaključakačan dizajn razine igre.

‡–”‘‹†vania je poseban žanr računalnih igara koji lijepo balansira akcijske i avanturističke aspekte igara u jednu cjelinu. Na neki način bi se moglo reći da su ovo 2D igre otvorenog svijeta. Igrač istražuje svijet u k‘Œ‡•‡ƒŽƒœ‹”‘œ eksperimentiranje, ne postoji zacrtani put već postoji više putova kako je moguće doći do krajnj‡‰ ‹ŽŒƒǤ”‘‰”ƒ•‹ƒŽƒ–‹–›Œ‡Œƒ‘†‘„ƒ””ƒœ˜‘Œ‹ƒŽƒ– koji nudi dobru podršku za razvoj video igara ovog tipa. Za implementaciju ‘‰‹h mehanika i aspekata igre, Unity ima dobru podršku u obliku raznih prozora, pomagala i funkcija. Također postoji pregršt dobrih poduka u slučaju da postoji problem s implementacijomReference određenog željenog segmenta igre ili ‡Šƒ‹‡Ǥ

ȏͳȐ ƒ”‡– ƒŽ›•‹• ‡’‘”–ǣ ‹†‡‘ ƒ‡ ƒ”‡– ‹œ‡ǡ Šƒ”‡ Ƭ ”‡†• ƒŽ›•‹•‡’‘”–›‡˜‹ ‡ȋ‘•‘Ž‡ǡ‘„‹Ž‡ǡ‘’—–‡”Ȍǡ››’‡ȋŽ‹‡ǡ ˆˆŽ‹‡Ȍǡ › ‡‰‹‘ǡ † ‡‰‡– ‘”‡ ƒ•–•ǡ ʹͲʹͲ – ʹͲʹ͹Ǥ ȋʹͳǤ ”—Œƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ™™™Ǥ‰”ƒ†˜‹‡™”‡•‡ƒ” ŠǤ ‘Ȁ‹†—•–”›Ǧ ƒƒŽ›•‹•Ȁ˜‹†‡‘Ǧ‰ƒ‡Ǧƒ”‡– ȏʹȐ ‹‹’‡†‹ƒǣ ‡–”‘‹†˜ƒ‹ƒǤ ȋʹʹǤ ”—Œƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ‡Ǥ™‹‹’‡†‹ƒǤ‘”‰Ȁ™‹‹Ȁ‡–”‘‹†˜ƒ‹ƒ ȏ͵Ȑ ‹‹’‡†‹ƒǣ  –‹‘Ǧƒ†˜‡–—”‡ ‰ƒ‡Ǥ ȋʹʹǤ ”—Œƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ‡Ǥ™‹‹’‡†‹ƒǤ‘”‰Ȁ™‹‹Ȁ –‹‘Ǧƒ†˜‡–—”‡̴‰ƒ‡ ȏͶȐ ‹‹’‡†‹ƒǣ ‡–”‘‹†Ǥ ȋʹʹǤ ”—Œƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ‡Ǥ™‹‹’‡†‹ƒǤ‘”‰Ȁ™‹‹Ȁ‡–”‘‹† ȏͷȐ ‹‹’‡†‹ƒǣ ƒ•–Ž‡˜ƒ‹ƒǤ ȋʹʹǤ ”—Œƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ‡Ǥ™‹‹’‡†‹ƒǤ‘”‰Ȁ™‹‹Ȁƒ•–Ž‡˜ƒ‹ƒ ȏ͸Ȑ ‘ŽŽ‘™ ‹‰Š–Ǥ ȋʹʹǤ ”—Œƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ™™™ǤŠ‘ŽŽ‘™‹‰Š–Ǥ ‘Ȁ ȏ͹Ȑ ‹–›‘ —‡–ƒ–‹‘ǣ‡ –‘”ʹǤ‹•–ƒ ‡Ǥȋʹ͵Ǥ”—ŒƒʹͲʹͲǤȌǤ‘•–—’‘ƒǣ Š––’•ǣȀȀ†‘ •Ǥ—‹–›͵†Ǥ ‘Ȁ ”‹’–‡ˆ‡”‡ ‡Ȁ‡ –‘”ʹǤ‹•–ƒ ‡ǤŠ–Ž ȏͺȐ ‹–› ‘ —‡–ƒ–‹‘ǣ ‹Ž‡ ƒŽ‡––‡Ǥ ȋʹ͵Ǥ ”—Œƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ†‘ •Ǥ—‹–›͵†Ǥ ‘Ȁƒ—ƒŽȀ‹Ž‡ƒ’ǦƒŽ‡––‡ǤŠ–Ž ȏͻȐ ‹–› ••‡– –‘”‡Ǥ ȋʹ͵Ǥ ”—Œƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀƒ••‡–•–‘”‡Ǥ—‹–›Ǥ ‘Ȁ

13 RAČUNALNE IGRE 2020

Izrada horor videoigre preživljavanja u programskom alatu Unity

Dario Alilović i Mario Konecki  dalilviir arineiir ƒ—Ž–‡–‘”‰ƒ‹œƒ ‹Œ‡‹‹ˆ‘”ƒ–‹‡ǡSveučilište u Zagrebu

Sažetak 

‘˜‘”ƒ†—prikazat će se rad u programskim alatu‹–›”‘œ‹œ”ƒ†—˜Žƒ•–‹–‡ Š‘”‘”˜‹†‡‘‹‰”‡preživljavanja. Bit će prikazan†‡–ƒŽŒƒ‘’‹•‹”ƒ–ƒ’‘˜‹Œ‡•– ’”‘‰”ƒ•‘‰ƒŽƒ–ƒ‹–y, a bit će opisan i žanr horor ˜‹†‡‘igara preživljavƒŒƒǤ Prikazat će se nekoliko–‡Š‹ƒǡ‡–‘†ƒ‹ƒŽ‰‘”‹–ƒƒ‘Œ‹•‡‘”‹•–‡’”‹Ž‹‘ ‹œ”ƒ†‡ ˜‹†‡‘‹‰ƒ”ƒ –‡ će sve navedeno biti ilustrirano kroz primjenu ’”‹Ž‹‘ Ključne‹œ”ƒ†‡˜Žƒ•–‹–‡ riječi ˜‹†‡‘‹‰”‡Ǥ  Uvod ǣ‹–›ǡ˜‹†‡‘‹‰”ƒǡŠ‘”‘”ǡ’”‘‰”ƒ‹”ƒŒ‡ 

‘”‘” ˜‹†‡‘igra preživljavanja (‡‰ŽǤ —”˜‹˜ƒŽ ‘””‘” videogame) je žanr ˜‹†‡‘‹‰ƒ”ƒ ‘Œ‹ ‘”‹•–‹ ‡Ž‡‡–‡ Š‘”‘” ‹‰ƒ”ƒǡ ƒŽ‹ • ƒ‰Žƒ•‘ ƒ ‘•—†‘•– ”‡•—”•ƒ ȏʹ͸ȐǤ ”˜ƒ ˜‹†‡‘‹‰”ƒ ‘Œƒ Œ‡ ’”‡†•–ƒ˜ŽŒ‡ƒ ͳͻͻ͸Ǥ ƒ‘ Š‘”‘” ‹‰”ƒ preživljavanja je Resident EvilǤ ˜ƒ ˜‹†‡‘‹‰”ƒ je danas među najpoznatijim Š‘”‘” ˜‹†‡‘igrama. Ono što definira horor ˜‹†‡‘‹‰”— preživljavanja su zagonetke, korištenje ƒŒ‡‰ ‹˜‡–ƒ”ƒ ‹ „‘”„ƒ • ‡’”‹Œƒ–‡ŽŒ‹ƒǤ ‘”„ƒ • ‡’”‹Œƒ–‡ŽŒ‹ƒ ‹Œ‡ — •˜ƒ‘Œ ˜‹†‡‘‹‰”‹ Œ‡†ƒƒǤ  ‡‹ƒ ˜‹†‡‘‹‰”ƒƒ „‘”„ƒ Œ‡†ostavno ne postoji, nego se više fokusira na izbjegavanje neprijateljaȏʹ͹ȐǤ Horor igre najčešće kreću polako te s vremenom stvaraju sve veću napetost †‘•‡‡dođe do točke kada priča †‘Žƒœ‹do vrhunca. U tom trenutku često dolazi do nekog velikog obračuna ili nekog velikog preokreta u pričiȏʹͺȐǤƒ potrebe izradu horror videoigre preživljavanja prikazane u ovom radu korišten je programski alat Unity.   ‹–›Œ‡’”‘‰”ƒ•‹ƒŽƒ–œƒ‹œ”ƒ†—videoigara koji podržava razvoj video‹‰ƒ”ƒ na većini platformiǡ—Žjučujući desktop računala, računalne konzole, virtualnu stvarnost, proširenu stvarnost, mobilne uređaje (†”‘‹†ǡ‹Ȍǡ’Žƒ–ˆ‘”‡ǡ ™‡„’Žƒ–ˆ‘”‡‹‘•–ƒŽ‡’Žƒ–ˆ‘”‡ȏͳȐǤUnity je danas među vodećim razvojnim ‘‘Ž‹ƒƒœƒ‹œ”ƒ†—˜‹†‡‘‹‰ƒ”ƒǡƒ‘‡‹ƒŒ˜‡ćaȏʹȐǤ  U nastavku rada bit će opisana izrada First Person kontrolera, neprijatelja te interakcija među njima. 14 RAČUNALNE IGRE 2020

First Person Controller

U alatu Unity moguće je na dva načina stvoriti „igrača“. Igrač može biti stvoren kao „rigid body“ koji ima već ugrađenu ‰”ƒ˜‹–ƒ ‹Œ—ǡ –”‡Œ‡ ‹ ‹–‡”ƒ ‹Œ— • objektima, ili kao „character controller“ koji ima bolju interakciju •ƒ •–‡’‡‹ ƒƒ‹‘•‹ƒƒ–‡†‘„”—‹–‡”ƒ ‹Œ—•ƒœ‹†‘˜‹ƒǡ—smislu da se igrač ‡œƒ‰Žƒ˜ŽŒ—Œ‡—Œ‹ƒȏ͵͵ȐǤ’”‹ƒœƒ‘Œ‹’Ž‡‡–ƒ ‹Œ‹‘”‹•–‹•‡„ Šƒ”ƒ –‡” controller“.  Character controller sam po sebi nema ugrađenu gravitaciju niti funkcije za ”‡–ƒŒ‡ǡ–ƒ‘†ƒ•‡‘‡‘”ƒŒ—†‘†ƒ–‹”‘œ•”‹’–‡Ǥ  ”‹’–ƒ œƒ ƒeraMove sadrži funkcije za kontrolu rotacije kamere na kontroleru pomoću miša. Prilikom učitavanja ova skripta sakrije kursor i zaključa ga u sredini ekrana, a nakon toga prilikom svakog ažuriranja provjerava poziciju miša i rotira kontroler, ako je rotaciŒƒ Š‘”‹œ‘–ƒŽƒǡ ‹Ž‹ ƒ‡”—ǡƒ‘Œ‡”‘–ƒ ‹Œƒ˜‡”–‹ƒŽƒǤpublic class CameraMove : MonoBehaviour  { public float mouseSensitivity = 2f; public Transform playerBody; public GameObject menu; public GameObject menuOptions; public bool menuOn = false; float xRotation = 0f;

void Start() { Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; } void LateUpdate() { float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity; float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity;

xRotation -= mouseY; xRotation = Mathf.Clamp(xRotation, -90f, 90f); transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);

playerBody.Rotate(Vector3.up * mouseX); } }

Kontroleru je potrebno dodati gravitaciju i mogućnost kretanja. To je ‘•–˜ƒ”‡‘ ”‘œ skriptu PlayerMove. Ova skripta sadrži funkcije za kontrolu ”‡–ƒŒƒ ‘–”‘Ž‡”ƒǡ Œ‡‰‘˜— ‰”ƒ˜‹–ƒ ‹Œ— –‡ ˆ— ‹Œ‡ œƒ ’”‘˜Œ‡”— ’‘†Ž‘‰‡ ƒ kojoj se kontroler kreće i funkcije za paljenje zvuka definiranog za tu podlogu. 

15 RAČUNALNE IGRE 2020

public class PlayerMove : MonoBehaviour { [SerializeField] private AudioClip[] dirtFootsteps; [SerializeField] private AudioClip dirtJump; [SerializeField] private AudioClip rockJump; [SerializeField] private AudioClip grassJump; [SerializeField] private AudioClip sandJump; [SerializeField] private AudioClip gravelJump; [SerializeField] private AudioClip waterJump; [SerializeField] private AudioClip woodJump; [SerializeField] private AudioClip JumpUp; [SerializeField] private AudioClip DivingSound; [SerializeField] private AudioClip SwimmingSound;

private int lastIndex = 0; private int newIndex = 0; public int surfaceIndex = 0; public Terrain terrain; private TerrainData terrainData; private Vector3 terrainPos; private TerrainLayer[] terrainLayers; private AudioSource audioSource; private int currentDelay; private Vector3 lastPosition; private Terrain[] _terrains; public CharacterController controller; public float walkingSpeed = 12f; public float runningSpeed = 24f; public float lastGravity; public float gravity = -9.81f; public float waterGravity = -300f; public float jumpHeight = 3f; public int stepDelay = 20; public int runDelay = 15; public Transform groundCheck; public float groundDistance = 0.4f; public LayerMask groundMask;

Vector3 velocity; Vector2 input; bool inWater; bool inBuilding; bool inRuinedBuilding; public bool isSwimming; bool isDiving; bool isJumping; bool isWalking; [SerializeField] bool isGrounded; [SerializeField] bool wasGrounded; bool isMoving;

void Start(){ _terrains = Terrain.activeTerrains;

lastGravity = gravity; inWater = false; lastPosition = new Vector3(0, 0, 0); currentDelay = 0; audioSource = GetComponent();

16 RAČUNALNE IGRE 2020

isJumping = false; wasGrounded = true;

QualitySettings.vSyncCount = 0;

PlayerHealth.currentHealth = 20; } void Update(){ terrain = GetClosestCurrentTerrain(groundCheck.transform.position); terrainData = terrain.terrainData; terrainPos = terrain.transform.position; surfaceIndex = GetMainTexture(transform.position); terrainLayers = terrain.terrainData.terrainLayers;

wasGrounded = isGrounded; isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);

if (!wasGrounded && isGrounded && !isDiving){ PlayLandingSound(); velocity.y = -2f; isJumping = false; wasGrounded = true; }

if (wasGrounded && !isGrounded && !isDiving){ audioSource.clip = JumpUp; audioSource.Play(); }

if (!isGrounded && !isJumping && wasGrounded){ velocity.y = -2f; } } private void PlayLandingSound(){ string textureName = GetTextureName();

if (inWater){ audioSource.clip = waterJump; audioSource.Play(); return; }

if (inBuilding){ audioSource.clip = woodJump; audioSource.Play(); return; }

switch (textureName){ case "moss": audioSource.clip = grassJump; audioSource.Play(); break; case "dirt": audioSource.clip = dirtJump; audioSource.Play(); break; case "rock":

17 RAČUNALNE IGRE 2020

audioSource.clip = rockJump; audioSource.Play(); break; case "scree": audioSource.clip = rockJump; audioSource.Play(); break; case "sand": audioSource.clip = sandJump; audioSource.Play(); break; case "gravel": audioSource.clip = gravelJump; audioSource.Play(); break; default: break; } } private void FixedUpdate(){ float speed; Calculate(out speed);

Vector3 move = transform.right * input.x + transform.forward * input.y;

RaycastHit hitInfo; Physics.SphereCast(transform.position, controller.radius, Vector3.down, out hitInfo, controller.height / 2f, Physics.AllLayers, QueryTriggerInteraction.Ignore); move = Vector3.ProjectOnPlane(move, hitInfo.normal).normalized;

controller.Move(move * speed * Time.deltaTime); isSwimming = CheckIfSwimming();

if (isSwimming){ gravity = 0;

if (Input.GetKey(KeyCode.LeftShift) && !isDiving){ velocity.y = -50; controller.Move(velocity * Time.deltaTime); isDiving = true; }

if (isDiving){ if (Input.GetKey(KeyCode.Space)){ velocity.y = -waterGravity * Time.deltaTime; } else{ velocity.y = 0; }

if (Input.GetKey(KeyCode.LeftShift)){ velocity.y = waterGravity * Time.deltaTime; }

if (controller.transform.position.y > 38.35){ velocity.y = 0; isDiving = false; } }

18 RAČUNALNE IGRE 2020

else{ if (controller.transform.position.y > 38.3){ velocity.y = 0; } else{ velocity.y = 5; } } } else{ gravity = lastGravity; velocity.y += gravity * Time.deltaTime; }

controller.Move(velocity * Time.deltaTime);

isMoving = CheckIfMoving();

if ((isGrounded || isSwimming) && isWalking && isMoving){ PlayFootstepSound(stepDelay); }

if ((isGrounded || isSwimming) && !isWalking && isMoving){ PlayFootstepSound(stepDelay); }

if (isDiving){ PlayFootstepSound(stepDelay);

}

if (Input.GetButtonDown("Jump") && isGrounded){ velocity.y = Mathf.Sqrt(jumpHeight * -2 * gravity); isJumping = true; } } private bool CheckIfSwimming(){ if (controller.transform.position.y < 38.4){ return true; } return false; } private void OnTriggerEnter(Collider other){ if (other.gameObject.name == "WaterProDaytime"){ inWater = true;

runningSpeed -= 5; walkingSpeed -= 5;

stepDelay += 3; runDelay += 3; } } private void OnTriggerStay(Collider other) { if (other.gameObject.name == "OldShed" || other.gameObject.name == "aband_house"){ inBuilding = true;

19 RAČUNALNE IGRE 2020

}

if (other.gameObject.name == "RuinedBuilding"){ inRuinedBuilding = true; } } private void OnTriggerExit(Collider other){ if (other.gameObject.name == "WaterProDaytime"){ inWater = false;

runningSpeed += 5; walkingSpeed += 5;

stepDelay -= 3; runDelay -= 3; }

if (other.gameObject.name == "OldShed" || other.gameObject.name == "aband_house"){ inBuilding = false; }

if (other.gameObject.name == "RuinedBuilding"){ inRuinedBuilding = false; } } private bool CheckIfMoving(){ if (transform.position != lastPosition){ lastPosition = transform.position; return true; } return false; } private void Calculate(out float speed){ float horizontal = Input.GetAxis("Horizontal"); float vertical = Input.GetAxis("Vertical");

isWalking = !Input.GetKey(KeyCode.LeftControl);

if (isWalking){ speed = walkingSpeed; } else{ speed = runningSpeed; }

input = new Vector2(horizontal, vertical);

if (input.sqrMagnitude > 1){ input.Normalize(); } } public void PlayFootstepSound(int delay){ currentDelay++; if (currentDelay < delay){ return; }

20 RAČUNALNE IGRE 2020

currentDelay = 0; string textureName = GetTextureName();

System.Random rand = new System.Random();

CheckIfMoving(); if (inWater && isMoving && !isGrounded && !isDiving){ audioSource.clip = SwimmingSound; if (!audioSource.isPlaying){ audioSource.Play(); } return; } if (isDiving){ audioSource.clip = DivingSound; if (!audioSource.isPlaying){ audioSource.Play(); } return; } if (inWater && isGrounded){ while (newIndex == lastIndex){ newIndex = rand.Next(0, waterFootsteps.Length); } lastIndex = newIndex; audioSource.clip = waterFootsteps[newIndex]; audioSource.Play(); return; } if (inBuilding){ while (newIndex == lastIndex){ newIndex = rand.Next(0, woodFootsteps.Length); } lastIndex = newIndex; audioSource.clip = woodFootsteps[newIndex]; audioSource.Play(); return; } if (inRuinedBuilding){ while (newIndex == lastIndex){ newIndex = rand.Next(0, sandFootsteps.Length); } lastIndex = newIndex; audioSource.clip = sandFootsteps[newIndex]; audioSource.Play(); return; } if (!inBuilding){ switch (textureName){ case "moss": while (newIndex == lastIndex){ newIndex = rand.Next(0, grassFootsteps.Length); } lastIndex = newIndex;

21 RAČUNALNE IGRE 2020

audioSource.clip = grassFootsteps[newIndex]; audioSource.Play(); break; case "dirt": while (newIndex == lastIndex){ newIndex = rand.Next(0, dirtFootsteps.Length); } lastIndex = newIndex; audioSource.clip = dirtFootsteps[newIndex]; audioSource.Play(); break; case "rock": while (newIndex == lastIndex){ newIndex = rand.Next(0, rockFootsteps.Length); } lastIndex = newIndex; audioSource.clip = rockFootsteps[newIndex]; audioSource.Play(); break; case "scree": while (newIndex == lastIndex){ newIndex = rand.Next(0, rockFootsteps.Length); } lastIndex = newIndex; audioSource.clip = rockFootsteps[newIndex]; audioSource.Play(); break; case "sand": while (newIndex == lastIndex){ newIndex = rand.Next(0, sandFootsteps.Length); } lastIndex = newIndex; audioSource.clip = sandFootsteps[newIndex]; audioSource.Play(); break; case "gravel": while (newIndex == lastIndex){ newIndex = rand.Next(0, gravelFootsteps.Length); } lastIndex = newIndex; audioSource.clip = gravelFootsteps[newIndex]; audioSource.Play(); break; default: break; } } } private string GetTextureName(){ return terrainLayers[surfaceIndex].name; }

Terrain GetClosestCurrentTerrain(Vector3 playerPos){ var center = new Vector3(_terrains[0].transform.position.x + _terrains[0].terrainData.size.x / 2, playerPos.y, _terrains[0].transform.position.z + _terrains[0].terrainData.size.z / 2); float lowDist = (center - playerPos).sqrMagnitude; var terrainIndex = 0;

for (int i = 0; i < _terrains.Length; i++){

22 RAČUNALNE IGRE 2020

center = new Vector3(_terrains[i].transform.position.x + _terrains[i].terrainData.size.x / 2, playerPos.y, _terrains[i].transform.position.z + _terrains[i].terrainData.size.z / 2);

var dist = (center - playerPos).sqrMagnitude; if (dist < lowDist){ lowDist = dist; terrainIndex = i; } } return _terrains[terrainIndex]; }

private float[] GetTextureMix(Vector3 WorldPos){ int mapX = (int)(((WorldPos.x - terrainPos.x) / terrainData.size.x) * terrainData.alphamapWidth); int mapZ = (int)(((WorldPos.z - terrainPos.z) / terrainData.size.z) * terrainData.alphamapHeight);

if (mapX > 511 || mapX < 0 || mapZ > 511 || mapZ < 0){ mapX = 0; mapZ = 0; } float[,,] splatmapData = terrainData.GetAlphamaps(mapX, mapZ, 1, 1);

float[] cellMix = new float[splatmapData.GetUpperBound(2) + 1];

for (int n = 0; n < cellMix.Length; n++){ cellMix[n] = splatmapData[0, 0, n]; } return cellMix; } private int GetMainTexture(Vector3 WorldPos){ float[] mix = GetTextureMix(WorldPos); float maxMix = 0; int maxIndex = 0;

for (int n = 0; n < mix.Length; n++){ if (mix[n] > maxMix){ maxIndex = n; maxMix = mix[n]; } } return maxIndex; } }

 •˜ƒ‘Œ‹‰”‹Œ‡’‘–”‡„‘‘•–˜ƒ”‹–‹‡ƒvu interakciju s okruženjem u kojem se igrač nalazi. Primjer skripte u kojoj se navedeno ‘•–˜ƒ”—Œ‡Œ‡‹ ’‹•–‘Žǡ koja sadrži logiku kupljenja stvari s poda, a koja se može modificirati za bilo ƒ˜—†”—‰—‹–‡”ƒ ‹Œ—ȋ’”Ǥ‘–˜ƒ”ƒŒ‡˜”ƒ–ƒȌǤ–˜ƒ”‹•‡—’‡‘–ƒ‘†ƒƒ†ƒ•‡ ‘–”‘Ž‡” ƒŽƒœ‹ ƒ œƒ†ƒ‘Œ —†ƒŽŒ‡‘•–‹ǡ ‘Œƒ Œ‡ ‘•–˜ƒ”‡ƒ ”‘œ •”‹’–— ‘Œƒ dolazi u nastavku, i gleda u stvar koju želi pokupiti, postavi tekst i crosshair u njegov GUI kako bi se naglasila mogućnost interakcije. Nakon toga, kada je ‹nterakcija omogućena, pritiskom na određenu tipku (u ovom slučaju „E“), omogućuje se određena stvar koja se nalazi u svijetu i omogućava se kopiju te stvari,public class koja PickUpPistol je prikvačena : MonoBehaviour na sam kontroler (u slučaju da je želimo prikazati).

23 RAČUNALNE IGRE 2020

{ public float Distance; public GameObject DisplayActionKey; public GameObject DisplayText; public GameObject ActionCrosshair; public GameObject PistolPickup; public GameObject Pistol; private Text text;

void Update(){ Distance = DetectDistance.TargetDistance; }

private void OnMouseOver(){ if (Distance < 5){ DisplayActionKey.SetActive(true); DisplayText.SetActive(true); ActionCrosshair.SetActive(true); text = DisplayText.GetComponent(); text.text = "Pick up pistol"; } if (Distance >= 5){ DisplayActionKey.SetActive(false); DisplayText.SetActive(false); ActionCrosshair.SetActive(false); } if (Input.GetKey(KeyCode.E) && Distance < 5){ this.GetComponent().enabled = false; PistolPickup.SetActive(false); Pistol.SetActive(true); DisplayActionKey.SetActive(false); DisplayText.SetActive(false); ActionCrosshair.SetActive(false); text = DisplayText.GetComponent(); text.text = ""; Pistol.GetComponent().ammoInGun = 10; } }

private void OnMouseExit(){ DisplayActionKey.SetActive(false); DisplayText.SetActive(false); ActionCrosshair.SetActive(false); } }

 Kao što je već spomenuto skripta DetectDistance mjeri —†ƒŽŒ‡‘•–‘–”‘Ž‡”ƒ publicod prve class preprekeDetectDistance uz : MonoBehaviourpomoć „zraka“ (engl. raycast). { public static float TargetDistance;

void Update(){ RaycastHit hit; if(Physics.Raycast (transform.position, transform.TransformDirection (Vector3.forward), out hit)){ TargetDistance = hit.distance; } }

24 RAČUNALNE IGRE 2020

}

Neprijatelji 

Neprijatelji su važan dio horor videoigara. Principi oblikovanja neprijƒ–‡ŽŒƒ ‘‰— varirati, ali neke osnovne stvari su u svakom slučaju iste. Potreban je model neprijatelja, animacije i umjetna inteligencija. U alatu Unity već gotove modele s animacijama moguće je preuzeti u trgovini Asset Store, tako da još •ƒ‘’”‡‘•–ƒŒ‡†‘†ƒ˜ƒŒ‡—Œetne inteligencije. Skripta EnemyAI sadrži vrlo Œ‡†‘•–ƒ˜— —Œ‡–— ‹–‡Ž‹‰‡ ‹Œ— ‘Œƒ ‡’”‹Œƒ–‡ŽŒ— †ƒŒ‡ ‰”ƒ˜‹–ƒ ‹Œ— ‹ mogućnost praćenja igrača, te kretanje prema igraču. Uz to, u skripti su definirani zvukovi i animacije koje se uključuju ili isključuju u određenoj •‹–—ƒ ‹Œ‹Ǥpublic class EnemyAI : MonoBehaviour { public GameObject Player; public GameObject PlayerController; public GameObject Enemy; public float enemySpeed = 0.01f; public int enemyDamage = 5; public bool attackTrigger = false; public bool isAttacking = false; public bool isDead = false; public AudioClip ZombieSound; public AudioClip ZombieAttack; public CharacterController controller; Vector3 velocity; private float speed; private AudioSource audioSource;

private void Start(){ speed = enemySpeed; audioSource = GetComponent(); }

void Update(){ if (isDead){ audioSource.Stop(); } if (!isDead && Vector3.Distance(Enemy.transform.position, Player.transform.position) <= 130){ Enemy.GetComponent().Stop("Z_Idle"); controller.Move(velocity * Time.deltaTime); if (!Enemy.GetComponent().IsPlaying("Z_Attack") && isAttacking){ isAttacking = false; } transform.LookAt(Player.transform); if (!attackTrigger && !isAttacking){ if (PlayerController.GetComponent().isSwimming){ enemySpeed = 0f; Enemy.GetComponent().Play("Z_Idle"); } else{ enemySpeed = speed; Enemy.GetComponent().Play("Z_Run_InPlace");

25 RAČUNALNE IGRE 2020

if (!Enemy.GetComponent().isPlaying){ PlayZombieSound(); } else{ if (Enemy.GetComponent().clip != ZombieSound && Player.GetComponent().myHealth > 0){ PlayZombieSound(); } } } velocity.y = -4f; controller.Move(velocity * Time.deltaTime); transform.position = Vector3.MoveTowards(transform.position, Player.transform.position, enemySpeed * Time.deltaTime); } if (attackTrigger && !isAttacking){ enemySpeed = 0f; isAttacking = true; Enemy.GetComponent().Play("Z_Attack"); if (PlayerController.GetComponent().myHealth > 0){ PlayAttackSound(); } PlayerHealth.currentHealth -= enemyDamage; } } else{ if (!isDead){ enemySpeed = 0f; Enemy.GetComponent().Play("Z_Idle"); velocity.y = -4f; controller.Move(velocity * Time.deltaTime); } } }

private void PlayZombieSound(){ audioSource.clip = ZombieSound; audioSource.Play(); }

private void PlayAttackSound(){ audioSource.clip = ZombieAttack; audioSource.Play(); }

private void OnTriggerEnter(Collider other){ if (other.gameObject.name == "AttackTrigger" && !isDead){ attackTrigger = true; } }

private void OnTriggerExit(Collider other){ if (other.gameObject.name == "AttackTrigger" && !isDead){ attackTrigger = false; } } }

 

26 RAČUNALNE IGRE 2020

Interakcija

Uz sve navedeno, potrebna je još i interakcija igrača i neprijatelja. Za to je zaduženo nekoliko skripti. Skripta PlayerHealth sadrži statičku varijablu —””‡– ealth koja sadrži trenutno stanje života igrača te funkcije za ’‘”‡–ƒŒ‡œ˜—‘˜ƒ‹ˆ— ‹Œ‡œƒpublic class PlayerHealth : MonoBehaviour ’‘”‡–ƒŒ‡‰ƒ‡‘˜‡”• ‡‡Ǥ { public static int currentHealth = 20; public int myHealth; public GameObject fadeOut; public AudioClip PlayerHurtSound1; public AudioClip PlayerHurtSound2; public AudioClip PlayerDeadSound; public int randomNum; public AudioSource audioSource; private bool died; private System.Random rand;

private void Start(){ died = false; rand = new System.Random(); }

void Update(){ if(currentHealth < myHealth){ PlayHurtSound(); } myHealth = currentHealth; if(currentHealth <= 0){ StartCoroutine(Wait()); } IEnumerator Wait(){ PlayDyingSound(); fadeOut.GetComponent().Play("FadeOutAnimation"); yield return new WaitForSeconds(1); SceneManager.LoadScene(2); } }

private void PlayDyingSound(){ if (!died){ audioSource.clip = PlayerDeadSound; audioSource.Play(); died = true; } }

private void PlayHurtSound(){ randomNum = rand.Next(0, 2); if (randomNum == 1){ audioSource.clip = PlayerHurtSound1; } else{ audioSource.clip = PlayerHurtSound2; } audioSource.Play();

27 RAČUNALNE IGRE 2020

} }

 œ–‘potrebna je još i interakcija igrača s neprijatelŒ‡Ǥ”‹’–ƒ‡›‡ƒ–Š sadrži funkciju za ozljeđivanje neprijatelja koju je moguće pozvati iz druge publicskripte class te EnemyDeath logiku za : MonoBehaviourgašenje inteligencije i animacija nakon umiranja. { public int EnemyHealth = 20; public GameObject Enemy; public GameObject Leg1; public GameObject Leg2; public int StatusCheck; public int randomNumber; private System.Random rand;

void DamageEnemy(int damage){ rand = new System.Random(); EnemyHealth -= damage; }

void Update(){ if(EnemyHealth <= 0 && StatusCheck == 0){ Enemy.GetComponent().isDead = true; StatusCheck = 2; Enemy.GetComponent().Stop(); randomNumber = rand.Next(0, 2); Enemy.GetComponent().enabled = false;

Leg1.GetComponent().enabled = false; Leg2.GetComponent().enabled = false;

Enemy.GetComponent().Stop(); if (randomNumber == 1){ Enemy.GetComponent().Play("Z_FallingBack"); } else{ Enemy.GetComponent().Play("Z_FallingForward"); } } } }

Zaključak 

Nakon implementacije gore navedenih elemenata, još je potrebno samo izraditi svijet u kojem će igrač i neprijatelji biti pozicionirani i tako se dobiva vrlo jednostavna horor videoigra, na koju je onda moguće dodati još neke detalje kao što je ‰Žƒ˜‹ ‹œ„‘”nik, više nivoa igre, više interaktivnih mjesta i slično. Važno je postaviti ambijentalne zvukove i smanjiti svjetlinu u svijetu, kako bi se postigla veća napetost u igri.  

28 RAČUNALNE IGRE 2020

Unity je svestran alat koji omogućuje brzu i laganu izradu svega gore ƒ˜‡†‡‘‰ –‡ uvelike olakšava čitav proces razvoja. Iako se na prvu proces izrade videoigre čini kompliciranim, veoma je lagano naučiti osnovne funkcije potrebne za razvoj videoigara, pogotovo uz korištenje Unity priručnika koji ˜”Ž‘†‡–ƒŽŒ‘‘’‹•—Œ‡•˜‡Œ‡‰‘˜‡ˆ— ‹Œ‡Ǥ„‘‰ƒ˜‡†‡‘‰‹–›’”‡†•–ƒ˜ŽŒƒ dobar izbor za početnike koji se želeReference iskušati u razvoju videoigara. 

ȏͳȐ ‘˜‡‘‘™ǡ ‘”’Ǥ ȋ„‡œ †ƒ–ǤȌ •—”˜‹˜ƒŽǦŠ‘””‘”Ǥ ‘•–—’‘ǣ Š––’•ǣȀȀ™™™Ǥ›‘—”†‹ –‹‘ƒ”›Ǥ ‘Ȁ•—”˜‹˜ƒŽǦŠ‘””‘” ȏ’”‹•–—’ƒ‘ ʹ͹ǤͲ͸ǤʹͲʹͲǤȐǤ ȏʹȐ ƒ•‘ •Šƒ ȋʹͷǤͳͲǤʹͲͳͷǤȌ Šƒ– ƒ‡• ƒ —”˜‹˜ƒŽ ‘””‘” ƒ‡ǫ ‘•–—’‘ǣ Š––’•ǣȀȀ–‡ Š”ƒ’–‘”Ǥ‡–Ȁ‰ƒ‹‰Ȁ‘’‹‹‘Ȁ™Šƒ–Ǧƒ‡•Ǧ •—”˜‹˜ƒŽǦŠ‘””‘”Ǧ‰ƒ‡ȏ’”‹•–—’ƒ‘ʹ͹ǤͲ͸ǤʹͲʹͲǤȐǤ ȏ͵Ȑ ‘”Ž†‘ˆ‡˜‡Ž‡•‹‰„›Ž‡š ƒŽ—œ‹ȋʹͻǤͲ͸ǤʹͲͲͻǤȌ ‘””‘”Ȁ—”˜‹˜ƒŽ ‡˜‡Ž ‡•‹‰ǣ ƒ”– ʹ – –‹ ‹’ƒ–‹‘Ǥ ‘•–—’‘ǣ Š––’•ǣȀȀ™™™Ǥ™‘”Ž†‘ˆŽ‡˜‡Ž†‡•‹‰Ǥ ‘Ȁ ƒ–‡‰‘”‹‡•ȀŽ‡˜‡Ž̴†‡•‹‰̴–—–‘”‹ƒŽ•Ȁ Š‘””‘”Ǧˆ‡ƒ”ǦŽ‡˜‡ŽǦ†‡•‹‰Ȁ’ƒ”–ʹǦ•—”˜‹˜ƒŽǦŠ‘””‘”ǦŽ‡˜‡ŽǦ†‡•‹‰Ǧƒ–‹ ‹’ƒ–‹‘Ǧ ’ƒ ‹‰Ǥ’Š’ȏ’”‹•–—’ƒ‘ʹ͹ǤͲ͸ǤʹͲʹͲǤȐǤ ȏͶȐ ‹–› ‡ Š‘Ž‘‰‹‡• ȋ„‡œ †ƒ–ǤȌ —Ž–‹’Žƒ–ˆ‘”Ǥ ‘•–—’‘ǣ Š––’•ǣȀȀ—‹–›Ǥ ‘Ȁˆ‡ƒ–—”‡•Ȁ—Ž–‹’Žƒ–ˆ‘”ȏ’”‹•–—’ƒ‘ʹʹǤͲ͸ǤʹͲʹͲǤȐǤ ȏͷȐ Jon Brodkin, „How Unity3D Became a GameǦDevelopment Beast“, 2013. ȏƒ ‹–‡”‡–—ȐǤ ‘•–—’‘ǣ Š––’•ǣȀȀ‹•‹‰Š–•Ǥ†‹ ‡Ǥ ‘ȀʹͲͳ͵ȀͲ͸ȀͲ͵ȀŠ‘™Ǧ —‹–›͵†Ǧ„‡ ‘‡ǦƒǦ‰ƒ‡Ǧ†‡˜‡Ž‘’‡–Ǧ„‡ƒ•–Ȁȏ’”‹•–—’ƒ‘ʹʹǤͲ͸ǤʹͲʹͲǤȐǤ ȏ͸Ȑ ”ƒ ‡›• ȋʹ͹ǤͳͲǤʹͲͳͻǤȌ    ‹ ‹–› Ǧ  ‘–”‘ŽŽ‡”ǡ ‘—–—„‡Ǥ ‘•–—’‘ǣ Š––’•ǣȀȀ™™™Ǥ›‘—–—„‡Ǥ ‘Ȁ™ƒ– Šǫ˜α̴ƒŒ”ƒ„›  ȏ’”‹•–—’ƒ‘ ʹ͹ǤͲ͸ǤʹͲʹͲǤȐǤ

29 RAČUNALNE IGRE 2020

Izrada 2D platformera u programskom alatu Unreal Engine 4

Domagoj Mahnet i Mario Konecki  danetir arineiir ƒ—Ž–‡–‘”‰ƒ‹œƒ ‹Œ‡‹‹ˆ‘”ƒ–‹‡ǡSveučilište u Zagrebu

Sažetak 

‘˜‘”ƒ†—‘’‹•ƒŒ‡žanr ˜‹†‡‘‹‰ƒ”ƒ’Žƒ–ˆ‘”‡”ǡ”ƒœ˜‘Œ˜‹†‡‘‹‰ƒ”ƒ‘˜ƒ˜‘‰ –‹’ƒ ‘† samih početaka pa sve do danas te su dani p”‹Œ‡”‹ ˜‹†‡‘‹‰ƒ”ƒ ‘Œ‹ ƒŒ„‘ŽŒ‡ ‘•Ž‹ƒ˜ƒŒ— navedeni žanr. U sljedećem dijelu rada opisan je proces ‹œ”ƒ†‡˜‹†‡‘‹‰”‡‘˜ƒ˜‘‰–‹’ƒpomoću Unreal Enginea 4. Dio je objašnjen kroz ΪΪ ‘†ǡ ƒ †‹‘ ”‘œ ˜‹œ—ƒŽ‘ •”‹’–iranje Unreal Enginea. Igrač upravlja ‰Žƒ˜‹Ž‹‘‘Œ‹‹ƒ‹œ‰Ž‡†Œ‡†‘‰•”‡†Œ‘˜Œ‡‘˜nog viteza. Cilj igre je doći †‘”ƒŒƒ ‹˜‘ƒpreskačući otrovne gljive, pri čemu seƒ’—–—ƒŽƒœ‡ƒ‰”‡•‹˜‹ Ključneœ‘„‹Œ‹Ǥ riječi:

Uvod ”‡ƒŽ‰‹‡ǡ’Žƒ–ˆ‘”‡”ǡΪΪǡʹ˜‹†‡‘‹‰”ƒǡœ‘„‹

ƒœ˜‘Œ˜‹†‡‘‹‰ƒ”ƒ’‘•–ƒ‘Œ‡Œ‡†ƒ˜‡Ž‹ƒ‹unosna grana računalne industrije. Danas je gotovo nemoguće pronaći ‘•‘„— ‘Œƒ ‹ƒ†ƒ ‹Œ‡ ‘†‹‰”ƒŽƒ „ƒ”‡ Œ‡†—˜‹†‡‘‹‰”—. Tome je uvelike doprinijela njihova široka dostupnost, bilo to na računalu ili na mobilnom uređaju. ‹†‡‘‹‰”‡ •— također postale veoma 2Dvažan platformer dio današnje kulture.

Žƒ–ˆ‘”‡”Œ‡žanr ˜‹†‡‘‹‰ƒ”ƒi podžanr akcijskih˜‹†‡‘‹‰ƒ”ƒ. U tipičnim ig”ƒƒ ovog žanra igrač kontrolira svog lika u ˜‹†‡‘‹‰”‹ –‡ — †ƒŒ‡ ƒ”‡†„‡ œƒ kretanje. Igrač mora skakati između platformi te izbjegavati prepreke na putu. Žƒ–ˆ‘”‡”‡†‹Œ‡Ž‹‘ƒ‘‡•ƒstatičkim prikazom i one s pomičnim prikazom. Žƒ–ˆ‘”‡”‹ •ƒ statički ’”‹ƒœ‘ •˜ƒ‹ ‹˜‘ prikažu u cjelini, dok se kod platformera s pomičnim prikazom okolina mijenja ovisno o ”‡–ƒŒ—  Ž‹ƒ ‘Œ‹ igrač upravlja. Prve igre ovog žanra koristile su statičke prikaze, zbog tehničkih ograničenja u to vrijeme [1]. 

30 RAČUNALNE IGRE 2020

lia r ney Kng 

 ‘‡› ‘‰ •‡ •ƒ–”ƒ ’”˜‘ ˜‹†‡‘‹‰”‘ ovog žanra. Objavljena j‡ ͳͻͺͳǤ ‰‘†‹‡ǡƒ ‹ŽŒ‹‰”‡Œ‡stići do najviše platforme izbjegavajući kolutajuće bačve‹ preskačući preko njih. Rast popularnosti Donkey Konga doveo je do nastanka „”‘Œ‹h platformera fokusiranih na mehanike skoka. Donkey Kong se također smatra i prvom „hop and bop“ igrom, najčešćim podžanromžanra’Žƒ–ˆ‘”‡”Ǥ ‘’ ƒ† „‘’ •˜‘Œ‡ ‹‡ †‘„‹˜ƒ ’‘ ‡Šƒ‹ ‹ •‘ƒ ƒ ‡’”‹Œƒ–‡ŽŒƒǡ ‘Œ‹ •‡ neprijatelj poražavaǤƒŒ’‘œƒ–‹Œƒ˜‹†‡‘‹gra ovog podžanra je—’‡”ƒ”‹‘ȏ͵ȐǤ  ͳͻͻͲǦ‹‹‰”‡žanra platformer prelaze s’•‡—†‘͵Ǧƒƒ’”ƒ˜‹͵Ǥ‡†‡”‹‰ ‘˜‹Š‹‰ƒ”ƒ’‘•–ƒ‘Œ‡˜‡‘ƒœƒŠ–Œ‡˜ƒǡ•–‘‰ƒ•—œƒŒ‹Š‘˜‘‹‰”ƒŒ‡„‹Žƒ’‘–”‡„ƒ računala jaka za to doba. 1994. Exact je ‹œ†ƒ‘˜‹†‡‘‹‰”—ƒœ‹˜ƒ ‡‘‰”ƒ’Š‡ƒŽǤ ‘Œ‡„‹Žƒ’‘–’—‘͵’‘Ž‹‰‘ƒŽƒ•Š‘‘–‡”‹‰”ƒ—’”˜‘Ž‹ —Ǥƒ–”ƒ•‡’”˜‘ ‹•‘•‹ ͵ ƒ –‹‘Ǧshooter igrom sa „free roaming“ okolinom, ali je ostala nezamijećena na zapadu jer je izdana samo u Japanu. Sljedeće godine Exact ‹œ†ƒŒ‡ —’‹‰ Žƒ•ŠǨ œƒ ‘›‡˜— ‘˜— ‘œ‘Ž— Žƒ›•–ƒ–‹‘Ǥ ”‡ƒ —‹‡•• ‘”Ž† ‡ ‘”†•— —’‹‰ Žƒ•ŠǨ •ƒ–”ƒ •‡ ’”˜‘ ’”ƒ˜‘ ‹‰”‘ žanra ’Žƒ–ˆ‘”‡”—͵Ǧ—Ǥ  Početkom trećeg tisućljeća igre žanra ’Žƒ–ˆ‘”‡”—˜‡Ž‹‡‰—„‡ƒ’‘’—Žƒ”‘•–‹Ǥ ͳͻͻͺǤnjihov udio na tržištu iznosio je 15%, dok je 2002. taj udio spao na •ƒ‘ ʹΨ ȏͶȐǤ ʹͲͲʹǤ ‹–‡†‘ ‹œ†ƒ‘ •˜‘Œ— †”—‰— ˜‹†‡‘‹‰”— ‹œ ‰”—’ƒ ‹Œ‡ ͵ —’‡” ƒ”‹‘ǡ ‹‡ƒ —’‡” ƒ”‹‘ —•Š‹‡Ǥ ˜ƒ ˜‹†‡‘‹‰”ƒ Œ‡ „‹Žƒ ”‹–‹œ‹”ƒƒ œ„‘‰ kratke duljine, nemaštovito dizajn‹”ƒ‹Š”ƒœ‹ƒ–‡•’‘”‘•–‹•ƒ‘‰‰ƒ‡’Žƒ›ƒ ȏͷȐ. Ovaj žanr više nikada nije dosegao popularnost koju je nekad ‹ƒ‘ȏͶȐǤ  31 RAČUNALNE IGRE 2020

Glavni lik

ƒ‘„‹‰Žƒ˜‹Ž‹†‘„‹‘•˜‘Œ‹œ‰Ž‡†’‘–”‡„‘Œ‡—˜‡•–‹•Ž‹‡u projekt, što se postiže jednostavnom drƒ‰Ǧƒ†Ǧ†”‘’ƒ ‹Œ‘Ǥ œ‘˜‹Š•Ž‹ƒŒ‡–ƒ†ƒ’‘–”‡„‘‹œ tih slika izvući SpriteǤ Za potrebe animiranja lika poželjno je izvući barem †‡•‡– ’”‹–‡‘˜ƒ ƒ‘ „i animacija izgledala što uvjerljivije. Nakon toga ’‘–”‡„‘ Œ‡ ”‡‹”ƒ–‹ Ž‹’„‘‘Ǥ ‡•‹ Ž‹ — ‘–‡– ”‘™•‡”— ε ‹ƒ–‹‘ ε ƒ’‡” Ž‹’„‘‘Ǥ  ‘††‡–ƒŽŒ‹ƒ’‘–”‡„‘Œ‡†‘†ƒ–‹‘‘Ž‹‘‡› ”ƒ‡‘˜ƒ‘Ž‹‘Œ‡†ƒƒ‹ƒ ‹Œƒ sadrži slika. Zatim je svakom Key Frameu potrebno dodati pripadajuć‹’”‹–‡Ǥ Ovisno o željenoj brzini izvođenja animacije, moguće je modificirati Frames ‡”‡ ƒ‘„‹•‡‘ƒ—„”œƒŽƒǡ‘†‘•‘—•’‘”‹ŽƒǤŽ‹‘ƒƒ˜‡ǡ Ž‹’„‘‘•‡ sprema te ga je moguće implementirati. U Editoru glavnog lika’‘†•‡ ‹Œ‘ ‡–ƒ‹Ž• ƒŽƒœ‹ •‡ ƒ–‡‰‘”‹Œƒ ‹ƒ–‹‘•Ǥ ˜†Œ‡ •‡ ƒ‹ƒ ‹Œ‹ †‘†Œ‡ŽŒ—Œ‡ Œ‡œ‹ Ž‹’„‘‘•‘—” ‡Ǥ  Važno je napomenuti kako se ovdje po defaultu nalaze samo Running Animation te Idle Animation. Kako bi bilo omogućeno dodjeljivanje drugih ƒ‹ƒ ‹Œƒǡ’‘’—– —’‹Ž‹––ƒ ƒ‹ƒ ‹Œƒǡ’‘–”‡„‘Œ‡—Š‡ƒ†‡”Žƒ•‹‰Žƒ˜‘‰ lika dodati nove animacije. To se omogućuje unosom sljedećeg koda:  ȋ†‹–›™Š‡”‡ǡŽ—‡’”‹–‡ƒ†”‹–‡ǡƒ–‡‰‘”›α‹ƒ–‹‘•Ȍ  Žƒ••ƒ’‡” Ž‹’„‘‘ȗ —’‹ƒ–‹‘Ǣ ȋ†‹–›™Š‡”‡ǡŽ—‡’”‹–‡ƒ†”‹–‡ǡƒ–‡‰‘”›α‹ƒ–‹‘•Ȍ  Žƒ••ƒ’‡” Ž‹’„‘‘ȗ––ƒ ‹ƒ–‹‘Ǣ  ƒ†ƒ•‡—‡†‹–‘”—’‘†•‡ ‹Œ‘‡–ƒ‹Ž•—ƒ–‡‰‘”‹Œ‹‹ƒ–‹‘•‡ƒŽƒœ‡•ƒ‘ †Ž‡‹—‹‰‹ƒ–‹‘•ǡ‡‰‘‹ —’‹ƒ–‹‘–‡––ƒ ‹ƒ–‹‘Ǥ ƒ†Œa važnƒ•–˜ƒ”‘†ƒ‹ƒ ‹ŒƒŒ‡određivanje u kojem trenutku će se koja animacija prikazivati. U klasi glavnog lika potrebno je kreirati funkciju koja će ‡’”‡•–ƒ‘ ’”‘˜Œ‡”ƒ˜ƒ–‹ •–ƒŒƒ — ‘Œ‡ •‡ ‰Žƒ˜‹ Ž‹ ƒŽƒœ‹ te određivati ’”‹Žƒ†—ƒ‹ƒ ‹Œ—Ǥ  ˜‘‹†Žƒ–ˆ‘”‡”Šƒ”ƒ –‡”ǣǣ’†ƒ–‡‹ƒ–‹‘ȋȌ ȓ  ‘•– ‡ –‘”Žƒ›‡”‡Ž‘ ‹–›α ‡–‡Ž‘ ‹–›ȋȌǢ  ‘•–ˆŽ‘ƒ–Žƒ›‡”’‡‡†“”αŽƒ›‡”‡Ž‘ ‹–›Ǥ‹œ‡“—ƒ”‡†ȋȌǢ  ƒ’‡” Ž‹’„‘‘ȗ‡•‹”‡†‹ƒ–‹‘Ǣ  ‡•‹”‡†‹ƒ–‹‘α †Ž‡‹ƒ–‹‘Ǣ  ‹ˆȋŽƒ›‡”’‡‡†“”εͲǤͲˆȌȓ   ‡•‹”‡†‹ƒ–‹‘α—‹‰‹ƒ–‹‘Ǣ  Ȕ  ‹ˆȋ ‡–Šƒ”ƒ –‡”‘˜‡‡–ȋȌǦε • ƒŽŽ‹‰ȋȌȌ 32 RAČUNALNE IGRE 2020

 ȓ   ‡•‹”‡†‹ƒ–‹‘α —’‹ƒ–‹‘Ǣ  Ȕ  ‹ˆȋ‹•––ƒ ‹‰αα–”—‡Ȍȓ   ‡•‹”‡†‹ƒ–‹‘α––ƒ ‹ƒ–‹‘Ǣ  Ȕ  ‡–’”‹–‡ȋȌǦε‡– Ž‹’„‘‘ȋ‡•‹”‡†‹ƒ–‹‘ȌǢ  Ȕ  Ova funkcija prvo dohvaća brzinu kojom se glavni lik kreće. ‘•‡‰Žƒ˜‹Ž‹ kreće brzinom većom od 0.0f, odnosno ne stoji na mjestu, željena animacija postavlja se na Running Animation. Sljedeće što tƒˆ— ‹Œƒ’”‘˜Œ‡”ƒ˜ƒŒ‡ƒŽƒœ‹ Ž‹•‡Ž‹—•‘—Ǥ˜†je funkcija željenu animaciju postavlja na Jump Animation neovisno o tome kreće li se glavni lik horizontalno ili ne, zbog toga što lik ne može samo skakati na mjestu, nego može i skakati i kretati se horizontalno ‹•–‘˜”‡‡‘Ǥƒ†nje što funkcija provjeravƒŒ‡ƒ’ƒ†ƒŽ‹‰Žƒ˜‹Ž‹trenutačno ’”‘–‹˜‹ƒǤ ‘ napada, željena animacija postavlja se na Attack Animation, neovisno o rezultatima prethodnih provjera, zbog toga što glavni lik može napasti dok se kreće horizontalno, dok skače, ili dok izvršava obje a ‹Œ‡ ‹•–‘˜”‡‡‘Ǥ‘sve ove provjere vrate negativan rezultat, željena animacija ’‘•–ƒ˜ŽŒƒ•‡ƒ †Ž‡‹ƒ–‹‘ǤZombi  

ƒ ”ƒœ˜‘Œ ˆ— ‹‘ƒŽ‘•–‹ glavnog lika korišten je odgovarajući C++ kodǤ  ‘„œ‹”‘ ƒ –‘ †ƒ Unreal Engine 4 ima mogućnost i vizualn‘‰ •”‹’–‹”ƒŒƒ ’”‡‘ Ž—‡’”‹– •—•–ƒ˜ƒǡ upravo taj sustav je korišten za razvoj protivnika ƒ‘„‹•‡’‘ƒœƒŽƒ‹–ƒ•–”ƒƒ”‡ƒŽ‰‹‡ƒǤ‘„‹Œ‹•‡”‡‹”ƒŒ—Œ‡†ƒ‘ƒ‘ i glavni lik, a na isti način se rade i animƒ ‹Œ‡Ǥ

lia r i 

33 RAČUNALNE IGRE 2020

ƒ‘ ‹ ‘† ‰Žƒ˜‘‰ Ž‹ƒǡ ‹’Ž‡‡–‹”ƒ Œ‡ ƒŽ‰‘”‹–ƒ ‘Œ‹ ‘†ƒ„‹”‡ ’”‹Š˜ƒ–ŽŒ‹˜— ƒ‹ƒ ‹Œ— œƒ trenutačno •–ƒŒ‡ zombija. Na početku se dohvaća H‡ƒŽ–Š –‡ „”œ‹ƒ”‡–ƒŒƒ‰Žƒ˜‘‰Ž‹ƒǤ  ‘ Œ‡ œ‘„‹Œ‡˜ ‡ƒŽ–Š ƒŒ‹ ‹Ž‹ Œ‡†ƒ —Ž‹ǡ ƒ‹ƒ ‹Œƒ •‡ ’‘•–ƒ˜ŽŒƒ ƒ ‘„‹‡‡ƒ–Šǡ‘Œa se izvodi jednu sekundu te se nakon toga zombi uništi.  ‘Œ‡œ‘„‹Œ‡˜ ealth veći od nule, provjerava se kretnj‡œ‘„‹ŒƒǤ‘•‡‘ kreće ƒ‹ƒ ‹Œƒ •‡ ’‘•–ƒ˜ŽŒƒ ƒ ‘„‹‡—Ǥ  •—’”‘–‘ǡ ’”‘˜Œ‡”ƒ˜ƒ •‡ ƒ’ƒ†ƒŽ‹œ‘„‹‰Žƒ˜‘‰Ž‹ƒǤ‘†ƒǡƒ‹ƒ ‹Œƒ•‡’‘•–ƒ˜ŽŒƒƒ‘„‹‡––ƒ ǡ ƒƒ‘‡ǡ’‘•–ƒ˜ŽŒƒ•‡ƒ‘„‹‡ †Ž‡Ǥ 

lia r gia aniiranja ija  Grafičko sučelje

 Grafičko sučelŒ‡‘Œ‡’”‹ƒœ—Œ‡ ealth glavnog lika kreira se slično kao i ostali ‡Ž‡‡–‹Ǥ‡•‹Ž‹—‘–‡–”‘™•‡”—啇” –‡”ˆƒ ‡ε‹†‰‡–Ž—‡’”‹–Ǥ Kreirano je prozirno grafičko sučelje koje prikazuje trenutačni ‡ƒŽ–Š‰Žƒ˜‘‰ Ž‹ƒǤ  Kako bi se ažurirao te ispravno prikazivao ‡ƒŽ–Špotrebno je dodati sljedeći ‘†—Ž—‡’”‹–‡†‹–‘”ǣ 

lia r veivanje ealta a sučeljem 



34 RAČUNALNE IGRE 2020

lia r rvi niv  Zaključak 

 ‘˜‘”ƒ†—’”‹ƒœƒŒ‡’”‘ ‡•‹œ”ƒ†—Œ‡†‡ʹvideoigre žanra ’Žƒ–ˆ‘”‡”Ǥ Opisani su ključni dijelovi razvoja jedne takve videoigre koristeći Unreal ‰‹‡ͶǤ”‡ƒŽ‰‹‡Ͷ‹‹•—ƒŽ–—†‹‘’‘ƒœƒŽ‹•—•‡oćnim, ali relativno Œ‡†‘•–ƒ˜‹ƒŽƒ–‹ƒœƒ”ƒœ˜‘ŒŒ‡†‡Reference‘˜ƒ˜‡˜‹†‡‘‹‰”‡ Ǥ 

ȏͳȐ Ǥ Žƒ’’‡„ƒ Šǡ Šƒ– ‹• ƒ ’Žƒ–ˆ‘” ‰ƒ‡ǫ ‘•–—’‘ǣ Š––’•ǣȀȀ™™™ǤŽ‹ˆ‡™‹”‡Ǥ ‘Ȁ™Šƒ–Ǧ‹•ǦƒǦ’Žƒ–ˆ‘”Ǧ‰ƒ‡Ǧͺͳʹ͵͹ͳȏ”‹•–—’ƒ‘ ͵ͲǤ͸ǤʹͲʹͲǤȐ ȏʹȐ Š––’•ǣȀȀ‡Ǥ™‹‹’‡†‹ƒǤ‘”‰Ȁ™‹‹Ȁ‘‡›̴‘‰͓Ȁ‡†‹ƒȀ ‹Ž‡ǣ‘‡›̴‘‰ ̴̴ ”‡‡•Š‘–Ǥ’‰ ȏ͵Ȑ ”ƒ ‡–ǡ Žƒ–ˆ‘”‹‰ ƒ‡•Ǥ ‘•–—’‘ǣ Š––’ǣȀȀ™™™Ǥ”ƒ ‡–„‘›Ǥ ‘Ȁ”‡–”‘Ȁ’Žƒ–ˆ‘”‹‰Ǧ‰ƒ‡•ǦͳͲͳǦƒŽŽǦ›‘—Ǧ‡‡†Ǧ –‘Ǧ‘™ȏ”‹•–—’ƒ‘͵ͲǤ͸ǤʹͲʹͲǤȐ ȏͶȐ Ǥ ƒŠ•ǡ –Š‡Ǧ‡š–Ž‡˜‡ŽǤ ‘•–—’‘ǣ Š––’•ǣȀȀ™‡„Ǥƒ” Š‹˜‡Ǥ‘”‰Ȁ™‡„ȀʹͲͳ͸ͲͳʹͻʹʹͶͷͳʹȀŠ––’ǣȀȀ™™™Ǥ–Š‡Ǧ ‡š–Ž‡˜‡ŽǤ ‘Ȁ”‡˜‹‡™Ȁ”‡–”‘Ȁ‰‡‘‰”ƒ’ŠǦ•‡ƒŽǦš͸ͺͲͲͲȀ ȏ”‹•–—’ƒ‘ ͵ͲǤͺǤʹͲʹͲȐ ȏͷȐ Ǥ ‘—–”‘•ǡ ƒƒ—–”ƒǤ ‘•–—’‘ǣ Š––’•ǣȀȀ™™™Ǥ‰ƒƒ•—–”ƒǤ ‘Ȁ˜‹‡™Ȁˆ‡ƒ–—”‡ȀͳͺͷͳȀƒ̴†‡–ƒ‹Ž‡†̴ ”‘••‡šƒ‹ ƒ–‹‘̴‘ˆ̴Ǥ’Š’ȏ”‹•–—’ƒ‘͵ͲǤͺǤʹͲʹͲǤȐ

35 RAČUNALNE IGRE 2020

ȏ͸Ȑ Ǥ ƒ‹‘”ƒƒǡ Š‡ ƒ†‡† ƒ‡”ǣ —’‡” ƒ”‹‘ —•Š‹‡Ǥ ‘•–—’‘ǣ Š––’•ǣȀȀ™‡„Ǥƒ” Š‹˜‡Ǥ‘”‰Ȁ™‡„ȀʹͲͲͷͳͳʹͷͲ͸ʹͷͶ͹ȀŠ––’ǣȀȀ™™™Ǥ–Š‡Œƒ†‡†‰ ƒ‡”Ǥ‡–Ȁ”‡˜‹‡™̴‰ ̴•—’‡”ƒ”‹‘•—•Š‹‡Ǥ•Š–Žȏ”‹•–—’ƒ‘͵ͲǤͺǤʹͲʹͲǤȐ

36 RAČUNALNE IGRE 2020

Usporedba žanrova računalnih igara

Domagoj Curić i Mario Konecki  duriir arineiir ƒ—Ž–‡–‘”‰ƒ‹œƒ ‹Œ‡‹‹ˆ‘”ƒ–‹‡ǡSveučilište u Zagrebu

Sažetak 

U radu će biti dan pregled žanrova računalnih igara, iako je doista teško ƒ˜‡•–‹Œ‡†—’‘†Œ‡Ž—•‘„œ‹”‘ƒ–‘†ƒ•‡‹dustrija računalnih igara razvija –ƒ˜‘„”œinom da novi žarnovi nastaju kao rezultat in‘˜ƒ–‹˜‹Š’”‘Œ‡ƒ–ƒ‹ tehnologija, ili se pak više žanrova udružuje u novi žanr. Bit će dan pregled Ključnepovijesti riječii specifičnosti pojedinih žanrova računalnih igara.  Uvod ǣračunalne igre, žanrovi, usporedba žanrova 

Računalne igre •—•‡”‘œ•˜‘Œ—”ƒ–—’‘˜‹Œ‡•–”ƒœ˜‹ŒƒŽ‡velikom brzinom, što zbog slobodne maštovitosti u stvaranju različitih igara, što zbog”ƒœ˜‘Œƒ•ƒ‡ tehnologije na kojoj se računaln‡ ’‘”‡ću. Činjenica je da se svake godine pokuša˜ƒŒ—ƒ’”ƒ˜‹–‹računalne igreƒ˜‹Šna tržištu još nema ‹Ž‹se postojeće računalne igre pokušava dovesti na razinu kakva do još nije viđenaǤ”‘„‹ŒƒŒ— se granice maštovitosti‹˜‹œ—ƒŽ‹œƒ ‹Œ‡•ƒ‡računalne ‹‰”‡ǡƒ–‘†‘˜‘†‹†‘•˜‡ veće zainteresiranosti zƒ računalnim igrama. ovi igrači ulaze u svijet ‹†—•–”‹Œ‡ računalnih igara svakodnevno i time ova industrija postaje sve ’‘’—Žƒ”‹ŒƒǤ  Igrači računalnih igara ‹ƒŒ— •˜‘Œ‡ ‹†‹˜‹†—ƒŽ‡ ‹–‡”‡•‡ œƒ ‹‰”ƒŒ‡ ‹‰ƒ”ƒ ‘Œ‡Œ‹ƒ‘†‰‘˜ƒ”ƒŒ—ǡ’ƒ’”‡ƒ•˜‘”‹–‡”‹ju biraju koji žanr igre žele igrati. A kako ima i više nego dovoljno igara u svim različitim žanrovimaǡ ‘‰— •‡ lagano i odlučiti koju će igru igrati.  ”‡ƒ–‘‡ǡ‘Œ—računalnu igruuopće odabrati i kako prepoznati i odlučiti se œƒ’‘Œ‡†‹—‹‰”——‘”—žanrova svih vrsta igara? U ovom radu bit navedeni žanrovi računalnih igara ‹bit će dana —•’‘”‡†„ƒžanrovƒ‹”ƒœŽ‹ƒmeđu njimaǤ  ”‹ƒœƒ–će se i povijest računalnih igara, gdje će •‡˜‹†Œ‡–‹ƒ‘•—‹œ‰Ž‡†ƒŽ‡‹ nastale prve računalne igre, a bit će ko‡–‹”ƒƒ‹industrija računalnih igara — ”˜ƒ–•‘ŒǤ  

37 RAČUNALNE IGRE 2020

Povijest računalnih igara

Prva računalna igra u povijesti bila je OXOǡtzv. križić kružić. Igru je ‘•‹•Ž‹‘‹ ‹œ”ƒ†‹‘ Ž‡šƒ†‡” ƒ†› ‘—‰Žƒ• ‹ –‘ ƒ ƒ—–‘ƒ–•‘ ƒŽ—Žƒ–‘”— elektroničkog‘†Žƒ‰ƒŒƒȋȌͳͻͷʹǤ‰‘†‹‡ȏͳȐǤ  Još jedna značajna računalna igra je„Tennis for Two“. Tu je igru 1958Ǥ‰‘†‹‡ ‘•‹•Ž‹‘‹ŽŽ‹ƒ ‹‰‹„‘–Šƒ—”‘‘Šƒ˜‡ƒ ‹‘ƒŽ‘Žƒ„‘”ƒ–‘”‹Œ——‡™ ‘”—Ǥ ‰”ƒ•‡’‘”‡–ƒŽƒƒ‘• ‹Ž‘•‘’—‹ƒƒŽ‘‰‘m računalu s vakuumskom ‹Œ‡˜‹ ȏʹȐ ȏ͵Ȑ. Prvom značajnijom računaln‘ ‹‰”‘ •ƒ–”ƒ •‡ ’ƒ ‡™ƒ”Ǩǡ ‘•‹•Ž‹‘Œ—Œ‡Steve Russell sa svojim timom 1962. godine. Tom timu na čelu sa —••‡ŽŽǦ‘ Œ‡ –”‡„ƒŽ‘ ‘ko 200 sati da napišu prvu verziju SpacewarǨǦƒǤ ƒ’‹•ƒƒ Œ‡ ƒ Ǧͳǡ ”ƒ‘ ‹–‡”ƒ–‹˜‘ mini računalu DEC, a on je ‘”‹•–‹‘‡”ƒ•ƒ–‘†‘ ‹Œ‡˜‹‹—‘•’—–‡–‹’‘˜‹ ‡Ǥ˜—•—‹‰”—‘‰Žƒ igrati dva igrača, tako što je svaki od igrača imao pod kontrol‘•˜‘Œ•˜‡‹”•‹ „”‘†‘Œ‹‹•’ƒŽŒ—Œ‡rakete. Bodovi su se skupljali na način da se”ƒ‡–‡‹•’ƒŽŒ—Œ— ƒ’”‘–‹˜‹ƒ–‡•‡‘”ƒŽ‘‘†—’‹”ƒ–‹‰”ƒ˜‹–ƒ ‹Œ‹•— ƒȏͶȐǤ  ”˜ƒ ‹‰”ƒ ‘Œƒ Œ‡ ‘‡” ‹ŒƒŽ‘ „‹Žƒ †‘•–—’ƒ Œ‡ ‘’—–‡” ’ƒ ‡ ‘Œƒ Œ‡ ”ƒœ˜‹Œ‡ƒͳͻ͹ͳǤ‰‘†‹‡ǡƒ•–˜‘”‹Ž‹•—Œ‡‘Žƒ—•Š‡ŽŽ‹‡†ƒ„‡›‹‘ƒŒ‡„‹Žƒ ’”˜ƒƒ”ƒ†ƒ‹‰”ƒǡƒ’”‡†•–ƒ˜ŽŒƒŽƒŒ‡nadograđen—˜‡”œ‹Œ—‹‰”‡’ƒ ‡™ƒ”ǨȏͷȐǤ  ‡˜‡†‡•‡–‹Š‰‘†‹ƒ20. stoljećaubrzano počinje rasti broj i‰ƒ”ƒǤ‘”— ™ƒ–ƒ‹ Œ‡ͳͻͺͲǤ‰‘†‹‡‹œ†ƒ‘‹‰”—ƒ ǦƒǤ‹‰”‹Œ‡„‹Ž‘’‘–”‡bno pojesti sve točkice i ‹œ„Œ‡‰ƒ˜ƒ–‹†—Š‘˜‡‘Œ‹Ž‘˜‡igračaǤ˜ƒ‹‰”ƒŒ‡Œ‡†ƒ‘†ƒŒ’‘’—Žƒ”‹Œ‹Š‹‰ƒ”ƒ— ’‘˜‹Œ‡•–‹ȏ͸ȐǤ  Jošš jedna od najpopularnijih igara koja je u ovome slučaju na igraćoj konzoli ȋ‹–‡†‘–‡”–ƒ‹‡–›•–‡ȌŒ‡—’‡”ƒ”‹‘”‘•—‹œ†ƒŒ—‹–‡†ƒ ͳͻͺ͵Ǥ‰‘†‹‡Ǥ  Samo deset godina kasnije izlazi prva avanturistička igra Myst gdje igrač Žanroviistražuje računalnihi rješava svakojake igara zagonetke.

• Trenutačno• najaktualniji žanrovi računalnih igara uključuju: •  ‹Œ•‡‹‰”‡ǡ • Avanturističke igre, •  Ǧ ‰”ƒ—Ž‘‰‡ǡ • ‹—Žƒ ‹Œ•‡‹‰”‡ǡ Strateške igre, ’‘”–•‡‹‰”‡ǡ

38 RAČUNALNE IGRE 2020

• • • ‰”ƒ—–”ƒǡ • Pucačine (FPS, TPS), te MMO (pretežito multiplayer ‘Ž‹‡‹‰”‡Ȍ ”ƒŽŒ‡˜•‡„‹–‡ȋƒ––Ž‡–‘›ƒŽ‡‰ƒ‡•Ȍ

ƒ‘ najzanimljiviji i najigraniji žanr nameće se Battle – ‘›ƒŽ‡ ‰ƒ‡•Ǥ ƒŒ’‘’—Žƒ”‹Œƒ‹ƒŒ‹‰”ƒ‹Œƒƒ––Ž‡ –‘›ƒŽ‡‰ƒ‡ •˜ƒƒ‘Œ‡ ‘”–‹–‡ǡ ‘Œ‹ Œ‡ œƒŽ—†‹‘’‘’—Žƒ ‹Œ—‘†Žađih do starijih igrača.’”ƒ˜‘Œ‡—‘˜‘Œ‹‰”‹igrač pod ‹‡‘‹Œƒƒ‘Ž‹‡’Žƒ–ˆ‘”‹œƒ‰Ž‡†ƒŒ‡˜‹†‡ƒ—‘Œ‘Œ‹‰rači igraju video Akcijske‹‰”‡ǡ™‹– Šǡ igre‘„‘”‹‘”‡‘”†‰Ž‡†ƒ‘•–‹ ‘†‘‘͸͵ͷǤͲͲͲ‰Ž‡†ƒ–‡ŽŒƒȏͺȐǤ 

 ‹Œ•‡ ‹‰”‡ •— Œ‡†ƒ ‘† ƒŒŒ‡†‘•–ƒ˜‹Œ‹Š ‹ ƒŒ•–ƒ”‹Œ‹Š žanrova računalnih ‹‰ƒ”ƒǤ  početku su se ove igre odvijale u 2D okruženju. azvojem računala ‹‰”‡•—postajale sve naprednije i radnja akcijskih igara se počela odvijati i u 3D okruženju ȏͻȐǤ ƒ ‹‰”ƒnje akcijskih igara igrač –”‡„ƒ „‹–‹ †‘•–ƒ •’”‡–ƒ ‹ ‹ƒ–‹†‘„”—usklađenost očiju i rukuǤPopularnost ovog žanra dovela je do niza Avanturistprogramerskihičke inicijativa igre u razvoju ovog žanraȏͳͲȐǤ 

Ovaj žanr računalnih ‹‰ƒ”ƒ ƒ”ƒ–‡”‹œ‹”ƒ istraživanj‡ ‹ rješavanje zagonetki. Ovaj žanr može bitifokusiran na mnoge književne žanrove kao što su horori, œƒ•–˜‡ƒˆƒ–ƒ•–‹ƒǡ‹•–‡”‹Œ‹–†ǤI ovaj žanr je jedan od najstarijih žanrova, njegovo podrijetlo seže —ͳͻ͹ͲǦ–‡ƒ†ƒŒ‡‹œ†ƒƒ‹‰”ƒ‘Ž‘••ƒŽƒ˜‡ǡŒ‡†ƒ‘† prvih avanturističkih igara. Ova igra se temeljila na tome da igrač unosi jednostavne tekstualne naredbe za istraživanje špilje.  Većina igrača i kritičara smatra kako ovaj žanr izumire, no međutim on se i †ƒŽŒ‡’”‘‹œ˜odi i kupuje. Mana je jedino što se tržišni udio ovih avanturističkih ‹‰ƒ”ƒ •ƒŒ—Œ‡ǡ ali elementi ovoga žanra prelaze u druge najpopularnije žanroveRPG – Igra kao uloge što je akcijsk‘–avanturistički žanrȏͳͲȐȏͳͳȐǤ 

RPG ili „Role Playing Game“ •—˜‹œ—ƒŽ‘„‘‰ƒ–‡‹‰”‡—‘Œ‹ƒse igraču •–˜ƒ”ƒ †‘Œƒ”‡ƒŽ‘‰•˜‹Œ‡–ƒ. Igrač RPG igre kontrolira izmišljenog lika kojeg odabere ‹ ‘Œ‹ rješava različite zadatke u izmišljenom svijetuǤ ‹‘˜‹ — ‹‰”ƒƒ ‘‰— imati različite osobine ili karakteristike, koje im služe za rješavanje raznih ‹œƒœ‘˜ƒǤȏͳͲȐȏͳʹȐǤ

39 RAČUNALNE IGRE 2020

Simulacijske igre pokušavaju kopirati razne aktivnosti iz stvarnog života, ’‘’—––”‡‹‰ƒǡvožnje ili poslovanja. Obično u igri ne postoje strogo definirani ciljevi, a igraču je umjesto toga dozvoljeno slobodno kontrolirati lika ili ‘‘Ž‹—Ǥ ‘•–‘Œ‡ ”ƒœ‡ •‹—Žƒ ‹Œ•‡ ‹‰”‡ u kojima igrač može ˜‘œ‹–‹ –”ƒ–‘”ǡ ƒ˜‹‘ǡ ƒ‹‘ǡ ƒ—–‘ǡ ‰”ƒ†‹–‹ œ‰”ƒ†‡ǡ ’”‘†ƒ˜ƒ–‹ ”‘„— ‹–†Ǥ ƒŒœƒ•–—’ŽŒ‡‹Œ‡ •‹—Žƒ ‹Œ•‡‹‰”‡•—‘‡‡‘‘•‘‰–‹’ƒǡ—‘Œ‹ƒse pokušava prikazati kako Strateškeˆ— ‹‘‹”ƒ igre”‡ƒŽƒ•˜‹Œ‡– ȏͳͲȐǤ

•‹ŽŽˆ—Ž –Š‹‹‰ ƒ† ’Žƒ‹‰ –‘ ƒ Š‹‡˜‡ ˜‹ –‘”›ǤȏͳȐ – ‡’Šƒ•‹œ‡• •–”ƒ–‡‰‹ ǡ –ƒ –‹ ƒŽǡƒ†•‘‡–‹‡•Ž‘‰‹•–‹ ƒŽ ŠƒŽŽ‡‰‡  Strateške računalne igre uključuje promišljanje, planiranje i vješt odabir poteza u svrhu postizanja cilja tj. pobjede. Naglasak je dan na strateške, taktičke i logičke kompetencije igrača. Strateške‹‰”‡‘‰—„‹–‹Œ‡†‘‰‘†‹œƒ podžanrovaȏͳ͵ȐǤ  ‡‹‘†‘˜‹Šžanrova su RealǦ‹‡–”ƒ–‡‰›ȋȌǡ‡ƒŽǦ‹‡ƒ –‹ •ȋȌ‹ —Ž–‹’Žƒ›‡” Ž‹‡ ƒ––Ž‡ ”‡ƒ ȋȌǤ ‡ƒŽǦ–‹‡ •–”ƒ–‡‰› ‹Ž‹ •–”ƒ–‡‰‹Œƒ — •–˜ƒ”‘˜”‡‡—Œ‡’”‹Œ‡”‹‰”‡—‘Œ‘Œse igračapotiče da sakuplja i regulira •˜oje resurse, istovremeno povećavajući i svoje borbene snage i izvore za uzdržavanje. RealǦ–‹‡–ƒ –‹ •‹Ž‹–ƒ–‹ƒ—•–˜ƒ”‘˜”‡‡—’‘†”ƒœ—‹Œ‡˜ƒ da se igra usredotočuje na taktike koje igrač koristi ƒ ˜‹”–—ƒŽ‘ „‘Œ‘ ’‘ŽŒ— ‹Ž‹ –‹Œ‡‘ ‹‰”ƒŒƒ ”ƒ–ƒǡ —mjesto na održavanje resursa. MOBA ili —Ž–‹’Žƒ›‡”online borilište je možda i jedan od najpopularnijih žanrova jer se ’‘†‘vim žanrom smatra jedna od najpopularnijih računalnih igaraƒ•˜‹Œ‡–—ǡ a to je League of Legends. Igrači uglavnom kontroliraju jedn‘‰Ž‹ƒ—Œ‡†‘Œ‘† dvije momčadi koje surađuju kako bi pokušale preuzeti ili uništiti domaću „ƒœ—‡’”‹Œƒ–‡ŽŒ•‘‰–‹ƒ ȏͳͶȐǤ 

 Ovaj žanr je vrlo jednostavan za ‘’‹•ƒ–‹ Œ‡” Œ‡‰‘˜ ‘’‹• ’”‘‹œŽƒœ‹ ‹œ •ƒ‘‰ naziva žanra. Računalne igre koje potpadaju pod ovaj žanr su ‹‰”‡ ’‘’—– košƒ”‡ǡ‘‰‘‡–ƒǡ–‡‹•ƒ‹–†Ǥ  ’‘”–•‡‹‰”‡’‘Œƒ˜‹Ž‡•—•‡”ƒ‘—’‘˜‹Œ‡•–‹‹‰ƒ”ƒ‹†ƒƒ••—‹†ƒŽŒ‡Œ‡†ƒ‘† najpopularnijih žanrova igara na svijetu. Baš kao i stvarni sportovi, sportske ‹gre simuliraju tradicionalne fizičke sportove u kojima protivnički tim ‘–”‘Ž‹”ƒ—Œ‡–ƒ‹–‡Ž‹‰‡ ‹Œƒȋ Ȍ‹Ž‹druge osobe iz stvarnog životaȏͳͲȐǤ  40 RAČUNALNE IGRE 2020

gra trka

 Igra utrka smatra se popularnim žanrom koji se dosta rano pojavi‘Ǥ˜‡‹‰”‡ dosta su popularne na konzolama, no računalni svijet trkaćih igara svojim igračima nudi dosta rekvizita poput volana, papučica, mjenjača. Ovaj žanr •‡ •ƒ–”ƒŒ‡†‹‘†najpopularnijih žanrovi svih vremena. Razvijanjem igračke ‹†—•–”‹Œ‡‹’‘–‹ ƒjem na sve više online igranje, došlo je do sve većeg broja igara ovog žanra koje nude opciju ‹‰”ƒŒƒ’”‡‘ –‡”‡–ƒ•†”—‰‹•–˜ƒ”‹ PucačineigračimaȏͳͲȐ – SǤ 

 Pucačine su podžanr akcijskih igara, no ovaj žanr postaje •˜‡ ’‘’—Žƒ”‹Œ‹ — svijetu igara te se može svrstati i pod samostalan žanr. Igre u ovome žanru često testiraju prostornu svijest, reflekse i brzinu igrača. Mogu se igrati u prvom licu (FPS) ili trećeŽ‹ —ȋȌǤ  ƒ‘‹œŽƒ•ƒ†‡˜‡†‡•‡–‹Š‰‘†‹ƒ˜”Ž‘’‘’ularne igre ovaj žanr zapravo biva rođen, te mnogi smatraju upravo igru Doom prekretnicom za razvijanje računalnih igara. U prvome licu igrač vidi samo ruku koja drži pušku i njome —’”ƒ˜ŽŒƒ ”‘œ cijelu igru, dok se u trećem licu vidi cijeli avatar kojim igrač upravlja. – Pretežito Sve više igaramultyplayer ovoga žanra online ima igre naglasa ƒ‘Ž‹‡‹‰”ƒŒ‡ǤȏͳͷȐ 

  ‹Ž‹ ƒ••‹˜‡Ž› —Ž–‹’Žƒ›‡” Ž‹‡ œƒ’”ƒ˜‘ znači pretežito multiplayer online. Jednostavno rečeno, MMO je mrežna igra za više igrača koju veliki broj igračamože igrati istovremeno. Ne ‹‰”ƒ•‡•ili protiv samo nekolicine igrača, ‡‰‘•tisućama, ponekad čak i milijunima igrača odjednomȏͳ͸ȐǤ  MMO počinje uzimati sve većiœƒƒŠ—‹†—•–”‹Œ‹računalnih igaraǤƒœŽ‘‰–‘‡ Œ‡ prije svega mogućnost •‘ ‹ŒƒŽ‡ ‹–‡”ƒ ‹Œ‡ igrača. Naravnoǡ ono što je tu zanimljivo• i što privlači veliki broj publike je igranje i natjecanje u timovima. Podžanrovi• ovoga žanra suȏͳ͸Ȑǣ •  ȋ‘Ž‡ǦŽƒ› ƒ‡Ȍ •  ȋ ‹”•–Ǧ‡”•‘Š‘‘–‡”Ȍ ȋ‡ƒŽǦ‹‡–”ƒ–‡‰›Ȍ raeke itke’‘”–•ǡ‹–†Ǥȋ ”‹––•ǡǤ†ǤȌ atte – ae gae 

ƒ––Ž‡ǦRoyal games ili kraljevske bitke su online multiplayer igre. Ovaj žanr Œ‡ igra苏ƒ†‘‹•–ƒ’‘•‡„ƒǡœƒ‹ŽŒ‹˜‹‹—œ„—†ŽŒ‹˜‹œŒ‡†‘•–ƒ˜‘‰”ƒœŽ‘‰ƒǡƒ–‘Œ‡ štomoraju biti domišljati kako bi pobijedili. U većini slučajeva kod računalnih 41 RAČUNALNE IGRE 2020

‹‰ƒ”ƒovoga žanra sve kreće tako da igrač ili cijeli tim tj. lik koj‹•‡—’”ƒ˜ŽŒƒ iskače iz aviona te slijeće padobranom na željeno mjesto određene mape u kojoj se nalazi (najčešće je to otok).   Nakon slijetanja igračiǡda bi preživjeli i opstali na mapiǡmoraju tražiti oružja, ‘’”‡—‹‘‰‡†”—‰‡•–˜ƒ”‹. Na mapi uglavnom sleti oko 100 igrača. —Œ‡‹ tzv. „Oluja“ koja se sužava i stvara opasnost za igrača ako uđe u nju jer će izgubiti život ako ne izađe na vrijeme iz nje. Na posljetku je pobjednik ‘ƒŒ‘Œ‹ ‘•–ƒ‡œƒ†Œ‹ƒƒ’‹Usporedba žanrova računalnihȏͳ͹ȐǤ igara 

Usporedimo li žanr akcijskih igara i pucačina, može se uvidjeti da su to slični žanrovi tj. da Œ‡•˜ƒƒračunalna igrakoja je pucačina ujedno i akcijska igra, ali †ƒ•˜ƒƒ‹‰”ƒ‘ŒƒŒ‡ƒ ‹Œ•ƒ‡‘”ƒnužno biti pucačina jer postoje akcijske ‹‰”‡‘Œ‡‹su pucačine nego imaju neku drugu priču i akcije koje se u Œ‹ƒ događaju.  ƒ†ƒ „‹ se pokušalo objasniti i usporediti danas vrlo vjerojatno dva najpopularnija žanraǡ‹ƒ––Ž‡‘›ƒŽ‡ǡmože se zaključiti da su to žanrovi kojima je zajedničko online igraŒ‡ǡa to znači da se bez pristupa I–‡”‡–—‡ ‘‰—‹‰”ƒ–‹Ǥƒ”ƒ˜‘ǡ——–ƒ”‹‰”‡’‘•–‘Œ‹‹poseban dio koji omogućuje †ƒ•‡ ‹‰”ƒ‹„‡œ’”‹•–—’ƒ nternetu, no ove igre za to ne služe i ni‘‡‹•—œ„‘‰–‘‰ƒ œƒ‹ljive. Razlike ova dva žanra leže u tome da—žanru ‹Œ‡ ‹ŽŒ‘•–ƒ–‹ Zaključakœƒ†Œ‹ƒƒ’‹‹–ƒ‘’‘„‹Œ‡†‹–‹ ǡƒšto je slučaj kodžanra Battle Royale.

Kroz svoju dosta kratku povijest žanrovi računalnih igara •— •‡ —˜‡Ž‹‡ ’”‘‹Œ‡‹Ž‹ ‹ može •‡ ’”‹‹Œ‡–‹–‹ ƒ‘ Œ‡ ”ƒœ˜‘Œ računalnih igara do‹•–ƒ „”œ‘ ƒ’”‡†‘˜ƒ‘, a i još uvijek ‡•’‘‡ ‹ŒƒŽ‘ ”ƒ•–‡Ǥ ‰”ƒƒ •‡ — ’”ƒ˜‹Ž— ‡ određuje samo jedan žanr nego se gledaju sve karakteristike pojedinih žanrovau određenoj računalnoj igrite se onda toj igri dodijele žanrovi‘Œ‹ƒ ’”‹’ƒ†ƒǤ  Može se œƒŽjučiti kako su neki žanrovi popularniji od drugih te da oni opći žanrovi poput recimo akcijskih igara imaju svoje podžanrove koji imaju ‘•‘˜‡ƒ”ƒ–‡”‹•–‹‡ƒ ‹Œ•‹Š‹‰ƒ”ƒ, ali i svoje dodatne specifičnostiǤ   budućnosti računalnih igara i njegovih žanrova teško je ‰‘˜‘”‹–‹ Œ‡” •‡ pokazalo kako se glavni i najpopularniji žanrovi stalno ‹Œ‡ŒƒŒ— †‘Žƒ•‘ novih igara, a za očekivati je da će se ovaj trend i na•–ƒ˜‹–‹Ǥ 

42 RAČUNALNE IGRE 2020

 •˜ƒ‘ slučaju, igrači uživaju u igranju svojih najomiljenijih igara i to im ’”‡†•–avlja veliko zadovoljstvo i igrači će uvijek tražiti igre po svojoj mjeri. Upravo zbog ovog razloga razvoj novih igara i novih žanrova će se nastaviti i †ƒŽŒ‡Ǥ   ȏͳȐ Ǥ‘Š‡ǡǽƒƒ‘—‰Š–•ƒ†”‘••‡•ǦŠ‡ ‹”•–‹†‡‘ ƒ‡ǡǼʹͲͳͻǤ [Mrežno]. Dostu’‘ ƒǣ Š––’•ǣȀȀ™™™ǤŽ‹ˆ‡™‹”‡Ǥ ‘Ȁ‘š‘ǦƒƒǦ‘—‰Š–•Ǧ ƒ†Ǧ ”‘••‡•Ǧ͹ʹͻ͸ʹͶǤȏ”‹•–—’ƒ‘ͳǤͻǤʹͲʹͲǤȐǤ ȏʹȐ Ǥ ‘”ƒǡ ǽŠ‡ ‹”•– ‹†‡‘ ƒ‡ǣ ̶‡‹• ˆ‘” ™‘̶ǡǼ [Mrežno]. ‘•–—’‘ƒǣŠ––’•ǣȀȀ™™™ǤŠ‹•–‘”›‘ˆ‹ˆ‘”ƒ–‹‘Ǥ ‘Ȁ†‡–ƒ‹ŽǤ’Š’ǫ‹†α͹͸ͲǤ ȏ”‹•–—’ƒ‘ͳǤͻǤʹͲʹͲǤȐǤ ȏ͵Ȑ Ǥ ‘ŠŽ‡”ǡ ǽ‰‹‡‡”• ‡•–‘”‡ ͳͻͷͺ ̵‡‹• ‘” ™‘̵ ƒ‡ǡ ‘™ ‹–Š Vacuum Tubes,« 2010. [Mrežno]. Dostupno na: Š––’•ǣȀȀ™™™Ǥ™‹”‡†Ǥ ‘ȀʹͲͳͲȀͳʹȀ–‡‹•Ǧˆ‘”Ǧ–™‘ȀǤ ȏ”‹•–—’ƒ‘ ͳ ͻ ʹͲʹͲȐǤ ȏͶȐ Ǥ ‡ŽŽ‹•ǡ ǽŠ‡ ‹•–‘”› ‘ˆ ’ƒ ‡™ƒ”ǣ Š‡ ‹”•– ‘’—–‡” ƒ‡ǡǼ ʹͲͳͻǤ [Mrežno]. Dos–—’‘ ƒǣ Š––’•ǣȀȀ™™™Ǥ–Š‘—‰Š– ‘Ǥ ‘ȀŠ‹•–‘”›Ǧ‘ˆǦ •’ƒ ‡™ƒ”ǦͳͻͻʹͶͳʹǤȏ”‹•–—’ƒ‘ͳǤͻǤʹͲʹͲǤȐǤ ȏͷȐ Ǥ‹ŽŽƒ‡”–ǡǽ‹š‡Ž• ”‹–ȋƒ”–ͳȌǣ†˜‡”–‹•‹‰‘’—–‡”’ƒ ‡ –Š‡ First Arcade ,« 2018. [Mrežno]. Dostupno na: Š––’•ǣȀȀ‰ƒ‡Š‹•–‘”›Ǥ‘”‰Ȁˆ‹”•–Ǧƒ” ƒ†‡Ǧ‰ƒ‡Ǧƒ†˜‡”–‹•‡‡–Ǧ ‘’—–‡”Ǧ •’ƒ ‡ȀǤȏ”‹•–—’ƒ‘ͳǤͻǤʹͲʹͲǤȐǤ ȏ͸Ȑ J. Rosenberg, »Pac Man,« [Mrežno]. Dostupno naǣ Š––’•ǣȀȀŠ”Ǥ‡ˆ‡””‹–Ǥ ‘Ȁ’ƒ ǦƒȀǤȏ”‹•–—’ƒ‘ͳǤͻǤʹͲʹͲǤȐǤ ȏ͹Ȑ J. Juul, »A history of the computer game,« [Mrežno]. Dostupno na: Š––’•ǣȀȀ™™™ǤŒ‡•’‡”Œ——ŽǤ‡–Ȁ–Š‡•‹•ȀʹǦŠ‹•–‘”›‘ˆ–Š‡ ‘’—–‡”‰ƒ‡ǤŠ–ŽǤ ȏ”‹•–—’ƒ‘ͳǤͻǤʹͲʹͲǤȐǤ ȏͺȐ Ǥ ‡•Ž‹‡ ‹ Ǥ ›‡”•ǡ ǽ ‘™ — Š ‘‡› †‘‡• ‹Œƒ ƒ‡ǫǡǼ ͻ ͵ ʹͲʹͲǤ [Mrežno]. Dostupno na: https://dotesports.com/culture/news/howǦ — ŠǦ‘‡›Ǧ†‘‡•Ǧ‹ŒƒǦƒ‡ǦʹͳͻͷͶǤȏ”‹•–—’ƒ‘ͳǤͻǤʹͲʹͲǤȐǤ ȏͻȐ Ǥ edeković, »Žanrovi igara,« [Mrežno]. Dostupno na: Š––’ǣȀȀ™‡„Ǥ•–—†‡–‹Ǥƒ–ŠǤ’ˆǤ—‹œ‰ǤŠ”Ȁ̱Š” ͵ͳ͵Ȁœƒ†ƒ ƒǤŠ–ŽǤ ȏ”‹•–—’ƒ‘ͳǤͻǤʹͲʹͲǤȐǤ ȏͳͲȐ –‡ Šƒ˜‹‘Ž‘‰ǡǽ‘’ͳͲ‘•–‘’—Žƒ” ƒ‡ ‡”‡•‹–Š‡‘”Ž†ʹͲͳͺǡǼ 2018. [Mrežno]. Dostupno na: https://blog.technavio.coȀ„Ž‘‰Ȁ–‘’ǦͳͲǦ ‘•–Ǧ’‘’—Žƒ”Ǧ‰ƒ‡Ǧ‰‡”‡•Ǥȏ”‹•–—’ƒ‘ͳǤͻǤʹͲʹͲǤȐǤ ȏͳͳȐ ‹‹™ƒ†ǡ ǽ‘Ž‘••ƒŽ ƒ˜‡ †˜‡–—”‡ǡǼ ȏ”ežno]. Dostupno na: Š––’•ǣȀȀ™™™Ǥ™‹‹™ƒ†Ǥ ‘Ȁ‡Ȁ‘Ž‘••ƒŽ̴ƒ˜‡̴†˜‡–—”‡Ǥ ȏ”‹•–—’ƒ‘ ͳǤͻǤʹͲʹͲǤȐǤ ȏͳʹȐ PCChip, »Najbolji RPG naslovi za Windows računala svih ˜”‡‡ƒǨǡǼ 2018. [Mrežno]. Dostupno na: https://pcchip.Š”Ȁ‰ƒ‹‰ȀƒŒ„‘ŽŒ‹Ǧ”’‰Ǧ ƒ•Ž‘˜‹ǦœƒǦ™‹†‘™•Ǧ”ƒ —ƒŽƒǦ•˜‹ŠǦ˜”‡‡ƒȀǤȏ”‹•–—’ƒ‘ͳǤͻǤʹͲʹͲǤȐǤ

43 RAČUNALNE IGRE 2020

ȏͳ͵Ȑ »WHAT IS A STRATEGY GAME?,« [Mrežno]. Dostupno na: Š––’•ǣȀȀ™™™Ǥƒ–ŠŽ‡‡‡” —”›Ǥ ‘Ȁ™Šƒ–Ǧ‹•ǦƒǦ•–”ƒ–‡‰›Ǧ‰ƒ‡ǤŠ–Ž͓Ǥ ȏ”‹•–—’ƒ‘ͳǤͻǤʹͲʹͲǤȐǤ ȏͳͶȐ Ǥ ‹Ž•‘ǡ ǽƒ‹‰ ‘˜‡•ǣ ‡•– —”Ǧƒ•‡† –”ƒ–‡‰› ƒ‡• ‘ ǡǼ 2020. [Mrežn‘ȐǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ•–‘”‡ǤŠ’Ǥ ‘Ȁ—•Ȁ‡Ȁ–‡ ŠǦ –ƒ‡•Ȁ„‡•–Ǧ–—”Ǧ„ƒ•‡†Ǧ•–”ƒ–‡‰›Ǧ‰ƒ‡•Ǧ’ Ǥȏ”‹•–—’ƒ‘ͳǤͻǤʹͲʹͲǤȐǤ ȏͳͷȐ Ǥ ‹Ž•‘ǡ ǽ ƒ––‡” ˆ ‡”•’‡ –‹˜‡ǣ ‘’ƒ”‹‰ ‹”•– † Š‹”†Ǧ’‡”•‘ Shooters,« [Mrežno]. Dostupno na: https://thegamesedge.com/320/aǦ ƒ––‡”Ǧ‘ˆǦ’‡”•’‡ –‹˜‡Ǧ ‘’ƒ”‹‰Ǧˆ‹”•–Ǧƒ†Ǧ–Š‹”†Ǧ’‡”•‘Ǧ •Š‘‘–‡”•Ȁ͓ǤŠ „˜ — Ǥȏ”‹•–—’ƒ‘ͳǤͻǤʹͲʹͲǤȐǤ ȏͳ͸Ȑ Žƒ”‹—ǡ ǽŠƒ– • ƒ ǡ Šƒ– • ƒ   ƒ† –Š‡ ‹ˆˆ‡”‡ ‡ Between Them,« 2018. [Mrežno]. Dostupno na: Š––’•ǣȀȀ’Žƒ”‹—Ǥ ‘Ȁ‡Ȁ„Ž‘‰Ȁ†‹ˆˆ‡”‡ ‡Ǧ„‡–™‡‡Ǧ‘Ǧƒ†Ǧ‘”’‰•ȀǤ ȏ”‹•–—’ƒ‘ͳǤͻǤʹͲʹͲǤȐǤ ȏͳ͹Ȑ ƒ‹‰•–”‡‡–ǡǽ ‘™„ƒ––Ž‡”‘›ƒŽ‡‰ƒ‡•‡š’Ž‘†‡†‹’‘’—Žƒ”‹–›ǡǼʹͲͳͻǤ [Mrežno]. Dostupno na: https://gamingstreet.coȀŠ‘™Ǧ„ƒ––Ž‡Ǧ”‘›ƒŽ‡Ǧ „‡ ƒ‡Ǧ’‘’—Žƒ”ȀǤȏ”‹•–—’ƒ‘ͳǤͻǤʹͲʹͲǤȐǤ ȏͳͺȐ ‘’—–‡” ‹•–‘”› —•‡—ǡ ǽ‹‡Ž‹‡ ‘ˆ ‘’—ter History,« [Mrežno]. ‘•–—’‘ ƒǣ Š––’•ǣȀȀ™™™Ǥ ‘’—–‡”Š‹•–‘”›Ǥ‘”‰Ȁ–‹‡Ž‹‡Ȁ‰”ƒ’Š‹ •Ǧ ‰ƒ‡•ȀǤȏ”‹•–—’ƒ‘ͳǤͻǤʹͲʹͲǤȐǤ ȏͳͻȐ Ǥ ”‹––•ǡ ǽ‘’—–‡” Ƭ ‹†‡‘ ƒ‡ Geners,« [Mrežno]. Dostupno na: Š––’•ǣȀȀ •Ǥ•Ž—Ǥ‡†—Ȁ̱ˆ”‹––•Ȁ • ‹ͳͲ͵ͲȀ• Š‡†—Ž‡Ȁ • ‹ͳͲ͵Ͳ̴‰ƒ‡̴‰‡”‡•Ǥ’†ˆǤ ȏ”‹•–—’ƒ‘ͳǤͻǤʹͲʹͲǤȐǤ  

44 RAČUNALNE IGRE 2020

pomoć videoigara

Mislav Matijević i Mario Konecki  atijeviir arineiir ƒ—Ž–‡–‘”‰ƒ‹œƒ ‹Œ‡‹‹ˆ‘”ƒ–‹‡ǡSveučilište u Zagrebu

Sažetak 

ƒ•–ƒ˜‹’”‘ ‡•Œ‡’—‘’—–ƒ‹œƒœ‘˜ƒœƒ‘‰‡•–—†‡–‡Ǥ—‘’—–ƒŒ‡˜”Ž‘ teško zadržati koncentraciju i shvatiti dovoljno detaljno sve aspekte izloženog ‰”ƒ†‹˜ƒǤ  ‘˜‘ ”ƒ†— †ƒ Œ‡ ’”‹ƒœ ’”‘–‘–‹’ƒ •—•–ƒ˜ƒ œƒ ‰‡‡”‹”ƒŒ‡ prezentacija u 3D prostoru, čime se stvara podloga za interaktivno učenje putem virtualnih svjetova i prostora. Ovaj način poučavanja i učenja je lakši, œƒ„ƒ˜‹Œ‹ ‹ œ‘”‹Œ‡ ’”‹ƒœ—Œ‡ ƒ•–ƒ˜‘ ‰”ƒ†‹˜‘ na način koji studente drži zainteresiranima tijekom dužeg vremena. U radu je dan i kratk‹ ‘•˜”– ƒ Ključnemogućnosti riječi korištenja 3D prikaza u obrazovanju.  ǣ ‹”–—ƒŽ‹ ’”‹ƒœǡ ‹–‡”ƒ–‹˜‹ ’”‹ƒœǡ ͵ ’”‘•–‘”ǡ ƒ•–ƒ˜‹ ƒ–‡”‹ŒƒŽ‹ǡ’”‡œ‡–ƒ ‹Œ‡  

Kad sam imao 9 godina, sasvim slučajno sam otkrio mogućnost stvaranja mapa œƒigricu Far Cry 2. Stvorio sam mapu i divio se svojoj tvorevini. Nije bitno što •— –‘ „‹Ž‹ ‡‹ ‡—˜Œ‡”ŽŒ‹˜‘ ˜‹•‘‹ „”Œ‡‰‘˜‹ǡ ‡ƒ˜‡ ”ƒœ„ƒ ƒ‡ ‡•’Ž‘œ‹˜‡ bačve i par vozila, bitno je što je tada počela moja ljubav prema stvaranju 3D ’”‘•–‘”ƒǡ ’”‘•–‘”ƒ ‘Œe možemo stvoriti po svojoj volji i po njima se potom ”‡–ƒ–‹Ǥ  ‡‘Ž‹‘godina učenja kasnije, kada sam u 2. razredu gimnazije dobio zadatak ‹œ Ž‹‘˜‘‰ ƒ’”ƒ˜‹–‹ ’”‡œ‡–ƒ ‹Œu o nekoj rimskoj građevini, odlučio sam ne koristiti Powerpoint, već eksperimentirati rekreirajući građevinu u Source Engineu i prezentirajući tako da letim oko nje, prikazujem bitne dijelove tako da im se približim itd. Uradak je prošao višeǦƒŒ‡‡•Š˜ƒćen, no to me nije ‘„‡•Š”ƒ„”‹Ž‘da nastavim izrađivati prezentacije za likovni na takav način.  Kako je vrijeme prolazilo, postavio sam si pitanje: zašto koristimo 2D prezentacije? One su po meni anakroni ostatak prošlosti kada su ljudi ’‘•–ƒ˜ŽŒƒŽ‹’ƒ’‹”‡s tekstom na svjetlo ispred leće. Danas je taj plosnati oblik ’‘–’—‘ ‡’‘–”‡„‘ ograničenje. Zato sam odlučio napraviti program za ‹œ”ƒ†—͵’”‡œ‡–ƒ ‹ŒƒǤ 45 RAČUNALNE IGRE 2020

Zašto igre?

”‘‹zvođači videoigara vrlo su rano”‡—Ž‹—‹œ”ƒ†—‹‰ƒ”ƒ—͵’”‘•–‘”‹ƒȏͳȐǤ ƒ”ƒœŽiku od 2D igara, 3 dimenzije omogućuju realniji, uvjerljiviji i dosljedniji prikaz okoline koju igrač istražuje. Doduše, cijena toga jest zahtjevna izrada tzv. „enginea“, odnosno kompleksnog skupa programa koji olakšavaju i uopće omogućuju prij‡˜‘† ͵ ’”‘•–‘”ƒ — ‘„Ž‹ ”ƒœ—ŽŒ‹˜ ‰Žƒ˜‘ ’”‘ ‡•‘”— ‘Œ‹ ’‘–‘ ’‘† —’—–ƒƒ ȋƒ ‹†‘™•‹ƒȌ ‹”‡ –Ǧa šalje napredne naredbe grafičkom procesoru [2].   Na primjer, ako je igrica automobil, onda je engine, logično, motor koji sve pokreće i osigurava da auto‡‡•’Ž‘†‹”ƒƒ—œ„”†‹ ‹ǡƒ„‘Œƒ•Œ‡†ƒŽƒǡ˜ƒŽ‹–‡–ƒ ’”‘œ‘”ƒǡ͵player, GPS sustav itd. su dijelovi koji čine ono što igrač vidi, tu ‹‰”‹ —ȏ͵ȐǤ  Kao što postoji više vrsta motora različitih proizvođačaǡ–ƒ‘’‘•–‘Œ‹‹‘‰‘ ‰ƒ‡‡‰‹‡ƒǡ’‘’—–”‡ƒŽƒǡ‹–›Œƒǡourcea itd. Sebe bih nazvao pomoćnim automehaničarem za Source Engine koji je osmislio kako ga pogoniti u Zašto‘„”ƒœ‘˜ƒŒ—Ǥ Source Engine?

Ovaj engine pokreće mnoge popularne igrice (zajedno Source i Source 2): ‘—–‡” –”‹‡ Ž‘„ƒŽ ˆˆ‡•‹˜‡ǡ ‘–ƒǡ ’‡š ‡‰‡†•ǡ •—”‰‡ › ȋ‡ ƒ†•–‘”Ȍǡ‘”–ƒŽʹǡ ƒŽˆ‹ˆ‡Ž›š‹‘‰‡†”—‰‡ȏͶȐǤ–˜‘”‹Ž‘‰ƒŒ‡poduzeće Valve Software na osnovi njihovog starijeg enginea „GoldSrc“.  ‘—” ‡Œ‡’‘’—Žƒ”‘•–•–‡ƒ‘ƒ†ƒŒ‡ƒŽ˜‡‘ˆ–™ƒ”‡‹œ†ƒ‘ ƒŽˆ‹ˆ‡ ʹ†ƒ˜‡ ʹͲͲͶǤ ƒŒŽƒ•‹ —•˜‹Œ‡–— ˜‹†‡‘‹‰ƒ”ƒ †‘„‹‘Œ‡ ͵ͻƒ‰”ƒ†ƒœƒ‹‰”— ‰‘†‹‡ȏͷȐǤ Sjećam sejoš iz razdobljakada sam imao 5 ili 6 godina i igrao ga na najnižim ’‘•–ƒ˜ƒƒ ƒ •–ƒ”‘  ‘‹–‘”— ”‡œ‘Ž— ‹Œ‡ ͸ͶͲšͶͺͲ ’šǤ ƒŽ‘‡ ‡‹ǡ čak i na takvim postavkama, bilo je teško razlučiti kakva grafika može biti bolja od toga. Kutije koje se mogu uzeti i nositi, razbiti, eksplozivne bačve, detaljni modeli lica (jedni od prvih takvih uopće!), revolucionarne refleksije, a kasnije Œ‡ †‘†ƒ ‹  ȋ ‹‰ŠǦ›ƒ‹  ƒ‰‡Ȍ ‘Œ‹ †ƒŒ‡ ‡ˆ‡– privikavanja očiju na svjetlost. Apsurd je da čak i dan danas, kada ponovno po nǦ–‹ ’—– ”‡‡ prelaziti taj klasik, grafika je i dalje vrhunska (a o gameplayju i priči da ni ne ‰‘˜‘”‹ȌǤ  ‰Žƒ˜‘ǡ ‘—” ‡ Œ‡ ’‘•–ƒ‘ ˜”Ž‘ ’‘’—Žƒ”ƒ ‡‰‹‡ǡ ’‘‰‘–‘˜‘ zato št‘ Œ‡ †‘œ˜‘ŽŒƒ˜ƒ‘Œ‡†‘•–ƒ˜‘•–˜ƒ”ƒŒ‡‘˜‹Šƒ’ƒǡ‘†‘˜ƒ‹†”—‰‹Š‡Ž‡ƒ–ƒ͵ •˜‹Œ‡–ƒǤ ƒ””›̵• ‘† Œ‡ ’”‹Œ‡” ƒ‘ Œ‡ ‘† œƒ ƒŽˆ ‹ˆ‡ ʹ •˜‘‡ •–˜ƒ”ƒ–‡ŽŒ— ƒ””›Œ—‡™ƒ—†‘‹‘‹Ž‹Œ—‡†‘Žƒ”ƒȏ͸ȐǤ  46 RAČUNALNE IGRE 2020

Mogućnosti ovog enginea također su dobro prikazane u jošjednoj fantastičnoj ˜‹†‡‘‹‰”‹ǡ ƒŽ˜‡‘˜‘ ‘”–ƒŽ—Ǥ  –‘Œ •‡ ’ƒ ˜‹†‡‘‹‰”‹, osim priče pune genijalnog crnog humora, ističe mogućnost ovoga enginea da stvara prolaze u ’”‘•–‘”—‘Œ‹˜‘†‡†‘†”—‰‹Š†‹Œ‡Ž‘˜ƒ‹•–‘‰’”‘•–‘”ƒǤ  ‡Ž‹‘—” ‡‰‹‡ƒŒ„‘ŽŒ‹‡‰‹e današnjice? Nije. To bi vjerojatno bio Unreal ‰‹‡Ǥ ƒŽ˜‡ •‡ ‹Œ‡ –‘Ž‹‘ „ƒ˜‹‘ ”ƒœ˜‹ŒƒŒ‡ •˜‘‰ ‡‰‹‡ƒ ‘Ž‹‘ •‡ „ƒ˜‹‘ drugim proizvodima poput Steama. Doduše, nedavno izašli Half Life Alyx u potpunosti je izrađen u S‘—” ‡ʹ‡‰‹‡—‹ƒŽ‘‘Œƒ˜‹†‡‘‹‰”ƒdanašnjice •‡ može po grafičkim mogućnostima —•’‘”‡†‹–‹ • ‘˜‘ ˜‹†‡‘‹‰”‘. Međutim, Source 2 još uvijek nije ni blizu rasprostranjen kao što će (barem po ‘ Zaštomišljenju 3D) prezentacija? biti u budućnosti.  

Mogu搑•–‹ ‘Œ‡ ƒ ˜‹†‡‘‹‰”‡ —†‡ •— „eskonačne. Moguće je potrošiti mjesece stvarajući već postojeću okolinuǡpazeći na najmanje detalje, a moguće Œ‡•–˜‘”‹–‹‹‡—‘˜—‘‘Ž‹—•‘˜‹œƒ‘‹ƒˆ‹œ‹‡Ǥ  Interakcija s takvim okolinama moguća je na mnogo načiƒǣ’”‹–‹•ƒƒ‰—„ǡ ’‘˜‡œ‹˜ƒŒ‡ ƒ„‡Žƒ od jedne stavke kroz prostor prema drugoj, običan prolazak kroz vrata, a čak i najjednostavniji pogled prema nekom elementu može biti okidač ‡‡ ƒ ‹Œ‡ nad njime. Tranzicije sa slajda na slajd više ne ‘”ƒŒ—„‹–‹’retapanje ili nekakav kič otkrivanja zastora. To sada može biti lift ‹Ž‹ƒ—–‘‘„‹Ž‘Œ‹•‡‘”‹•nik doveze do sljedećeg slajda: savršena podloga za ”ƒœ˜‘Œ ƒ•–ƒ˜‹Š ƒ–‡”‹ŒƒŽƒǨ ƒ•–ƒ˜‹ ƒ–‡”‹ŒƒŽ‹ ‘‰Ž‹ „‹ „‹–‹ ”‡ƒŽ‹œ‹”ƒ‹ ƒ‘ Š‘†‹•˜”ƒ–‹ƒ—‘Œ‡—•˜aka vrata vode u sobu s određenim •ŽƒŒ†‘‹• raspoređenim modelima ƒ‘Œ‡•‡•ŽƒŒ†ƒ†‘˜‡œ—Œ‡Ǥ‘„‹‘‰Žƒ„‹–‹‹•ƒ‘ Œ‡†ƒ•‘„ƒŠ‡•ƒ‰‘•‘‰‘„Ž‹ƒ—‘Œ‘Œƒ•˜ƒ‘œ‹†—’‘•–‘Œ‹•ŽƒŒ†ǡƒ‹•’”‡† svakog slajda nalaze se određeni modeli. Zamisli‘ u bližoj budućnosti ’”‡†ƒ˜ƒŒ‡ ƒ ˆƒ—Ž–‡–— ƒ‘ ‘Ž‹‡ •‡”˜‡” ‰†Œ‡ Œ‡ ’”‘ˆ‡•‘” ƒ†‹‹•–”ƒ–‘”ǡ ƒ studenti su igrači, pa svi sa svojim naočalama za virtualnu stvarnost hodaju ”‘œ ’”‡œ‡–ƒ ‹Œ— ‹ ‘•–˜ƒ”—Œ— ‹–‡”ƒ ‹Œ— • ƒ•–ƒ˜‹ ƒ–‡”‹ŒƒŽ‹ƒ ‘Œ‹ •— ‘†‡Ž‹•ˆ‹œ‹‘Ǥ  ƒ‘ †‡‘•–”ƒ–‘” ƒ ’”‡†‡–— ”‘‰”ƒ‹”ƒŒ‡ ͳǡ odlučio sam ozbiljnije –‡•–‹”ƒ–‹‘˜ƒŒ‘ ‡’––‡•ƒ˜‹†‡‘lekciji koja se bavi pokazivačima dodao i 3D †‹‘Ǥ”˜‘Œ‡’”‹ƒœƒ‘’‘ŽŒ‡̵ƒ̵•–”‹‡Ž‡‡–ƒ–ƒŽ‡Š‘†‹•–”‘Œƒ˜”ƒ–ƒ‘Œƒ •‡ ‘‰— ‘–˜‘”‹–‹Ǥ ‘–‘ Œ‡ ’‘ƒœƒƒ ”ƒ†ƒ ‡‘”‹Œƒ ‘Œƒ Œ‡ — „‹–‹ Œ‡†ƒ †‹˜‘˜•‹ Š‘†‹ • Š”’‘ ˜”ƒ–ƒǡ ƒ ‹œƒ† •˜ƒ‹Š ˜”ƒ–ƒ ƒŽƒœ‹ •‡ Œ‹Š‘˜ƒ heksadecimalna adresa. Određenim vratima se može pristupiti, otvoriti ih i pogledati/pročitati sadržaj iza njih. Na kontrolnoj ploči može se alocirati ’”‘•–‘” ‹ ’‘–‘ se neki podatak može pohraniti u n‘˜‘ †‘„‹˜‡ƒ ˜”ƒ–ƒǤ ƒ˜‡†‡‘Œ‡’”‹ƒœƒ‘ƒ•Ž‹ ‹„”ǤͳǤ 47 RAČUNALNE IGRE 2020





lia r 3D prezentacija pokazivača 

48 RAČUNALNE IGRE 2020

Studenti su mi se osobno javljali s pozitivnim reakcijama, rekavši kako im je –ƒƒ˜͵’”‹ƒœ—˜‡Ž‹‡’‘‘‰ƒ‘’”‹•ƒ˜ladavanju tog najtežeg dijela gradiva. Pretpostavljam da im je takav prikaz pomogao ne samo zato što je drugačiji od obične prezentacije natrpane tekstom, već i zato što im je nesvjesno irtaniœƒ‹ŽŒ‹˜‹Œ‹’”‹ƒœ”‘œ’”‹œ— interatini priaz natani˜‹†‡‘‹‰”‡‹’‘”‡–ƒ”‘œ˜‹”–—ƒŽ‹’”‘ aterijaa •–‘”Ǥ 

U nastavku je dodatno pokazano nekoliko isječaka onoga što je moguće ’‘•–‹ći ‘˜ƒ˜‘–‡Š‘Ž‘‰‹Œ‘ȋ•Ž‹‡„”ǤʹǦ͸ȌǤ  

lia r ria lia 

 ƒ•Ž‹ ‹„”Ǥʹ’”‹ƒœƒ‡•—•Ž‹‡„ƒ”‘‘‰•Ž‹ƒ”ƒƒ”ƒ˜ƒ‰‰‹ƒu odgovarajućem ƒ„‹Œ‡–—ǣ u špilju se ulazi iz mračne šume, unutra šumi vjetar i pucketaju kamenčići, a prilikom približavanja ovoj glavnoj sobi, u pozadini započinje •˜‹”ƒ–‹‘œƒ”–‘˜ƒƒ ”‹‘•ƒǤTo sve budi jedan set emocija i osjećaja koŒ‹•‡ nikada nije mogao niti će se ikada moći postići klasičnim prezentacijamaǤ˜ƒŒ prikaz njegovih slika nema teksta, očekuje se da predavač kaže sveono što je „‹–‘Ǥ˜ƒ˜ƒ’”‡œ‡–ƒ ‹Œƒ‹ƒœƒ†ƒ–ƒ‘•˜‘Œ‹–‹‰Ž‡†ƒ–‡ŽŒƒ†‘Œ‘˜‹ƒ—œ‘Œ‡ će mu sadržaj prezentacije još dugo ostati u sjećanju. 

49 RAČUNALNE IGRE 2020

lia r ria lie u vijetu 

ƒŽ‡”‹Œƒ•Ž‹ƒ”ƒ‹œ‹ƒƒȋ•Ž‹ƒ„”Ǥ͵Ȍu kojoj su pojedinačne sobe visoke 50Ǧƒ metara. Svaka soba sadržava vlastitu sliku veličine stotina metara kvadratnih. ‡‹œ˜‡†‹˜‘—•–˜ƒ”‘•–‹’‘•–ƒŒ‡‹œ˜‡†‹˜‘—˜‹†‡‘‹‰”‹Ǥ 

lia r Učenje o Alpama u 3D svijetu 

 ŽƒŒ† ‘ Ž’ƒƒ ’”‹ƒœƒ ƒ •Ž‹ ‹ „”Ǥ Ͷ dio je Alpa. Slajdovi više nikada ne –”‡„ƒŒ—„‹–‹’Ž‘Š‡ǡ•ƒ†ƒ‘‰—„‹–‹•ƒ˜‹Œ‡ni, zgužvani, kakvi god. Slajd može biti i

50 RAČUNALNE IGRE 2020

’‘”‡–ƒǡ ože „‹–‹ objekt na koji djeluje fizika, može ispuštati zvuk… Mogućnosti su neograničene. 

lia r Učenje o mjesecu putem šetnje mjesecom 

ŽƒŒ† ‘ Œ‡•‡ — ’”‹ƒœƒ ƒ •Ž‹ ‹ „”Ǥ ͷ •‡ ƒŽƒœ‹ ƒ Œ‡•‡ —Ǥ ”ƒ˜‹–ƒ ‹Œƒ Œ‡ •ƒŒ‡ƒ†a bude točno onakva kakvƒŒ‡ƒŒ‡•‡ —ǡƒ’”‹ƒœƒ‘Œ‡‹ƒ‘•‡ ‡ŽŒƒ˜‹†‹s površine Mjeseca. Isto bi se moglo napraviti za svaki drugi planet. —Œ‡ƒ”ƒ˜‘‹œƒ•–ƒ˜ƒ ƒ—Ž–‡–ƒ‘”‰ƒ‹œƒ ‹Œ‡‹‹ˆ‘”ƒ–‹‡Ǥ 

lia r Učenje o Internetu stvari (engl. IoT Internet of Thing 



51 RAČUNALNE IGRE 2020

ŽƒŒ†˜‡œƒœƒ ‘’”‹ƒœƒƒ•Ž‹ ‹„”Ǥ͸objašnjava kako ispravno spojiti neki ”‘–‘”—•–˜ƒ”‘•˜‹Œ‡–—Ǥ͵’”‡œ‡–ƒ ‹Œ‹ǡ‘”‹•‹‹•’”‘„ƒ˜ƒ‘˜‘•’ƒŒƒŒ‡‹ eaiziraniako uspješno prora izvrši spajanje za irt, modelani interatinirotora se počinje priaz vrtjeti. natani aterijaa 

”‘‰”ƒ Œ‡ ”‡ƒŽ‹œ‹”ƒn korištenjem ”ƒœ˜‘Œ‘‰ okruženjƒ ‹•—ƒŽ –—†‹‘ ‹ ’”‘‰”ƒ•‘‰ Œ‡œ‹ƒ ͓Ǥ ƒ •Ž‹ ‹ „”Ǥ ͹ ’”‹ƒœƒ Œ‡ ’”‘ ‡•ƒ ‰‡‡”‹”ƒŒƒ ͵ ’”‘•–‘”ƒ–‡‡ŽŒ‡‘†ƒ„”ƒ‘‰•‡–ƒ•ŽƒŒ†‘˜ƒǤ

lia r retvaranje reentaije u rtr

52 RAČUNALNE IGRE 2020

lia r lajdvi u rtru 

ƒ •Ž‹ ‹ „”Ǥ ͻ ’”‹ƒœƒ‘ Œ‡ ƒ‘ „‹ ‹œ‰Ž‡†ƒŽ‹ •ŽƒŒ†‘˜‹ ƒ†ƒ „‹ ‹Š •‡ ‰Ž‡†ƒŽ‘ ‹œ †”—‰‡’‡”•’‡–‹˜‡ǡ‹œ˜ƒ‰‡‡”‹”ƒ‘‰’”‘•–‘”ƒǤ”‘‰”ƒŒ‡‰‡‡”‹”ƒ‘Ͷ•‘„‡œƒ Ͷ •ŽƒŒ†ƒ –‡ Œ‡ — •˜ƒ— •‘„— — ͵ ’”‘•–‘”— •Œ‡•–‹‘ †”—‰‹ •ŽƒŒ†ǡ ƒ ‘”‹•‹ •‡ Kakostvorio postići u malenoj automatski početnoj generiran sobici prijei protor?prvog slajda. 

‹†‡‘‹‰”ƒ(u ovom slučaju Half Life 2) razumije prostor zapisan u datoteci s ȗǤ„•’‡•–‡œ‹Œ‘Ǥ  •–‡œ‹Œ‡ ȗǤ„•’ ȋ”ƒ–‹ ƒ œƒ ‹ƒ”› ’ƒ ‡ ƒ”–‹–‹‘‹‰Ȍ •˜‘Œ ‘”‹Œ‡ ˜—— †ƒŽ‡‘ — prošlost, ‹œ •–ƒ”‘‰ —ƒ‡ ‰ƒ‡ ‡‰‹‡ƒǤ •–— ‡•–‡œ‹Œ— œƒ „‹ƒ”‹ œƒ’‹•‘’ƒŒŽ‹”ƒ‹Šƒ’ƒ‘”‹•–‡‹•–ƒ”‹‡†ƒŽ‘ˆ ‘‘”ȋ’”ǤŽŽ‹‡†••ƒ—Ž–Ȍǡ ranije inačice videoigre Call of Duty.Kao što je već spomenuto,•–ƒ”‹‘ Ǧ‘˜‹‹ ”ƒ‹‘Ǧiji imaju jednu zajedničku karakteristiku, ‘„ƒ‘˜ƒ•‡”‹ŒƒŽƒ‘”‹•–‡‹•–‹ ’”‘‰”ƒȋƒ†‹ƒ–Ȍœƒ‹œ”ƒ†—Œ‹Š‘˜‹Šƒ’ƒȏ͹ȐǤ  Zašto je važan program u kojemu se rade mape? Zato što su one, prilikom •˜‘Œ‡‹œ”ƒ†‡ǡœƒ’‹•ƒ‡—–‡•–—ƒŽ‘‘„liku, baš poput programskog koda. Dok ‘•‘„ƒ zaduženƒ za kreiranje mapa izrađuje mapu u programu za Source ‰‹‡‘Œ‹•‡œ‘˜‡ ƒ‡”ǡ–ƒŒ’”‘‰”ƒ—„‹–‹–‡•–—ƒŽ‘œƒ’‹•—Œ‡–—ƒ’—Ǥ Upravo je odgovarajuće rješenje u C#Ǧ—ǡ ‘Œ‡ Œ‡ †‹‘ ’”‹ƒœƒ‘‰ ’”‘–‘–‹’ƒ œƒ ‰‡‡”‹”ƒŒ‡ ’”‡œ‡–ƒ ‹Œƒ — ͵ ’”‘•–‘”—ǡ izrađeno kako bi određene blokove

53 RAČUNALNE IGRE 2020

‘†ƒ kojim se opisuje mapa bilo moguće —Ž–‹’Ž‹ ‹”ƒ–‹ ‘‘Ž‹‘ ’—–ƒ ‘Ž‹‘ Zaključakprezentacija ima slajdova te time stvoriti sobu za svaki pojedinačni slajd.

ʹͲʹͲǤ Œ‡ ƒ ‹œƒ—ǡ ƒ œƒ ’‘–”‡„‡ ’”‡œ‡–‹”ƒŒƒ •‡ •˜‡Œ‡†‘ ƒŒ‡Ǧviše •–ƒ†ƒ”†‘ koriste 2D prezentacije kao i prije 80 godina. Mogućnosti ‘Œ‡ †‘‘•‹”ƒœ˜‘Œ˜‹†‡‘igara i njihovih enginea su beskonačne, a dodatnu svrhu bi ‹ •˜ƒƒ‘ ‘‰Ž‹ †ƒ–‹ ‹ ƒ•–ƒ˜‹ ƒ–‡”‹ŒƒŽ‹ ‹œ ƒŒ”ƒzličitijih područja. To bi približ‹Ž‘ ƒ•–ƒ˜‡ ƒ–‡”‹ŒƒŽ‡ •–—†‡–‹ƒ Œ‡” „‹ ’”‡—œ‡Ž‹ œƒ‹ŽŒ‹˜‹Œ‹ ‹ —œ„—†ŽŒ‹˜‹Œ‹‘†‡Ž˜‹†‡‘‹‰ƒ”ƒǤ˜‡†‡‡„‹„‹Ž‡‹”ƒœ‹do sada nemoguć‹ƒ•’‡–‹ ‹ ‡Ž‡‡–‹: promjenjivi ambijent s obzirom na lokaciju slajda, ozračje i –‡ƒ–‹— ’”‡œ‡–ƒ ‹Œ‡ǡ ‹–‡”ƒ–‹˜‹ ‘†‡Ž‹ ’—–‡ ‘Œ‹Š •–—†‡– ‘že provjeriti i potvrditi naučeno gradivo, ‰—„‹ǡ˜‘œ‹Žƒ‹–†Ǥ  Konačno, u budućnosti će zasigurno biti moguće ’”‡†ƒ˜ƒŒƒ ‘”‰ƒ‹œ‹”ƒ–‹ ’—–‡ ‘Ž‹‡ •‡”˜‡”ƒǡ pri čemu svi sudionici imaju naočale zƒ ˜‹”–—ƒŽ— •–˜ƒ”‘•– ‹ Š‘†ƒŒ— ”‘œ ƒ•–ƒ˜‡ ƒ–‡”‹ŒƒŽ‡ • ’”‡†avačima, djelujući nad 3D modelima izrađenima po uzoru naeerence †‹Œ‡Ž‘˜‡•–˜ƒ”‘‰•˜‹Œ‡–ƒƒ‘Œ‡•‡ƒ•–ƒ˜‹ ƒ–‡”‹ŒƒŽ‹‘†‘•‡Ǥ   ȏͳȐ Š‹ Š‹•–Š‡ˆ‹”•–͵‰ƒ‡ǫǡŠ––’•ǣȀȀ™™™Ǥ“—‘”ƒǤ ‘ȀŠ‹ ŠǦ‹•Ǧ–Š‡Ǧˆ‹”•–Ǧ ͵Ǧ‰ƒ‡ǡ’”‹•–—’ŽŒ‡‘͹ǤͶǤʹͲʹͲǤ ȏʹȐ ‹”‡ – ͳʹǣ ™Šƒ– ‹• ‹–ǡ ƒ† ™Š› ‹– ƒ––‡”• –‘  ‰ƒ‡”•ǡ Š––’•ǣȀȀ™™™Ǥ–‡ Š”ƒ†ƒ”Ǥ ‘Ȁ‡™•Ȁ‰ƒ‹‰Ȁ†‹”‡ –šǦͳʹǦ™Šƒ–Ǧ‹•Ǧ‹–Ǧƒ†Ǧ ™Š›Ǧ‹–Ǧƒ––‡”•Ǧ–‘Ǧ’ Ǧ‰ƒ‡”•Ǧͳ͵ͳͺ͸͵͸ǡ’”‹•–—’ŽŒ‡‘͹ǤͶǤʹͲʹͲǤ ȏ͵Ȑ Šƒ–‹•ƒ ƒ‡‰‹‡ǫǡ Š––’•ǣȀȀ™™™Ǥ‰ƒ‡ ƒ”‡‡”‰—‹†‡Ǥ ‘Ȁˆ‡ƒ–—”‡•ȀͷʹͻȀ™Šƒ–̴‹•̴ƒ̴‰ƒ‡̴Ǥ’Š’ǡ ’”‹•–—’ŽŒ‡‘͹ǤͶǤʹͲʹͲǤ ȏͶȐ ‘—” ‡ʹǡŠ––’•ǣȀȀ†‡˜‡Ž‘’‡”Ǥ˜ƒŽ˜‡•‘ˆ–™ƒ”‡Ǥ ‘Ȁ™‹‹Ȁ‘—” ‡̴ʹǡ ’”‹•–—’ŽŒ‡‘͹ǤͶǤʹͲʹͲǤ ȏͷȐ ™ƒ”†•ƒ† ‘‘”•ǡ Š––’•ǣȀȀ™‡„Ǥƒ” Š‹˜‡Ǥ‘”‰Ȁ™‡„ȀʹͲͳͶͲͳͲͺͲͺ͵Ͳ͵ͺȀŠ––’ǣȀȀ™™™Ǥ˜ƒŽ˜‡•‘ˆ– ™ƒ”‡Ǥ ‘Ȁƒ™ƒ”†•ǤŠ–Žǡ’”‹•–—’ŽŒ‡‘͹ǤͶǤʹͲʹͲǤ ȏ͸Ȑ ‘™ƒ̵–‘–ƒŽƒ ‹†‡–̵Ž‡†–‘ ƒ””›̵•‘†̵•ˆ—‹‡•–ˆ‡ƒ–—”‡ƒ†ͳͷ›‡ƒ”• ‘ˆ–™‹•–‡†•— ‡••ǡŠ––’•ǣȀȀ™™™Ǥ’ ‰ƒ‡”Ǥ ‘Ȁ‰ƒ””›•Ǧ‘†Ǧ‹–‡”˜‹‡™Ȁǡ ’”‹•–—’ŽŒ‡‘͹ǤͶǤʹͲʹͲǤ ȏ͹Ȑ Ǥ ‹Ž‡š–‡•‹‘ǡŠ––’•ǣȀȀˆ‹Ž‡‹ˆ‘Ǥ ‘Ȁ‡š–‡•‹‘Ȁ„•’ǡ’”‹•–—’ŽŒ‡‘ ͹ǤͶǤʹͲʹͲǤ

54 RAČUNALNE IGRE 2020

zraa acije 3D ire prorao aat nit

Antonio Oletić i ario oneci  aletiir arineiir Fakultet organizacije i informatike, Sveučilište u Zagrebu

Sažetak 

Na početku ovog rada ‘’‹•ƒ Œ‡ žanr 3D akcijskih ˜‹†‡‘‹‰ƒ”ƒǤ ƒ‘ –‘‰ƒ Œ‡ †ƒ ’”‹ƒœ ”ƒœ˜‘Œ‘‰ sučeljƒ ‹–› ‘Œ‡ Œ‡ korišteno za razvoj videoigre ’”‹ƒœƒ‡—‘˜‘”ƒ†—ǤUz opis korisničkog sučelja i alata UnityǦŒƒ‘’‹•ƒ‹•—‹ •˜‹‘”ƒ ‹’‘–”‡„‹œƒ‹œ”ƒ†—Œ‡†‡Œ‡†‘•–ƒ˜‡͵ƒ ‹Œ•‡˜‹†‡‘‹‰”‡—‘Œ‘Œ se prelazak razine postiže skupljanjem određenog broja objekata št‘ Œ‡ otežano pomoću AI neprijatelja. Na kraju će ’”‹ƒœƒ izrađen programski Ključne’”‹Œ‡”Œ‡†‡͵ƒ ‹Œ•‡ riječi ˜‹†‡‘‹‰”‡Ǥ  o ǣ‹–›ǡ˜‹†‡‘‹‰”ƒǡƒ ‹Œ•ƒ‹‰”ƒǡ͵

˜ƒŒ ”ƒ† ’”‹ƒœ—Œ‡ ‘’Ž‡–ƒ ’”‘ ‡• ‹œ”ƒ†‡ ͵ ˜‹†‡‘‹‰”‡Ǥ †—•–”‹Œƒ ˜‹†‡‘‹‰ƒ”ƒ‘nstantno raste pa se tako pojavljuje sve više razvojnih ‘‘Ž‹ƒœƒ ‹œ”ƒ†—˜‹†‡‘‹‰ƒ”ƒǤ‡ƒ˜‡Ž‹a poduzeća‘Œ‡•‡„ƒ˜‡‹œ”ƒ†‘˜‹†‡‘‹‰ƒ”ƒ•—•‡ čak odlučilƒœƒ”‡‹”ƒŒ‡•˜‘Œ‹Š”ƒœ˜‘Œ‹Š‘‘Ž‹ƒ, no unatoč tome tržištem još uvijek dominiraju dva „diva“ za ‹œ”ƒ†— ˜‹†‡‘‹‰ƒ”ƒǡ ƒ –‘ •—ǣ ‹–› ‹ ”‡ƒŽ ‰‹‡Ǥ  ‘˜‘ ”ƒ†— bit će prikazana proces izrade videoigre — ”ƒœ˜‘Œ‘ okruženju ‹–›Ǥ Prvo će biti dan prikaz 3D akcijske videoigre i opis ovog žanra, a nakon toga će korištena razvojna okolina biti uspoređenƒ•†”—‰‘ ƒŒ’‘’—Žƒ”‹Œ‘”ƒœ˜‘Œ‘‘‘Ž‹‘Ǥ  Unity je vrlo sadržajnƒ ‹ ‹–—‹–‹˜ƒ ”ƒœ˜‘Œƒ ‘‘Ž‹ƒ. Sadrži puno gotovih funkcija koje početnicima u toj industriji pomažu kod razvoja ˜‹†‡‘‹‰ƒ”ƒǤ‹–› ••‡– –‘”‡ Œ‡ ‹–›ǦŒ‡˜ƒ ‘Ž‹‡ –”‰‘˜‹ƒ ”‡•—”•‹ƒ ‘Œƒ Œ‡ Œ‡†ƒ ‘† ”ƒœŽ‘‰ƒ zašto je Unity toliko popularan među početnicima. Tamo se jednostavno m‘‰— pronaći proširenja za Unity, kao i ‰‘–‘˜‹ ͵ ‘†‡Ž‹ǡ œ˜—‘˜‹ –‡ ƒ‹ƒ ‹Œ‡Ǥ †ƒ„‹” ’”‹•–—’ƒ ”ƒœ˜‘Œ— ˜‹†‡‘‹‰ƒ”ƒ Œ‡ ˜”Ž‘ važan i bit će prokomentiran u oncept‘˜‹”—‘˜‘‰”ƒ†ƒ Ǥ

Tema projekta je prototip 3D akcijske igre. Na početku razvoja ˜‹†‡‘‹‰”‡ǡ„‹Ž‘

Œ‡ ’‘–”‡„‘ ‘•‹•Ž‹–‹ ‰‡‡”ƒŽ‹ ‘ ‡’–Ǥ †ƒ„”ƒ Œ‡ •—•–ƒ˜ ’”‹—’ŽŒƒŒƒ 55 RAČUNALNE IGRE 2020

‘„Œ‡ƒ–ƒ ƒŽ‹ ƒ ‘˜ƒ‹ ‡ — ˜‹†‡‘‹‰”‹ —’‡” ƒ”‹‘Ǥ ‹ŽŒ ˜‹†‡‘‹‰”‡ Œ‡ ’”‹—’ŽŒƒŒ‡‘dređen‘‰„”‘Œƒ‘„Œ‡ƒ–ƒǤƒ‘–‡”‡‘†ƒ„”ƒƒŒ‡†‘Ž‹ƒ•’‘‘Œ‹ „”†‘ǡomeđena planinama sa svih strana. Planine predstavŽŒƒŒ—”ƒŒ•˜‹Œ‡–ƒǤ †‘Ž‹‹ •‡ ƒŽƒœ‡ i dva jezera spojena malom rječicom. Nakon osmišljavanja ‘ ‡’–ƒ–‡”‡ƒǡ ‹ŽŒƒ‹načina igranja˜‹†‡‘‹‰”‡ǡ„‹Ž‘Œ‡’‘–”‡„‘—‹Œ‡–‹‡‡ funkcionalnosti koje bi otežale igru te j‡ samim time učinile zanimljivijom. ‡ˆ‹‹”ƒ‹•—‡’”‹Œƒ–‡ŽŒ‹‘Œ‹će slijediti glavnog lika te mu oduzimatiživotne bodove. Životni bodovi •‡ ’”‹ƒœ—Œ— ƒ ‡”ƒ— ‹ ƒ‘ ‰Žƒ˜‹ Ž‹ ‘•–ƒ‡ „‡œ životnih bodova, umire. Kada ‰Žƒ˜‹ Ž‹ —”‡ǡ ‹‰”ƒ počinje ispočetka. ƒ‘ definiranja navedenih aspekata, moguće je krenuti • ‹œ˜‡†„‘ — ”ƒœ˜‘Œ‘Œ ‘‘Ž‹‹‹–›Ǥ”‡‹”ƒŒ‡‘˜‹’”‘Œ‡–‹Ž‹‘ƒ‰—„‡™ ‡‡•–˜‘”‡ƒŒ‡ retanje‘˜ƒ’”ƒœ anoa scena. ia Scene se može‹–‡”’”‡–‹”ƒ–‹ƒ‘Œ‡†ƒ‹˜‘—‹–›ǦŒ—Ǥ 

”‡–ƒŒ‡‰Žƒ˜‘‰Ž‹ƒŒ‡˜”Ž‘važno—•˜ƒ‘Œ˜‹†‡‘‹‰”‹Ǥ’”‹ƒœƒ‘Œ˜‹†‡‘‹‰”‹ǡ ‰Žƒ˜‹Ž‹•‡kreće u tri osi zbog toga štoŒ‡‹‰”ƒrađena u͵Ǧ—Ǥ Žƒ˜‹Ž‹•‡ može ”‡–ƒ–‹ –‹’ƒƒ ǡ A, S, D ili strelicama. Glavni lik može ‹ •ƒƒ–‹ ’”‹–‹•‘ƒ–‹’—’ƒ ‡te može brzo trčati uz držanje tipke Left ShiftǤ  Unity sadrž‹„‡•’Žƒ–‹’ƒ‡–‘Œ‹•‡œ‘˜‡–ƒ†ƒ”†••‡–•Ǥ–‘’ƒ‡–—’‘•–‘Œ‹ ˜‡”œ‹Œƒ ‰‘–‘˜og upravljača iz pr˜‘‰ Ž‹ ƒ koju je moguće koristiti s ˆ— ‹‘ƒŽ‘•–‹ƒ Š‘†ƒŒƒ, trčaŒƒǡ ‘”‡–ƒŒƒ ‹ •ƒƒŒƒǤ ‘† ‘Œ‹ ‹’Ž‡‡–‹”ƒtrčanje i hodanje glavnog lika ’”‹ƒœƒŒ‡—˜‹†Œ‡–‹—ƒ•–ƒ˜—Ǥ  Na početku koda provjerava se unos ƒ‘ „‹ •‡ —–˜”†‹Ž‘ kreće li se igrač Š‘”‹œ‘–ƒŽ‘‹Ž‹˜‡”–‹ƒŽ‘Ǥ‘se igrač kreće ‹drži tipk—‡ˆ–Š‹ˆ–ǡ–ƒ”‡–Œƒ se registrira kao trčanje. Na kraju koda se postavlja brzina kretanja ovisno ‘ –‘‡”ƒ†‹Ž‹•‡‘–”private void GetInput(outčanju‹Ž‹Š‘†ƒŒ float speed)—Ǥ { // je li unos horizontalno kretanje ili vertikalno float horizontal= CrossPlatformInputManager.GetAxis("Horizontal"); float vertical = CrossPlatformInputManager.GetAxis("Vertical"); bool waswalking = m_IsWalking;

#if !MOBILE_INPUT // ukoliko je pritisnuta tipka left shift onda trči m_IsWalking = !Input.GetKey(KeyCode.LeftShift); #endif // postavljamo željenu brzinu na hodanje ili trčanje speed = m_IsWalking ? m_WalkSpeed : m_RunSpeed; m_Input = new Vector2(horizontal, vertical);

}

 

56 RAČUNALNE IGRE 2020

ncionanot neprijatelja koji prati igrača

ƒ‹Œ‡ Œ‡ †‘†ƒ ‘„Œ‡– ˜‘Œ‹ƒ ——tar prve scene koji će u ˜‹†‡‘‹‰”‹ ’”‡†•–ƒ˜ŽŒƒ–‹‡’”‹Œƒ–‡ŽŒƒǤƒ‘–‘‰ƒŒ‡†‘†ƒ‹‰‹†„‘†›‹ƒ’•—Ž‡‘ŽŽ‹†‡”–‡ sada vojnik ima fizički oblik. Trenutačno vojnik ne radi ništa te je potrebno ƒ’”ƒ˜‹–‹ˆ— ‹‘ƒŽ‘•–†ƒ˜‘Œ‹•Ž‹Œ‡†‹‹ƒ’ƒ†ƒigrača. Implementirat će se ˆ— ‹‘ƒŽ‘•– †ƒ •‡, ako glavni igrač svojim kretnjama dođe na određenu daljinu, vojnik okreće za njim.   Klasa ChasePlayer služ‹ — –— •˜”hu. Na početku •‡ deklarira igrača prema kojemu će se transformirati kretnje vojnika ‹ †‡Žƒ”‹”ƒ •‡ animator pomoću ‘Œ‡‰ƒće˜‘Œ‹„‹–‹ƒ‹‹”ƒǤ  ‡–ƒŽŒ‹Œ‡‘ƒ‹ƒ–‘”—će biti riječiu sljedećem poglavlju. — ‹Œƒ’†ƒ–‡ȋȌǡ koja se izvršava više puta u sekundi, †‡ˆ‹‹”ƒ†ƒ•‡ǡƒ‘se glavni igrač nalazi na lokaciji bližoj od 15 mjernih jedinica, vojnik okreće prema igraču. Nakon što se vojnik okrene prema igraču, animator •‡ ’‘•–ƒ˜ŽŒƒ ƒ Š‘†ƒŒ‡ –‡ ˜‘Œ‹ kreće prema igraču „”œ‹‘‘†ͲǤͲͷˆǤƒ†ƒ–‘‹œ‰Ž‡†ƒƒ‘†ƒ˜‘Œ‹Ž‡„†‹Œ‡” još uvijek ‡’‘•–‘Œ‡‹ƒ˜‡ƒ‹ƒ ‹Œ‡˜‡œƒ‡œƒ”‡–Œ‡˜‘Œ‹ƒǤƒ‘–‘‰ƒ ’”‘˜Œ‡”ƒ˜ƒ•‡je li vojnik bliži od 2 mjerne jedinice. Tada •‡ƒ‹ƒ–‘”’‘•–ƒ˜ŽŒƒ na napadanje i vojnik će početi napadati glavnog igrača.ƒŒƒ’ƒ†•‡‡˜‹†‹ jer još ‡ ’‘•–‘Œ‹ ‹ƒ˜ƒ ƒ‹ƒ ‹Œƒ. U slučaju da je vojnik dalje od glavnog igrača za 15 mjernih jedinica, animator•‡’‘•–ƒ˜ŽŒƒƒŒ‡‰‘˜— †Ž‡ƒ‹ƒ ‹Œ—ǡ upublic kojoj seclass on laganoChasePlayer pomiče : naMonoBeha mjestu.viour  { public Transform player; private Animator anim;

void Start() { anim = GetComponent(); }

// Update is called once per frame void Update() { if(Vector3.Distance(player.position, this.transform.position) < 15) { Vector3 direction = player.position - this.transform.position; direction.y=0;

this.transform.rotation=Quaternion.Slerp (this.transform.rotation, Quaternion.LookRotation(direction), 0.1f);

anim.SetBool("isIdle", false); if(direction.magnitude > 2) { this.transform.Translate(0, 0 ,0.05f);

57 RAČUNALNE IGRE 2020

anim.SetBool("isWalking", true); anim.SetBool("isAtacking", false); } else{ anim.SetBool("isAtacking", true); anim.SetBool("isWalking", false); player.GetComponent().TakeDamage(1);

} } else{ anim.SetBool("isIdle", true); anim.SetBool("isWalking", false); anim.SetBool("isAtacking", false); }

} }

Funkcionalnost smanjivanja životnih bodova

ƒ’ƒ†‹ ’”‘–‹˜‹ƒ — ˜‹†‡‘‹‰”‹ „‹Ž‹ „‹ „‡•‘”‹•‹ †ƒ ‡ ’”‡†•–ƒ˜ŽŒƒŒ— ’”‹Œ‡–Œ— glavnom igraču. U tu svrhu potrebno je kreirati životne bodove igrača. ”‡‹”ƒ‹ •——‘„Ž‹—–”ƒ‡‘Œƒ•‡ƒŽƒœ‹ƒ•”‡†‹‹‡”ƒƒǤ”ƒƒŒ‡œƒ’”ƒ˜‘–ƒ‘œ˜ƒ‹ Ž‹†‡” te se popunjenost trake bojom može kontrolirati povećavanjem i public•ƒŒ‹˜ƒŒ‡˜”‹ class HealthBarŒ‡†‘•–‹Ǥƒ”‡‹”ƒ : MonoBehaviournje te trake zadužena je klasa HealthBarǤ { public Slider slider;

public void SetMaxHealth(int health){ slider.maxValue = health; slider.value = health; } public void SetHealth(int health){ slider.value =health; } }

 Na početku Œ‡ †‡Žƒ”‹”ƒ Ž‹†‡” ‘Œ‹ Œ‡ ’”‡†•–ƒ˜ŽŒƒ –”ƒ— životnih bodova. U ˆ— ‹Œ‹‡–ƒš ‡ƒŽ–Š’‘•–ƒ˜ŽŒƒ•‡˜”‹Œ‡†‘•–ƒ•‹ƒŽ‡˜”‹Œ‡†‘•–•Ž‹†‡”ƒƒ ˜ƒ”‹Œƒ„Ž— Šealth. Također se posta˜ŽŒƒ trenutačna ˜”‹Œ‡†‘•– •Ž‹†‡”ƒ ƒ ˜ƒ”‹Œƒ„Ž—Š‡ƒŽ–ŠǤˆ— ‹Œ‹‡– ‡ƒŽ–Štrenutačna˜”‹Œ‡†‘•–•Ž‹†‡”ƒ•‡’‘•–ƒ˜ŽŒƒ na varijablu health. Te funkcije ćemo pozivati u sljedećoj klasi koja je zadužena œƒ‘†publicređivanje class PlayerHealth igračevih životnih : MonoBehaviour bodova. To je klasa Žƒ›‡” ‡ƒŽ–ŠǤ { public int maxHealth = 3000; public int currentHealth;

public HealthBar healthBar;

58 RAČUNALNE IGRE 2020

void Start() { currentHealth = maxHealth; healthBar.SetMaxHealth(maxHealth); }

public void TakeDamage(int damage){ if(PauseMenuScript.GameisPaused==false){ currentHealth -= damage;

healthBar.SetHealth(currentHealth); if(currentHealth==0){ FindObjectOfType().EndGame(); } } } }

 Na početku Œ‡†‡Žƒ”‹”ƒƒ˜ƒ”‹Œƒ„Žƒƒš ‡ƒŽ–Š–‡Œ‡’‘•–ƒ˜ŽŒ‡ƒƒ˜”‹Œ‡†‘•– 3000. Također Œ‡ †‡Žƒ”‹”ƒƒ ‹ ˜ƒ”‹Œƒ„Ž— —””‡– ‡ƒŽ–Š ‘Œƒ ’”‡†•–ƒ˜ŽŒƒ trenutačne životne bodove. Deklariran je i objekt healthBar koji predstavlja –”ƒ— životnih bodova. Prije ’”‹ƒœƒ prve sličice u igri, izvršava •‡ ˆ— ‹Œƒ –ƒ”–ȋȌǤ  –‘Œ ˆ— ‹Œ‹ deklarirani su trenutačni „‘†‘˜‹ǡ na početku ujedno i ƒ•‹ƒŽ‹„‘†‘˜‹–‡Œ‡—Žƒ•‹ ‡ƒŽ–Šƒ”†‡ˆ‹‹”ƒ‘†ƒ•—ƒ•‹ƒŽ‹„‘†‘˜‹ Œ‡†ƒ‹ ˜ƒ”‹Œƒ„Ž‹ ‘Œƒ Œ‡ †‡Žƒ”‹”ƒƒ na početku ov‡ Žƒ•‡Ǥ  ˆ— ‹Œ‹ ƒ‡ƒƒ‰‡ ‘Œƒ •‡ ’‘œ‹˜ƒ ƒ†ƒ ˜‘Œ‹ ƒ’ƒ†ƒ ’”‘˜Œ‡”ƒ˜ƒ •‡ Œ‡ Ž‹ ‹‰”ƒ ’ƒ—œ‹”ƒƒ‹Ž‹‡Ǥ‘Ž‹‘‹‰”ƒ‹Œ‡’ƒ—œ‹”ƒƒǡ‘†trenutačnihživotn‹Š„‘†‘˜ƒ•‡ oduzima šteta koja se zadaje u postavkama HealthBara. Kada životni bodovi igrača dođu do nule, igra se završava. Kako su ž‹˜‘–‹ „‘†‘˜‹ ’”‹ƒœƒ‹ izrašenoj videoigri može se vidjeti na•Ž‹ ‹ͳǤ

Slika br. 1: Životni bodovi igrača

Zaključak 

 Akcijske igre su samo jedan od mnogih žanrova ˜‹†‡‘‹‰ƒ”ƒ. Njihova dinamična ’”‹”‘†ƒ ‹ „‘”„ƒ • ’”‡’”‡kama i neprijateljima, korištenje oružja i alata te ’”‡†‹˜‹•˜Œ‡–‘˜‹—‘Œ‹ƒ•‡‘†˜‹ŒƒŒ—ǡ†‘’”‹‘•‡–‘‡†ƒ•—ƒ ‹Œ•‡˜‹†‡‘‹‰”‡ jedne od najigranijih, ako ne i naigraniji žanr ˜‹†‡‘‹‰ƒ”ƒǤ †ƒ„‹” ”ƒœ˜‘Œ‡ ‘‘Ž‹‡za izradu akcijske igre je takođe”˜”Ž‘važan. Unity je u prošlosti bio †‘‹ƒ–ƒ——•’‘”‡†„‹•”‡ƒŽ‰‹‡Ǧ‘Ǥƒ†‹ƒŽ‹’”‘Œ‡ƒƒ”‡ƒŽ ‰‹‡Ǧƒ•ƒŒ—Œ‡•‡”ƒœŽ‹ƒ—†‘‹ƒ–‘•–‹‹–›ǦŒ‡˜‡”ƒœ˜‘Œ‡‘‘Ž‹‡–‡•‡ može reći da su danas obŒ‡”ƒœ˜‘Œ‡‘‘Ž‹‡—’—‘•‡‰‡ƒ–ƒ’‘†Œ‡†ƒ‡Ǥƒ ‹œ”ƒ†— prikazanog prototipa videoigre korišten je ‹–› • ’”‘‰”ƒ•‹

59 RAČUNALNE IGRE 2020

jezikom C#. Unity je vrlo jednostavan za korištenje te sadrži pregršt alata za izradu jednostavne 3D akcijske igre. Lako se snalaziti sučeljem UnityǦa što †‘’”‹‘•‹–‘‡ †ƒ Œ‡ ‹–›˜rlo popularan među početnicima. Unity također uvelike olakšava uvođenj‡ ͵ ‘†‡Žƒeerence‹ ’”‹Œ‡Œ‹˜ƒŒ ‡ ƒ‹ƒ ‹Œƒ ƒ –‡ ‹•–‡ ‘†‡Ž‡Ǥ

ȏͳȐ ‹•–‘”›Ǥ ‘†‹–‘”•ǡʹͲͳ͹ǡ‹†‡‘ ƒ‡ ‹•–‘”›Ǥ‘•–—’‘ǣȏʹͲǤ͸ǤʹͲʹͲǤȐ ȏʹȐ ƒ†‘ǡ  –‹‘ ƒ†˜‡–—”‡ ‰ƒ‡Ǥ ‘•–—’‘ǣ Š––’•ǣȀȀ˜‹†‡‘‰ƒ‡Š‹•–‘”›Ǥˆƒ†‘Ǥ ‘Ȁ™‹‹Ȁ –‹‘Ǧƒ†˜‡–—”‡̴‰ƒ‡ ȏʹͲǤ͸ǤʹͲʹͲǤȐ ȏ͵Ȑ Imagine Media, The Next Generation 1996 Lexicon A to Z, Časopis broj 15, ǣ —„Ž‹ ƒ–‹‘•ȋͳͻͻ͸Ȍ ȏͶȐ ‹ ‡ǡ ‘™ ‹–›͵ ‡ ƒ‡ ƒ ƒ‡Ǧ‡˜‡Ž‘’‡– ‡ƒ•–Ǥ ‘•–—’‘ǣ Š––’•ǣȀȀ‹•‹‰Š–•Ǥ†‹ ‡Ǥ ‘ȀʹͲͳ͵ȀͲ͸ȀͲ͵ȀŠ‘™Ǧ—‹–›͵†Ǧ„‡ ‘‡ǦƒǦ‰ƒ‡Ǧ †‡˜‡Ž‘’‡–Ǧ„‡ƒ•–ȏʹͳǤ͸ǤʹͲʹͲǤȐ ȏͷȐ ”•‡ Š‹ ƒǡ‹–›ƒ–ͳͲǣ ‘”„‡––‡”—‘”™‘”•‡—‰ƒ‡†‡˜‡Ž‘’‡–Šƒ• ‡˜‡” „‡‡ ‡ƒ•‹‡”Ǥ ‘•–—’‘ǣ Š––’•ǣȀȀƒ”•–‡ Š‹ ƒǤ ‘Ȁ‰ƒ‹‰ȀʹͲͳ͸ȀͲͻȀ—‹–›Ǧƒ–ǦͳͲǦˆ‘”Ǧ„‡––‡”Ǧ‘”Ǧ ™‘”•‡Ǧ‰ƒ‡Ǧ†‡˜‡Ž‘’‡–ǦŠƒ•Ǧ‡˜‡”Ǧ„‡‡Ǧ‡ƒ•‹‡”ȀȏʹͳǤ͸ǤʹͲʹͲǤȐ ȏ͸Ȑ ‹–› ‡ Š‘Ž‘‰‹‡•ǡ ʹͲʹͲǡ ‹–› ˆ‘” ƒŽŽǤ ‘•–—’‘ǣ Š––’•ǣȀȀ—‹–›Ǥ ‘ ȏʹͳǤ͸ǤʹͲʹͲǤȐ ȏ͹Ȑ ’‹  ‰ƒ‡•ǡ ʹͲʹͲǡ ”‡ƒŽ ‡‰‹‡Ǥ ‘•–—’‘ǣ Š––’•ǣȀȀ™™™Ǥ—”‡ƒŽ‡‰‹‡Ǥ ‘Ȁ‡ǦȀˆ‡ƒ–—”‡•ȏʹͳǤ͸ǤʹͲʹͲǤȐ ȏͺȐ ”‘‰”ƒǦ ‡ǡ ‹–› ˜•Ǥ ”‡ƒŽǣ Šƒ– –‘ Š‘‘•‡ ˆ‘” ‘—” ”‘Œ‡ –ǫ ‘•–—’‘ǣ Š––’•ǣȀȀ’”‘‰”ƒǦƒ ‡Ǥ ‘Ȁ„Ž‘‰ȀͷǦ›‡ƒ”•Ǧ‘ˆǦ—‹–›Ǧ˜•Ǧ—”‡ƒŽȀ ȏʹͲǤͺǤʹͲʹͲǤȐ ȏͻȐ Ǥ Ž‹‰‘”ƒ Marković, M. Antić, M. Rauker Koch: Proces razvoja multimedijske računalne igre, ZbornikVeleučilišta u Rijeci, Vol. 1 (2013)

60 RAČUNALNE IGRE 2020

Razvoj alata za izradu mozaika pomoću GameMaker tija Martin Starešinčić  tareinir ƒ—Ž–‡–‘”‰ƒ‹œƒ ‹Œ‡‹‹ˆ‘”ƒ–‹‡ǡSveučilišt‡—ƒ‰”‡„—

Sažetak 

U radu je dan prikaz razvoja alata za izradu mozaika pomoću GameMaker studija (GMS) 1.4. Opisana su rješenja niza problema koji se javljaju prilikom ‹œ”ƒ†‡ ƒŽƒ–ƒ ‘˜ƒ˜‘‰ –‹’ƒ ——–ƒ” Ǧƒǡ ’‘’—– ’”‘ ‡•ƒ ——–ƒ” ”‡ —–‹Œ‡ǡ •ƒ†„‘š, ispis i upis u datoteku i slično. Alat za izradu mozaika bi trebao sadržavati sve potrebne funkcije kako bi se u njemu mogla realizirati kreacija Ključne‘œƒ‹ƒǡ‹œ˜‘œ•Ž‹‡–‘‰‘œƒ‹ƒ–‡‹˜‡–ƒ”’‘–”‡„‹Š†‹Œ‡Ž‘˜ƒœƒ‹œ”ƒ†—‹•–‘‰Ǥ riječi   o ǣ”ƒœ˜‘ŒǡƒŽƒ–ǡ ƒ‡ƒ‡”•–—†‹‘ǡ ͳǤͶǡ‘œƒ‹ 

”ƒ†—Œ‡†ƒ’”‹ƒœ’‘•–—’ƒ”ƒœ˜‘ŒƒƒŽƒ–ƒœƒ‹œ”ƒ†—‘œƒ‹ƒǡƒ‘‹‹œƒœ‘˜ƒ• kojim će se početnici susresti na ovakvom projektu. Sam alat je izrađen u ‘˜‹”— •–˜ƒ”‘‰ ‘‡” ‹ŒƒŽ‘‰ ’”‘Œ‡–ƒ ‘Œ‹ Œ‡ naručio jedan singapurski —Œ‡–‹Ǥ  ƒ‘„‹‘‰‹‘‰Ž‹’‘‹•Ž‹–‹†ƒ„‹œƒ‹œ”ƒ†—‘˜ƒ˜‘‰ƒŽƒ–ƒ„‹‘’‘–”‡„ƒΪΪǡ kao i u slučaju mnogih drugih projektnih zadataka, rješenje je moguće postići aeaerna više načina tio pa se tako u ovom slučaju koristio GameMake”•–—†‹‘ͳǤͶǤ

ƒ‡ƒ‡”•–—†‹‘Œ‡ʹ’”‘‰”ƒ•‹ƒŽƒ–œƒ‹œ”ƒ†—˜‹†‡‘‹‰ƒ”ƒƒ’”ƒ˜ŽŒ‡‘† strane poduzeća ‘‘ ƒ‡•Ǥ ‹œƒŒ‹”ƒ Œ‡ na način koji omogućava Œ‡†‘•–ƒ˜ƒ”ƒœ˜‘Œ˜‹†‡‘‹‰ƒ”ƒ„‡œpotrebe za učenjemsloženog progra•‘‰ Œ‡œ‹ƒ’‘’—–ΪΪǦƒǡkorištenjem †”ƒ‰Ǧƒ†Ǧ†”‘’•—•–ƒ˜ƒǤ  GameMaker također ima ugrađeni programski jezik GameMakerƒ‰—ƒ‰‡‹Ž‹ skraćeno GML. GML omogućuje ‘”‹•‹ ‹ƒ upisivanje koda koji će se ’‘”‡–ƒ–‹ –‹Œ‡‘ Œ‹Š‘˜‡ ˜‹†‡‘‹‰”e i pruža veću razinu fleks‹„‹Ž‘•–‹ ‹ ˆ‹‘‰ podešavanja u odnosu na dragǦƒ†Ǧ†”‘’•—•–ƒ˜Ǥ  ƒ‡ƒ‡” ’”˜‡•–˜‡‘ Œ‡ †‹œƒŒ‹”ƒ œƒ ʹ ˜‹†‡‘‹‰”‡Ǥ ƒ‡ƒ‡”ǣ –—†‹‘ omogućava •–˜ƒ”ƒŒ‡ ’”‘‰”ƒƒ ‹ ‹œ˜‘œ za upotrebu na više uređaja i 61 RAČUNALNE IGRE 2020

operativnih sustava, uključujući PC, Mac, Linux,‹†”‘‹†ǡ‹ƒ‘„‹Ž‘Œ‹ƒ otrene•–‘Ž‘Œ˜‡”œ‹Œ‹Ǥ ncionanoti aata za izra ozaia 

Funkcionalnost alata je izrada mreže mozaika, izrada materijala tj. boja kojima se mozaik ispunjava, prikaz mozaika do najmanjeg djelića. S obzirom na to da •‡ ‘œƒ‹ sastoji od kocki, te se kocke sastoje od 8 trokutića plus 4 jednodijelna trokutića, dok se ostali trokutići sastoje od 3 dijela. Bojanje i uređivanje samog mozaika je isto tako sastavni dio funkcionalnosti alata.  

lia r ria aia 

 ‡†na od najvažnijih funkcija je funkcija inventar trokutića. Naime, kada bi se •˜‹ †‹Œ‡Ž‘˜‹ pojedinog trokutića popunili s nekim materijalima program bi trebao kreirati ključ za takav tip trokutića te ga dodati u inventar i ako takav trokutić postoji inkrementirati broj tipa takvog trokutića.

lia r Ideja inventara trokutića  

 62 RAČUNALNE IGRE 2020

Trebala je isto tako postojati mogućnost spremanja mozaika i ponovnog otvaranja, a uz to da sadrži sve informacije upisane u inventar tog mozaika. •–‘–ƒ‘ǡ„‹ŽƒŒ‡’‘–”‡„ƒmogućnost izvoza mozaika u obliku slike. Kao što je ’‘–”‡„‘ •’”‡ƒŒ‡ ‘œƒ‹ƒ ‹•–‘ –ƒ‘ Œ‡ ’‘–”‡„‘ ‹ •’”‡ƒŒ‡ ’ƒŽ‡–ƒ –ŒǤ zraaƒ–‡”‹Œƒ‘Œ‡Œ‡‘”‹•‹ƒ’”ƒ˜‹‘Ǥ aata za izra ozaia  

‹œ”ƒ†‹‘˜‘‰ƒŽƒ–ƒ„‹Ž‘Œ‡’‘–”‡„‘‹œ”ƒ†‹–‹Œ‡œ‰”—ƒŽƒ–ƒǡƒŽ‹i odgovarajući GUI Prvi problem koji je uočen je velika količina objekata koji će se nalaziti na ‡”ƒ— Œ‡” ƒŽƒ–‹ ’‘’—– Ǧa nisu previše optimizirani te vrlo često tijekom ”ƒ†ƒ ‘”‹•–‡ ˜‡Ž‹u količinu memorije i procesorske snage. Korištenje ugrađenih f— ‹Œƒœƒ†‡–‡ ‹Œ—†‘†‹”ƒ— Ǧu je odmah otpalo kao rješenj‡ te je izrađena vlastita funkcija detekcije koja radi tek kada se korisnik dovoljno približi mišem kako bi ostvario interakciju s‘„Œ‡–‘Ǥ˜‘Œ‡ƒ’”ƒ˜ŽŒ‡‘ƒ opisani način jer kalkulacija —†ƒŽŒ‡‘•–‹ œƒŠ–‹Œ‡˜ƒ ƒŒ‡ ”‡•—”•ƒ ‘†’”‘˜Œ‡”‡ područja. Isto tako, program je sporiji čim je aktivno više instanci objekata, koji često sadrže puno procesa. U izrađenoj implementaciji nepotre„‡ instance objekta se isključuju, npr. ako je nešto izvan ekrƒƒǤ ‡†ƒ‘†–”‹‘˜ƒ za optimizaciju je i način na koji se detektira dodir mišem. Naime, ako je korisnik povećao svoj kist, sustav za detekciju dobiva informaciju o veličini kista te preskače provjeru nepotrebnih područja, a to su sva područja udaljena œƒpolovicu veličine kista od područja provjere. Kako bi se dodat‘ƒ‰Žƒ•‹Žƒ važnost optimizacije ovog programa, važno je naglasiti da u mozaiku veličine ͳʹͲšͳʹͲ’‘•–‘Œ‹ ͷͶ͹ʹͲͲ†‹Œ‡Ž‘˜ƒ –‡ •˜ƒ‹ pojedini dio može imati utjecaj na inventar trokutića i izgled‘œƒ‹ƒǤ 

lia r eni a reaiju aia i editr aia



63 RAČUNALNE IGRE 2020

Upis u inventar funkcionira tako da se trokut upisuje na način da se u trenutku popunjavanja manjih dijelova trokuta vrši p”‘˜Œ‡”ƒ’”‡–Š‘†‘‰•–ƒŒƒ–”‘—–ƒ te se utvrđuje je li bio prazan ili popunjen i ako je bio popunjen to znači da postoji ključu inventaru te da treba oduzeti jedan od broja trokutića toga tipa te onda pogledati trenutačno stanje i opet provjeriti postoji li ključ za novi tip trokutića te inkrementirati broj takvih trokutića. Ako nije postojao, kreirat će se novi ključ, a ključ je u biti niz imena materija od kojih se sastoji (npr. „Drvo Kamen Crveni kamen“). 

lia r rijer artie u inventaru trokutića koji se sastoji od materijala navani 

 ”‡ƒ–‘” „‘Œa funkcionira po HSV sistemu što je prikazano na slici 5. Nakon kreacije boje, korisnik je može spremiti te joj pristupiti preko palete u mozaik ‡†‹–‘”—Ǥ 

lia r eni a reaiju ja

 Od velike važnosti je mogućnost otvaranja i spremanja mozaika. ƒ‘ •’”‡ƒŒ‡ ‹ˆ‘”ƒ ‹Œƒ ‘œƒ‹ƒ Œ‡ „‹Ž‘ œƒŠ–Œ‡˜‘ • ‘„œ‹”‘ ƒ –‘ †ƒ •‡ ’”‹ svakom upisu u datoteku pokazivač vraća na početak. Problem upisa u nekom racionalnom vremenu riješen je na način da je realiziran sustav koji kreira ‘˜—†ƒ–‘–‡—ƒ‘‘’–‹ƒŽ‘‰„”‘Œƒ—‘•ƒ—Œ—–‡•‡–ƒ‘‹œ„Œ‡‰ƒ˜ƒ˜‡Ž‹‘ pomicanje pokazivača. Treba imati na umu da se u većini slučajeva upisuje stotinjak tisuća podataka te sustav pomicanja pokazivača svaki put do kraja datoteke koja ima desetke tisuća informacija predstavljƒ˜”‡‡•‹œƒŠ–Œ‡˜ƒ 64 RAČUNALNE IGRE 2020

posao. Tijekom upisa vrši se aktivacija i deaktivacija ‘„Œ‡ƒ–ƒ‘˜‹•‘‘’‘œ‹ ‹Œ‹ na kojoj se pokazivač nalazi, a sličan princip je primijenjen i kod ispisa,Œ‡†‹‘ što se kod ispisa nije trebala provoditi aktivacija nego kreacija obj‡ƒ–ƒǤ Postoji još jedan problem kod spremanja datoteka, to da je GMS 1.4 u •ƒ†„‘šǦ —ǡ što znači da ne može pristupiti datotekama van svog korijenskog foldera. Taj ’”‘„Ž‡ Œ‡ riješen korištenjem DLLǦƒ ƒ’‹•ƒ‘‰ — ΪΪǦu „‘Ǧƒ†„‘š‡† ‹Ž‡›•–‡“ ‘† •–”ƒ‡ ”‡ƒ–‘”ƒ ‡ŽŽ‘™ˆ–‡”Ž‹ˆ‡. Što se tiče izvoza slika GMS ima sustav površina te je bilo vrlo jednostavno kreirati dodatnu površinu nad trenutačnim prikazom i preslikati trenutačni prikaz na novu površinu i tu površinu konvertirati u sliku. 

lia r eni za učitavanje spremljenih mozaika  Zaključak 

ƒœ˜‹Œ‡‹ ƒŽƒ– œƒ ‹œ”ƒ†— ‘œƒ‹ƒ ‡ˆ‡–‹˜‘ ’”‘˜‘†‹ •˜‘Œ‡ ˆ— ‹Œ‡Ǥ Žƒ– Œ‡ opisan, a opisani su i problemi do kojih je došlo prilikom razvoja alata. Dan je ’”‹ƒœˆ— ‹‘ƒŽ‘•–‹  Ǧa i načina na koje su spomenuti problemi riješeni. 65 RAČUNALNE IGRE 2020

•–‹ ’”‹ ‹’‹ „‹ •‡ ‘‰Ž‹ ’”‹‹Œ‡‹–‹ ’”‹Ž‹‘ ”ƒœ˜‘Œƒ †”—‰‹Š ƒŽƒ–ƒ œƒ ”ƒœ˜‘Œ ˜‹†‡‘‹‰ƒ”ƒǤ †‡Œƒ ”ƒœ˜‘Œƒ ƒŽƒ–ƒ ——–ƒ” ƒŽƒ–ƒ œƒ ‹œ”ƒ†— ˜‹†‡‘‹‰”ƒ Œ‡ †‘•–ƒ ‹–”‹‰ƒ–ƒ–‡Œ‡†‘•–ƒ–‘‰ƒ‹œ˜‡†‹˜‘—œ†‘„”—†‘œ—”‡ƒ–‹˜‘•–‹Ǥeerence  

ȏͳȐ ƒ‡ƒ‡”ǣ –—†‹‘ —•‡” ƒ—ƒŽǡ ‘‘ ƒ‡•ǡ ȋʹͻǤͳʹǤʹͲʹͲǤȌǡ †‘•–—’‘ ƒǣŠ––’•ǣȀȀ†‘ •Ǥ›‘›‘‰ƒ‡•Ǥ ‘Ȁ ȏʹȐ ‡ŽŽ‘™ˆ–‡”Ž‹ˆ‡ǡ ‘Ǧƒ†„‘š‡† ‹Ž‡›•–‡ ‡š–‡•‹‘ ȋʹͻǤͳʹǤʹͲʹͲǤȌǡ †‘•–—’‘ƒǣŠ––’•ǣȀȀ›ƒŽǤ Ȁ”Ȁͳ͹Ȁ•ˆ•Ȁ  ȏ͵Ȑ Ǥ— ‡–ȋʹͲͳͷǤȌǡ ƒ‡ƒ‡”••‡–‹ƒŽ•ǡƒ –—„Ž‹•Š‹‰ǡʹͻǤͳʹǤʹͲʹͲǤ

66 RAČUNALNE IGRE 2020

zraa ona strateške ire “Plants Zombies” prorao aat nit

ija i aen oneci  ivuir lneir ƒ—Ž–‡–‘”‰ƒ‹œƒ ‹Œ‡‹‹ˆ‘”ƒ–‹‡ǡSveučilište—ƒ‰”‡„—

Sažetak 

 ‘˜‘ ”ƒ†— obrađena Œ‡ –‡ƒ–‹ƒ ‹œ”ƒ†‡ Ž‘ƒ računalne ‹‰”‡ “Plants ˜•Ǥ Zombies” — ’”‘‰”ƒ•‘ ƒŽƒ–— ‹–›Ǥ  ”ƒ†— Œ‡ ‘’‹•ƒƒ ‹’Ž‡‡–ƒ ‹Œƒ ‘•‘˜‹ŠKljučne riječi‡Šƒ‹ƒ‹‰”ƒŒƒƒ˜‡†‡‡‹‰”‡Ǥ  ǣ ʹ računalna ‹‰”ƒǡ ‹–›ǡ Žƒ–• ˜•Ǥ ‘„‹‡•ǡ strateška ‹‰”ƒǡ ‡Šƒ‹‡o ‹‰”ƒŒƒǡ’”‘‰”ƒ‹”ƒŒ‡ǡƒŽ‰‘”‹–‹ 

œ”ƒ†‹–‹—’‘–’—‘•–‹•ƒ‘•–ƒŽ‘računalnu‹‰”—Œ‡˜”Ž‘œƒŠ–Œ‡˜ƒ’”‘ ‡•‘Œ‹ œƒŠ–Œ‡˜ƒœƒŒƒengineširokog•’‡–”ƒǤŠto•‡tiče‹’Ž‡‡–ƒ ‹Œ‡’”‘‰”ƒ•‡Ž‘‰‹‡ računalne‹‰”‡ǡ—današnje˜”‹Œ‡‡mogućeŒ‡‘”‹•–‹–‹ƒŽƒ–‡‘Œ‹•—ve扑–‘˜‹ ’‘‰‘‹ ȋ‡‰Ǥ Ȍ œƒ ”ƒœ˜‘Œ računalnih ‹‰ƒ”ƒ ‹ –‹‡ Œ‡ –ƒŒ ’”‘ ‡• značajno olakšan ȏͶȐǤ ‹Œ‡ ’‘–”‡„‘ ‹’Ž‡‡–‹”ƒ–‹ ‘‰‡ ˆ— ‹Œ‡ najniže ”ƒœ‹‡ već ‹ƒ‘ ‰‘–‘˜‡ ˆ— ‹Œ‡ ‘Œ‡ ƒ omogućavaju †ƒ ’”‘‰”ƒ‹”ƒ‘ ƒ višoj ”ƒœ‹‹ ƒ’•–”ƒ ‹Œ‡Ǥ Također ——–ƒ” –ƒ˜‹Š ƒŽƒ–ƒ ’‘•–‘Œ‹ podrška œƒ ”‡ƒŽ‹œƒ ‹Œ— tipičnih •–˜ƒ”‹ ’”‹Ž‹‘ ‹œ”ƒ†‡ Œ‡†‡ računalne ‹‰”‡ǣ ’‘•–ƒ˜ŽŒƒŒ‡ ‘„Œ‡ƒ–ƒ — ’”‘•–‘”ǡ Œ‹Š‘˜ƒ –”ƒ•ˆ‘”ƒ ‹Œƒǡ •”‹’–‹”ƒŒ‡ǡ ƒ‹‹”ƒŒ‡ ‹ •ŽǤ ‡†ƒ ‘† –‹Š Korišteni’‘‰‘ƒŒ‡ ‹prorai’”‘‰”ƒ•‹ ƒŽƒ–aati‹–› ‘Œ‹Œ‡korišten—•˜”Š—‹œ”ƒ†‡‘˜‘‰”ƒ†ƒȏ͸ȐǤ 

 ‹–›Œ‡Œ‡†ƒ‘†ƒŒ’‘’—Žƒ”‹Œ‹Š„‡•’Žƒ–‹Š’‘‰‘ƒœƒ”ƒœ˜‘Œračunalnih‹‰ƒ”ƒǤ ‹–› omgućavƒ ‹œ˜‘œ ”‡‹”ƒ‡ ‹‰”ƒ ƒ ’”‡‘ ʹͷ ’Žƒ–ˆ‘”‹Ǥ Također, —†‹ ‹ podršku œƒ ‘Žˆ”ƒ matematičke ˆ— ‹Œ‡ što može „‹–‹ ‘”‹•‘ ‘† ‡‹Š složenijihizračunaȏͺȐǤ‹–›‹ƒ‹†‘„”—podrškuœƒ—˜‘†‘„Œ‡ƒ–ƒǡ–‡•–—ƒ‹ ƒ‹ƒ ‹Œƒ‹œ’”‘‰”ƒƒƒ‘što•—Ž‡†‡”ǡ͵ƒšǡƒ›ƒǡͶ‹‡ƒ‹•ŽǤȏͳȐǤ •‹ƒŽƒ–ƒ‹–›ǡkorištenŒ‡‹ƒŽƒ– œƒuređivanjegrafičkih‡Ž‡‡ƒ–ƒ‹‰”‡Ǥ Također,—•˜”Š—izrađivanja•”‹’–‹korištenŒ‡’”‘‰”ƒ•‹ƒŽƒ–ƒ‹•—ƒŽ–—†‹‘ ʹͲͳ͹Ǥ 

67 RAČUNALNE IGRE 2020

˜”Šƒ ‘˜‘‰ ”ƒ†ƒ Œ‡ ”‡‹”ƒŒ‡ Ž‘ƒ strateške računal‡ ‹‰”‡ „Plants ˜•Ǥ Zombies“—‡†—ƒ ‹Œ•‡•˜”Š‡ǣ”ƒ†‹—’‘œƒ˜ƒŒƒ•’”‘ ‡•‘‹œ”ƒ†‡računalnih „Plants‹‰ƒ”ƒǤ s Zombies“ franšiza 

 ƒœ˜‘ŒfranšizezapočeoŒ‡’”‹Œ‡više‘†ͳͳ‰‘†‹ƒ’”˜‘‹‰”‘‹‡ƒ„Plants ˜•ǤZombies“ȏ͹ȐƒfranšizuŒ‡”ƒœ˜‹Ž‘’‘†—œeće‘’ƒ’ ƒ‡•ȏͷȐǤ”‹ƒ”‘ǡ ‘˜‘poduzećeŒ‡”ƒœ˜‹ŒƒŽ‘‹‰”‡strateškogžanra,podžanra‘„”ƒ‡–‘”Œ‡˜ƒlant‘ v• ˜”‡‡‘ie  ‹ — ‘˜‘Œ frašizi došle •— ‹‰”‡ ‹ †”—‰‹Š žanrova: ‡†—ƒ ‹Œ•‘‰ ƒ”ƒ–‡”ƒǡkartaške‹ƒ ‹Œ•‡‹‰”‡ǤČakŒ‡”ƒœ˜‹Œ‡ƒ‹društvena‹‰”ƒ ȏʹȐǤ  ater gg œ˜‘”ƒ ˜‡”œ‹Œ‡ ‹‰”‡ Œ‡ ’‘•–ƒŽƒ ‹œ—œ‡–‘ ’‘’—Žƒ”ƒ œ„‘‰ •˜‘Œ‡ maštovite –‡ƒ–‹‡Ǥrld arrČak•—at•‡eagueodređena  iznenađenjaegend earttneȋ‡‰Ǥ e iȌ—†”—‰‹‹‰”ƒƒ ”‡ˆ‡”‡ ‹”ƒŽƒ ƒ ‘˜— ’‘’—Žƒ”—e‹‰”—Ǥ in ƒ˜ƒ iznenađenjaiary a inerat ’‘•–‘Œ‡ ie — ‹‰”ƒƒ ǡ ǡ ǡ ‹ †”Ǥ •‹ –‘‰ƒǡ snone’‘•–‘Œ‡‹’‘Œƒ˜ŽŒ‹˜ƒŒƒ meanie irana—Œ‹‰ƒƒ ire Plants s Zombies‹ Ǥ

lant v ie

ƒ‘štoŒ‡većrečeno,‹‰”ƒ Œ‡‹‰”ƒstrateško‰–‹’ƒpodžanra ‘„”ƒ‡ –‘”Œ‡˜‹ƒǤ ƒ†ƒ–ƒ igrača Œ‡ ‰”ƒ†‹–‹ „‹ŽŒ‡ ƒ –”ƒ˜Œƒ—Ǥ ‡’”‹Œƒ–‡ŽŒ‹ †‘Žƒœ‡’‘–”ƒ˜Œƒ—•†‡•‡•–”ƒ‡’”‡ƒŽ‹Œ‡˜‘Œ‹pokušavajudoći†‘kuće‹œƒ –”ƒ˜ŒƒƒǤ ‘ — –‘‡ —•’‹Œ—ǡ igrač ‰—„‹ ‹‰”—Ǥ ‹ŽŒ ‹‰”‡ Œ‡ ‹œ‰”ƒ†Œ‘ „‹ŽŒƒƒ •ƒ˜Žƒ†ƒ–‹nadolazeće˜ƒŽ‘˜‡œ‘„‹ŒƒǤ  ‘•–‘Œ‡ –”‹ ‘•‘˜‡ ˜”•–‡ „‹ŽŒƒƒ ‘Œ‡ •— igraču ƒ ”ƒ•’‘Žƒ‰ƒŒ—ǣ „‹ŽŒ‡ œƒ •–˜ƒ”ƒŒ‡’”‹Š‘†ƒǡ„‹ŽŒ‡‘Œ‡ƒ’ƒ†ƒŒ—‡’”‹Œƒ–‡ŽŒ‡‹‘„”ƒ„‡‡„‹ŽŒ‡Ǥ‹ŽŒ‡ ‘Œ‡•–˜ƒ”ƒŒ—’”‹Š‘†—ˆ‹•‹‹–‡”˜ƒŽ‹ƒ•–˜ƒ”ƒŒ—’”‹Š‘†ȋœ”ƒ‡•— ƒȌ‘Œ‹ •‡‘”‹•–‹ƒ‘„‹•‡‘‰Ž‡•ƒ†‹–‹‘˜‡„‹ŽŒ‡Ǥƒ‘‹‘†˜‡Ž‹‡većinestrateških ‹‰ƒ”ƒǡ‹—‘˜‘Œ‹‰”‹Œ‡„‹–‘„ƒŽƒ•‹”ƒ–‹potrošnju’”‹Š‘†ƒƒ‡‘‘‹Œ—ǡƒ’ƒ†‹ ‘„”ƒ—Ǥ‹ŽŒ‡‘Œ‡ƒ’ƒ†ƒŒ—‡’”‹Œƒ–‡ŽŒ‡‘‰—•‡†ƒŽŒ‡’‘†‹Œ‡Ž‹–‹—–”‹‘•‘˜‡ ƒ–‡‰‘”‹Œ‡ǣ „‹ŽŒ‡ ‘Œ‡ œƒ†ƒŒ— štetu Œ‡†‘ ‡’”‹Œƒ–‡ŽŒ—ǡ „‹ŽŒ‡ ‘Œ‡ ‹ƒŒ— područjeƒ’ƒ†ƒŒƒȋƒ’ƒ†ƒŒ—•˜‡‡’”‹Œƒ–‡ŽŒ‡—određenoj”‡‰‹Œ‹Ȍƒ’‘•–‘Œ‡‹ daageŒ‡†‘”ƒ–‡ er end„‹ŽŒ‡ ‘Œ‡ ƒ‘ Œ‡†‘‰ ƒ’ƒ†ƒ ‡•–ƒŒ—Ǥ ˆ‹ƒ•‘•– ‘ˆ‡œ‹˜‡ „‹ŽŒ‡ Œ‡”‹ •‡ količinom štete ‘Œ— može ƒ’”ƒ˜‹–‹ — Œ‡†‘Œ •‡—†‹ ȋ‡‰Ǥ Ȍȏ͵ȐǤ‡ˆƒœ‹˜‡„‹ŽŒ‡služeƒ‘’”‡’”‡ƒ‘Œƒœƒ—•–ƒ˜ŽŒƒ ”‡–ƒŒ‡‡’”‹Œƒ–‡ŽŒƒ’‘–”ƒ˜Œƒ—Ǥ‘„œ‹”‘†ƒ•—†‡ˆƒœ‹˜‡ǡ‘‡‹ƒŒ—veću količinuœ†”ƒ˜ŽŒƒ‘†‘•–ƒŽ‹Š„‹ŽŒƒƒǤ   ”‡‹”ƒ‘ ’”‘–‘–‹’— ‹’Ž‡‡–‹”ƒƒ Œ‡ Œ‡†ƒ „‹ŽŒƒ ‘Œƒ •–˜ƒ”ƒ ’”‹Š‘† ȋ•— ‘”‡–ȌǡͶ‘ˆ‡œ‹˜‡„‹ŽŒ‡(pucačgraška,„‹ŽŒƒžderačica,”—’‹”‹ƒ‹ trešnja„‘„ƒȌ‹Œ‡†ƒ†‡ˆƒœ‹˜ƒ„‹ŽŒƒȋœ‹†‘†‘”ƒŠƒȌǤ 68 RAČUNALNE IGRE 2020

Što•‡tičeœ‘„‹Œƒǡ•˜‹œ‘„‹Œ‹•—‘ˆ‡œ‹˜‘‰–‹’ƒǤƒœŽ‹—Œ—•‡’”‡ƒkoličini životnih „‘†‘˜ƒǡ „”œ‹‹ ”‡–ƒŒƒ ‹ određeni œ‘„‹Œ‹ ‹ƒŒ— ’‘•‡„‡ •’‘•‘„‘•–‹Ǥƒ‘„‹igrač‘‰ƒ‘’”‡’‘œƒ–‹‘‘Œ‘Œ˜”•–‹‡’”‹Œƒ–‡ŽŒƒ•‡”ƒ†‹ǡ œ‘„‹Œ‹•‡”ƒœŽ‹—Œ—’‘•˜‘‹œ‰Ž‡†—Ǥ”‡‹”ƒ‘’”‘–‘–‹’—‹’Ž‡‡–‹”ƒ‡ •—Ͷ˜”•–‡œ‘„‹Œƒǣobičniœ‘„‹ǡœ‘„‹•†‘†ƒ–‹štitom‹œ‘„‹•ƒœƒ•–ƒ˜‘ ‹ œ‘„‹ • ‘–‘ ȋ’‘•‡„ƒ vještima: može preskočiti ’”˜— „‹ŽŒ— ƒ ‘Œ— naiđeƒ–”ƒ˜Œƒ—ȌǤ  ‘•ŽŒ‡†Œ‡ǡ—slučaju†ƒŒ‡igrač’‘•–ƒ˜‹‘„‹ŽŒ—ƒ‡—neželjenu’‘œ‹ ‹Œ—‹Ž‹•‡ ’”‡†‘‹•Ž‹‘‘‘”ƒ•’‘”‡†ƒ„‹ŽŒƒƒǡ‹ƒmogućnost„iskopati“’‘Œ‡†‹—„‹ŽŒ— ƒ‘  „‹ •‡ ƒ –‘ Œ‡•–— ƒ –”ƒ˜Œƒ— ‘•Ž‘„‘†‹Ž‘ Œ‡•–‘ œƒ ‹œ‰”ƒ†Œ— ‡‡ zraa†”—‰‡„‹ŽŒ‡Ǥ rototia ire

”˜ƒ • ‡ƒ ‘Œƒ •‡ igraču ’‘ƒœ—Œ‡ Œ‡ ‹œ„‘”‹Ǥ  ‹œ„‘”‹— igrač ‹ƒ mogućno•– ‹‰”ƒ–‹ ‹‰”—Ǥ ‘ ‘†ƒ„‡”‡ –— mogućnost ’‘Œƒ˜ŽŒ—Œ‡ •‡ †‘†ƒ–‹ ‹œ„‘”‹ ‰†Œ‡ može ‘†ƒ„”ƒ–‹ ”ƒœ‹— ‘Œ— želi ‹‰”ƒ–‹Ǥ  ‰Žƒ˜‘ ‹œ„‘”‹— također‹ƒ’”‹•–—’određenim’‘•–ƒ˜ƒƒ‹‰”‡–‡mogućnost‹œŽƒ•ƒ‹œ‹‰”‡ ’”‹–‹•‘ƒœƒ„Back“Ǥ 

lia r gled početnog irnia igre 

 Početne”ƒœ‹‡•—”‡‹”ƒ‡’‘—œ‘”—ƒ‘‰‡†”—‰‡‹‰”‡‰†Œ‡•‡ƒ’‘Œ‡†‹‘Œ ”ƒœ‹‹ uče ‘•‘˜‡ ‡Šƒ‹‡ ‹‰”ƒŒƒǤ ƒ ’”˜‘Œ ”ƒœ‹‹ ‹‰”‡ †‘•–—’ƒ Œ‡ •ƒ‘ Œ‡†ƒ„traka“–”ƒ˜Œƒƒ–‡Œ‡igraču†‘•–—’‘œƒ•ƒ†‹–‹•ƒ‘Œ‡†—„‹ŽŒ—ƒ–‘Œ‡ pucač graška. ‘ Œ‡ ƒŒ‘•‘˜‹Œƒ ‘ˆ‡œ‹˜ƒ „‹ŽŒƒ ‘Œƒ ‹ƒ mogućnost ƒ’ƒ†ƒŒƒ Œ‡†‘‰ œ‘„‹Œƒǣ ‘‘‰ ‘Œ‹ •‡ ƒŽƒœ‹ — ‹•–‘Œ –”ƒ ‹ •ƒ zasađenom

„‹ŽŒ‘‹‘Œ‹Œ‡najbliži„‹ŽŒ ‹Ǥ 69 RAČUNALNE IGRE 2020

 Također,—‘˜‘‹˜‘—•‡‹‰rač—’‘œƒŒ‡•‡Šƒ‹‘•—’ŽŒƒŒƒ‘•‘˜‘‰ ”‡•—”•ƒœƒ‰”ƒ†Œ—„‹ŽŒƒƒƒ–‘•—sunčeveœ”ƒ‡Ǥ’”ƒ˜‹Ž‹‘†ƒ ‹ƒǡigraču ‘†‘œ‰‘ ’”‡ƒ †‘ŽŒ‡ ’ƒ†ƒŒ— sunčeve œ”ƒ‡ — ‘„Ž‹— ƒŽ‹Š •—ƒ ƒǤ Ž‹‘ ƒ •— ‡ ‘Œ‡ ’ƒ†ƒ igrač •—’ŽŒƒ œ”ƒ‡ •— ‡Ǥ ƒ‘ što •—’‹ odgovarajuću količinu, može ‹œ‰”ƒ†‹–‹ „‹ŽŒ— ‘Œƒ — Œ‡ ƒ ”ƒ•’‘Žƒ‰ƒŒ—Ǥ Igrač •‡ također ’‘œƒŒ‡•‘•‘˜‘‡Šƒ‹‘‘„”ƒ‡Ǥƒ’”˜‘Œ”ƒœ‹‹†‘Žƒœ‹običniœ‘„‹ ‘Œ‡‰igrač‘”ƒ•ƒ˜Žƒ†ƒ–‹Ǥ 

lia r gled rve raine igre 

 ƒ •˜ƒ‘Œ ‘˜‘Œ ”ƒœ‹‹‹graču•‡ otključavaju ‘˜‡ ˜”•–‡ „‹ŽŒƒƒǡ †‘Žƒœ‡ ‘˜‡ ˜”•–‡ œ‘„‹Œƒ — drugačijim ‘’‘œ‹ ‹Œƒƒ ˜ƒŽ‘˜ƒ ‹ igrač ‘”ƒ „ƒŽƒ•‹”ƒ–‹ ‹œ‰”ƒ†Œ—„‹ŽŒƒƒƒ‘„‹‹ƒ‘†‘˜‘ŽŒ‘”‡•—”•ƒœƒ‹œ‰”ƒ†Œ—†‘˜‘ŽŒ‡količine „‹ŽŒƒƒ ƒ‘ „‹ •ƒ˜Žƒ†ƒ‘ nadolazeće ‡’”‹Œƒ–‡ŽŒ‡Ǥ ƒ •˜ƒ‘Œ ”ƒœ‹‹ igraču Œ‡ također’”‹ƒœƒƒ‹ˆ‘”ƒ ‹Œƒ‘Ž‹‘œ‘„‹Œƒ†‘Žƒœ‹ƒ–‘Œ”ƒœ‹‹Ǥ 

lia r gled anije raine 

 70 RAČUNALNE IGRE 2020

zraa roeta roramsom alat nit

 ƒœ˜‘Œ računalne ‹‰”‡ započinje ”‡‹”ƒŒ‡ ‘˜‘‰ ’”‘Œ‡–ƒǤ •‘˜‡ ‡Šƒ‹‡‹‰”‡•‡‹’Ž‡‡–‹”ƒŒ—–ƒ‘†ƒ”‡‹”ƒ‘naše‘„Œ‡–‡‹‰”‡‹‘†ƒ‹ pridružujemoodgovarajuće•”‹’–‡ƒ‘„‹•‡’‘•–‹‰Žƒželjena‡Šƒ‹ƒ‘Œ— želim‘•–˜ƒ”‹–‹Ǥ ‡†ƒ‘†‘•‘˜‹Š‡Šƒ‹ƒ—‘˜‘Œ‹‰”‹Œ‡‡Šƒ‹ƒ’— ƒŒƒ „‹ŽŒƒƒ ƒ dolazeće œ‘„‹Œ‡Ǥ ƒ‘ „‹•‘ ”‡‹”ƒŽ‹ „‹ŽŒ—ǡ ’‘–”‡„‘ Œ‡ ‹ƒ–‹ •’”‡‡‰rafičke‡Ž‡‡–‡—‘„Ž‹—•Ž‹ƒ‹Ž‹ƒ‹ƒ ‹Œƒ‘Œ‡će„‹–‹˜‹†ŽŒ‹˜‹†‹‘ „‹ŽŒ‡Ǥpublic voidƒ•–ƒ˜— Shoot(){•‡ƒŽƒœ‹ •”‹’–ƒœƒ’— ƒŒ‡„‹ŽŒƒƒƒ‡’”‹Œƒ–‡ŽŒ‡Ǥ  AudioSources[Random.Range(0, AudioSources.Lenght)].Play(); Instantiate(Prefab, pos, Quaternion.identity); } void OnTriggerStay2D (Collider2D other){ if(other.gameObject.tag == "Zombie"){ anim.SetBool("shooting", true); } } void OnTriggerExit2D (Collider2D other){ if (other.gameObject.tag == "Zombie"){ anim.SetBool("shooting", false); } }

 nriggertay ‹ŽŒƒƒ•‡„‹‹ƒokidač‘Œ‹†‡–‡–‹”ƒ‘Ž‹œ‹Œ—ie•„‹Ž‘‘Œ‹†”—‰‹‘„Œ‡–‘Ǥ ”‹Ž‹‘‘Ž‹œ‹Œ‡ǡˆ— ‹Œƒ ’”‘˜Œ‡”ƒ˜ƒ‘œƒ—‘„Œ‡–ƒ‘Œ‹•‡ ƒŽƒœ‹—‘Ž‹œ‹Œ‹Ǥ‘–ƒŒ‘„Œ‡–rae‹ƒ‘œƒ— ǡ–ƒ†ƒ•‡ƒ–‹˜‹”ƒƒ‹ƒ ‹Œƒ ’— ƒŒƒ „‹ŽŒ‡Ǥ ‘† ”‡‹”ƒŒƒ ƒ‹ƒ ‹Œƒ — ’”‘‰”ƒ•‘ ƒŽƒ–— ‹–› ƒ određenom ‘˜‹”— ȋ‡‰Ǥ Ȍ moguće Œ‡ ”‡‹”ƒ–‹ određeni događaj.  odgovarajućem–”‡—–—’‘–”‡„‘Œ‡‹•’— ƒ–‹œ”‘graška,–ŒǤ’”‘Œ‡–‹Žƒ‘Œ‹će •‡‹•–ƒ ‹”ƒ–‹‹ići’”‡ƒœ‘„‹Œ—‘Œ‡‰ƒ’ƒ†ƒǤ  Graša također ƒ •‡„‹ ‹ƒ okidač ‘Œ‹ •‡ ƒ–‹˜‹”ƒ ’”‹Ž‹‘ •—†ƒ”ƒ •ƒ œ‘„‹Œ‡Ǥ ‘ grašak —†ƒ”‹ œ‘„‹Œƒǡ –‘ œ‘„‹Œ— • ‘Œ‹ Œ‡ †‡–‡–‹”ƒƒ ‘Ž‹œ‹Œƒ •‡ ‘†—œ‹ƒŒ— Œ‡‰‘˜‹ životni „‘†‘˜‹Ǥ ƒ‘ –‘‰ƒ ‹•–ƒ ƒ ’”‘Œ‡–‹Žƒ •ƒƒ•‡„‡—‹štava.  Što •‡ tiče •ƒ‹Š œ‘„‹Œƒǡ ‘‹ ‹ƒŒ— †˜ƒ ‘•‘˜ƒ •–ƒŒƒ — ‘Œ‹ƒ •‡ ‘‰— ƒŽƒœ‹–‹Ǥ ”˜‘ •–ƒŒ‡ Œ‡ ”‡–ƒŒ‡ ’‘ –”ƒ˜Œƒ— • †‡•‡ •–”ƒ‡ ’”‡ƒ Ž‹Œ‡˜‘Œ •–”ƒ‹–”ƒ˜ŒƒƒǤ”‹Ž‹‘–‡”ƒ†Œ‡•‡ƒ–‹˜‹”ƒƒ‹ƒ ‹ŒƒŠ‘†ƒŒƒǤƒ†ƒœ‘„‹ dođe—‘Ž‹œ‹Œ—•ƒ„‹ŽŒ‘ǡ–ƒ†ƒ’”‡Žƒœ‹—•–ƒŒ‡ƒ’ƒ†ƒŒƒ„‹ŽŒ‡Ǥ‘„‹„‹ŽŒ— ƒ’ƒ†ƒ •˜‡ †‘ Œ— ‡ uništi. ‘ Œ‡ „‹ŽŒƒ uništena, œ‘„‹ ’”‡Žƒœ‹ — •–ƒŒ‡ Š‘†ƒŒƒ†‘‡dođe‘iduće„‹ŽŒ‡Ǥ  71 RAČUNALNE IGRE 2020 void DoDamage(){ timer -= Time.deltaTime; if (timer <= 0){ BiteSounds[Random.Range(@, BiteSounds.Length)].Play(); go.GetComponent().SmanjiHP(damage); timer = hittingCooldown; } } void OnCollisionStay2D(Collision2D other){ if (other.collider is CircleCollider2D && other.gameQbject.tag == "Plant" && !hitting){ animator.SetBool("biting", true); hitting = true; go = other.gameObject; InvokeRepeating("DoDamage", 0, .01667f); } } void OnCollisionExit2D(Collision2D other){ if (other.gameObject.tag == "Plant"){ hitting = false; animator.SetBool("biting", false); CancelInvoke(); } }

 ƒ‘štoŒ‡˜‹†ŽŒ‹˜‘‹œ’”‘‰”ƒ•‘‰‘†ƒǡ’”‹Ž‹‘†‡–‡ ‹Œ‡‘Ž‹œ‹Œ‡•‘„Œ‡–‘ ‘Œ‹‹ƒ‘œƒ—„Plant“‹ƒ‘œ‘„‹ve搋Œ‡—•–ƒŒ—ƒ’ƒ†ƒŒƒǡ•–ƒŒ‡•‡‹œ Š‘†ƒŒƒ‹Œ‡Œƒ—„biting“,‹Œ‡Œƒ•‡ƒ‹ƒ ‹Œƒœ‘„‹Œƒ–‡•‡izvršavaˆ— ‹Œƒ Zœƒ†ƒ˜ƒŒƒaključak štete. Šteta •‡ ”ƒ† — odgovarajućim ˜”‡‡•‹ ”ƒœƒ ‹ƒ –‡ •‡ ’‘ƒ˜ŽŒƒ•˜‡†‘œ‘„‹‡izađe‹œ•–ƒŒƒƒ’ƒ†ƒŒƒǤ

 ”‘œ‘˜ƒŒ”ƒ†ƒ’”ƒ˜ŽŒ‡Œ‡’”‘–‘–‹’‹‰”‡Žƒ–•˜•Ǥ‘„‹‡•ǡ‹’Ž‡‡–‹”ƒ‘Œ‡ ’”˜‹Š ͳͲ ”ƒœ‹ƒ ‹œ˜‘”‡ ˜‡”œ‹Œ‡ ‘˜‡ ‹‰”‡Ǥ ƒ‘ •‡ ”ƒ†‹Ž‘ ‘ ”ƒœ˜‘Œ— Ž‘ƒ postojeće‹‰”‡ǡ’”‘ ‡•‹œ”ƒ†‡računalnih‹‰ƒ”ƒŒ‡˜”Ž‘”‡ƒ–‹˜ƒ’”‘ ‡•—‘Œ‡ •‡ ’”‘‰”ƒ‡” susreće • „”‘Œ‹ ‹œƒœ‘˜‹ƒǤ ‘‰‡ ˆ— ‹‘ƒŽ‘•–‹ •‡ ‘‰— ‹’Ž‡‡–‹”ƒ–‹ ƒ različite načine. ˜ƒŒ ”ƒ† •‡ Žƒ‘ može ƒ†‘‰”ƒ†‹–‹ • †‘†ƒ–‹ ”ƒœ‹ƒƒǡ †‘†ƒ–‹ ˜”•–ƒƒ „‹ŽŒƒƒ ‹ †‘†ƒ–‹ ˜”•–ƒƒ œ‘„‹ŒƒǤ ”‘‰”ƒ•‹ ƒŽƒ– ‹–› —†‹ odličnu podršku œƒ ”ƒœ˜‘Œ ‹‰ƒ”ƒ ‘˜‘‰ –‹’ƒ ‹ ‰‡‡”ƒŽ‘ ‰Ž‡†ƒ‘ǡ ’—–‡ ‘˜‘‰ ƒŽƒ–ƒ moguće Œ‡ ƒ ˜”Ž‘ ‹–—‹–‹˜ƒ način ‹’Ž‡‡–‹”ƒ–‹‘•‘˜—Ž‘‰‹—računalneeferene‹‰”‡ širokog•’‡–”ƒžanrova. 

ȏͳȐ Ǥ  Ž‘‘ǣ ‹–› ʹͲͳ͹Ǥʹ „”‹‰• —–‘†‡• ‹–‡‰”ƒ–‹‘ ‹–‘ –Š‡ ˆ‘Ž†Ǥ ȋ͸Ǥ Ž‹•–‘’ƒ†ƒʹͲʹͲǤȌǤ‘•–—’‘ƒǣŠ––’•ǣȀȀ™™™Ǥ‰ƒƒ•—–”ƒǤ ‘Ȁ˜‹‡™Ȁ‡™• Ȁ͵Ͳ͹ͲͷͲȀ‹–›̴ʹͲͳ͹ʹ̴„”‹‰•̴—–‘†‡•̴‹–‡‰”ƒ–‹‘̴‹–‘̴–Š‡̴ˆ‘Ž†Ǥ’Š’ 72 RAČUNALNE IGRE 2020

ȏʹȐ Ǥ ”‡•‘ǣ • Š‡”‡ ƒ Žƒ–• ˜•Ǥ ‘„‹‡• ‘”† ƒ‡ǫ ȋ͸Ǥ Ž‹•–‘’ƒ†ƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ™™™Ǥ–Š‡•’”— ‡ ”ƒˆ–•Ǥ ‘Ȁ’Žƒ–•Ǧ˜•Ǧ œ‘„‹‡•Ǧ–Š‡Ǧ„‘ƒ”†Ǧ‰ƒ‡ǦͶͳʹͷͷʹ ȏ͵Ȑ ƒ†‘ǣ ‘™‡” †‡ˆ‡•‡Ǥ ȋ͸Ǥ Ž‹•–‘’ƒ†ƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ’Žƒ–•˜•œ‘„‹‡•Ǥˆƒ†‘Ǥ ‘Ȁ™‹‹Ȁ‘™‡”̴†‡ˆ‡•‡ ȏͶȐ ƒ‡‡•‹‰‹‰ǣ Š‡ ‘’ ͳͲ ‹†‡‘ ƒ‡ ‰‹‡•Ǥ ȋͷǤ Ž‹•–‘’ƒ†ƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ™™™Ǥ‰ƒ‡†‡•‹‰‹‰Ǥ‘”‰Ȁ ƒ”‡‡”Ȁ˜‹†‡‘Ǧ‰ƒ‡Ǧ ‡‰‹‡•Ȁ ȏͷȐ ‘’ƒ’ –—†‹‘•Ǥ ȋ͸Ǥ Ž‹•–‘’ƒ†ƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ™™™Ǥ‡ƒǤ ‘Ȁ‡ƒǦ•–—†‹‘•Ȁ’‘’ ƒ’ ȏ͸Ȑ ‹–›ǤȋͷǤŽ‹•–‘’ƒ†ƒʹͲʹͲǤȌǤ‘•–—’‘ƒǣŠ––’•ǣȀȀ—‹–›Ǥ ‘Ȁ ȏ͹Ȑ ‹‹’‡†‹ƒǣ Žƒ–• ˜•Ǥ ‘„‹‡•Ǥ ȋ͸Ǥ Ž‹•–‘’ƒ†ƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ‡Ǥ™‹‹’‡†‹ƒǤ‘”‰Ȁ™‹‹ȀŽƒ–•̴˜•Ǥ̴‘„‹‡• ȏͺȐ ‘Žˆ”ƒǤȋͷǤŽ‹•–‘’ƒ†ƒʹͲʹͲǤȌǤ‘•–—’‘ƒǣ Š––’•ǣȀȀ™™™Ǥ™‘Žˆ”ƒǤ ‘Ȁ Žƒ‰—ƒ‰‡ȀͳʹȀ„—‹Ž–Ǧ‹Ǧ‹–‡”ˆƒ ‡Ǧ–‘Ǧ—‹–›Ǧ‰ƒ‡Ǧ‡‰‹‡Ȁ

73 RAČUNALNE IGRE 2020

mlementaia osnoni meania to on sooter ire roramsom alat nit

osi ezi i laen onei  ieigail lneir ƒ—Ž–‡–‘”‰ƒ‹œƒ ‹Œ‡‹‹ˆ‘”ƒ–‹‡ǡSveučilište u Zagrebu

Sažetak 

‘˜‘”ƒ†—•—‘’‹•ƒ‡‘•‘˜‡‡Šƒ‹‡‹’Ž‡‡–ƒ ‹Œ‡–‘’†‘™•Š‘‘–‡” igre u programskom alatu Unity. U radu će biti objašnjene mehanike kretanja, pucanja, upravljanje živ‘–‹ „‘†‘˜‹ƒǡ †‡–‡ ‹Œƒ ‘Ž‹œ‹Œ‡ ‹ Ž‘‰‹ƒ †‘Žƒ•ƒ Klju萇’”‹Œƒ–‡ŽŒƒ—˜ƒŽ‘˜‹ƒǤne riječi   ǣ računalna igra, Unity, top down shooter, shoot 'em up, C#, ‡Šƒ‹‡o ‹‰”ƒŒƒǡ’”‘‰”ƒ‹”ƒŒ‡ǡƒŽ‰‘”‹–‹ 

‘’†‘™•Š‘‘–‡”‹‰”‡•u igre specifičnog tipa koje b‹•‡’‘•˜‘Œ‘Œ˜”•–‹‘‰Ž‡ prikloniti žanru shoot 'em up, podžanru igara pucanja unutar žanra akcijskih igara [5]. U igrama ovog tipa igrač se nalazi u ulozi protagonista koji se bori protiv velike količine različitih neprijatelja. Igrač mora savladati nep”‹Œƒ–‡ŽŒ‡ ‘Œ‹‰ƒƒ’ƒ†ƒŒ—†‘—‹•–‘˜”‹Œ‡‡‘”ƒ‹œ„Œ‡‰ƒ˜ƒ–‹‘–ƒ–•Œ‹ƒ‹Œ‹Š‘˜— paljbu. U klasičnoj izvedbi ovaj žanr je u 2D ili 2.5D izvedbi gdje neprijatelji †‘Žƒœ‡‘†‘œ‰‘’”‡ƒ†‘ŽŒ‡ȋ‹Ž‹’‘‡ƒ†•†‡•‡’”‡ƒŽ‹Œ‡˜‘Œ•–”ƒ‹ȌǤ‘˜‘ ”ƒ†— ”‡‹”ƒƒ Œ‡ ͵ ‹œ˜‡†„ƒ ‹‰”‡ — ‘Œ‘Œ ‡’”‹Œƒ–‡ŽŒ‹ †‘Žƒœ‡ •ƒ •˜‹Š •–”ƒƒ ‹ napadaju igračƒǤ  Povijesni razvoj ovog žanra seže do samih početaka razvoja računalnih igara. ”˜ƒ‹‰”ƒ‘˜‘‰–‹’ƒ”ƒœ˜‹Œ‡ƒŒ‡†ƒ˜‡ͳͻ͸ͳǤ‰‘†‹‡‰†Œ‡•—•–—†‡–‹Ǥ ǤǤǦƒƒ ’”˜‘ ‘”‹•ničkiǦorijentiranom računalu, PDPǦͳǡ ”‡‹”ƒŽ‹ ‹‰”— ’ƒ ‡™ƒ”Ǩ ȏͳȐǤ ˜ƒ†‡•‡–ƒ‰‘†‹ƒƒ•‹Œ‡”ƒœ˜‹Œ‡ƒŒ‡Ž‡‰‡†ƒ”ƒ‹‰”ƒ’ƒ ‡ ˜ƒ†‡”•‘ŒƒŒ‡ bila nevjerojatno popularna.nter Popularnost te ungern žanraaetn se održalae i aina do danas te se i †ƒŽŒ‡”ƒœ˜‹ŒƒŒ—‹‹‰”ƒŒ—‹‰”‡‘˜‘‰tipa. Neki najpopularniji naslov današnjice na osobnim računalima su ǡ ǡ ‹†”—‰‡ azoȏʹȐǤ ire lee ero  t dn ter leey er ƒ•–ƒ˜—•Ž‹Œ‡†‹‘’‹•”ƒœ˜‘Œƒ’”‘–‘–‹’ƒ‹‰”‡’— ƒŒƒ‘†‘œ‰‘ȋ‡‰Ǥ Ȍ’‘†‹‡‘ Ǥ 74 RAČUNALNE IGRE 2020

U igri igrač se nalazi u ulozi glavnog protagonista koji se nalazi u šumi u ‘Œ‘Œ ga napadaju plišani zombiji životinja. Cilj igrača je preživjeti napade neprijatelja koji dolaze u valovima. Svaki val je naravno sve teži: u svakom valu dolazi sve višeneprijatelja koji su ujedno i sve jači i imaju sve više života. Što se tiče osnovnih mehanika igranja, igrač se može kretati slobodno kroz prostor u svim smjerovima a što se tiče napada na raspolaganju su mu 3 različite vrste oružja i bomba koja ima razorni efekt u određenom radijusu. 

Slika br. 1: Prikaz igrača i okoline igre leey er 

 Što se tiče sučelja, u donjem lijevom kutu ekrana je moguće vidjeti stanje životnih bodova igrača, u gornjem lijevom kutu igra može vidjeti koliko mu je „‘„‹’”‡‘•–ƒŽo a s desne strane vidi se trenutno odabrano oružje. U sredini s ‰‘”Œ‡•–”ƒne vidi se informacija koji val neprijatelja je trenutno aktivan. Što se tiče okoline u kojoj se igrač nalazi, igrač se može slobodno kretati kroz prostor. U šumi postoje određene prepreke (npr. stablo, kamen) a također postoje i prepreke koje igrač mora izbjegavati (npr. bodlje). U slučaju da igrač stane na zamku izgubit će određenu količinu životnih bodova. U okolini se nalaze i mjesta gdje igrač može regenerirati životne bodove p”‡Žƒ•‘ ’”‡‘ odgovarajućih polja.  Igrača napadaju 3 vrste neprijatelja a to su: plišani medvjed (plave boje), plišani zec (ljubičaste bolje) i plišani slon (žute boje). Svaki neprijatelj ima svoju razinu životnih bodova i nanosi odgovarajuću razinu štet‡Ǥ˜ƒ‹‘†‘˜‹Š ‡’”‹Œƒ–‡ŽŒƒ †‘Žƒœ‹ — †˜ƒ ‘„Ž‹ƒǣ ƒŽ‹ ‹ ˜‡Ž‹‹ ‡’”‹Œƒ–‡ŽŒǤ ‡Ž‹ƒ ˜‡”œ‹Œƒ neprijatelja ima više životnih bodova i radi veću štetu igraču od male verzije ‡’”‹Œƒ–‡ŽŒƒǤ  75 RAČUNALNE IGRE 2020

snona strtra roeta roramsom alat nit

•‘˜ƒ•–”—–—”ƒ•˜ƒ‡‹‰”‡‘Œƒ•‡”ƒ†‹—’”‘‰”ƒ•‘ƒŽƒ–—‹–›Œ‡†ƒ•‡ igra dijeli u odgovarajuće scene. To su logički odvojeni dijeloviaejet igre. U projektu aejetsu korištene svije scene: jedna za početni izbornik a druga za igranje same ‹‰”‡Ǥ ˜ƒƒ • ‡ƒ ‹ƒ •˜‘Œ‡ ‘•‘˜‡ ‘„Œ‡–‡ ‹‰”‡ ȋ‡‰Ǥaejet Ȍ ȏ͵ȐǤ Œ‡–‡‡ŽŒ‹‘„Œ‡–‹’—–‡Œ‡‰ƒ•‡•–˜ƒ”ƒŒ—Ž‹‘˜‹ǡ‘‘Ž‹ƒ‹‘•–ƒŽ‹Uuttn elementi igre. Primjerice, gumb na početnom ekranu je  ‘Œ‹ ‹ƒ pridruženu skriptu  i upravitelj događajiƒǤ ”‹–‹•‘ ƒ ‰—„ǡ upravitelj događaja interpretira sami događaj i poziva odgovarajuću metodu iz Kretanje•”‹’–‡Ǥ igrača  igiddy  Kretanje igrača je implementirano pomoću komponente  ‘Œƒ objektu kojem je ta komponenta pridružena daje osnovna fizikalna svojstva ȏͶ]. Ta Udate komponenta se koristi i kod igrača i kod neprijatelja kakorae bi se implementirala mogućnost kretanja tih entiteta. Što se tiče samog igrača, u ‡–‘†‹ ‘Œƒ•‡‹œ˜odi prilikom učitavanja svake sličice (eng. Ȍ igre ažurira se pozicija igračaƒ–‡‡ŽŒ—’”‹–‹•—–‹Š–‹’‹œƒ”‡–ƒŒ‡ȋœƒ†ƒ‡ –‹’‡•—‹•–”‡Ž‹ ‡ƒ–‹’‘˜‹ ‹ȌǤUdate    ‡–‘†‹  dohvaćaju se osi kretanja te se vrijednosti spremaju u ˜ƒ”‹Œƒ„Ž‡float moveHorizontalǤ = Input.GetAxisRaw("Horizontal"); float moveVertical = Input.GetAxisRaw("Vertical");

ve  igiddy  ‡–‘†‹  se kreira vektor smjera kretanja koji tada pomiče objekt voidigrača Move( u zadanomfloat h, smjeru float putemv) { ‘’‘‡–‡Ǥ  movement.Set(h, 0f, v); movement = movement.normalized * MovementSpeed * Time.deltaTime; rb.MovePosition(transform.position + movement); }

 Osim pomicanja igrača je potrebno i rotirati igrača prema poziciji miša jer je to •jer u kojem želimo da igrač bude okrenut kako bi igrač mogao u smjeru mišavoid Turning()pucati.  {  Ray camRay = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit floorHit; if (Physics.Raycast(camRay, out floorHit, camRayLength, floorMask)) { Vector3 playerToMouse = floorHit.point - transform.position;

76 RAČUNALNE IGRE 2020

playerToMouse.y = 0f; Quaternion newRotatation = Quaternion.LookRotation(playerToMouse); rb.MoveRotation(newRotatation); } }

retane neriatela 

ƒ‹’Ž‡‡–ƒ ‹Œ—retanja neprijatelja prema igraču koriste se odgovarajuće ugrađene komponente programskog alata Unity za definiranje podloge ”‡–ƒŒƒ‹’”‘Š‘†‘•–‹ƒ–‘Œ’‘†Ž‘œ‹Ǥƒ–‡‡ŽŒ—†‡ˆ‹‹”ƒ‡’‘†Ž‘‰‡Š‘†ƒŒƒ averadi se izračun traženja najkraćeg puta od pozicije na ‘Œ‘Œ •‡ ’‘Œ‡†‹‹ae neprijatelj nalazi i pozicije igrača. ƒ‘˜—ˆ— ‹‘ƒŽ‘•–’‘–”‡„‘Œ‡‘”‹•–‹–‹ komponentu na okolini igre. Nakon što se ona odredi (eng. Ȍ moguće je dobiti željenu funkcionalnost. Na slici br. 2 vidljiva je ta definirana ’‘†Ž‘‰ƒ”‡–ƒŒƒ’Žƒ˜‘„‘Œ‘Ǥ 

lia r ave ae  igiddy avegent Kako bi se omogućilo kretanje neprijatelja, uz  ‘’‘‡–— ‡’”‹Œƒ–‡ŽŒ‹‹ƒŒ—‹ komponentu. Ta komponenta je zadužena za pomicanje objekta od trenutne pozicije do ciljane točke, tj. traženje najkraćeg ˜ƒŽ‹†‘‰’—–ƒȋ‹œ„Œ‡‰ƒ˜ƒŒ‡’”‡’”‡ƒȌǤ  U metodi Update() koja se izvodi svaku sličicu iscrtavanja igre ažurira se željenovoid Update() odredište { kretanja pojedinog neprijatelja a to je pozicija igrača.  if (!(enemyHealth.CurrentHealth <= 0)) { nav.SetDestination(player.position); } }



77 RAČUNALNE IGRE 2020

mlementaia meania naaana 

Kako bi igrač savladaoayat neprijatelje koji mu se približavaju,t mora im oduzeti životne bodove pucanjem u njih. Kako bi se odredilo koji neprijatelj je pogođen, koristi se  ‡–‘†ƒǤ ‡–‘†ƒ  ’”‘˜Œ‡”ƒ˜ƒ Œ‡ Ž‹ œ”ƒƒ aeaagepogodila neku odgovarajuću metu. Svi neprijatelji se nalaze u odgovarajućem sloju i na taj način su podložni tome da budu pogođeni. Metodom void Shoot() { se smanjuju životni bodovi pogođenom neprijatelju.  timer = 0f; gunAudio.Play(); gunLight.enabled = true; faceLight.enabled = true; gunLine.enabled = true; gunLine.SetPosition(0, transform.position); shootRay.origin = transform.position; shootRay.direction = transform.forward; if (Physics.Raycast(shootRay, out shootHit, range, shootableMask)) { EnemyMovement enemyMovement = shootHit.collider.GetComponent();

if (enemyMovement != null) { enemyMovement.TakeDemage(damagePerShot); } gunLine.SetPosition(1, shootHit.point); } else { gunLine.SetPosition(1, shootRay.origin + shootRay.direction * range); } }

Neprijatelj može napasti igrača ako se nađe u Œ‡‰‘˜‘Œ ‡’‘•”‡†‘Œ „Ž‹œ‹‹Ǥ Ako se igrač nađe na odgovarajućoj udaljenosti i ako je prošlo odgovarajuće vrijemevoid Update() od eventualnog { prijašnjeg napada, neprijatelj će napasti igrača.  timer += Time.deltaTime; if (timer >= timeBetweenAttacks && playerInRange) { Attack(); } } void OnTriggerEnter(Collider other) { if (other.gameObject == player) { playerInRange = true; } }

78 RAČUNALNE IGRE 2020 void OnTriggerExit(Collider other) { if (other.gameObject == player) { playerInRange = false; } } void Attack() { timer = 0f; player.GetComponent().TakeDeamge(attackDamage); }

ealt  Igrač i svi neprijatelji imaju komponentu  ‘Œƒ ‹ƒ †˜‹Œ‡ ‡–‘†‡ œƒ oduzimanje i povećavanje životnih bodova te dohvaćanje trenutne v”‹Œ‡†‘•–‹ azineživotnih i bodova.starane neriatela 

”‹’–ƒ ‡›ƒƒ‰‡” Œ‡ •”‹’–ƒ ‘Œƒ •‡ ‘†˜‹Œƒ — ’‘œƒ†‹ni i zadužena je za upravljanje valovima neprijatelja. U slučaju da je igrač eliminirao sve neprijatelje na pojedinoj razini učitava se iduća razina (ili val neprijatelja). ˜ƒƒ ”ƒœ‹ƒ ‹ƒ †‡ˆ‹‹”ƒ— ˜”•–— ‹ „”‘Œ ‡’”‹Œƒ–‡ŽŒƒ ‘Œ‹ •‡ ƒ –‘Œ ”ƒœ‹‹ void•–˜ƒ”ƒŒ Update()—Ǥ {  if (spawnNextWave) { switch (wave) { case 1:  spawnNextWave = false; SpawnSmallerSmallEnemyManager(15); break;  case 2:  spawnNextWave = false; SpawnSmallerSmallEnemyManager(15); SpawnSmallerMediumEnemyManager(5); break;  . . .  case 10:  SpawnSmallerSmallEnemyManager(75); SpawnSmallerMediumEnemyManager(20); SpawnSmallerBigEnemyManager(10);  SpawnSmallEnemyManager(25);  SpawnMediumEnemyManager(25);  SpawnBigEnemyManager(20);  break;  default: break;   }  }  if (wave == 11) { SceneManager.LoadScene("WinGameScene");   79 RAČUNALNE IGRE 2020

} CheckEnemies(); }    Zaključak

”‘‰”ƒ•‹ƒŽƒ–‹–›Œ‡pokretač za razvoj računalnih igara koji ima mnogo korisnih komponenti koje mogu uvelike olakšati razvoj prototipova igara a ƒ”ƒ˜‘ ‘†ƒ ‹ ˆ‹ƒŽ‹Š ’”‘‹œ˜‘†ƒ ‹‰ƒ”ƒǤ ‘‰‡ ˆ— ‹‘ƒŽ‘•–‹ ‘Œ‡ •— — ‘˜‘ ’”‘–‘–‹’— ‹’Ž‡‡–‹”ƒ‡ •‡ ‘•ŽƒŒƒŒ— ƒ ‰‘–‘˜‡ ‘’‘‡–‡ ‘Œ‡ omogućavaju da se na jednostavan način dođe do željenih funkcionalnosti: kretanje na temelju fizikalnih svojstava, traženje najkraćeg puta, detekcija kolizije i sl. Također od velike pomoći mogu biti i brojni resursi koji su †‘•–—’‹•˜ƒ‘‡–o želi razvijatieferene svoju igru u programskom alatu Unity. 

ȏͳȐ C. J. Barrish: A Detailed History of Shoot ‘Em Up Arcade Games (Liberty Games Blog). (10. veljače 2020.) Dostupno na: Š––’•ǣȀȀ™™™ǤŽ‹„‡”–›‰ƒ‡•Ǥ ‘Ǥ—Ȁ„Ž‘‰ȀƒǦ†‡–ƒ‹Ž‡†ǦŠ‹•–‘”›Ǧ‘ˆǦ•Š‘‘–Ǧ‡Ǧ —’Ǧƒ” ƒ†‡Ǧ‰ƒ‡•Ȁ ȏʹȐ Žƒ–ǣ Šƒ– ƒ”‡ –Š‡ „‡•– Š‘‘– ̵ ’ ‰ƒ‡• ‘ –‡ƒǫ (11. veljače ʹͲʹͲǤȌǤ‘•–—’‘ƒǣŠ––’•ǣȀȀ™™™Ǥ•Žƒ–Ǥ ‘Ȁ–‘’‹ •Ȁ͸͵ͺ͵Ȁ̱•Š‘‘–Ǧ‡Ǧ—’Ǧ ‰ƒ‡•Ǧ‘Ǧ•–‡ƒ ȏ͵Ȑ Unity Documentation: GameObject (17. veljače 2020.). Dostupno na: Š––’•ǣȀȀ†‘ •Ǥ—‹–›͵†Ǥ ‘Ȁ ”‹’–‡ˆ‡”‡ ‡Ȁ ƒ‡„Œ‡ –ǤŠ–Ž ȏͶȐ Unity Documentation: RigidBody (17. veljače 2020.). Dostupno na: Š––’•ǣȀȀ†‘ •Ǥ—‹–›͵†Ǥ ‘Ȁ ”‹’–‡ˆ‡”‡ ‡Ȁ‹‰‹†„‘†›ǤŠ–Ž ȏͷȐ ‹‹’‡†‹ƒǣ Š‘‘– ̵‡ —’Ǥ ȋͳͺǤ ”—Œƒ ʹͲʹͲȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ‡Ǥ™‹‹’‡†‹ƒǤ‘”‰Ȁ™‹‹ȀŠ‘‘–̴Ψʹ͹‡̴—’

80 RAČUNALNE IGRE 2020

Izrada računalne igre Biljar roramsom alat nit

Karlo Nenadić, Danijel Radošević i Mladen Konecki  nenadiir daradir lneir ƒ—Ž–‡–‘”‰ƒ‹œƒ ‹Œ‡‹‹ˆ‘”ƒ–‹‡ǡSveučilište u Zagrebu

Sažetak 

 ‘˜‘ ”ƒ†— Œ‡ ‘’‹•ƒ ’”oces izrade računalne igre biljar za dva igrača u programskom alatu Unity. Modeli korišteni u kreiranoj igri napravljeni su u ’”‘‰”ƒ•‘ ƒŽƒ–— Ž‡†‡”Ǥ  ”ƒ†— •— ‘’‹•ƒ‡ ‘•‘˜‡ ‡Šƒ‹‡ ‹‰”‡ ‹ Ključn‹’Ž‡‡–ƒ ‹Œƒ–‹Š‡Šƒ‹ƒǤe riječi   o ǣbiljar, računaŽƒ‹‰”ƒǡ‹–›ǡ͵ǡ͓ 

Industrija računalnih igara je jedna od najvećih industrija na svijetu. Predviđa se da će do 2025. godine tržište doseći vrijednost od 256 milijardi dolara. Danas više od 2,5 milijarde ljudi igra račuƒŽ‡‹‰”‡†‘‡’‘”–’—engine „Ž‹ƒ„”‘Œ‹ više od 450 milijuna ljudi [2]. Razvoj računalnih igara nikada nije bio pristupačniji zbog mnogih alata i pogona (eng. ) koji omogućavaju brži razvoj igara. Ne samo da alati omogućavaju brži razvoj već mnogi od tihƒŽƒ–ƒ su besplatni što zbilja omogućava svakome da se počne baviti ovim područjem ȏ͵ȐǤ  Igra biljara je podžanr igara sportskih simulacija [6]. U ovom radu opisat će se proces izrade igre biljara za dva igrača. Igra će biti napravljena putem ’”‘‰”ƒ•‘‰ƒŽƒ–ƒ ‹–›ȏͶȐǡŒ‡†ƒ‘†ƒŒ’‘œƒ–‹Œ‹Š „‡•’Žƒ–‹Š ’‘‰‘ƒ ‹‰ƒ”ƒ [5]. Mnogo je lakše izraditi računalnu igru simulacije biljara koristeći već gotov ’‘‰‘ ’‘’—– ‹–›Œƒ Œ‡” •— ‘‰‡ ’‘–”‡„‡ •–˜ƒ”‹ ‹’Ž‡‡–‹”ƒ‡ǣ ˆ‹œ‹ƒǡ —’”ƒ˜ŽŒƒŒ‡ƒ‡”ƒƒǡ†‡–‡ ‹Œƒ‘Ž‹œije, izrada grafičkog sučelja i sl. Igra će biti napravljena za Windows platformu i igrat će se mišem.  Za izradu potrebnih grafičkih elemenata igre korišten je programski alat Ž‡†‡”ȏͳ]. U njemu će biti izrađeni 3D modeli potrebnih elemenata za izradu igre: biljarsko stol, štap i kuglice. Osim 3D modela biti će potrebno izraditi grafičke elemente grafičkog sučelja igre. Sam projekt biti će strukturiran u †˜‹Œ‡ • ‡‡ — ’”‘‰”ƒ•‘ ƒŽƒ–— Unity. Prva scena biti će scena izbornika putem kojeg će igrač moći započeti igrati novu igru, nastaviti igrati postojeću

81 RAČUNALNE IGRE 2020

igru, podesiti određene postavke vezano uz igru te izaći iz igre. Druga scena bitioelirane će scena same igre gdje će igrač moći igrati simula ‹Œ—‹‰”‡„‹ŽŒƒ”ƒǤ

’”˜‘Œˆƒœ‹‹œ”ƒ†‡‹‰”‡”‡‹”ƒ‹•—’‘–”‡„‹͵‘†‡Ž‹œƒ‹‰”—Ǥ„Œ‡–‹‘Œ‡Œ‡ ’‘–”‡„‘ ‹œ”ƒ†‹–‹ •— ”‡Žƒ–‹˜‘ Œ‡†‘•–ƒ˜‹ œƒ ‹œ‘†‡Ž‹”ƒ–‹Ǥ –‘Ž Œ‡ ƒ’”ƒ˜ŽŒ‡ –ƒ‘ †ƒ Œ‡ ”‡‹”ƒƒlean ’Ž‘Šƒ ‘Œƒ ‹ƒ •˜‘Œ ”—„ –‡ Œ‡ ”—„ —œ†‹‰—– — ‘†‘•— ƒ plohu. Nakon toga je kreiran cilindar u obliku rupe za kuglice. Korištenjem ‘†‹ˆ‹ƒ–‘”ƒ  su napravljene rupe u stolu na odgovarajućim ’‘œ‹ ‹ŒƒƒǤ‘Œ‡œƒ‘„ŽŒ‡‘ƒ‘„‹•‡†‘„‹‘†‘Œƒ•’ƒŒƒŒƒ•ƒ•–‘Ž‘Ǥƒ‘ ‘†‡Ž‹”ƒŒƒ ƒ ‘„Œ‡– •— dodane odgovarajuće teksture: tekstura drveta na ”—„•–‘Žƒ‹œ‡Ž‡ƒ„‘Œƒƒ’‘†Ž‘‰—•–‘ŽƒǤonačan model stola vidljiv je na slici „”ǤͳǤ 

Slika br. 1: Konačan model stola u alatu Blender

  Štap za igranje je izrađen tako što je napravljen Œ‡†‘•–ƒ˜ƒ ‹Ž‹†ƒ” odgovarajuće dužine koji je nešto malo manjeg promjera na jednom kraju od †”—‰‘‰Ǥƒ‡„‹ŽŒƒ”•‡—‰Ž‹ ‡•—Œ‡†‘•–ƒ˜‡—‰Ž‡ƒ‘Œ‡Œ‡’‘–”‡„‘•ƒ‘ oiastaviti odgovarajuće ire teksture. 

U klasičnom biljaru za dva igrača, igrači igraju naizmjenično. U slučaju da igrač pogodi kuglicu u rupu, igrač igra ponovno. Ako u nekom pokušaju n‡ —„ƒ ‹ svoju kuglicu u rupu, tada igra drugi igrač. Ako igrač pogodi ili ubaci tuđu (ili „‹Œ‡Ž—Ȍ—‰Ž‹ —ǡ’”otivnički igrač ima mogućnost postavljanja bijele kuglice na željenu poziciju. Igrač igra tako što štapom udara direktno u bijelu kuglicu te 82 RAČUNALNE IGRE 2020

pokuša˜ƒ‘†„‹ŒƒŒ‡’‘‰‘†‹–‹•˜‘Œ‡—‰Ž‹ ‡—”—’—Ǥ‹‰”‹’‘•–‘Œ‡†˜‹Œ‡˜”•–‡ kuglica: „pune“ i „prazne“. Odabir kuglica se određuje u prvim potezima igre. Prvi igrač koji pogodi neku od vrsta, to je njegova vrsta kuglica koje treba pogađati u rupe. Posebna kuglica je crna kuglica koja je zajednička i koja se mora spremiti u rupu posljednja. U slučaju da igrač crnu kugŽ‹ —’‘•’”‡‹— rupu prije nego što je pospremio sve svoje druge kuglice, automatski gubi igru.  lliderƒƒ ‡Šƒ‹ƒ‹‰”ƒŒƒ •‡‘•ŽƒŒƒ ƒˆ‹œ‹ƒŽƒigiddy •˜‘Œ•–˜ƒǤ ƒ‘„‹ •‡ ‘•‹‰—”ƒŽ‘ korektno izvođenje igre, koriste se komponente za detekciju sudara (eng. Ȍ ‹ ‘’‘‡–ƒivt ”—–‹Š –‹Œ‡Žƒ ȋ‡‰Ǥ ). S obzirom da igrač štapom udara bijelu kuglicu, pozicija štapa se postavlja tako da je centar ”‘–ƒ ‹Œ‡ ȋ‡‰Ǥ ) na poziciji bijele kuglice. Na taj način se štap rotira oko bijele kuglice. Smjer u koji štap ’‘ƒœ—Œ‡ †‘„‹˜ƒ •‡ ƒ‘ ˜‡–‘” ‘Œ‡ Œ‡ š koordinata kosinus kuta rotacije pivota štapa, z koordinata sinus kuta rotacije pivota štapa a y koordinatƒ Œ‡ —ŽƒǤ †‘• Œ‡’”‹ƒœƒ ƒ•Ž‹ ‹ „”Ǥ ʹǤ ‡†‘ kada imamo određen smjer kretanja kuglice, sve što trebam‘ ƒ‘ „‹•‘ dobili konačni vektor je odrediti jačinu udarca. Jačina se određuje dužinom pritiska lijeve tipke miša. 

lia r rjevna kružnica Slika br. 3: Pomoćne linije i kugla

Standardna mogućnost u simulacijama biljara j‡ ‹ ˜‹œ—ƒŽ‹ ’”‹ƒœ •Œ‡”ƒ — kojem će se bijela kuglica ispucati i koja je to dodirna točka bijele kuglice s ’”˜‘ —‰Ž‹ ‘ ‘Œƒ •‡ ƒŽƒœ‹ ƒ •Œ‡”u kretanja bijele kuglice. Također je čest slučaj iscrtavanje smjera kretanja kuglice koju bijela kuglica pogađa, kako bi se igraču olakšalo spremanje te kuglice u rupu. Naravno, iscrtava se samo neposredna udaljenost kretanja inače bi igra bila prejednostƒ˜ƒǤ Ž‹ƒ „”Ǥ͵ ’”‹ƒœ—Œ‡ •’‘‡—–ƒ ‹• ”–ƒ˜ƒŒƒǤ ƒ‘ „‹•‘ †‘„‹Ž‹ –— ˆ— ‹‘ƒŽ‘•–ǡ ‘”‹•–‹‘ˆ— ‹Œ—‘ja ispucava sferu veličine kuglice u smjeru kretanja bijele —‰Ž‹ ‡Ǥ —–‡ –‡ •ˆ‡”‡ •‡ †‡–‡–‹”ƒ Œ‡•–‘ •—†ƒ”ƒ „‹Œ‡Ž‡ —‰Ž‹ ‡ • ’”˜‘ —‰Ž‹ ‘ ƒ ’—–ƒŒ‹Ǥ ‹‡ †‘„‹˜ƒ‘ Œ‡•–‘ —†ƒ”ƒ ‘Œ‡ Œ‡ †‘˜‘ŽŒ‘ †‘†ƒ–‹ normalu udarca pomnoženu s promjerom bijele kugli ‡ ƒ‘ „‹•‘ †‘„‹Ž‹

83 RAČUNALNE IGRE 2020

ine enderer središte pomoćne kuglice koju trebamo iscrtati. Tada komponenti za prikaz „‹Œ‡Ž‡ Ž‹‹Œ‡ ȋ‡‰Ǥ ) početak iscrtavanŒƒ ’‘•–ƒ˜‹‘ ƒ ’‘œ‹ ‹Œ‹ bijele kuglice a kraj na poziciji pomoćne sfere. Za iscrtavanje druge pomoćne linije koristi se pozicija sfere i središte udarene kuglice. Ovisno o jačini udarca, mijenjaRay ray se = i newdužina Ray druge(start, pomoćne direction); linije. if (Physics.SphereCast(ray, radius, out RaycastHit raycastHit)) { end = raycastHit.point + radius * raycastHit.normal; }

Vector3 endLine = raycastHit.point - raycastHit.normal * Vector3.Angle(raycastHit.normal, end - start) / 150f;

Još jedan zanimljiv detalj je početno postavljanje svih kuglica koje se slažu u ‘„Ž‹— trokuta. Kako bi se simulirala nesavršenost početnog postavljanja, početna pozicija kuglica se randomizira za mali određeni pomak. Na taj način se dobiva još jedan element slučajnosti koji će utjecati na početno razbijanje kako bi ono bilo dodatno nasumičn‘Ǥ  Implementacija većine ostalih pravila vezanih za praćenje stanja igre su relativno jednostavna. Kao što je već istaknuto u pravilima, tip kuglica određenog igrača se određuje na način da prva ubačena kuglica tokom igre postaje „boja“ kuglica igrača koji je na potezu. Postoji nekoliko načina na koje igrač može napraviti prekršaj što će rezultirati time da protivnički igrač u sljedećem potezu može bijelu kuglicu staviti bilo gdje na stolu po želji. To su sljedeće situacije: ako bijela kuglica ne dodirne n‹–‹ Œ‡†— —‰Ž‹ —ǡ ƒ‘ „‹Œ‡Žƒ kuglica dodirne prvo protivničku kuglicu i ako bijela kuglica dodirne prvo crnu kuglicu. Standardno, ako igrač pogodi barem jednu kuglicu u rup—ǡ ‹‰”ƒ ’‘‘˜‘ǡƒƒ‘‡—•’‹Œ‡—‰—”ƒ–‹‹–‹Œ‡†——‰Ž‹ ——”—’—ǡ–ƒ†ƒŒ‡ƒ’‘–‡œ— protivnički igrač.  Kraj igre može doći standardno ako igrač ugura u rupe sve svoje kuglice i na kraju crnu kuglicu. Također se smatra prekršajem ako igrač prilikom —„ƒ ‹vanja crne kuglice također ubaci i bijelu kuglicu. U tom slučaju je igrač ‹œ‰—„‹‘ǤJednako tako ako igrač prijevremeno ubaci crnu kuglicu prije ostalih —‰Ž‹ ƒǡ ‹œ‰—„‹‘ Œ‡Ǥ ˜‡ ‘˜‘ •— ”‡Žƒ–‹˜‘ Œ‡†‘•–ƒ˜‘ ’”‘˜Œ‡”‡ ‘Œ‡ –”‡„ƒ ƒ’”ƒ˜‹–‹ ƒ‘ „‹ †‘„”‘ ˆ— ‹onirala logika igre. tj. kako bi se uvažila sva pravila igre. Status igre je moguće pratiti kroz kreirano grafičko sučelje na kojem se nalazi oznaka koji igrač je trenutno na potezu, imena igrača te koliko kuglica je pojedini igrač uspio pospremiti u rupe.Na taj način je jednostavnije ’”ƒ–‹–‹•–ƒŒ‡‹‰”‡Ǥ 

84 RAČUNALNE IGRE 2020

oatne oie

•‹same igre, igrač ima i još jeke dodatne mogućnosti moje može podesiti vezano za samu igru. Igrač ima mogućnost prikazivanja ili skrivanja pomoćne linije, može mijenjati boju pomoćne linije, modificirati dužinu pomoćne linije, može promijeniti teksturu izgleda stola i podesiti glasnoću zvukova u igri. Na samom kraju igre kreirana je i animacija konfeta prilikom proglašenja pobjednika igre a ona je napravljena putem sustava čestica. Završni ekran je ˜‹†ŽŒ‹˜ƒ•Ž‹ ‹„”ǤͶǤ 

lia r niaija a raj igre

Zaključak 

 ‘˜‘ ”ƒ†— Œ‡ —”ƒ–‘ ‘’‹•ƒ ’”‘ ‡• ‹œ”ƒ†‡ ‹‰”‡ •‹—Žƒ ‹Œ‡ „‹ŽŒƒ”ƒ — programskom alatu Unity. Opisan je način kako su kreirani potrebni resursi, ‘’‹•ƒƒ•—’”ƒ˜‹Žƒigre i način implementacije pojedinih segmenata mehanika ‹‰”ƒŒƒǤƒ‘„‹•‡‹’Ž‡‡–‹”ƒŽƒ‘˜ƒ˜ƒ‹‰”ƒ’‘–”‡„‘Œ‡œƒ–‹‘•‘˜‡”ƒ†ƒ— ’”‘‰”ƒ•‘ ƒŽƒ–— ‹–›ǡ ’‘–”‡„‘ Œ‡ œƒ–‹ ’”‘‰”ƒ‹”ƒ–‹ — ’”‘‰”ƒ•‘ jeziku C# i potrebno je određeno znanjeeferene iz područj ƒƒ–‡ƒ–‹‡‹ˆ‹œ‹‡Ǥ 

ȏͳȐ Ž‡†‡”Ǥȋͳ͵Ǥ”—ŒƒʹͲʹͲǤȌǤ‘•–—’‘ƒǣŠ––’•ǣȀȀ™™™Ǥ„Ž‡†‡”Ǥ‘”‰Ȁ ȏʹȐ ‘„”‹Ž‘˜ƒǡ Ǥ ‘™ — Š • –Š‡ ƒ‹‰ †—•–”› ‘”–Š ‹ ʹͲʹͲǫ ȋͳ͵Ǥ ”—Œƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ–‡ ŠŒ—”›Ǥ‡–Ȁ„Ž‘‰Ȁ‰ƒ‹‰Ǧ‹†—•–”›Ǧ ™‘”–ŠȀ

85 RAČUNALNE IGRE 2020

ȏ͵Ȑ ‡––›ǡ Ǥ ‘’ ͳʹ ”‡‡ ƒ‡ ‰‹‡• ‘”‡‰‹‡”•Ƭ š’‡”–• Ž‹‡Ǥȋͳ͵Ǥ ”—Œƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ ‘ ‡’–ƒ”–‡’‹”‡Ǥ ‘Ȁˆ”‡‡Ǧ‰ƒ‡Ǧ ‡‰‹‡•Ȁ ȏͶȐ ‹–›ǤȋͺǤ”—ŒƒʹͲʹͲǤȌǤ‘•–—’‘ƒǣŠ––’•ǣȀȀ—‹–›Ǥ ‘Ȁ ȏͷȐ ‹‹’‡†‹ƒǣ ƒ‡ ‡‰‹‡Ǥ ȋͺǤ ”—Œƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ‡Ǥ™‹‹’‡†‹ƒǤ‘”‰Ȁ™‹‹Ȁ ƒ‡̴‡‰‹‡ ȏ͸Ȑ ‹‹’‡†‹ƒǣ ’‘”–• ‰ƒ‡Ǥ ȋͳ͵Ǥ ”—Œƒ ʹͲʹͲǤȌ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ‡Ǥ™‹‹’‡†‹ƒǤ‘”‰Ȁ™‹‹Ȁ’‘”–•̴‰ƒ‡

86 RAČUNALNE IGRE 2020

Alati i platforme za razvoj računalnih igara

Fran Šimović i Mario Konecki  iviir arineiir ƒ—Ž–‡–‘”‰ƒ‹œƒ ‹Œ‡‹‹ˆ‘”ƒ–‹‡ǡSveučilište—ƒ‰”‡„— Sažetak  

 ‘˜‘ ”ƒ†— obradit će se –‡ƒ ƒŽƒ–ƒ ‹ ’Žƒ–ˆ‘”‹ ‘Œ‡ •‡ ‘”‹•–‡ ’”‹ ‹œ”ƒ†‹ računalnih igara. U početku rada će se proći kroz samu povijest računalnih ‹‰”ƒǡ‘†‘•‘—”ƒ–‘će se ’”‹ƒœƒ–‹Œ‹Š‘˜ƒ’”‡†ƒ†‘†ƒƒ•ǡƒ‘‹–”‡†‘˜‹ ‘Œ‹ •— „‹Ž‹ ƒ–—ƒŽ‹ — ”ƒœ‹ ”ƒœ†‘„ŽŒ‹ƒǤ ƒ–‹ǡ nakon povijesti računalnih igara, u radu će se prikazati pov‹Œ‡•‹ ‹Ž—• ƒŽƒ–ƒ ‹ ’Žƒ–ˆ‘”‹ –‡ •ƒ‹ •—•–ƒ˜ izrade računalnih igara kroz nekoliko desetljeća. Glavni dio rada‘„—Š˜ƒ–‹–će †‡–ƒŽŒ‹Œ‹’”‹ƒœ ‡‘Ž‹o različitih alata i platformi i nekih od najuspješnijih Ključneračunalnih riječi igara koje su izrađene pomoću ovih alata i platformiǤ  ǣRačunalna igara,vrste računalnih igara,’‘˜‹Œ‡•‹ ‹Ž—•ƒŽƒ–ƒ‹ ’Žƒ–ˆ‘”‹œƒrazvoj računalnih ‹‰ƒ”ƒǡƒ”Š‹–‡–—”ƒƒŽƒ–ƒǡ‰ƒ‡‡‰‹‡ǡ˜‹†‡‘‹‰”ƒǡ o‹–›ǡ ”‡ƒŽ‰‹‡ǡ ”‘•–„‹–‡ 

očetak razvoja industrije video‹‰ƒ”ƒ seže još — •”‡†‹— 20. stoljeća kada je inženjer Josef Kates izgradio prvo računalo „Bertie the Brain“ na koj‡Œ‡„‹Ž‘ mogući i‰”ƒ–‹˜‹†‡‘igru „ticǦ–ƒ Ǧtoe“, odnosno križićǦkružić ȏͳȐǤƒŒ’”˜‹‘”ƒǡ izgradnja računala za vrlo jednostavnu igru, bio je izrazito kompleksan što je rezultiralo jednim početkom potpuno nove industrijeǡ ‡poznate tadašnjem •˜‹Œ‡–—Ǥ ƒ ƒ’”‡†ƒ ‹†—•–”‹Œ‡ ˜‹†‡‘‹‰ƒ”ƒ —˜‡Ž‹‡ ‘˜‹•‹ ‘ ƒ’”‡–— tehnološke industrije, stoga je bilo potrebno dosta godina kako bi se počele razvijati kompleksnije igre namijenjene različitim skupinama.  ‘ ͻͲǦ‹Š ‰‘†‹ƒ ʹͲǤ •–‘ŽŒ‡ća poduzeća ‘Œƒ •— ”ƒœ˜‹ŒƒŽƒ računalne igre su —Œ‡†‘ ”ƒœ˜‹ŒƒŽƒ i računala na kojima su se ‘˜‡ ‹‰”‡ ‹‰”ƒŽ‡ǡ ’‘’—– poduzeća –ƒ”‹ ‘Œ‡ Œ‡ ͳͻ͹ͳǤ ‰‘†‹‡ ”ƒœ˜‹Ž‘ svoju prvu igru „Computer Space“. ƒ’”‡–‘ –‡Š‘Ž‘‰‹Œ‡ǡ ƒ–—ƒŽƒ ‹†—•–”‹Œƒ ˜‹†‡‘‹‰ƒ”ƒ „ƒ˜‹ •‡ ‹•Žjučivo razvojem igara, no svejedno ovisi o razvoju računalne tehnologije.  Većina današnjih alata je namijenjena većim poduzećima‘Œ ƒ‹ƒŒ—˜‡Ž‹‡ ”ƒœ˜‘Œ‡–‹‘˜‡ǡ‘’‘•–‘Œ‡‹ƒŽƒ–‹‘Œ‡‘‰—‘”‹•–‹–‹‹’”‹˜ƒ–‡‘•‘„‡ǡœƒ œƒ„ƒ˜—‹Ž‹‘‡” ‹ŒƒŽ‡•˜”Š‡—œ’‘•‡„ƒ‘„Ž‹ƒ’Žƒ–‡ȏʹȐǤ  

87 RAČUNALNE IGRE 2020

Pojam „Game engine“

Generalno koncept „Game engine“, odnosno alati i platforme za razvoj računalnih igara, je prilično jednostavan za razumjeti. To je softver koji izvršava uobičajene zadatke ’‘–”‡„‡œƒ‹œ”ƒ†—˜‹†‡‘‹‰”‡ǡ’‘’—–”‡†‡”‹”ƒŒƒǡ raznih izračuna povezanih s fizikomǡ ƒ •˜‡ ƒ‘ „‹ •‡ ”ƒœ˜‘Œ‹ ’”‘‰”ƒ‡”‹ ‘‰Ž‹ˆ‘—•‹”ƒ–‹ƒ”ƒœ˜‘Œ†‡–ƒŽŒƒ‘Œ‹ ˜‹†‡‘igru čine jedinstvenom u odnosu na druge igre. Ti alati zajedno čine kolekciju komponenata kojima se može ƒ‹’—Ž‹”ƒ–‹ƒ‘„‹•‡˜‹†‡‘‹‰”ƒ”‡ƒŽ‹œ‹”ƒŽƒǤȏ͵Ȑ  Alati i platforme za razvoj računalnih igra s‡ œƒ’”avo ponašaju kao „middleware“. Middleware je softver koji se nalazi između operacijskog •—•–ƒ˜ƒ‹ƒ’Ž‹ƒ ‹Œ‡koja se pokreće na njemu. U osnovi on djeluje kao skriveni sloj, odnosno srednji sloj koji omogućava komunikaciju i upravljanje podacima œƒƒ’Ž‹ƒ ‹Œ‡ǤȏͶȐ  œ –‘‰ ”ƒœŽ‘‰ƒǡ pomoću takvih alata je moguće provesti apstrakciju, št‘ omogućava prilagodbu ˜‹†‡‘‹‰ƒ”ƒ na različitim platformama, poput igraćih konzola uz manju promjenu izvornog koda. Općenito su ti alati izrađeni od ‡‘Ž‹‘ †‘†ƒ–‹Š ‹††Ž‡™ƒ”‡Ǧƒǡ ’”Ǥ „Havok“ koji je zadužen za izračune ieavezane uz fiziku, aaa „Miles Sound System“ za zvuk, „Blink“ za video.ȏ͵Ȑ 

ƒƒ••‡•˜ƒƒ•–ƒ†ƒ”†ƒ˜‹†‡‘igra sastoji se od niza razina koje su ugrađene i usko povezane s pri葏˜‹†‡‘igre, akcijskim i avanturističkim sekvencama, •’‡–ƒ—Žƒ”‹ ˜izualnim doživljajima, koji naposljetku ’”‡†•–ƒ˜ŽŒƒŒ— ‹œƒœ‘˜ igračevim mentalnim •’‘•‘„‘•–‹ƒǤ ƒ‘ „‹ ˜‹†‡‘igra bila što zanimljivija, modularnija, pa tako i lakša za razvoj, općeprihvaćena je bazna arhitektura svakog današnjeg alata za njihov razvoj.  ”Š‹–‡–—”ƒ ƒŽƒ–ƒ œƒ ”ƒœ˜‘Œ ˜‹†‡‘‹‰ƒ”ƒ je vrlo slična arhitekturi •˜ƒ‘‰ klasičnog •‘ˆ–˜‡”ƒ, uz neke specifičnostiǤ ˜ƒ‹ ‘† ƒŽƒ–ƒ œƒ ”ƒœ˜‘Œ ˜‹†‡‘‹‰ƒ”ƒ ima „main loop“ koji sadržƒ˜ƒ Ž‘‰‹— ‹‰”‡ǡ œƒ–‹ ƒŽƒ–‡ œƒ ‰”ƒˆ‹—ǡ œ˜—ǡ ”‡†‡”‹”ƒŒ‡ •Ž‹‡ ‹ ˜‹†‡ƒǡ —Žƒœ‘ ‹œŽƒœ‡ uređaj‡ ‘Œ‡ ‘”‹•‹ ‘”‹•–‹ ‹  datoteke i aplikacijska sučelja. Sve navedene komponente u zajedničkoj interakciji omogućavaju razvoj ˜‹†‡‘‹‰”‡—’—‘‘’•‡‰—ǤȏͷȐ  

88 RAČUNALNE IGRE 2020

lia r nteraija nenti alata a ravj videigara

ni 

Unity je višeplatformski „game engine“ za video‹‰”‡ ”ƒœ˜‹Œ‡ ‘† •–”ƒ‡ poduzeća Unity Technologies, a’”˜‹’—–Œ‡ƒŒƒ˜ŽŒ‡‹‘„Œƒ˜ŽŒ‡—Ž‹’Œ—ʹͲͲͷǤ ƒ ’’Ž‡  ǤǦ‘˜‘Œ •˜Œ‡–•‘Œ ‘ˆ‡”‡ ‹Œ‹ œƒ ”ƒœ˜‘Œ‡ ’”‘‰”ƒ‡”‡ ƒ‘ ‡•Žuzivni Mac OS X „engine“ za ˜‹†‡‘igre. Od 2018. alat je proširen kako bi podržao veliki broj današnjih platformi. Alat se može koristiti za stvarƒŒ‡ trodimenzionalnih, dvodimenzionalnih igara, virtualne stvarnosti i proširene •–˜ƒ”‘•–‹ǡƒ‘‹•‹—Žƒ ‹Œƒi drugih iskustava. Alat je također usvojen‹‹œ˜ƒ ‹†—•–”‹Œ‡ ˜‹†‡‘‹‰ƒ”ƒ –‡ ‰ƒ ‘”‹•–‡ ‹†—•–”‹Œ‡ ˆ‹Žƒǡ ƒ—–‘‘„‹Žƒǡ ƒ”Š‹–‡–—”‡ǡ inženjerstva igrađevine. ȏ͸Ȑ  Unity omogućava•˜‘Œ‹‘”‹•‹ ‹ƒ”ƒœ˜‘Œ˜‹†‡‘‹‰ƒ”ƒ—ʹ‹͵‘ruženje–‡ je u svrhu toga u svojim počecima podržavao razvijanje ˜‹†‡‘igara pomoću ’”‘‰”ƒ•‘‰Œ‡œ‹ƒ‘‘ǡƒœƒ˜‹†‡‘‹‰”‡‘Œ‡•—•‡’‘”‡–ƒŽ‡—™‡„’”‡‰Ž‡†‹— podržavao je verziju JavaScriptǦƒƒœ˜ƒ—‹–› ”‹’–Ǥ‘Žƒ•‘‹–›ǦŒƒͷǤͲǡ ’”‘‰”ƒ•‹Œ‡œ‹‘‘’”‡•–ƒŒ‡„‹–‹’”‹ƒ”‹Œ‡œ‹”ƒœ˜‘Œƒ‘˜‹Š˜‹†‡‘‹‰ƒ”ƒ‹ƒ‘ je još uvijek bilo mogućnosti za njegov— —’‘”ƒ„— œƒ •–ƒ”‹Œ‡ ˜‹†‡‘‹‰”‡ǡ ƒ ‹œŽƒ•‘ ˜‡”œ‹Œ‡ ‹–›ǦŒƒ ʹͲͳ͹Ǥͳ ‹–› ”‹’– •‡ ’”‡•–ƒŒ‡ ‘”‹•–‹ œƒ ”ƒœ˜‘Œ ˜‹†‡‘‹‰ƒ”ƒ — ™‡„ ’”‡‰Ž‡†‹—Ǥ — ‹Œ— ‘„ƒ ’”‘‰”ƒ•ƒ Œ‡œ‹ƒǡ ‘‘ ‹ ‹–› ”‹’–ǡ’”‡—œ‡‘Œ‡‹ ”‘•‘ˆ–Ǧ‘˜͓ȏ͹ȐȏͺȐǤ  Žƒ–‹–›’‘†ržan je na sustavima Windows i Mƒ ǡ•˜‡”œ‹Œ‘†‘•–—’‘ za Linux platformu, iako još u eksperimentalnoj faz‹ǡ †‘ •ƒ ƒŽƒ– –”‡—–‘ podržava izgradnju ˜‹†‡‘igara za više od 25 različitih platformi. Pored svih popularnih mobilnih i računalnih platformi podržava ‹ ”ƒœ˜‘Œ ˜‹†‡‘‹‰ƒ”ƒ œƒ platforme virtualne i proširene stvarnosti poput PlayStationVR, Olocus, ‘”‡ǡ‹ ”‘•‘ˆ– ‘Ž‘‡•‹ƒ‰‹ ‡ƒ’ǡ–‡”ƒœ˜‹ŒƒŒ‡•‘ˆ–˜‡”ƒœƒ’Žƒ–ˆ‘”‡ ’‘’—–†”‘‹†‹–˜ǤȏͻȐ

89 RAČUNALNE IGRE 2020

Više od dvije trećine svih sadržaja stvorenih za proširenu i virtualnu stvarnost izrađeno jeƒŽƒ–‘‹–›ǤͻͳΨƒ’Ž‹ƒ ‹Œƒƒ‘˜im platformama za proširenu •–˜ƒ”‘•– ’‘’—– ‹ ”‘•‘ˆ–ƒ ‘Ž‘‡• •–˜‘”eno je pomoću UnityǦŒƒǡ †‘ ƒ•—‰‘˜ ‡ƒ”‹ƒ ‘‘ ͻͲΨ svojih igračkih naslova izrađenih pomoću ‹–›Ǧja. Iako su „AR“ i „VR“ tehnologije nevjerojatno mlade, poduzeća‘Œƒ•‡ „‘”‡œƒ†ominaciju nad platformama ostvaruju izvrsne rezultate. Zbog široke ’‘drške alata za različite platformeǡ korisnicima se omogućava istovremeni rad na više njih istovremeno što dodatno potvrđuje raznolikost UnityǦŒƒȏͳͲȐǤ 

lia br. 2: Izgled sučelja Unity 5.0 

nea ngine 

”‡ƒŽ ‰‹‡ Œ‡ ”ƒœ˜‹Œ‡ ͳͻͻͺǤ ‰‘†‹‡ ‘† strane poduzeća ’‹  ƒ‡•ǡ zajedno s akcijskom igrom u prvom licu pod imenom „Unreal“. Ova inačica Unreal Engine uključivala je brojne sustave, uključujući prikazivanje slik‡ǡ otkrivanje kolizija, umjetnu inteligenciju, vidljivost, umrežavanje, skriptiranje i —’”ƒ˜ŽŒƒŒ‡†ƒ–‘–‡ƒƒ. „Unreal Tournament“ pratio je „Unreal“ i napravio je velike korake u poboljšanju prikazivanja slike imrežn‹Š’‡”ˆ‘”ƒ•‹Ǥ”‡ƒŽ ‰‹‡ ’‘•–ƒ‘ Œ‡ ’‘’—Žƒ”ƒ —‰Žƒ˜‘ œ„‘‰ ‘†—Žƒ”‘‰ †‹œƒŒƒ ƒ”Š‹–‡–—”‡ alata i uključivanja vlastitog •”‹’–‘‰Œ‡œ‹ƒƒœ˜ƒ‘‰”‡ƒŽ ”‹’–Ǥ ƒ‘Œ‡— ˜‡Ž‹‘Œ Œ‡”‹ œƒ•‘˜ƒ ƒ ΪΪǦ—, korisnicima je omogućeno lako stvaranje ‹zmjena pomoću UnrealScriptǦƒǤ  

90 RAČUNALNE IGRE 2020

”‡ƒŽ ”‹’–Œ‡‹œ˜‘”‹•”‹’–‹Œ‡œ‹”‡ƒŽ‰‹‡Ǧƒ‘Œ‹•‡‘”‹•–‹‘œƒ‹œ”ƒ†— ‘†ƒ ˜‹†‡‘igre i igranja događaja prije izlaska Unreal EngineǦƒ ͶǤ ‡œ‹ Œ‡ †‹œƒŒ‹”ƒœƒŒ‡†‘•–ƒ˜‘’”‘‰”ƒ‹”ƒŒ‡˜‹†‡‘‹‰ƒ”ƒƒ˜‹•‘‘Œ”ƒœ‹‹Ǥ ‡œ‹Œ‡ u potpunosti izgrađen na objektno orijentiranim prin ‹’‹ƒ ‹ — •‹–ƒ•‹ podsjeća na Javu ili C++. Sučelja su bila podržana samo u Unreal Engine ‰‡‡”ƒ ‹Œ‹ ͵ ‹ ‡‘Ž‹‘ ˜‹†‡‘‹‰ƒ”ƒ ”‡ƒŽ ‰‹‡Ǧƒ ʹǤ ƒ ‘ˆ‡”‡ ‹Œ‹ ’”‘‰”ƒ‡”ƒ ˜‹†‡‘‹‰ƒ”ƒ ʹͲͳʹǤ ’‹  Œ‡ ‘„Œƒ˜‹‘ †ƒ •‡ ”‡ƒŽ ”‹’– —ŽƒŒƒ ‹œ ”‡ƒŽ‰‹‡ǦƒͶ‹†ƒse po苐Œ‡—’‘–’—‘•–‹‘”‹•–‹–‹ΪΪȏͳʹȐǤ  Danas Unreal Engine 4 pored računalne, konzolne i mobilne platforme podržava i razvoj ˜‹†‡‘‹‰ƒ”ƒ ‹ •‘ˆ–˜‡”ƒ —Œ‡–e, virtualne i mješovite stvarnosti. Neke od danas podržanih platˆ‘”‹•—‹†‘™•ǡƒ ǡ‹—šǡ ͷǡ‹ǡ†”‘‹†ǡŽƒ›–ƒ–‹‘ǡ„‘šǡƒ‰‹ ‡ƒ’‡ǡ —Ž—•‘ˆ–ǡ ‘‘‰Ž‡ ƒ›†”‡ƒǡ ƒ•—‰ ‡ƒ” ǡ ‘Ž‘‡• ʹǤ œŽƒ•‘ ƒŒƒ˜ŽŒ‡‘‰ ”‡ƒŽ ‰‹‡Ǧƒͷ•–iže i podržka za najavljene konzole PlayStation 5 i Microsoft Xboš ‡”‹‡•ȏͳ͵ȐǤ  ͳ͵Ǥ •˜‹„Œƒ ʹͲʹͲǤ ’‹  Œ‡ ƒŒƒ˜‹‘ ‹œŽƒœƒ ”‡ƒŽ ‰‹‡Ǧƒ ͷ ”ƒŒ‡ ʹͲʹͳǤ ƒ verzija će uključivat‹ podršku za sve platforme pa tako i za nadolazeć‹ Žƒ›–ƒ–‹‘ ͷ ‹ „‘š ‡”‹‡• Ǥ ‹ŽŒ ’‘•–ƒ˜ŽŒ‡ ‘˜‘ ˜‡”œ‹Œ‘ Œ‡ œƒ–‘ skraćivanje vremena potrebnog”ƒœ˜‘Œ‹’”‘‰”ƒ‡”‹ƒœƒ”‡‹”ƒŒ‡†‡–ƒŽŒƒ‹ okruženja unutar ˜‹†‡‘‹‰”‡ ‹ omogućavanje pokretanja ˜‹†‡‘‹‰ƒ”ƒ — Ͷ ”‡œ‘Ž— ‹Œ‹ȏͳͶȐǤ  ˜ƒŒƒŽƒ–sadržƒ˜ƒ‡‘Ž‹‘‰Žƒ˜‹Š‘’‘‡–‹koje čine svaki alat za razvoj računalnih i drugih‹‰ƒ”ƒǤ˜ƒƒ‘†–‹Š‘’‘‡–‹je zasebna, ali zajedno čine Œ‡œ‰”—‘˜‘‰ƒŽƒ–ƒǤƒ‘•—•˜‡‘’‘‡–‡”ƒœ˜‹Œƒ‡‘†—Žƒ”‘ǡ——–ƒ”ƒŽƒ–ƒ je omogućeno prilagođavanje postojećih ‹ †‘†ƒ˜ƒŒ‡ ‘˜‹Š ‘’‘‡–‹ǡ „‡œ drastične promjene jezgre alata.  ”‡ƒŽ‰‹‡Œ‡pronašao mogućnost —’‘”ƒ„‡‹—ˆ‹Ž•‘•–˜ƒ”ƒŒ—ǡ’‘’—– ’”‘†— ‹Œ‡ –‡Ž‡˜‹œ‹Œ•‹Š •‡”‹Œƒ ’‘’—– Š‡ ƒ†ƒŽ‘”‹ƒ ‹ ‡•–™‘”Ž†Ǥ  –‹ •‡”‹Œƒƒ ˜‹”–—ƒŽ‹ •‡–‘˜‹ •— •–˜‘”‡‹ ——–ƒ” ”‡ƒŽǦƒǡ ƒ œƒ–‹ ’”‹ƒœƒ‹ ƒ ˜‡Ž‹‹  ’”‘Œ‡ ‹Œ•‹ ‡”ƒ‹ƒ ‹ ƒ–‘•ˆ‡”•‹ •—•–ƒ˜‹ƒ ‘•˜Œ‡–ŽŒ‡Œƒ ‘Œ‹ ’”ƒ–‡ ”‡–ƒŒ‡ ƒ‡”‡ ‘‘ ‰Ž—ƒ ƒ ‹ ’”‡†‡–ƒǤ Œ‡Ž‘—’‹ ‹œ‰Ž‡† ’”‡’‘œƒ– Œ‡ ƒ‘ ’”‹”‘†‹Œ‹ — ‘†‘•— ƒ tipičn‡ ‡ˆ‡–‡ i omogu惘ƒ kompoziciju kadrova u stvarnom vremenu, trenutno uređivanje virtualnih setova po potrebi i mogućnost snimanja više scena u kratkom razdoblju samo ’”‘Œ‡‘˜‹”–—ƒŽ‘‰•˜‹Œ‡–ƒ‹œƒ‰Ž— ƒȏͳͷȐǤ 

91 RAČUNALNE IGRE 2020

lia r : Izgled sučelja Unreal Enginea  oie 

”‘•–„‹–‡ Œ‡ ƒŽƒ– œƒ ”ƒœ˜‘Œ ˜‹†‡‘‹‰”ƒǡ ”ƒœ˜‹Œ‡ ʹͲͲͺǤ ‘† •–”ƒ‡  Ǧƒǡ dizajniran za korištenje na više platformi u sustavu Microsoft Windows, igraćim konzolama sedme generacije PlayStation 3 i Xbox 360 i igraćim ‘œ‘Žƒƒ ‘•‡ ‰‡‡”ƒ ‹Œ‡ Žƒ›–ƒ–‹‘ Ͷ ‹ „‘š ‡Ǥ ”‘•–„‹–‡ Œ‡ ‹œ˜‘”‘ •Žužio isključivo u seriji videoigara Battlefield, ali kasnije biva proširen na druge pucačke ˜‹†‡‘‹‰”‡ — ’”˜‘ Ž‹ — ‹ ”ƒœ‡ †ruge žanrove. Do danas je ”‘•–„‹–‡ ‡•Ž—œ‹˜ƒ œƒ ˜‹†‡‘‹‰”‡ — ‹œ†ƒŒ— Ž‡ –”‘‹  ”–•ǦƒǤ ‡œ‰”ƒ ‘˜‘‰ ƒŽƒ–ƒŒ‡’‹•ƒƒ—ΪΪ‹͓Ǧ—ȏͳ͹ȐǤ  œŽƒ•‘‹‰”‡ƒ––Ž‡ˆ‹‡Ž†Ͷǡ”ƒŒ‡ʹͲͳ͵Ǥǡ”ƒœ˜‹Œ‡Œ‡ ”‘•–„‹–‡͵Ǥ‘˜‘Œ˜‡”œ‹Œ‹ ƒŽƒ–ƒažurirana su okruženjakoja postaju puno dinamičnija nakon djelovanja igrača. Novom komponentom Destruction 4.0, poznatom pod imenom Levolution, igračevim djelovanjem na jednom dijelu područja je ’‘•–ƒŽ‘ moguće prouzročitipromjene za sve ostale igrače koŽ‹‘‰‘†‘‹„‹Ž‹—†ƒŽŒ‡‹Ǥ Korištenjem ”‘•–„‹–‡Ǧƒ ͵ Œ‡ ƒ•–ƒ˜ŽŒ‡ •‡”‹ŒƒŽ ‡‡† ˆ‘” ’‡‡†ǡ ‹œŽƒ•‘ ƒ•–ƒ˜ƒ‡‡†ˆ‘”’‡‡†‹˜ƒŽ•ȏͳͺȐȏͳͻȐǤ  Prvom razvijenom igrom pomoću Frostbite 1, igranje je bilo podržano samo na onzolama, odnosno isključivo za PlayStation 3 i Xbox 360. Dvije godine ƒ•‹Œ‡‹œŽƒ•‘†”—‰‘‰•‡–ƒ‹‰ƒ”ƒ‘Œ‡•—„‹Ž‡”ƒœ˜‹Œ‡‡—˜‡”œ‹Œ‹ͳǤͷǡ†‘†ƒ‘ je proširenje za računalnu platformu. Do danas se nije puno toga promijenio što setiče podrške ovog alatƒœƒ‡‡†”—‰‡’Žƒ–ˆ‘”‡’‘’—–‘„‹Ž‡ǡœƒ•ƒ†ƒ se pomoću FrostbiteǦa razvijaju igre isključivo za računala i konzole.  92 RAČUNALNE IGRE 2020

Žƒ– ”‘•–„‹–‡ œƒ ”ƒœ˜‘Œ ˜‹†‡‘igara je u vlasništvu Electronics ArtsǦƒ ‹ •˜‡ ˜‹†‡‘igre koje su izdavane i koje 懕‡‹œ†ƒ˜ƒ–‹•—‹•–‘–ako u vlasništvu EAǦƒ‹Ž‹ Œ‡œ‹‹Š•‡•–”‹•‹ŠpoduzećaǤ‹‡Œ‡‘˜ƒŒƒŽƒ–œƒ–˜‘”‡œƒŒƒ˜——’‘”ƒ„—ǡ‹–‹ se izdaje licenca za korištenje drugim poduzećimaǤ ˜ƒ poduzeća ‘Œ‡ •— — vlasništvu EAǦa i razvijaju videoigre su dužna‘”‹•–‹–Œ‹Š‘˜ƒŽƒ–ȏʹͲȐǤ 

lia r : Izgled sučelja Frostbite 3  Zaključak

 Različite su zamisli dostupnosti i upotrebe današnjih alata. Alat Frostbite nije uopće zamišljen za javnu upotrebuǡ ƒ Ž‡ –”‘‹ • ”–•ǡ poduzeće ‘Œƒ ’‘•Œ‡†—Œ‡ ”‘•–„‹–‡ǡ‡‰‡‡”‹”ƒ†‹”‡–‘’”‘ˆ‹–’”‡‘Œ‡‰ƒǤƒ”ƒœŽ‹—‘†Ǧ ƒǡ ‹–› ‡ Š‘Ž‘‰‹‡• • ‹–›ǦŒ‡ ‹ ’‹  ƒ‡• • ”‡ƒŽ ‰‹‡Ǧ‘ ‹ƒŒ— potpuno suprotnu zamisao uporabe svojih alata. Omogućivši „‡•’Žƒ–‘ korištenje •˜‘Œ‹Š ƒŽƒ–ƒ — ‡‘‡” ‹ŒƒŽ‡ •˜”Š‡ ’”‹˜—Ž‹ •— ˜‡Ž‹‹ „”‘Œ ‘˜‹Š korisnika, bilo to već iskusnih programera ili početnikaǤƒ˜‹’”‹•–—’‘ƒ tržište je počeo pristizati veli‹„”‘Œ‘˜‹Š˜‹†‡‘‹‰ƒ”ƒǡƒ”ƒ˜‘•˜‡ ˜‹†‡‘‹‰”‡ koje su napravljene njihovim alatima su se naplaćivale ov‹•‘‘’”‹Š‘†—‘Œ‡‰ ‘•–˜ƒ”‡‘†’”‘†ƒŒ‡Ǥ  lati Unreal Engine i Unity prednjače i u drugim poljimaǡ ƒ ‡ •ƒ‘ — ˜‹†‡‘‹‰”ƒƒǤ ‹–› Œ‡ —˜‡Ž‹‡ ’”‡’‘œƒ– — ‹†—•–”‹Œ‹ ‘Œƒ •‡ „ƒ˜‹ ”ƒœ˜‘Œ‡ umjetne, virtualne i mješovite stvarnosti, stoga se mnoga poduzeća ‘†lučuju za Unity kao razvoju okolinu za svoj softver. Unreal Engine biva sve više ’”‡’‘œƒ– ƒ‘ ƒŽƒ– œƒ ”ƒœ˜‘Œ ƒ‹‹”ƒ‹Š ‹ œƒ•–˜‡‘Ǧfantastičnih film‘˜ƒǡ ’‘•‡„‘ƒ‘•—”ƒ†Œ‡•‹•‡›Ǧ‡ƒ•‡”‹Œ‹–ƒ”ƒ”•ǣŠ‡ƒ†ƒŽ‘”‹ƒǤ  Zaključnoǡ o većini današnŒ‹Š ’‘’—Žƒ”‹Š ƒŽƒ–ƒ œƒ ”ƒœ˜‘Œ ˜‹†‡‘‹‰ƒ”ƒ ‡ –”‡„ƒ ‰‘˜‘”‹–‹ ‹•ŽŒučivo u kontekstu razvoja video‹‰ƒ”ƒǡ ‡‰‘ — ‘–‡•–— ‘Œ‹ Œ‡ puno širi od toga. 93 RAČUNALNE IGRE 2020

eeene

ȏͳȐ Žƒ”‹—ǡ ǽŠƒ– ƒ• –Š‡ ‹”•– ‹†‡‘ ƒ‡ǡ Š‘ ˜‡–‡† – ƒ† Š›ǡǼ 2018. [Mrežno]. Dostupno: httpsǣȀȀ’Žƒ”‹—Ǥ ‘Ȁ‡Ȁ„Ž‘‰Ȁ–Š‡Ǧˆ‹”•–Ǧ˜‹†‡‘Ǧ game/. [Pokušaj pristupa 10 7. 2020.]. ȏʹȐ Ǥ†™ƒ”†•ǡǽ‘’—–‡”’ƒ ‡ƒ†–Š‡ƒ™‘ˆ–Š‡” ƒ†‡‹†‡‘ ƒ‡ǡǼ ʹͲͳͳǤ[Mrežno]. ‘•–—’‘ǣ Š––’•ǣȀȀ™™™Ǥ–‡ Š‘Ž‘‰‹œ‡”Ǥ ‘ȀʹͲͳͳȀͳʹȀͳͳȀ ‘’—–‡”Ǧ•’ƒ ‡Ǧƒ†Ǧ–Š‡Ǧ †ƒ™Ǧ‘ˆǦ–Š‡Ǧƒ” ƒ†‡Ǧ˜‹†‡‘Ǧgame/. [Pokušaj pristupa 10 7. 2020.]. ȏ͵Ȑ ǤǤƒ—ŽǡǤ ‘‘‹ǤŠƒ––ƒ Šƒ”›ƒǡǽ ‹•–‘”›ƒ† ‘’ƒ”ƒ–‹˜‡•–—†›‘ˆ ‘†‡”‰ƒ‡‡‰‹‡•ǡǼ‹‘  –‡”ƒ–‹‘ƒŽ ‘—”ƒŽ•ǡ’’ǤʹͶͷǦʹͶͻǡʹͲͳʹǤ ȏͶȐ Microsoft Azure, »What is middleware?,« bez dat.. [Mrežno]. ‘•–—’‘ǣ Š––’•ǣȀȀƒœ—”‡Ǥ‹ ”‘•‘ˆ–Ǥ ‘Ȁ‡Ǧ—•Ȁ‘˜‡”˜‹‡™Ȁ™Šƒ–Ǧ‹•Ǧ‹††Ž‡™ƒ”‡ȀǤ [Pokušaj pristupa 12 7. 2020.]. ȏͷȐ Studytonight, »Understanding Game Architecture,« bez dat.. [Mrežno]. ‘•–—’‘ǣ Š––’•ǣȀȀ™™™Ǥ•–—†›–‘‹‰Š–Ǥ ‘Ȁ͵†Ǧ‰ƒ‡Ǧ‡‰‹‡‡”‹‰Ǧ™‹–ŠǦ —‹–›Ȁ‰ƒ‡Ǧ†‡˜‡Ž‘’‡–Ǧƒrchitecture. [Pokušaj pristupa 14 7. 2020.]. ȏ͸Ȑ Ǥš‘ǡǽ‹–›ƒ–ͳͲǣ ‘”„‡––‡”Ǧ‘”™‘”•‡Ǧ‰ƒ‡†‡˜‡Ž‘’‡–Šƒ•‡˜‡” been easier,« 2016. [Mrežno]. ‘•–—’‘ǣ Š––’•ǣȀȀƒ”•–‡ Š‹ ƒǤ ‘Ȁ‰ƒ‹‰ȀʹͲͳ͸ȀͲͻȀ—‹–›Ǧƒ–ǦͳͲǦˆ‘”Ǧ„‡––‡”Ǧ‘”Ǧ ™‘”•‡Ǧ‰ƒ‡Ǧ†‡˜‡Ž‘’‡–ǦŠƒ•Ǧ‡˜‡”Ǧ„‡‡Ǧeasier/. [Pokušaj pristupa 1 9. ʹͲʹͲǤȐǤ ȏ͹Ȑ Ž‡•ƒ†”ǡ ǽ‘ —‡–ƒ–‹‘ǡ ‹–› • ”‹’–‹‰ Žƒ‰—ƒ‰‡• ƒ† ›‘—ǡǼ ʹͲͳͶǤ [Mrežno]. ‘•–—’‘ǣ Š––’•ǣȀȀ„Ž‘‰•Ǥ—‹–›͵†Ǥ ‘ȀʹͲͳͶȀͲͻȀͲ͵Ȁ†‘ —‡–ƒ–‹‘Ǧ—‹–›Ǧ• ”‹’–‹‰Ǧ Žƒ‰—ƒ‰‡•Ǧƒ†Ǧyou/. [Pokušaj pristupa 2 9. 2020.]. ȏͺȐ Ǥ ‹‡, »UnityScript’s long ride off into the sunset,« 2017. [Mrežno]. ‘•–—’‘ǣ Š––’•ǣȀȀ„Ž‘‰•Ǥ—‹–›͵†Ǥ ‘ȀʹͲͳ͹ȀͲͺȀͳͳȀ—‹–›• ”‹’–•ǦŽ‘‰Ǧ ”‹†‡Ǧ‘ˆˆǦ‹–‘Ǧ–Š‡Ǧsunset/. [Pokušaj pristupa 2 9. 2020.]. ȏͻȐ »Unparalleled platform support,« 2020. [Mrežno]. ‘•–—’‘ǣ Š––’•ǣȀȀ—nity.com/features/multiplatform. [Pokušaj pr‹•–—’ƒʹͻǤʹͲʹͲǤȐǤ ȏͳͲȐ Ǥƒ–‡›ǡǽ‹–Š‡™”‡ƒŽ‹–‹‡•–‘„—‹Ž†ǡ‹–›’‘•‹–‹‘‡†–‘„‡ ‘‡–‡ Š giant,« 2017. [Mrežno]. ‘•–—’‘ǣ Š––’•ǣȀȀ–‡ Š ”— ŠǤ ‘ȀʹͲͳ͹ȀͲͷȀʹͷȀ™‹–ŠǦ‡™Ǧ”‡ƒŽ‹–‹‡•Ǧ–‘Ǧ„—‹Ž†Ǧ—‹–›Ǧ ’‘•‹–‹‘‡†Ǧ–‘Ǧ„‡ ‘‡Ǧ–‡ ŠǦgiant/. [Pokušaj pristupa 2 9. 2020ǤȐǤ ȏͳͳȐ D. Kahn, »Evolving the Unity Editor UX,« 2019. [Mrežno]. ‘•–—’‘ǣ Š––’•ǣȀȀ„Ž‘‰•Ǥ—‹–›͵†Ǥ ‘ȀʹͲͳͻȀͲͺȀʹͻȀ‡˜‘Ž˜‹‰Ǧ–Š‡Ǧ—‹–›Ǧ‡†‹–‘”Ǧ—šȀǤ [Pokušaj pristupa 1 9. 2020.]. ȏͳʹȐ Ǥ†”‡™ǡ –”‘†— –‹‘–‘”‡ƒŽ‰‹‡Ͷǡǣ”‡••ǡʹͲͳ͹ǡ’Ǥ ‹šǤ ȏͳ͵Ȑ ”‡ƒŽ ‰ine, »Unreal Engine 4 Documentation,« bez dat.. [Mrežno]. ‘•–—’‘ǣ Š––’•ǣȀȀ†‘ •Ǥ—”‡ƒŽ‡‰‹‡Ǥ ‘Ȁ‡ǦȀŽƒ–ˆ‘”•Ȁ‹†‡šǤŠ–ŽǤ [Pokušaj pristupa 5 9. 2020.].

94 RAČUNALNE IGRE 2020

ȏͳͶȐ Ǥ ƒƒŠƒ•Š‹ǡ ǽ’‹  ƒ‡•ǣ ”‡ƒŽ ‰‹‡ ͷ ™‹ŽŽ „”‹‰ ƒ ‰‡‡”ƒ–‹‘ƒŽ Šƒ‰‡ –‘ ‰”ƒ’Š‹ •ǡǼ ʹͲʹͲǤ ȏ”ežno]. ‘•–—’‘ǣ Š––’•ǣȀȀ˜‡–—”‡„‡ƒ–Ǥ ‘ȀʹͲʹͲȀͲͷȀͳ͵ȀŠ‘™Ǧ‡’‹ Ǧ‰ƒ‡•Ǧ‹•Ǧ–ƒ‹Ž‘”‹‰Ǧ —”‡ƒŽǦ‡‰‹‡ǦͷǦ–‘Ǧƒ‡Ǧ‡š–Ǧ‰‡Ǧ‰”ƒ’Š‹ •Ǧshine/. [Pokušaj pristupa 4 ͻǤʹͲʹͲǤȐǤ ȏͳͷȐ Ǥ Ǥ ‘‘†ǡ ǽ ‘™ — ƒ•ˆ‹Ž —•‡† ”‡ƒŽ ‰‹‡ –‘ ƒ‡ Š‡ Mandalorian,« 2020. [Mrežno]. ‘•–—’‘ǣ Š––’•ǣȀȀ™™™Ǥ’‘Ž›‰‘Ǥ ‘Ȁ–˜ȀʹͲʹͲȀʹȀʹͲȀʹͳͳͶ͸ͳͷʹȀ–Š‡Ǧƒ†ƒŽ‘”‹ƒǦ ƒ‹‰Ǧ‘ˆǦ˜‹†‡‘Ǧ—”‡ƒŽǦ‡‰‹‡Ǧ’”‘Œ‡ –‹‘Ǧscreen. [Pokušaj pristupa 5 9. ʹͲʹͲǤȐǤ ȏͳ͸Ȑ Unreal Engine, »Playing and Simulating,« bez dat.. [Mrežno]. ‘•–—’‘ǣ Š––’•ǣȀȀ†‘ •Ǥ—”‡ƒŽ‡‰‹‡Ǥ ‘Ȁ‡Ǧ Ȁ ‡––ingStarted/HowTo/PIE/index.html. [Pokušaj pristupa 4 9. 2020.]. ȏͳ͹Ȑ »Pros and Cons of The Frostbite Engine,« 2020. [Mrežno]. ‘•–—’‘ǣ https://www.gamedesigning.org/engines/frostbite/. [Pokušaj pristupa 6 ͻǤʹͲʹͲǤȐǤ ȏͳͺȐ ƒ––Ž‡ˆ‹‡Ž†ǡ ǽƒ––Ž‡ˆ‹‡Ž† Ͷǣ ˆˆ‹ ‹ƒŽ ”‘•–„‹–‡ ͵ ‡ƒ–—”‡ ‹†‡‘ǡǼ ʹͲͳ͵Ǥ [Mrežno]. ‘•–—’‘ǣ Š––’•ǣȀȀ™™™Ǥ›‘—–—„‡Ǥ ‘Ȁ™ƒ– Šǫ˜αͻ›͸‰͵“͹‰Ƭƒ„̴ Šƒ‡Žαƒ––Ž‡ˆ‹ eld. [Pokušaj pristupa 6 9. 2020.]. ȏͳͻȐ Ǥ”‡ ‡–‡ǡǽ‡‡† ‘”’‡‡†‹˜ƒŽ•‹•ƒŽ‹˜‹‰‰ƒ‡ǡƒ†ƒ•‹‰‘ˆ–Š‹‰• to come,« 2013. [Mrežno]. ‘•–—’‘ǣ Š––’•ǣȀȀ™™™Ǥ’‘Ž›‰‘Ǥ ‘ȀʹͲͳ͵ȀͺȀʹʹȀͶ͸Ͷ͸ͺͷͶȀ‡‡†Ǧˆ‘”Ǧ•’‡‡†Ǧ”‹˜ƒŽ•Ǧ ‹•ǦƒǦŽ‹˜‹‰Ǧ‰ƒ‡Ǧƒ†ǦƒǦ•‹‰Ǧ‘ˆǦ–Š‹‰•Ǧ–‘Ǧcome. [Pokušaj pristupa 6 9. ʹͲʹͲǤȐǤ ȏʹͲȐ ǽ ˆ‘” ‡• ƒŽŽ –Š‡‹” •–—†‹‘• –‘ —•‡ –Š‡ ”‘•–„‹–‡ ‰‹‡ –‘ †‡˜‡Ž‘’ ‘ǡǼ 2018. [Mrežno]. ‘•–—’‘ǣ Š––’•ǣȀȀ™™™Ǥ”‡††‹–Ǥ ‘Ȁ”Ȁ–‹–ƒˆƒŽŽȀ ‘‡–•Ȁ͹ ͲŠ“‘Ȁ‡ƒ̴ˆ‘” ‡•̴ƒŽŽ̴–Š eir_studios_to_use_the_frostbite/. [Pokušaj pristupa 6 9. 2020.]. ȏʹͳȐ Ǥ ”‘†‹ǡ ǽ ‘™ ‹–›͵ ‡ ƒ‡ ƒ ƒ‡Ǧ‡˜‡Ž‘’‡– ‡ƒ•–ǡǼ ʹͲͳ͵Ǥ [Mrežno]. ‘•–—’‘ǣ Š––’•ǣȀȀ‹•‹‰Š–•Ǥ†‹ ‡Ǥ ‘ȀʹͲͳ͵ȀͲ͸ȀͲ͵ȀŠ‘™Ǧ —‹–›͵†Ǧ„‡ ‘‡ǦƒǦ‰ƒ‡Ǧ†‡˜‡Ž‘’‡– Ǧbeast/. [Pokušaj pristupa 1 9. ʹͲʹͲǤȐǤ

95 RAČUNALNE IGRE 2020

aa miaome ige omoću aojnog oia e

Goran Alković i Mladen Konecki  galviir lneir ƒ—Ž–‡–‘”‰ƒ‹œƒ ‹Œ‡‹‹ˆ‘”ƒ–‹‡ǡSveučilište u Zƒ‰”‡„—

Sažetak 

lutter ‘˜‘”ƒ†—‘’‹•—Œ‡•‡’”‘ ‡•”ƒœ˜‘Œƒ—Ž–‹’Žƒ–ˆ‘”•‹Š‹‰ƒ”ƒ—”ƒœ˜‘Œ‘ ‘˜‹”— Ǥ”ƒ–‘•‡‘’‹•—Œ‡•ƒ”ƒœ˜‘Œ‹‘˜‹”‹’”‘ ‡•‹œ”ƒ†‡‡‘Ž‹‘angeru ave etri ˆ— ‹‘ƒŽ‹Šineeeer ’”‹Œ‡”ƒ Œ‡†‘•–ƒ˜‹Š ‹‰ƒ”ƒǣ ’”˜‹Š ‡‘Ž‹‘ ‹˜‘ƒ †˜‘†‹‡œ‹ƒŽ‘‰ ’Žƒ–ˆ‘”‡”ƒ ǡ Ž‘ ‹‰”‡  ‹ Ž‘ ‹‰”‡ Ključne riječiǤ  ǣračunalna igra, Flutter, višeplatformska igra, , ‡–”‹•ǡ‹‡•™‡‡’‡”ǡ’”‘‰”ƒ‹”ƒŒ‡ǡƒŽ‰‘”‹–‹o  

Razvoj računalnih igara Œ‡‘†—˜‹Œ‡„‹‘‹œƒœ‘˜ƒ’”‘ ‡•Ǥ‘—‘˜‹Œ‡˜”‹Œ‡‡ǡ razvojem tehnologije, primarno alata koji su specifično razvijeni kako bi se koristili u procesu razvoja računalnih igara, proces razvoja vlastite računalne igre je uvelike olakšan. Danas na tržištu imamo brojne igrače platforme: osobna računala, konzole, tablete, pametne telefone i dr. [6]. Budući da svaka platforma koristi svoju vlastituUnity tehnologiju,Unreal razvoj ngine igara koje bi bile podržane na više platformi je bio dugotrajan i skup.  ˜”‡‡‘ •— •‡ ’‘Œƒ˜‹Ž‹ ’”‘‰”ƒ•‹ ƒŽƒ–‹ ’‘’—– ƒŽƒ–ƒ  ‹Ž‹  koji su omogućili izvoz igaralutter na više različitih platformi [4]. gle   je potpuno novi razvojni okvir koji je razvilo poduzeće  ‘Œ‹ omogućava razvoj višeplatformskih apŽ‹ƒ ‹Œƒ•˜‹Š˜”•–ƒǡ’ƒtako i računalnih ‹‰ƒ”ƒ ȏ͵ȐǤƒœ˜‘Œ ƒ’Ž‹ƒ ‹Œ‡’—–‡‘˜‘‰ ”ƒœ˜‘Œ‘‰ ‘˜‹”ƒ ‘”‹•‹— „‹–”‡„ƒ‘ omogućiti brži razvoj aplikacije kao i bolju optimizaciju. U ovom radu će se istražiti je li ovaj razvojni okvir adekvatan za razvoj jedn‘•–ƒ˜‹Š višeplatformskih igara koje bi se mogle izvesti na osobno računalo (kao Korištenesamostalna tehnologije aplikacija i kao igra u Internet pregledniku) a i na mobilne uređaje. 

 lutter art U svrhu razvoja prototipa tri jednostavne računale igre korištenjem raœ˜‘Œ‘‰ ‘˜‹”ƒ ǡ — ‘Œ‡ •‡ ‘”‹•–‹ ’”‘‰”ƒ•‹ Œ‡œ‹ , korišteni su i neki 96 RAČUNALNE IGRE 2020

de iled drugi programskiangeru proizvodi ave za realizaciju. Korišten je i alat tile  ȏͳȐ œƒ izradu vizualnih efekata i korišten je alat  ȏͷȐ‘Œ‹ •‡ ‘”‹•–‹‘ œƒ ‹œ”ƒ†— ”ƒœ‹ƒŽ‘ƒ‹‰”‡ ‘Œƒ•‡–‡‡ŽŒ‹ƒ—œ‘” ‹ƒȋ‡‰Ǥ ȌǤ  Ž—––‡” Œ‡ ‘‘‰Ž‡‘˜ ”ƒœ˜‘Œ‹ ‘˜‹” œƒ‹œ”ƒ†— ‹œ˜‘”‘Ǧ‘’ƒŒŽ‹”ƒ‹Šƒ’Ž‹ƒ ‹Œƒ œƒ ‘„‹Ž‡ —”‡đaje, stolna računala i Internet preglednike. Sa svojom dobro osmišljenom višeslojnom arhitekturom i deklarativnim principiƒ ”ƒœ˜‘Œƒ korisničkog sučenja olakšan je razvoj aplikacija. Izvorno kompajliranjerae er end Ø†ƒ omogućuje brže izvođenje, što je poželjna karakteristika zalutter igre. Poželjno je imati iscrtavanjelae brzine 60 (ili više) sličica po sekundi (eng. ȌǤ lae—–ƒ”„‘‰ƒ–‡‘Ž‡ ‹Œ‡˜ƒŒ•‹Š„‹„Ž‹‘–‡ƒœƒ”ƒœ˜‘Œ‹‘˜‹” ǡƒŽƒœ‹•‡‹ ”ƒœ˜‘Œ‹ ‘˜‹” [2] koji je korišten za razvoj jed‡ ‘† ’”‘–‘–‹’ƒ ‹‰ƒ”ƒǤ  je modularan, jednostavan za korištenje, oslanja se na „vremenom provjerene“ prakse razvoja igara, a zahvaljujući podršci zajednice neprestano •‡”ƒœ˜‹Œƒ‹†‘„‹˜ƒ‘˜‡ˆ— ‹‘ƒŽ‘•–‹Ǥiled  level editr  Žƒ– je besplatan uređivač razina i‰”‡ȋ‡‰Ǥ ȌǤ œ—œ‡–‘Œ‡Žƒœƒangeru ave korištenje i zbog jednostavnosti i otvorenosti formata zapisa razina se pokazao kaoaoj odlično igaa rješenje Gameo za proces dizajniranja razina za klon igre Ǥ 

 angeru ave etri uael reitri •’‹”ƒ ‹Œƒœƒ”ƒœ˜‘Œ’”‘–‘–‹’ƒŒ‡†‘•–ƒ˜‹Š‹‰ƒ”ƒ„‹Ž‡•—•–ƒ”‹Œ‡‹‰”‡‹œ‡”‡ ‘’‡”ƒ ‹Œ•‘‰ •—•–ƒ˜ƒ ȋ ǡ ǡ ǡ ǡ angeru ‹ avedr.). Tematikaetri je pomalo u „retro“ stilu. Odabrana su tri naslovaineeeer na temelju kojih će biti izrađeni njihovi klonovi: dv‘†‹‡œ‹‘ƒŽƒ’Žƒ–ˆ‘”‡” aeǡ‹‰”ƒ i klasična igra s Windows operacijskog sustava, Ǥ ‡ –”‹ Œ‡†•‘tavne igre biti će objedinjene u jednu cjelinu koja je nazvana Ǥ  lia r gti igre vlatita irada  aoj ona ige angeo ae 

 iledvBudući da je igra Dangerous Dave igra koja ima više razina, prvo je bilo ’‘–”‡„‘ ”‡‹”ƒ–‹ ”ƒœ‹‡ ‘Œ‡ se želi uključiti u igru.iled Kao format odabran je ˆ‘”ƒ–‘Œ‹•‡–‡‡ŽŒ‹ƒǦu. Naravno, kao što je već rečeno, •ƒ‡”ƒœ‹‡•—†‹œƒŒ‹”ƒ‡‹”‡‹”ƒ‡’—–‡ƒŽƒ–ƒ Ǥ tileet  Nakon toga je putem alata Adobe DX kreiran set sličica (eng. Ȍ ‘Œ‹ •‡ sastoji od osnovnih elemenata (statičnih i interaktivnih) koji se pojavljuju na •˜ƒ‘Œ”ƒœ‹‹‹‰”‡Ǥ  97 RAČUNALNE IGRE 2020



lia r rada tileeta vlatita irada    Nakon što su izrađeni svi grafički elementi i nakon što su bili spremni za korištenje, kreirana je ljaprva jeata razina igresloja u pločica kojoj igrač treba od ulazne točke razine (siva cijev) doći do izlaza razine (smeđa vrata). Svaka raziƒ•‡•ƒ•–‘Œ‹ ‘††˜ƒ‘•‘˜ƒ•Ž‘Œƒǣ ‹ . Sloj pločica je statičan i on se može učitati odjednom dok sloj obj‡ƒ–ƒ œƒŠ–‹Œ‡˜ƒ ƒ’”‡†‹Œ— –‡Š‹— učitavanja. 



lia r ria rve raine vlatita irada  lja jeata   Za učitavanje  bilo je potrebno napraviti dinamički sustav adaptivnog učitavanja sloja, koji ovisno o objektu dodaje potrebnu posebnu ˆ— ionalnost istom i postavlja ga na pravo mjesto. Nakon što su svi objekti

98 RAČUNALNE IGRE 2020

‹• ”–ƒ‹ƒ• ‡‹ǡ’‘–”‡„‘Œ‡omogućiti osnovne funkcionalnosti igre: kretanje igrača, skakanje, pucanje, detekcija kolizije, sustav napredovanja kroz igru i sl.  ‹œ‹ƒ—‹‰”‹Œ‡”‡Žƒ–‹˜‘Œ‡†‘•–ƒ˜ƒǤƒ”‡–ƒŒ‡’‘‘•‹‘”‹•–‹•‡‘•–ƒ–ƒ „”œ‹ƒ†‘•‡œƒ”‡–ƒŒ‡’‘‘•‹ȋ•ƒƒŒ‡Ȍ‘”‹•–‹˜ƒ”‹Œƒ„‹Žƒƒ ‡Ž‡”ƒ ‹ŒƒǤ Igrač likom može upravljati putem zaslonskih kontrola (za mobilne uređaje) a također je moguće igru igrati korištenjem tipkovnice. U igri postoje statični i pokretni neprijatelji. Ako igrač dođe u koliziju s njima, tada gubi život i vraća se na početak razine na kojoj se nalazi. Igrač također ima mogućnost pucanja. Kada ispaljeni metak dođe u koliziju s pokretnim ne’”‹Œƒ–‡ŽŒ‹ƒǡ –ƒ†ƒ •‡ prikazuje animacija uništenja i neprijatelj se dealocira. 

lia r Dovršena igra (vlastita izrada)  aoj ona igaa ei i ineeee   etri ineeeer

•‘˜ƒ‡Šƒ‹ƒ ‹‰ƒ”ƒ ‹ Œ‡œƒ•‹‰—”‘•˜‹ƒŒƒ‘†‘„”‘ ’‘œƒ–ƒ • ‘„zirom da se radi o dva bezvremena klasikalvi računalnihati igara. U ’”˜‘Œetri ˆƒœ‹ ”ƒœ˜‘Œƒploča za „‹Ž‘igru Œ‡ ’‘–”‡„‘ ‘†”‡†‹–‹ineeeer ’‘†ƒ–‘˜‹ ‘†‡Ž ‹‰”‡ œƒ •’”‡ƒŒ‡uglva ‡Ž‡‡ƒ–ƒ –”‡—–‘‰ •–ƒŒƒ ‹‰”‡Ǥ ‘ •—  ‹  ‘† Ž‘ƒ ‹‰”‡ ‹ ‘†Ž‘ƒ‹‰”‡ ȋkoja je dobila domaći ƒœ‹˜ ȌetriǤ ati  lvi ‘† Ž‘ƒ ‹‰”‡  ”‡‹”ƒ‡ •— †˜‹Œ‡ ‘•‘˜‡ Žƒ•‡ǣ Žƒ•ƒ  ‘Œƒ •‡ odnosi na osnovne elemente od kojih su sačinjeni Ǥ•‹‘ˆ‹‰—”ƒ ‹Œ‡ „Ž‘‘˜ƒǡ—Žƒ•‹•‡ƒŽƒœ‡‹‡‡†”—‰‡†‘†ƒ–‡‹ˆ‘”ƒ ‹Œ‡’‘’—–„‘Œ‡„Ž‘ƒ‹ sl. Nakon što je kreiran podatkovni model, bilo je potrebno implementirati ‘•‘˜— Ž‘‰‹— ‹‰”‡ǣ †‡–‡ ‹Œ— ‘Ž‹œ‹Œ‡ǡ ‰‡‡”‹”ƒŒ‡ „Ž‘‘˜ƒǡuglva ’”‹ƒœƒ ƒ korisničkom sučelju, osnovnu logiku igre i•ŽǤƒ‘‹‘†’”‡–Š‘†‡‹‰”‡ǡ‹‰”ƒ•‡ može ‹‰”ƒ–‹ ’—–‡ –‹’‹ ƒ œƒ•Ž‘— ‹Ž‹ ’—–‡ –‹’‘˜‹ ‡Ǥ ‰”ƒ  ‹ƒ 99 RAČUNALNE IGRE 2020

nešto jednostavniji podatkovni modela koji se sastoji od dvodimenzinalnog ’‘ŽŒƒ ƒ ‘Œ‡ •‡ ‰‡‡”‹”ƒ ’‘–”‡„ƒ „”‘Œ ‹ƒǤ ’Ž‡‡–‹”ƒ‡ •— ‘•‘˜‡ •–ƒ†ƒ”†‡ˆ— ‹‘ƒŽ‘•–‹ǣ‘–˜ƒ”ƒŒ‡‹’”‹ƒœ’”ƒœ‹ŠŒ‡•–ƒ–‡„”‘Œƒ‹ƒƒ susjednim poljima. Igrač može postaviti zastavicu tamo gdje smatra da se nalazi mina. Nakon što uspješno označi sva polja s minama, igra se završava. 

lia r Sučelja Tetrisa i Minesweepera (vlastita izrada)   Zaključak  ltter

•‡’‘ƒœƒ‘ƒ‘‹œ—œ‡–‘†‘„ƒ””ƒœ˜‘Œ‹‘˜‹”œƒ”ƒœ˜‘ŒŒ‡†‘•–ƒ˜‹Œ‹Š igara koje je moguće igrati na više platformi. Naravno, bez obzira na svu dodatnu pomoć, osnovnu programsku logiku ig”ƒ‹†ƒŽŒ‡‘”ƒ•ƒ‘†‹”ƒ–‹‹–‘ Œ‡ —˜‹Œ‡ ‹zazova proces. No, ovaj razvojni okvir u svakom slučaju proces izrade igre ubrzava. S obzirom na neprestani razvoj, ono što se može očekivati je da će ovaj razvojni okvir s vremenom postojati sve bolji te da će se sve lakše i brže moći dođi do realizacije željeneeeene aplikacije.  

ȏͳȐ †‘„‡ Ǥ ȋͳ͵Ǥ Ž‹•–‘’ƒ†ƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ™™™Ǥƒ†‘„‡Ǥ ‘Ȁ’”‘†— –•Ȁš†ǤŠ–Ž ȏʹȐ Žƒ‡Ǥ ȋͳ͵Ǥ Ž‹•–‘’ƒ†ƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀˆŽƒ‡Ǧ ‡‰‹‡Ǥ‘”‰Ȁ†‘ •Ȁ ȏ͵Ȑ Ž—––‡”ǤȋͳʹǤŽ‹•–‘’ƒ†ƒʹͲʹͲǤȌǤ‘•–—’‘ƒǣŠ––’•ǣȀȀˆŽ—––‡”Ǥ†‡˜Ȁ ȏͶȐ Š‡‘‘ŽǣŠ‡‡•–ͳͷ‘„‹Ž‡ ƒ‡‰‹‡•Ȁ‡˜‡Ž‘’‡–Žƒ–ˆ‘”•Ƭ ‘‘Ž• ‹ ʹͲʹͲǤ ȋͳʹǤ Ž‹•–‘’ƒ†ƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ–Š‡–‘‘ŽǤ‹‘ȀʹͲͳͺȀ‘„‹Ž‡Ǧ‰ƒ‡Ǧ†‡˜‡Ž‘’‡–Ǧ’Žƒ–ˆ‘”• ȏͷȐ ‹Ž‡†Ǥȋͳ͵ǤŽ‹•–‘’ƒ†ƒʹͲʹͲǤȌǤ‘•–—’‘ƒǣŠ––’•ǣȀȀ™™™Ǥƒ’‡†‹–‘”Ǥ‘”‰Ȁ  ȏ͸Ȑ ‹‹’‡†‹ƒǣ ‹†‡‘ ‰ƒ‡ ’Žƒ–ˆ‘”•Ǥ ȋͳʹǤ Ž‹•–‘’ƒ†ƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ‡Ǥ™‹‹’‡†‹ƒǤ‘”‰Ȁ™‹‹Ȁƒ–‡‰‘”›ǣ‹†‡‘̴‰ƒ‡̴’Žƒ–ˆ‘”• 100 RAČUNALNE IGRE 2020

none meanie aijo avanturističke ige i og ia

aija aj i aen onei  ralotailo loneoir ƒ—Ž–‡–‘”‰ƒ‹œƒ ‹Œ‡‹‹ˆ‘”ƒ–‹‡ǡSveučilište u Zagrebu

Sažetak 

 ‘˜‘ ”ƒ†— ‘’‹•ƒƒ Œ‡ ‹’Ž‡‡–ƒ ‹Œƒ ‘•‘˜‹Š ‡Šƒ‹ƒ ƒ ‹Œ•‘ avanturističke igre iz prvog lica u programskom alatu Unity. Avanturistički dio ‡Šƒ‹ƒ‹‰”ƒŒƒ•‡‘†‘•‹ƒ‹–‡”ƒ ‹Œ—•‘‘Ž‹‘‹‘„Œ‡–‹ƒ—‘‘Ž‹‹†‘ akcijski dio uključuje interakciŒ—•‡’”‹Œƒ–‡ŽŒ‹ƒǤ Žƒ˜‹ˆ‘—•Œ‡ƒ‹–‡”ƒ ‹Œ‹ igrača s neprijateljima te programskoj logici ponašanja i reagiranja neprijatelja Ključnena igrača riječina temelj raznih podražaja koje neprijatelj „osjeća“. 

ǣ računalna igraǡ ‹–›ǡ ǡ —Œ‡–ƒ ‹–‡Ž‹‰‡ ‹Œƒǡ ƒŽ‰‘”‹–‹ǡ o’”‘‰”ƒ‹”ƒŒ‡  

Žanr akcijsko avanturističkih igara je izuzetno širok i uključuje razno razne igre različitih mehanika igranja. Avanturističke igre se temelje na sit—ƒ ‹Œ•‹ problemima i kod njih nije naglašen akcijski dio. AkciŒ•‡‹‰”‡’ƒ‡Šƒ‹— igranja temelje na akciji, brzini i refleksima no nemaju izražen segment rješavanja problema. Sve ono što je između, što uključuje segmente jednoga i †”—‰‘‰ƒ—Žƒœ‹—‘˜—ƒ–‡‰‘”‹Œ—‹‰ƒ”ƒȏͶȐǤ gae engine ‹–›je alat koji služi za razvoj računalnih igara te je u potpunosti besplatan. To je zapravo pokretač igara (eng. Ȍ ‘Œ‹ —†‹ „”‘Œ‡ ˆ— ‹‘ƒŽ‘•– œƒ ”ƒœ˜‘Œ ƒ‘ †˜‘†‹‡œ‹‘ƒŽ‹Š –ƒ‘ ‹ –”‘†‹‡œ‹‘ƒŽ‹Š ‹‰ƒ”ƒǡ”ƒœŽ‹čitih žanrova. U njemu je moguće razvijati igre za mobilne uređaje, za miješanu i virtualnu stvarnost, za osobna računala i konzole, igre za web i ‘‰‡†”—‰‡’Žƒ–ˆ‘”‡ȏ͵ȐǤ”‘‰”ƒ•‹Œ‡œ‹‘Œ‹•‡‘”‹•–‹œƒ”ƒœ˜‘Œ‹‰ƒ”ƒ— ‹–›Œ—Œ‡͓Ǥijo aan ristička igra

 A obzirom na širinu koju pokriva područje akcijsko avanturističkih igara, bilo bi dobro dobro definirati o čemu se točno radi kada se govori o ovom žanru. Naravno, ponekad je jako teško napraviti jasnu distinkciju između pojedinih žanrova kao što i mnoge igre ne ulaze specifično u jedan žanr zašto što možda 101 RAČUNALNE IGRE 2020

kombiniraju mehanike igranja iz više različitih žanrova. Na taj način su definirani brojni podžanrovi ovog tipa igara. Primjerice, akcijska avantura iz prvog lica čija je glavna specifičnaƒ”ƒ–‡”‹•–‹ƒnačin kretanja kamere tako da igrač igra igru iz vidnog polja glavnog protagonista igre [ͶȐǤ Ž‹ ”‡ ‹‘ patformska avanturistička igra: igra koja kombinira mehaniku igranja platformera s karakteristika avanturističkih igara [ͷȐǤ ‡‡”ƒŽ‘ǡ što se tiče ‡Šanika igranja, akcijske avanture zahtijevaju fizičke vještine igrača koje su potrebne kod tipičnih akcijskih žanrova igara ali također uključuje aspekte avanturističkih igara: naglasak na priču, raznolikost likova, sustav inventara, složeneInteraktivnost dijaloge, u rješa akcijsko˜ƒŒ‡•‹–—ƒ ‹Œ•‹Š’”‘„Ž‡ƒǡœƒ‰‘‡–‹‹•ŽǤ avanturističkoj igri  

 ƒ•–ƒ˜— •Ž‹Œ‡†‹ ‰‡‡”ƒŽ‹nterativete ‘’‹• ”ƒœ˜‘Œƒ ‘•‘˜‹Š ‡Šƒ‹ƒ ƒ ‹Œ•‘ avanturističke igre korištenjem programskog alata Unity. Svaki interaktivni ‘„Œ‡– ‘”ƒ •ƒ†”žavati  skriptu koja sadrži osnovne laerfunkcionalnosti svakog interaktivnog objekta (aktivacija, dohvaćanje svojstva objekta i sl.). Također ja važno interaktivne objekte staviti u zaseban sloj (eng. ). Specifično, interakti˜‹‘„Œ‡–‹‘‰—‹ƒ–‹‹•˜‘Œ‡Œ‡†‹•–˜‡‘•–‹•–‘‰ƒnterativete će imati svojunterati zasebnuveeneriit skriptu koja nasljeđuje odnosno specijalizira generalnu Žƒ•—‹–‡”ƒ–‹˜‹Š‘„Œ‡ƒ–ƒ Ǥƒ•–ƒ˜—•Ž‹Œ‡†‹’”‹Œ‡”Œ‡†‡ –ƒ˜‡Žƒ•‡ǣ Ǥœ’”‹az dijela koda, prikazana će biti i ‘’‘‡–ƒ‘Œ—‹–›”‡‹”ƒƒ‘‘’‹Žƒ ‹Œ‡•”‹’–‡Ǥpublic class InteractiveGenericSwitch : InteractiveItem { [SerializeField] private GenericSwitch _genericSwitch = new GenericSwitch(); protected override void Start() { base.Start(); _genericSwitch.OnStart(); } public override string GetText() { if (!enabled) return string.Empty; return _genericSwitch.OnGetText(); } public override void Activate(CharacterManager characterManager) { _genericSwitch.Activate(characterManager); if (_genericSwitch._coroutine != null) StopCoroutine(_genericSwitch._coroutine); _genericSwitch._coroutine = _genericSwitch.DoDelayedActivation(); StartCoroutine(_genericSwitch._coroutine); } }

102 RAČUNALNE IGRE 2020

nterativeeneriit

”‘‰”ƒ•‹ ‘† ’”‹ƒœ—Œ‡ Žƒ•— ƒ —Œ‡†‘ ‹ •”‹’–—  koja je zaduženanterativete za veliki broj promjena stanja kod aktivacije i deaktivacije ‹–‡”ƒ–‹˜‹Š ‘„Œ‡ƒ–ƒǤ ˜†Œ‡ Œ‡ Œƒ•‘ ˜‹†ŽŒ‹˜‘ ƒ‘ ‘˜ƒ klasa nasljeđuje ˆ— ‹‘ƒŽ‘•–‹  Žƒ•‡Ǥ –ƒ”– ‡–‘†ƒ ‘˜‡ Žƒ•‡ ‹–‡”ƒ–‹˜‹ objekt registrira u rječnik ‹–‡”ƒ–‹˜‹Š ‘„Œ‡ƒ–ƒ — •”‹’–‹ ‘Œƒ Œ‡ œƒ –‘ zadužena. Klasa GenericSwitch sadrži veliki dio programske logike koja je zadužena za promjenu stanja, dohvaćanja odgovarajućeg teksta za prikaz, pokretanje odgovarajuće animacije i sl. 

lia r oonenta nterativeeneriit srite

nterativete ƒ •Ž‹ ‹ „”Ǥeneriti ͳ Œ‡ ˜‹†ŽŒ‹˜ƒ ‘’‘‡–ƒ ‘Œ— ”‡‹”ƒ ‹–›Ǥ ”˜‡‘ „‘Œ‘ označen je dio vezan za Žƒ•—ȋƒ–”‹„—–’”‹‘”‹–‡–ƒȌƒ’Žƒ˜‘†‹‘ ˜‡œƒ œƒ  Žƒ•—Ǥ ”‹’–ƒ •‡ •ƒ•–‘Œ‹ ‘† ‡‘Ž‹‘ †‹Œ‡Ž‘˜ƒǣ upravljanje stanjem igre, upravljanje porukama za igrača, parametri aktivacije, način rada, podesivi entiteti i dr.  

103 RAČUNALNE IGRE 2020

neaija igrača ineainim ojeima

  Kako bi igrač mogao vršiti interakciju s interaktivnimra objektima potrebno je ’”ovjeriti nalazi li se igrač u neposrednoj blizini nekog interaktivnog objekta. To je implementirano korištenjem zrake (eng. Ȍ‘Œƒ•‡’”‘Œ‹ ‹”ƒ—•”‡†‹‹ vidnog polja igrača [1]. Ako se zraka nađe u koliziji s nekim objektom koji se nalazi u interaktivnom sloju tada igrač ima mogućnost interakcije s interaktivnim objektom. Drugo ograničenje je i generalnainstane udaljenost D od tog ‘„Œ‡–ƒ‘ŒƒŒ‡’‘†ešena na neku prikladnu udaljenost za igrača. Nakon što se dogodi kolizija, dohvaća se identifikacijski broj (eng. Ȍ‘„Œ‡–ƒ‘Œ‹ je pogođen zrakom (ako takav postoji) [2]. Pomoću identifikatora provjerava •‡ ’‘•–‘Œ‹ Ž‹ ‘„Œ‡– • –im ključem u rječniku interaktivnih objekata. Ukoliko postoji tada je moguće vrlo jednostavno ostvariti odgovarajuću željenu eijaeji‹–‡”ƒ ‹Œ—Ǥ ageni i njioa onigaija 

 Kako bi igraču igra bila zabavna, a i izazovna, potrebno je napraviti —˜Œ‡”ŽŒ‹˜— ‹–‡rakciju igrača s neprijateljima. Neprijatelji trebaju imati sofisticirano ponašanje kako bi pružili zanimljive načine i vrste interakcija. Jedna od osnovnih funkcionalnosti kod svake igre je mogućnostav es da se agenti kreću •Ž‘„‘†‘”‘œ‡‹†‡ˆ‹‹”ƒ‹’”‘•–‘av gentr. U Unityju je to lako moguće realizirati pomoću definiranja navigacijske plohe (eng. Ȍ ‹ †‡ˆ‹‹”ƒŒƒ ƒ˜‹‰ƒ ‹Œ•‹Šƒ‰‡ƒ–ƒȋ‡‰Ǥ ȌǤƒ˜‹‰ƒ ‹Œ•ƒ’Ž‘Šƒ†‡ˆ‹‹”ƒ’”‘•–‘”’‘ ‘Œ‡ •‡ ƒ˜‹‰ƒ ‹Œ•‹ ƒ‰‡–‹ ‘‰— ”‡–ƒ–‹Ǥ ‡†ƒ ‘„lik nasumičnog ”‡–ƒŒƒ ƒ‰‡ƒ–ƒ’‘’Ž‘Š‹Œ‡†‡ˆ‹‹”ƒŒ‡”—–‡’ƒ–”‘Ž‹”ƒŒƒƒ‰‡ƒ–ƒǤ‘–”‡„‘Œ‡†‡ˆ‹‹”ƒ–‹ točke koje čine neku rutu patroliranja. Ruta može biti konstantna ali i nasumična. Na slici br. 2 prikazane su točke rute na definiranom prostoru. 

lia r ta i točke rute

104 RAČUNALNE IGRE 2020

Osim samog kretanja, agenti su konfigurirani na način da svaki agent ima svoj objekt koji predstavlja senzor kojim „promatra okolinu. Svaki agent ima svoje ƒ–”‹„—–‡ ‘Œ‹ •— ’‘†‡•‹˜‹ ƒ ”ƒœ‹‹ ’‘Œ‡†‹‡ ‹•–ƒ ‡ǣ ‹–‡Ž‹‰‡ ‹Œƒǡ œ†”ƒ˜ŽŒ‡ǡ ‰”ƒ‹ ƒ ƒ‘ ‘Œ‡ ƒ•–—’ƒ ‘†—œ‹ƒŒ‡ —†ƒ ‹Ž‹ ’—œƒŒ‡ ȋ‹Ž‹ ’‘–’—ƒ nepokretnost), razina agresivnosti, širina kuta gledanja i sl. Agenti imaju i svoja stanja ponašanja. U svakom trenutku pojedini agent se može nalaziti u Œ‡†‘ ‘† ‡‘Ž‹‘ †‡ˆ‹‹”ƒ‹Š •–ƒŒƒǣ ’ƒ–”‘Ž‹”ƒŒ‡ǡ „‡œ ’‘•Žƒǡ •–ƒŒ‡ Interakcija’”‹’”ƒ˜‘•–‹ǡƒ’ƒ†ƒŒ‡ǡ’‘–Œ‡”ƒ‹Ž‹Š”ƒŒ‡Œ‡Ǥ između igrača i neprijatelja  

Mogućnost interakcije neprijateljskog agenta s igračem se može ostvariti na nekoliko različitih načina. Prvo što agent mora je na neki način detektirati igrača. Agent to može učiniti na nekoliko načina: vizualno (svijetljenje svjetiljke ili fizičko uočavanje igrača), služnim putem (koraci igrača ili skakanje, ispaljivanje metaka iz oružja) te miris (krv ranjenogo igrača). ollider Senzoru •—‹’Žementirani na način da je definiran objekt koji nema nikakva vizualna i nalazi se u hijerarhiji agenta. Taj objekt sadrži komponen–— ‘Œƒ omogućava detekciju kolizije. Kada agentov senzor dođe u koliziju sa sličnim ‘„Œ‡–‘‘Œ‹•‡ƒŽƒœ‹—Š‹jerarhiji igrača tada agent zna da je igrač u blizini i omogućava se adekvatno reagiranje. Osim same detekcije agenti mogu napasti igrača tj. nanijeti mu štetu a jednako tako i igrač može nanijeti štetu agentu. Ovisno o tome kolika je razina oštećenost poj‡†‹‘‰ †‹Œ‡Žƒ –‹Œ‡Žƒ ƒ‰‡–ƒ —’”ƒ˜ŽŒƒ •‡ ”ƒœ‹‘ ”ƒŒ‡‘•–‹ ƒ‰‡–ƒǤ ƒ •Ž‹ ‹ „”Ǥ ͵ ˜‹†ŽŒ‹˜‡ •— †‡ˆ‹‹”ƒ‡ ”‡‰‹Œ‡–‹Œ‡Žƒƒ‰‡–ƒǤ

lia r riaz sloeva i oznaa dielova tiela agenta

105 RAČUNALNE IGRE 2020

od art rigger ‘–‘˜‘ ‹Œ‡Ž‘ –‹Œ‡Ž‘ ƒ‰‡–ƒ •‡ ƒŽƒœ‹ — •Ž‘Œ—  ‘•‹ ”—— ‘Œ‡ •‡ ƒŽƒœ‡—•Ž‘Œ—tag . Razlog zašto je takva podjela je taj što rukama agent zadaje štetu igraču a ostatak tijela ne. Tijelo je dalje podijeljeno pomoću ‘œƒƒȋ‡‰Ǥ ). Agent ima tri različite oznake: glava, gornji i donji dio tijela. ƒ–‡‡ŽŒ—–‹Š‘œƒƒ”‡‰‹•–”‹”ƒ•‡—oji dio tijela je agent pogođen i na temelj –‘‰ƒ •‡ ‹Œ‡Œƒ Œ‡‰‘˜‘ œ†”ƒ˜•–˜‡‘ •–ƒŒ‡Ǥ ‘‰‘†ƒ — ‰Žƒ˜— œƒ†ƒŒ‡ ƒ‰‡–— veću količinu štete i može ga automatski usmrtiti. Pogodak u donji dio tijela može onesposobiti neprijateljevu mogućnost hodanja pa on počinje šepati ili čak i puzati ako se zada dovoljna količina štete. Na ovaj način se može implementirati sofisticiranija mehanika borbene interakcije između agenata neprijatelja i igrača. Ista stvar se naravno može primijeniti i na igraču. U slučaju da dobije udarac u glavu, igraču se zadaje veća šteta nego ako je udaren u ruku. Ako se igraču nanese šteta u nogu, mogućnost bi bila da igrač više ne može trčati, da mu se uspori hodanje i sl.

ƒ”ƒŒ—‘•–ƒŒ‡•’‘‡—–‹•–ƒŒƒagenata. Agenti počinju svoj životni˜‹Œ‡— •–ƒŒ— „‡œ ’‘•Žƒ –‡ ƒ‘ ‡‘‰ ˜”‡‡ƒ ’”‡Žƒœ‡ — •–ƒŒ‡ ’ƒ–”‘Ž‹”ƒŒƒ ‹ — njemu ostaju. Na dva načina agent može preći iz stanja patroliranja u neko drugo stanje: glad agenta i uočavanje igrača. Agent mijenja stanje ponašanja –ƒ‘ †ƒ ’”‡Žƒœ‹ — •–ƒnje pripravnosti te iz tog stanje odlučuje što će dalje učiniti. Primjerice, ukoliko agent primijeti svjetlost igračeve svjetiljke, on ostaje u stanju pripravnosti, okreće se oko sebe i pokušava otkriti izvor •˜Œ‡–Ž‘•–‹Ǥ ‰‡– ‹œŽƒœ‹ ‹œ •–ƒŒƒ ’”‹’”ƒ˜‘•–‹ –‡ —‘Ž‹‘ •‡ •˜Œ‡–Ž‘•– —‰ƒ•‹ ‹Ž‹ ako uspije pronaći izvor svjetlosti tj. igrača. Na brzinu pronalaska izvora svjetlosti utječe definirana razina inteligencije agenta. Kada agent opazi igrača, ’”‡Žƒœ‹ — •–ƒŒ‡ ’‘–Œ‡”‡Ǥ Ukoliko se dovoljno približi igraču — •–ƒŒ— ’‘–Œ‡”‡ tada može promijeniti stanje u napadanje igrača. Ako igrač uspije pobjeći agentuZaključak tada se agent može vratiti u stanje pripravnosti.

Kod računalnih igara vrl‘ Œ‡ „‹–ƒ ”ƒœ‹ƒ •‘ˆ‹•–‹ ‹”ƒ‘•–‹ ‹’Ž‡‡–ƒ ‹Œ‡ ‡’”‹Œƒ–‡ŽŒ•‹Šƒ‰‡ƒta jer ako se agenti ne ponašaju dovoljno „inteligentno“ to će zasigurno pokvariti dojam o kvaliteti igre. Jednako tako, implementacijom nešto sofisticiranijih mehanika borbene interakcije moguće je dobiti œƒ‹ŽŒ‹˜— ”ƒœ‘Ž‹‘•– ƒ‘ •˜ƒ‹ •—•”‡– • ‡’”‹Œƒ–‡ŽŒ‡ ƒ‰‡–‹ƒ ‡ „‹ ‹œ‰Ž‡†ƒ‘ Œ‡†ƒǤ ƒ”ƒ˜‘ǡ –‘ œƒŠ–Œ‡˜ƒ †‘†ƒ–‘ ƒ‹‹”ƒŒ‡ ‹ •”‹’–‹”ƒŒ‡ ‘ ƒ†ƒ Œ‡ „‘”„‡ƒ ‹–‡”ƒ ‹Œƒ — ‡–”— ‹‰”‡ ‘†ƒ „‹ œƒ•‹‰—”‘ –”‡„ƒŽ‘ ‘„”ƒ–‹–‹ pažnju na taj segment. eeene

 ȏͳȐ ‹–› ‘ —‡–ƒ–‹‘ǣ Š›•‹ •Ǥƒ› ƒ•– ȋʹͳǤ ”—Œƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ†‘ •Ǥ—‹–›͵†Ǥ ‘Ȁ ”‹’–‡ˆ‡”‡ ‡ȀŠ›•‹ •Ǥƒ› ƒ•–ǤŠ–Ž 106 RAČUNALNE IGRE 2020

ȏʹȐ ‹–› ‘ —‡–ƒ–‹‘ǣ „Œ‡ –Ǥ ‡– •–ƒ ‡  ȋʹͳǤ ”—Œƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣŠ––’•ǣȀȀ†‘ •Ǥ—‹–›͵†Ǥ ‘Ȁ ”‹’–‡ˆ‡”‡ ‡Ȁ„Œ‡ –Ǥ ‡– •–ƒ ‡ ǤŠ–Ž ȏ͵Ȑ ‹–› —Ž–‹’Žƒ–ˆ‘” —’’‘”–Ǥ ȋʹͲǤ ”—Œƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ—‹–›Ǥ ‘Ȁˆ‡ƒ–—”‡•Ȁ—Ž–‹’Žƒ–ˆ‘” ȏͶȐ ‹‹’‡†‹ƒǣ  –‹‘Ǧƒ†˜‡–—”‡ ‰ƒ‡Ǥ ȋʹͲǤ ”—Œƒ ʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ‡Ǥ™‹‹’‡†‹ƒǤ‘”‰Ȁ™‹‹Ȁ –‹‘Ǧƒ†˜‡–—”‡̴‰ƒ‡ ȏͷȐ ‹‹’‡†‹ƒǣŽƒ–ˆ‘”‰ƒ‡–Žƒ–ˆ‘”Ǧƒ†˜‡–—”‡‰ƒ‡ǤȋʹͲǤ”—ŒƒʹͲʹͲǤȌǤ ‘•–—’‘ ƒǣ Š––’•ǣȀȀ‡Ǥ™‹‹’‡†‹ƒǤ‘”‰Ȁ™‹‹ȀŽƒ–ˆ‘”̴‰ƒ‡͓Žƒ–ˆ‘”Ǧ ƒ†˜‡–—”‡̴‰ƒ‡ 

107 RAČUNALNE IGRE 2020

Tehnologija virtualne i proširene stvarnosti u oraovanju

arjan lahov  daranvlaovgailo Učiteljski fakultet, Sveučilište u Zagrebu

Sažetak 

Korištenje tehnologije virtualne i proširene stvarnosti iduća je stepenica među nastavnim sredstvima i pomagalima koja se koriste u školama i na fakultetima. Tehnološki napredak —˜‹Œ‡ Œ‡ ‘”ƒ ‹•’”‡† Œ‡‰‘˜‡ ‹’Ž‡‡–ƒ ‹Œ‡ — ‘†‰‘Œ‘Ǧ‘„razovni sustav ali je on neminovan i događa se kad tad, prije svega radi usklađivanja potreba tržišta rada za znanjima i vještinama koje će učenici ‹ •–—†‡–‹ trebati završetkom školovanja. ˜ƒŒ ”ƒ† †‘‘•‹ ’”‡‰Ž‡† ‡‹Š svjetskih istraživanja na temu korištenja tehnologije virtualne i proširene stvarnosti u obrazovanju. Istraživanja prikazana u ovom radu samo su dio svjetskih istraživanja, ali obuhvaćaju pregled osnovnih tema kao što su ’”‡†‘•–‹ ‹ edostatci korištenja, iskustva nastavnika u korištenju, dv‘Œ„‡ ‹ Ključneizazovi s kojima riječi se susreću kako nastavnici tako i učenici i studenti.  ǣ tehnologija virtualne stvarnosti, tehnologija proširene •–˜ƒ”‘•–‹ǡ‘„”ƒœ‘˜ƒŒ‡vo  

‡Š‘Ž‘‰‹Œƒ Œ‡ •˜‘Œ‹ ƒ’”‡–‘ —˜‹Œ‡ ’”‘ƒŽƒœ‹Žƒ ’”‹Œ‡— — ‘†‰‘Œ‘Ǧ ‘„”azovnom radu, kao i načine ulaska u ustanove predškolskog odgoja, osnovnoškolskog i srednjoškolskog odgoja i obrazovanja te ustanova visokoškolskog obrazovanja. Visokoškolsko obrazovanje često je biŽ‘ ‹ predvodnik implementacije, a u velikom broju slučajevƒ‹•–˜ƒ”ƒ–‡ŽŒ‘†‡”‹Š ‹ˆ‘”ƒ ‹Œ•‘Ǧ‘—‹ƒ ‹Œ•‹Š–‡Š‘Ž‘‰‹ŒƒǤ  Povijest nas često uči kako su upravo fakulteti bili rasadnik novih ideja korištenja moderne tehnologije. Implementacija informacijskoǦ ‘—‹ƒ ‹Œ•‹Š–‡Š‘Ž‘‰‹Œƒ—ƒ•–ƒ˜‹’”‘ ‡•ǡ„‹Ž‘ kao predmet poučavanja ‹Ž‹ ƒ‘ ƒ•–ƒ˜‘ •”‡†•–˜‘ ‹ ’‘ƒ‰ƒŽ‘ǡ ‹ƒ •˜‘Œu važnost prije svega radi ‘†‰‘˜‘”‘•–‹‘†‰‘Œ‘Ǧobrazovnih ustanova u pripremi učenika i studenata za ravnopravno sudjelovanje u tržištu rada, koje je te tehnologije najčešće već ’”‹‰”Ž‹Žo. Upravo zbog toga najvažniji strateški dokumenti Republike Hrvatskeǡ Europske unije i svijeta prepoznaju znanja i vještine rada sa i na modernim ‹ˆ‘”ƒ ‹Œ•‘Ǧ‘—‹ƒ ‹Œ•‹ –‡Š‘Ž‘‰‹Œƒƒ ƒ‘ Œ‡†‘ ‘† ’”‹‘”‹–‡–‹Š 108 RAČUNALNE IGRE 2020

‹•‘”ƒƒ—‘„”ƒœ‘˜ƒŒ—’‘Œ‡†‹ ƒ”ƒ†‹’”‘†—–‹˜‘‰•—†Œ‡Ž‘˜ƒŒƒ—•–˜ƒ”ƒŒ— društva blagostanja. Strategija —”‘’ƒ ʹͲʹͲǤ •’‘‹Œ‡ korištenje ‹ˆ‘”ƒ ‹Œ•‘Ǧkomunikacijskih tehnologija kao preduvjet za pametan, održiv i uključiv rast.   Digital Education Action Plan kroz 11 aktivnosti upućuje zemŽŒ‡ƒ‘‘•‹‰—”ƒ–‹ podršku korištenj— –‡Š‘Ž‘‰‹Œ‡ ‹ ”ƒœ˜‘Œ— †‹‰‹–ƒŽ‹Š ‘’‡–‡ ‹Œƒ — ‘„”ƒœ‘˜ƒŒ—Ǥ ‘—‡– Š‡ ʹͲͳͺ –‡”ƒ–‹‘ƒŽ ‘’—–‡” ƒ† ˆ‘”ƒ–‹‘ ‹–‡”ƒ › –—†› ȋ  Ȍ ƒ’‘‹Œ‡ ƒ‘ •‡ †‹‰‹–ƒŽ‡ ‘’‡–‡ ‹Œ‡ ne stječu rođenjem u digitalnom svijetu jer postoji jaz u dostupnosti opreme i načinima njenog korištenja među zemljama Europske unije te se i učenici i nastavnici moraju ohrabrivati u korištenju tehnologije u školama. Integracijƒ–‡Š‘Ž‘‰‹Œ‡ po mjeri učenika, nastavnika i drugih zaposlenika u školama u Republici Hrvatskoj predviđenƒŒ‡‹†‘—‡–‘‹‹•–ƒ”•–˜ƒœƒ‘•–‹‹‘„”ƒœ‘˜ƒŒƒ‹œ ožujka 2020. godine Strateški okvir za digitalno sazrijevanje škola i školskog •—•–ƒ˜ƒ—‡’—„Ž‹ ‹ ”˜ƒ–•‘ŒȋʹͲ͵ͲǤȌ‘Œ‹’”‘‹œŽƒœ‹‹œ–”ƒ–‡‰‹Œ‡‘„”ƒœ‘˜ƒŒƒǡ œƒ‘•–‹ ‹ –‡Š‘Ž‘‰‹Œ‡ ‘Œ— Œ‡ ”˜ƒ–•‹ •ƒ„‘” —•˜‘Œ‹‘ ʹͲͳͶǤ ‰‘†‹‡Ǥ Još je mnogo domaćih i stranih strateških dokumenata, akcijskih planova i agendi koji prepoznaju važnost korištenja modernih informacijskoǦ‘—‹ƒ ‹Œ•‹Š –‡Š‘Ž‘‰‹Œƒ — ‹Œ‡Ž‘Œ ‘†‰‘Œ‘Ǧ‘brazovnoj vertikali. Korištenje tehnologije virtualne i proširene stvarnosti jedan je od posljednjih tehnoloških iskoraka u ‘†‰‘Œ‘Ǧobrazovnom sustavu. Upravo zbog toga sve češće postaje predmet interesa istraživača, posebno u kontekstu koristi od njene pr‹Œ‡‡—‘†‰‘Œ‘Ǧ ‘„”ƒœ‘˜‘”ƒ†—ǤTehnologija virtualne i proširene stvarnosti

 „ƒ •— ’‘Œƒ ’‘œƒ–‹Œƒ ’”‡ƒ •˜‘Œ‹ ƒ”‘‹‹ƒ ‡‰‘ ’‘ ’—‘ ƒœ‹˜—Ǥ ”‘‹‘†‡‰Ž‡•‘‰ƒœ‹˜ƒ‹”–—ƒŽeality označava virtualnu stvarnost, a proširenu stvarnost akronim‘†‡‰Ž‡•‘‰—‰‡–‡†‡ƒŽ‹–›Ǥ‡œ‘„œ‹”ƒ na svoje sličnosti drastična je razlika u ova dva pojma. Tehnologija virtualne stvarnosti podrazumijeva potpuno „uranjanje“ korisnika u 3D svij‡– ‘Œ‹ ‰ƒ okružuje, dok je korištenjem tehnologije proširene stva”‘•–‹‘”‹•‹•˜Œ‡•–ƒ okoline u kojoj se nalazi, ali je ona „obogaćena“ računalno izrađenim elementima. Tehnologija proširene stvarnosti najveću je popularnost doživjela ‹‰”‹ ‘ œƒ ‘„‹Že telefone Pokemon Go koja je ostvarila više od milijardu ’”‡—œ‹ƒŒƒǤ ’Ž‹ƒ ‹Œƒ Œ‡ ‘”‹•–‹Žƒ ƒ‡”— ‘„‹Ž‘‰ –‡Ž‡ˆ‘ƒ ‘”‹•‹ƒ prikazujući prostor u kojem se on nalazi, a tehnologijom proširene stvarnosti ’‘Œƒ˜ŽŒ—Œ— •‡ — –‘ ’”‘•–‘”— ‘‡‘‹ ‘Œ‡ ‘”‹•nik „hvata gađajući ih“ na ‡”ƒ— ‘„‹Ž‘‰ –‡Ž‡ˆ‘ƒ ˜‹”–—ƒŽ‘ Ž‘’–‹ ‘Ǥ ‡”ƒ†‡œ ȋʹͲͳ͹Ǥ) opisujući razliku između tehnologije virtualne i proširene stvarnosti ističe kako je virtualna stvarnost 10% stvarna i 90% virtualna, a proširena 75% stvarna i ʹͷΨ ˜‹”–—ƒŽƒǤ —–‘” —’‘œ‘”ƒ˜ƒ ƒ‘ ‡ •‹Œ‡‘ •‡–—–‹ • —ƒ †ƒ •‡ ‹ŽŒ ‘„”ƒœ‘˜ƒŒƒ ‹Œ‡ ’”‘‹Œ‡‹‘ „‡œ ‘„œ‹”ƒ ƒ –‡Š‘Ž‘‰‹Œ— ‘Œ— ‘”‹•–‹‘Ǥ 109 RAČUNALNE IGRE 2020

Poduzeće IDTechEx procjenjuje kako će 2030. godine tržište virtualne i proširene stvarnosti vrijediti 30 milijardi američkih dolara i to prije svega u ‰ƒ‹‰‹†—•–”‹Œ‹Ǥ  ’Ž‹ƒ ‹Œ‡‘Œ‡•‡trenutačnomogu pronaći na tržištu, a namijenjene su ili se mogu koristiti u školama i na fakultetima, možemo podijeliti na one koje su izrađene kao dio nekomercijalnih projekta, fina ‹”ƒ‹Š Œƒ˜‹ •”‡†•–˜‹ƒ ‹ aplikacije izrađene od strane komerciŒƒŽ‹Š poduzeća koje ih pokušavaju ‘‡–‹œ‹”ƒ–‹Ǥ i u oraovanju – pregled istraživanja 

‹—ǡ—ƒ”Šƒ‰ƒ–ǡ ƒ‘ǡŠƒ‰‹ —ƒ‰ȋʹͲͳ͹Ǥ) proučavali •—„”‘Œ”ƒ†‘˜ƒƒ –‡—˜‹”–—ƒŽ‡•–˜ƒrnosti od 1995. do 2016. godine i zaključili kako je interes ‹•–”ƒživača za tu temu bio eksponencijalan, a najviše su zanimanja pokazali autori iz Sjedinjenih Američkih Država, Ujedinjenog Kraljevstva i Tajvana, tehnološki među najnaprednijim zemljama svijeta. Autori upućuju istraživače na buđenje interesa prema temama i’Ž‡‡–ƒ ‹Œ‡ –‡Š‘Ž‘‰‹Œ‡ ˜‹”–—ƒŽ‡ ‹ proširene stvarnosti u odgojnoǦobrazovni sustavu i proučavanje implikacija –‘‰’”‘ ‡•ƒǤ  Na temelju mnogobrojnih istraživanja Velev i Zlateva (2017ǤȌ’”‘ Œ‡Œ—Œ—ƒ‘ je obrazovanje jedno od pet područja u kojima će t‡Š‘Ž‘‰‹Œƒ ˜‹”–—ƒŽ‡ stvarnosti napraviti najveći prodor. S druge strane, autori Kavanagh, LuxtonǦ ‡‹ŽŽ›ǡ—‡• Š‡‹Ž‹‡”ȋʹͲͳ͹Ǥ) u svom radu ističu kako logistička pitanja ˜‡œƒƒ œƒ ‹’Ž‡‡–ƒ ‹Œ— –‡Š‘Ž‘‰‹Œ‡ ˜‹”–—ƒŽ‡ •–˜ƒ”‘•–‹ –‡ Œ‡ƒ ‹Œ‡ƒ ‹ Ž‹‹tiranost sprječava veći prodor u obrazovni sustav, ali je neminovno da će •‡‘†‘‰‘†‹–‹Ǥ  Većina je autora istraživala prednosti korištenja tehnologije virtualne i proširene stvarnosti u školama i na fakultetima te stavove nastavnika, učenika ‹•–—†‡ƒ–ƒprije i nakon korištenja neke od aplikacija. Povećanje motivacije i angažiranosti studenata i konstruktivistički pristup učenju zabilježili su u svojim istraživanjima MartínǦ —–‹±””‡œǡ ˆ”± ‘”ƒǡ ӑ”„‡ǦÀƒœ ‹ ‘œžŽ‡œǦ ƒ””‡”‘ȋʹͲͳ͸Ǥ), a do sličnog zaključka došao je i Boyles (2017ǤȌǤ’Ž‹ƒ ‹Œ‡œƒ virtualnu stvarnost koje se koriste u obrazovanju proučavali su Kamińska, Sapiński, Wiak, Tikk, Haamer, Avots, Helmi, Ozcinar i Anbarjafari (201ͻǤȌǤ Kritičkom analizom aplikacija autori su izdvojili prednosti p‘’—– •–˜ƒ”ƒŒƒ vizualizacija koju ni jedna druga tehnologija trenutačno ne omogućava, ali s druge strane tehnologija onemogućava fleksibilnost klasične učionice u kojoj učenici mogu postavljƒ–‹’‹–ƒŒƒ‹•—†Œ‡Ž‘˜ƒ–‹—”ƒ•’”ƒ˜ƒƒǤ ‹Ž†‹”‹ǡŽ„ƒ‹‹Ž†‹”‹ȋʹͲͳͺǤȌ•—”‘œ‹–‡”˜Œ—‡•ʹͷ•–—†‡ƒ–ƒ’”˜‡‰‘†‹‡ na kolegiju Povijest civilizacija zaključili kako je tehnologija virtualne stvarnosti korisna i dopadljiva za korištenje. Istraživanje D‘‹‰ƒ‹”ƒ†Ž‡›ƒ 110 RAČUNALNE IGRE 2020

ȋʹͲͳ͹Ǥ) pokazalo je da su svi studenti nastavni荑‰ •Œ‡”ƒ —Œ‡–‘•–‹ ‹ƒŽ‹ pozitivno mišljenje o tehnologiji virtualne stvarnosti nakon korištenja, a Dyer, ™ƒ”–œŽƒ†‡” ‹ —‰Ž‹— ‹ ȋʹͲͳͺǤ) svojim su istraživanjem kod studenata ‡†‹ ‹•‡ struke pokazali kako ova tehnologija može pomoći u razvoju ‡’ƒ–‹je povezane s radom s osobama starije životne dobi.   –ƒ˜‘˜‡ ƒ•–ƒ˜‹ƒ ˆ‹œ‹‡ ‹•’‹–‹˜ƒŽ‹ •— ‹”‡”ǡ ‘ŽŽ›ǡ Ž‡”ǡ —–Ž ‹ ‹•–‘ ‡Ž Š‡”ȋʹͲͳͻǤ). Istraživanje je pokazalo kako su nastavnici najviše zabrinuti œƒ ˜”‹Œ‡‡ ‘Œ‡ Œ‡ ’‘–”‡„‘ œƒ ’”‹’”‡— –‡Š‘Ž‘‰‹Œ‡ œƒ ”ƒ† ‹ œ„‘‰ –‘‰ƒ •— najviše zainteresirani za njeno povremeno korištenje. Isto tako postoji bojazan da se učenici više usmjere na sam—tehnologiju, a manje na sadržaj koji moraju ƒučiti. Cho i Chun (2019Ǥ) na kraju svog istraživanja zaključuju ka‘ Œ‡ potrebno puno više stručnih usavršavanja za nastavnike u području korištenja –‡Š‘Ž‘‰‹Œ‡˜‹”–—ƒŽ‡•–˜ƒ”‘•–‹Ǥ  Kako se stvari i u tom području mijenjaju pokazuje i Ǧ‘˜ƒ‘ˆ‡”‡ ‹Œƒ œƒ ‘”‹•‹‡ –  ‘Œƒ ‡‘Ž‹‘ œƒ†Œ‹Š ‰‘†‹ƒ ƒ•–ƒ˜‹ ‹ƒ praktičarima nudi sadržaje vezane za korištenje tehnologije virtualne i proširene stvarnosti u učionicama. Praktičari kroz primjere dobre prakse iz svojih učionica na ZaključakƒŒ„olji način šire prednosti ove tehnologije i mogućnosti njene primjene. 

mplementacija tehnologije virtualne i proširene stvarnosti u obrazovanj— neminovno je sljedeći iskorak u kontekstu korištenja nastavnih sredstava i ’‘ƒ‰ƒŽƒ — •˜ƒ‘†‡˜‘ radu u učionicama i fakultetima. Istraživanja pokazuju značajne prednosti, posebno u onim područjima u kojima vizualizacija predmeta predavanja nije moguća bez upotrebe tehnologije.   Potpuno uranjanje u svijet virtualne stvarnosti omogućuje učenicima i studentima uvid u stvarnost koja ih okružuje kao nikada do sada. Iako postoji „‘Œƒœƒ nastavnika, posebno jer istraživanja pokazuju nedostatak stručnih usavršavanja, sve je više konferencija i stručnih usavršavanja na temu implementacije ove tehnologije u učionicama.   Istraživanja ističu problem usmjerenosti na samu tehnologiju, a ne sadržƒŒ poučavanja, ali će češćim korištenjem i taj problem izostati. Motiviranost učenika za sadržaj poučavanja i uspjeh u savladavanju tog sadržaja zabilježen je u svim istraživanjima, a to i je osnovni cilj implementacije tehnologije virtualne i proširene stvarnosti u školama i fakultetima.     111 RAČUNALNE IGRE 2020

ȏͳȐ ‘›Ž‡•ǡ Ǥ ȋʹͲͳ͹ȌǤ ‹”–—ƒŽ ‡ƒŽ‹–› ƒ† —‰‡–‡† ‡ƒŽ‹–› ‹ †— ƒ–‹‘Ǥ ‡–‡” ˆ‘” ‡ƒ Š‹‰ š ‡ŽŽ‡ ‡ǡ ‹–‡† –ƒ–‡• ‹Ž‹–ƒ”›  ƒ†‡›ǡ ‡•– ‘‹–ǡǤ ȏʹȐ Š‘ǡ Ǥ ‹ Š—ǡ Ǥ Ǥ ȋʹͲͳͻȌǤ ‹”–—ƒŽ ‡ƒŽ‹–› ƒ• ƒ ‡™ ’’‘”–—‹–› ‹ ‡‘‰”ƒ’Š›†— ƒ–‹‘ǣ ”‘–Š‡–‡ƒ Š‡”•̵’‡”•’‡ –‹˜‡•‹‘”‡ƒǤ ȏ͵Ȑ ‘‹‰‘ǡ Ǥ Ǥ ‹ ”ƒ†Ž‡›ǡ Ǥ Ǥ ȋʹͲͳ͹ȌǤ †— ƒ–‹‘ –—†‡– ‡” ‡’–‹‘• ‘ˆ ‹”–—ƒŽ ‡ƒŽ‹–› ƒ• ƒ ‡ƒ”‹‰ ‘‘ŽǤ ‘—”ƒŽ ‘ˆ †— ƒ–‹‘ƒŽ ‡ Š‘Ž‘‰› ›•–‡•Ͷ͸ȋ͵Ȍǡ͵ʹͻǦ͵ͶʹǤ ȏͶȐ ›‡”ǡǤǡ™ƒ”–œŽƒ†‡”ǡǤ‹ —‰Ž‹— ‹ǡǤǤȋʹͲͳͺȌǤ•‹‰‹”–—ƒŽ‡ƒŽ‹–›  ‡†‹ ƒŽ †— ƒ–‹‘ ‘ ‡ƒ Š ’ƒ–Š›Ǥ ‘—”ƒŽ ‘ˆ –Š‡ ‡†‹ ƒŽ ‹„”ƒ”› ••‘ ‹ƒ–‹‘ǡͳͲ͸ȋͶȌǡͶͻͺǦͷͲͲǤ ȏͷȐ —”‘’‡ƒ‘‹••‹‘Ǥ‹‰‹–ƒŽ†— ƒ–‹‘ –‹‘ŽƒȋʹͲʹͳǦʹͲʹ͹ȌǤ ȏ͸Ȑ —”‘’‡ƒ ‘‹••‹‘Ǥ Š‡ ʹͲͳͺ –‡”ƒ–‹‘ƒŽ ‘’—–‡” ƒ† ˆ‘”ƒ–‹‘‹–‡”ƒ ›–—†›ȋ  Ȍ ȏ͹Ȑ ‡”ƒ†‡œǡ Ǥ ȋʹͲͳ͹ȌǤ —‰‡–‡† ‹”–—ƒŽ ‡ƒŽ‹–›ǣ ‘™ –‘ ’”‘˜‡ †— ƒ–‹‘›•–‡•Ǥ ‹‰Š‡”‡ƒ”‹‰‡•‡ƒ” Š‘—‹ ƒ–‹‘•ǡ͹ȋͳȌǡͳǦ ͳͷǤ ȏͺȐ ƒ‹•ƒǡǤǡƒ’‹•‹ǡǤǡ‹ƒǡǤǡ‹ǡǤǡ ƒƒ‡”ǡǤǤǡ˜‘–•ǡǤǡ ‡Ž‹ǡ Ǥǡœ ‹ƒ”ǡǤǡ‹„ƒ”Œƒˆƒ”‹ǡ ǤȋʹͲͳͻȌǤ‹”–—ƒŽ‡ƒŽ‹–›ƒ† –•’’Ž‹ ƒ–‹‘• ‹†— ƒ–‹‘ǣ—”˜‡›Ǥ ˆǤǡͳͲǡ͵ͳͺǤ ȏͻȐ ƒ˜ƒƒ‰Šǡ Ǥǡ —š–‘Ǧ‡‹ŽŽ›ǡ Ǥǡ —‡• Š‡ǡ Ǥ ‹ Ž‹‡”ǡ Ǥ ȋʹͲͳ͹ȌǤ  •›•–‡ƒ–‹ ”‡˜‹‡™‘ˆ‹”–—ƒŽ‡ƒŽ‹–›‹‡†— ƒ–‹‘ǤŠ‡‡•‹ ‹‡ ‡ƒ† ‡ Š‘Ž‘‰›†— ƒ–‹‘ǡͳͲȋʹȌǡͺͷǦͳͳͻǤ ȏͳͲȐ ‹—ǡ Ǥǡ —ƒ” Šƒ‰ƒ–ǡ Ǥǡ ƒ‘ǡ Ǥǡ Šƒ‰ǡ ǦǤ ‹  —ƒ‰ǡ Ǥ ȋʹͲͳ͹ȌǤ  ‹„Ž‹‘‡–”‹ ƒŽ›•‹•‘‘’‡•‡ƒ” Š–—†‹‡•‹–Š‡ƒ•–™‘‡ ƒ†‡•Ǥ Ǥ‹—ǡǤ‡†‡ǡǤ —ƒ‰‹ Ǥ‹ Šƒ”†•ȋ”ǤȌǤ‹”–—ƒŽǡ—‰‡–‡†ƒ†‹š‡† ‡ƒŽ‹–‹‡•‹†— ƒ–‹‘Ǥ’”‹‰‡”‹‰ƒ’‘”‡Ǥ ȏͳͳȐ ƒ”–ÀǦ —–‹±””‡œǡ Ǥǡˆ”±‘”ƒǡǤǡӑ”„‡ǦÀƒœǡ‹ ‘œžŽ‡œǦƒ””‡”‘ǡǤ ȋʹͲͳ͸ȌǤ ‹”–—ƒŽ ‡ Š‘Ž‘‰‹‡• ”‡†• ‹ †— ƒ–‹‘Ǥ   ‘—”ƒŽ ‘ˆ ƒ–Š‡ƒ–‹ • ‹‡ ‡ƒ†‡ Š‘Ž‘‰›†— ƒ–‹‘ǡͳ͵ȋʹȌǡͶ͸ͻǦͶͺ͸Ǥ ȏͳʹȐ Ministarstvo znanosti i obrazovanja. Strateški okvir za digitaln‘ sazrijevanje škola i školskog sustava u Republici Hrvatskoj. ȏͳ͵Ȑ ‹”‡”ǡ Ǥǡ ‘ŽŽ›ǡǤǡŽ‡”ǡ Ǥǡ —–Žǡ‹‹•–‘‡Ž Š‡”ǡ ǤȋʹͲͳͻȌǤ‹”–—ƒŽ ‡ƒŽ‹–›  †—cation from a Teacher’s Perspective. U iLRN 2019 ‘†‘ǡ‘”•Š‘’ǡ‘‰ƒ†Š‘”–ƒ’‡”ǡƒ†‘•–‡””‘ ‡‡†‹‰•ǣˆ”‘ –Š‡ ‹ˆ–Š ‡”•‹˜‡ȋͷ‡†ǤȌǤ‡”Žƒ‰†‡”‡ Š‹• Š‡‹˜‡”•‹–¡– ”ƒœǤ ȏͳͶȐ ‡Ž‡˜ǡǤ‹Žƒ–‡˜ƒǡǤȋʹͲͳ͹ȌǤ‹”–—ƒŽ‡ƒŽ‹–›ŠƒŽŽ‡‰‡•‹†— ƒ–‹‘ƒ† ”ƒ‹‹‰Ǥ –‡”ƒ–‹‘ƒŽ ‘—”ƒŽ‘ˆ‡ƒ”‹‰ƒ†‡ƒ Š‹‰ǡ͵ȋͳȌǤ ȏͳͷȐ ‹Ž†‹”‹ǡ Ǥǡ Ž„ƒǡ Ǥ ‹ ‹Ž†‹”‹ǡ Ǥ ȋʹͲͳͺȌǤ ƒŽ›•‹• ‘ˆ •‡ ‘ˆ ‹”–—ƒŽ ‡ƒŽ‹–›‡ Š‘Ž‘‰‹‡•‹ ‹•–‘”›†— ƒ–‹‘ǣƒ•‡–—†›Ǥ•‹ƒ ‘—”ƒŽ‘ˆ †— ƒ–‹‘ƒ†”ƒ‹‹‰ǡͶȋʹȌǡ͸ʹǦ͸ͻǤ

112