Navodila za pisanje diplomskih nalog UM FERI

Podobni dokumenti
Space Invaders Opis igre: Originalna igra: Space Invaders je arkadna igra, ki so jo ustvarili leta Bila je ena izmed prvih streljaških iger, v k

Navodila za pisanje diplomskih nalog UM FERI

Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefo

BYOB Žogica v vesolju Besedilo naloge Glavna ideja igre je paziti, da žoga ne pade na tla igralne površine, pri tem pa zbrati čim več točk. Podobno ig

NAVODILA ZA UPORABO K01-WIFI Hvala, ker ste se odločili za nakup našega izdelka. Pred uporabo enote skrbno preberite ta Navodila za uporabo in jih shr

NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: Faks.: in

Navodila za uporabo aplikacije mlist - neposredni mentorji za Zdravniško zbornico Slovenije pripravila Gooya, interaktivni mediji, d.o.o. Ljubljana, m

Navodila za programsko opremo FeriX Namestitev na trdi disk Avtor navodil: Martin Terbuc Datum: December 2007 Center odprte kode Slovenije Spletna str

INFORMATOR BIROKRAT 1/2011

Vaja 2 Virtualizacija fizičnih strežnikov in virtualni PC A. Strežnik Vmware ESX Namestitev strežnika VMware ESX 3.5 na fizični strežnik 2. Nas

Ker so pri Microsoftu z igro Age of Empires (in dodatkom Rise of Rome) poželi tolikšen uspeh, so izdali tudi nadaljevanje te igre. Kakor prvi del igre

1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatk

Gimnazija Bežigrad Peričeva Ljubljana OPERACIJSKI SISTEM Predmet: informatika

ISOFT , računalniški inženiring

Watch 40_MT40X_UM_SL.pdf

PowerApps

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Miroslav Matijević Miselna igra za platformo Google Cardboard DIPLOMSKO DELO VISOKOŠOLS

Slide 1

VPELJAVA MDM V DRŽAVEM ZBORU MATJAŽ ZADRAVEC

Nove različice programske opreme GE Podjetje GE Digital, vodilni svetovni proizvajalec programske opreme za področje avtomatike, je izdalo kar nekaj n

CODEKS IP KAMERA

Microsoft Word - Trust-CDsize-12052_12579_14070-al-cp_v5.0.doc

Zbornica zdravstvene in babiške nege Slovenije Zveza strokovnih društev medicinskih sester, babic in zdravstvenih tehnikov Slovenije Stanje:

DCS-2330L_A1_QIG_v1.00(EU).indd

Microsoft Word - CNC obdelava kazalo vsebine.doc

Zadeva: Ponudba

INTERAKTIVNE REŠITVE PROMETHEAN

Najboljša skupaj Kontrola pristopa + registracija delovnega časa

Področje uporabe

NETGEAR R6100 WiFi Router Installation Guide

Nameščanje Adopt Open Java Development Kit 8

Strojna oprema

Oblikovanje in razvijanje spletnih strani

ZAČETNI VODNIK ZA POVEZAVO Izkusite prilagojeno nego perila z aplikacijo My AEG Care. Pralni stroj lahko povežete in upravljate od koder koli in preje

Microsoft Word - A-3-Dezelak-SLO.doc

Nameščanje Adopt Open Java Development Kit 8

scratch

Upravljanje sistema COBISS Navodila za uporabo tiskalnika CITIZEN S310II V1.0 VIF-NA-27-SI

innbox_f60_navodila.indd

Macoma katalog copy

D3 V2 brosura net

Diapozitiv 1

PowerPointova predstavitev

NETGEAR R6250 Smart WiFi Router Installation Guide

Linksys PLEK500 User Guide

Računalniški praktikum Projektna naloga - Izdelava spletne strani Avtor: Matej Tekavčič Skupina: Matej Tekavčič - koordinator Simon Vrhovnik Tine Kavč

Navodila za nastavitev mail odjemalca na ios in Android napravah TELEFONI iphone (ios 12) Predlagamo, da do svoje študentske e-pošte dostopate s pomoč

Navodila za uporabo programske opreme OTRS verzija Administracijska navodila Avtor navodil: Sebastijan Šilec Datum: December 2007 Center odprte

Microsoft Word - Brosura neobvezni IP

GHOSTBUSTERS navodila za učitelje O PROJEKTU S tem projektom se učenci sami naučijo izdelati igro. Ustvariti morajo več ikon (duhcov ali kaj drugega)

Modem in krajevno omrežje Uporabniški priročnik

SETCCE Uporabniška navodila za namestitev in upravljanje komponente SETCCE proxsign v2.0.5 za MAC OS X [Nova generacija komponent SETCCE proxsign ] Id

Microsoft Word - CN-BTU4 Quick Guide_SI

Microsoft Word - Brosura neobvezni IP 2018

(Microsoft Word - U\350enje telegrafije po Kochovi metodi.doc)

Sledilna ploščica in tipkovnica Uporabniški priročnik

6.1 Uvod 6 Igra Chomp Marko Repše, Chomp je nepristranska igra dveh igralcev s popolno informacijo na dvo (ali vec) dimenzionalnem prostoru

PowerPoint Presentation

_ _BDA_CapitalSports_CS-Timer.indd

Document ID / Revision : 0519/1.3 ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov

PowerPointova predstavitev

Slide 1

Gradbeništvo kot Industrija 4.0

Navodila za pripravo oglasov na strani Med.Over.Net v 2.2 Statistično najboljši odziv uporabnikov je na oglase, ki hitro in neposredno prenesejo osnov

Šolski center Celje Gimnazija Lava IZDELAVA SPLETNEGA BRSKALNIKA Raziskovalna naloga Avtor David Simunič, 2. e Mentor Tomislav Viher, univ. dipl. org.

Miluma Trader Miluma Trader navodila: V nadaljevanju sledijo osnovna navodila, kako začeli uporabljati Miluma Trader. 1. Preverite spletno stran Ta po

Vzpostavitev več nivojske varnostne infrastrukture S pomočjo Elektro Maribor, McAfee SIEM, CISCO ISE, NGFW Zorna Varga, Sfera IT d.o.o in Klemen Bačak

Vostro 430 Informacijski tehnični list o namestitvi in funkcijah

Vedno pod nadzorom, kjerkoli že ste

INFORMATOR BIROKRAT 1/2011

Microsoft Word doc

Chapter 1

Microsoft PowerPoint - seminar_ pptx

PowerPointova predstavitev

Princip oskrbovalnega kroga ALENKA KNEZ Design Manager

UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Klemen Rus RAZVOJ IN PROBLEMI PRI RAZVOJU RAČUNALNIŠKIH IGER Diplomsko d

Kazalne naprave in tipkovnica Uporabniški priročnik

MT40X Kratka navodila

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni

Microsoft PowerPoint - p_TK_inzeniring_1_dan_v5_shortTS.ppt [Compatibility Mode]

Diapozitiv 1

UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA DOMEN BRGLEZ PROGRAMIRANJE IZOBRAŽEVALNIH IGER V PROGRAMU UNITY DIPLOMSKO DELO Ljubljana, 2017

Excel 2016

FOR SMARTER PEOPLE TAKO SE VLOMI PREPREČUJEJO DANES REHAU Smart Guard System plus preventivna protivlomna zaščita WINDOWS. REINVENTED FOR MODERN LIFE.

NASLOV PREDAVANJA IME IN PRIIMEK PREDAVATELJA

give yourself a digital makeover

PowerPoint Presentation

IJS EDS IJS Elektronski Dokumentni Sistem Osnovna uporaba sistema uporabniška navodila Institut "Jožef Stefan" Ljubljana

Microsoft Word - polensek-1.doc

Kazalne naprave in tipkovnica Vodnik za uporabnike

Slide 1

Microsoft Word - CNR-BTU3_Bluetooth_vmesnik

Microsoft Word Navodila za povezavo naprave v oblak_SLO

Smetanova ulica Maribor, Slovenija Andrej Gorenjak VIZUALIZACIJA ŠIRJENJA POŽARA Z GRAFIČNIM POGONOM UNITY 3D Diplomsko delo Maribor, februar

docx

Številka:

Microsoft Word - NAVODILA ZA UPORABO.docx

Kratka navodila za uporabo razširjevalnika dosega WiFi AC750 model EX3800

Vprašanja za 2. izpitno enoto poklicne mature Strokovni predmet NPA Vprašanja Visual C# (4. letnik) 1. Uporabniški vmesnik razvojnega okolja Visual C#

Darko Pevec 1.a Informatika

Transkripcija:

Fakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija Tomaž Kočevar UPORABA ORODJA UNITY3D ZA IZGRADNJO RAČUNALNIŠKE IGRE Diplomsko delo Maribor, september 2013

UPORABA ORODJA UNITY3D ZA IZGRADNJO RAČUNALNIŠKE IGRE Diplomsko delo Študent(ka): Tomaž Kočevar Študijski program: Bolonjski prvostopenjski visokošolski strokovni program Računalništvo in informacijske tehnologije Mentor(ica): doc. dr. David Podgorelec, univ. dipl. inž. rač. in inf.

ii

iii ZAHVALA Zahvaljujem se mentorju doc. dr. Podgorelcu Davidu, da ni izgubil upanja nad mano. Prav tako bi se rad zahvalil svojim staršem.

iv Uporaba orodja Unity3d za izgradnjo računalniške igre Ključne besede: računalniška igra, igralni pogon, Unity UDK: 004.42:519.837(043.2) Povzetek V diplomskem delu smo predstavili igralni pogon Unity ter koncept načrtovanja računalniške igre. Pregledali smo različne grafični pogone in se osredotočili na enega izmed trenutno najbolj popularnih - Unity. Predstavili smo njegove komponente, prednosti in slabosti. Preden smo razvili igro, smo še predstavili, kaj je potrebno za načrtovanje iger, ter preverili cilje, ki napravijo igro zabavno. Primerjali smo tudi dobre in slabe uporabniške vmesnike v računalniških igrah. Vse pridobljeno znanje smo nato uporabili pri izdelavi 2D igre.

v Computer game development by using Unity3D Key words: computer game, game engine, Unity UDK: 004.42:519.837(043.2) Abstract In this diploma thesis we presented the game engine Unity and the concept of game design. After the presentation of the game engine components we designed a 2D game. We checked several game engines before we have chosen one of the currently most popular ones Unity. We presented its components, advantages and weaknesses. Before we designed a game, we also presented what is necessary for game design and tested ways which make games interesting and fun. We also compared good and bad user interfaces in computer games. All the acquired knowledge was then used in a design of a 2D game.

vi KAZALO 1 UVOD... 1 2 NAČRTOVANJE IGRE... 3 2.1 Načrt igre... 3 2.2 Cilj igre... 4 2.3 Izdelava... 5 2.4 Uporabniški vmesnik... 6 3 UNITY3D... 8 3.1 Predstavitev... 8 3.2 Zgodovina... 13 3.3 Prednosti in slabosti... 14 4 PRIMER IGRE, IZDELANE Z ORODJEM UNITY3D... 16 4.1 Sestava igre... 16 4.2 Potek izdelave... 17 4.3 Težave pri izdelavi... 23 5 ANALIZA OPRAVLJENEGA DELA... 25 5.1 Možne izboljšave igre z uporabo istega ali drugih orodij... 25 6 ZAKLJUČEK... 26 VIRI IN LITERATURA... 27

vii KAZALO SLIK Slika 2.1: Eifflov Stolp v igri Minecraft... 4 Slika 2.2 Inventar pokriva samo 21,7 % zaslona pri igri Oblivion [7]... 7 Slika 2.3 Pogled na mesto v igri Civ 5 [7]... 7 Slika 3.1 Uporabniški vmesnik Unity... 9 Slika 3.2 Sestavljeni trkalniki v obliki avtomatske puške [16]... 10 Slika 3.3 Točkovna luč [18]... 11 Slika 3.4 Reflektor [18]... 12 Slika 3.5 Usmerjeni tip luči [18]... 12 Slika 4.1 Kamera za 2D pogled... 17 Slika 4.2 Začetek razvoja naše igre... 18 Slika 4.3 Koda za premikanje vesoljske ladje... 19 Slika 4.4 Spreminjanje velikosti objektov... 19 Slika 4.5 Premikanje in uničenje objekta projektil... 20 Slika 4.6 Zaznava trka... 21 Slika 4.7 Prototip igre... 22 Slika 4.8 Zaključen razvoj igre... 23

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 1 1 UVOD V današnjem času postaja razvijanje indie-iger vedno bolj priljubljeno. Indie-igre so zvrst, ki jih od drugih razlikuje dejstvo, da njihovi avtorji nimajo svojega založnika. Posredna posledica tega je, da so takšne igre običajno manj grafično ali vsebinsko polne, obenem pa pogosto vsebujejo koncepte, ki jih pri igrah, izdanih pri znanih založnikih z veliko sredstev, ne bi našli, saj ti pred avtorje polagajo določene omejitve. Indie-avtorji v tem oziru niso omejeni in lahko svojo ustvarjalnost za izdelavo igre uporabijo v poljubni meri. To je eden glavnih razlogov, zakaj je danes razvoj indie-iger v takšnem porastu. Druga pomembna razloga za porast indie-iger sta širjenje interneta ter mobilnih naprav. Širjenje interneta omogoča razvijalcem indie-iger relativno poceni distribucijo svojih izdelkov preko internetnih storitev namesto preko klasičnih transportnih načinov, obenem pa taka distribucija iz verige med razvijalcem in kupcem odstrani tiste vmesne člene, ki bi zaradi marž dvigali cene takih izdelkov. Širitev pametnih mobilnih naprav rezultira v sorazmernem večanju števila možnih kupcev za indie-igre, saj so te ponavadi igre manjšega kalibra, tako po kompleksnosti kot po fizični velikosti manjše od drugih vrst iger in posledično primerne za mobilne naprave. Z velikim porastom neodvisnih razvijalcev indie-iger in s širjenjem te skupine na manj izkušene ljudi je prišla tudi potreba po igralnih pogonih, ki bodo omogočali izdelavo kvalitetnega izdelka z ljudem hitro in intuitivno dostopnimi orodji. Pomen takih igralnih pogonov za izdelavo iger je jasen ob pogledu na visoko časovno in finančno zahtevnost samostojnega razvijanja lastnega pogona, še posebej z ozirom na manj izkušene razvijalce. Najbolj znani komercialni igralni pogoni so trenutno Frostbyte, Unreal Engine, Anvil Engine, CryEngine in Source Engine. Ti pogoni so namenjeni predvsem razvoju visokoproračunskih iger, vendar so zaradi porasta števila indie-razvijalcev nekateri začeli ponujati pakete, namenjene tej vrsti razvijalcev. Kljub namembi teh paketov relativno finančno manj podprtim razvijalcem pa večina takih paketov zahteva 20-30 % provizije. Obstajajo tudi odprtokodni igralni pogoni, kot so OGRE, Panda 3D, Maratis in Delta 3D. Ti igralni pogoni so na voljo brez plačila in nam dovoljujejo, da jih kot razvijalci spreminjamo

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 2 po želji. Njihova kakovost je večinoma odvisna od podjetja ali skupnosti, ki skrbi za njihov nadaljnji razvoj. Obstajajo pa tudi komercialne rešitve, ki so namenjene manjšim projektom. Med najpomembnejše takšne igralne pogone štejemo Unity 3D (v nadaljevanju Unity), Shiva3D, Torque 2D, Torque 3D in Unigine. Izbira igralnega pogona je vedno odvisna od razvijalčevih potreb in glede na to smo se v naši nalogi odločili za uporabo in obravnavo Unity. Unity je igralni pogon, ki se je v zadnjih letih uveljavil kot eden izmed vodilnih igralnih pogonov za neodvisne razvijalce predvsem zaradi svoje enostavnosti, cene in za tako dostopen pogon relativno napredne grafike, kar bo podrobno analizirano v prihodnjih poglavjih. Cilj diplomske naloge je analizirati igralni pogon Unity ter predstaviti njegove prednosti in slabosti. V ta namen bomo izvedli razvoj relativno preproste igre ter tekom razvoja analizirali efektivnost dela s tem pogonom ter posledično njegovo primernost za neodvisne (in morebiti manj izkušene) razvijalce. V drugem poglavju si bomo pogledali, kako je najboljše začeti z razvojem igre, prav tako bomo povedali nekaj o samem razvoju iger ter pogledali, kaj naredi uporabniški vmesnik v igrah dober. V tretjem poglavju bomo prestavili Unity, njegove dobre in slabe lastnosti ter zgodovino. V četrtem poglavju bomo predstavili našo igro in opisali proces njene izdelave s pomočjo Unity. V petem poglavju bomo poskušali prvo verzijo igre izboljšati, v zadnjem poglavju pa bomo podali svoje ugotovitve ter morebitne napotke za nadaljnje delo.

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 3 2 NAČRTOVANJE IGRE 2.1 Načrt igre Za načrtovanje iger so potrebne različne spretnosti in sposobnosti. Spretnosti v veliki meri pridobimo s treniranjem računalniške grafike, animacij in oblikovanja računalniških programov, obstaja pa tudi spretnost, ki se je težko naučimo, in to je močna domišljija, da lahko zgradimo virtualni svet v svojem umu, preden ga razvijemo v igri [1]. Za razvijalca iger je pomembno tudi, da sledi razvoju in trendu iger ter da igra igre tudi sam, saj tako sledi napredku. Oblikovanje vsake igre se začne ali z idejo ali pa (pogosteje) z modifikacijo že obstoječega koncepta. Ideja vsebuje podatke o igri oz. načrt, ki vključuje koncept, igralnost, seznam funkcij, nastavitve, zgodbo, ciljno publiko, zahteve, roke, potrebno osebje in kar je najbolj važno, oceno stroškov [2]. Oblikovalec igre mnoge spremembe in odločitve sprejema med samim razvojem in oblikovanjem igre, saj je njegova naloga tudi odločanje, kateri elementi se bodo uporabili v sami igri, npr. skladnost igre z vizijo, proračun ali pa omejitve strojne opreme. V ekipi oblikovalcev je po navadi več oseb, ki sodelujejo med seboj pri dizajnu in razvoju igre. Glavni je vodja oblikovanja, ki je zadolžen za usklajevanje drugih oblikovalcev, seveda pa je tudi glavni vizionar v igri. Vodilni oblikovalec skrbi za komunikacijo med člani ekipe, sprejema glavne odločitve in predstavlja celotno ekipo. Sistemski oblikovalec skrbi za oblikovanje in usklajevanje pravil igre [3]. Oblikovalec stopenj je postal značilen za zadnja leta oblikovanja iger in skrbi za ustvarjanje različnih težavnosti. Na koncu je v ekipi še pisec, ki je zadolžen za pisanje besedil, dialogov ter komentarjev v sami igri.

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 4 2.2 Cilj igre Vsaka igra mora vsebovati nekakšen cilj, da nam bo igra ostala zanimiva in ne bo postala dolgočasna. V večini primerov je to zgodba v igri, katero hočemo zaključiti, saj smo se navezali na glavnega junaka in nas zanima, kaj bo z njim. Primer igre z dobro zgodbo je BioShock, v nekaterih igrah pa vnos zgodbe enostavno ni smiseln, recimo v kakšni peskovniški igri. V takšnih igrah moramo uporabnika zadržati z igralnostjo ali mu omogočiti postavitev lastnih ciljev. Ena najbolj popularnih iger zadnjega časa je Minecraft, ki nima jasno določenega cilja, a je zaradi svoje zasnove, kjer lahko igralec s pomočjo kock gradi različne stavbe, na primer Eifflov stolp (Slika 3.1), dosegla velikanski uspeh. Nekatere igre podajo uporabniku cilj reševanja miselnih ugank. Takšne igre lahko kombiniramo tudi z zgodbo, da igralca dodatno motiviramo. Predvsem igre za mobilne telefone v večini primerov igralcu postavijo cilj, da ta doseže čim boljši rezultat. Slika 2.1: Eifflov Stolp v igri Minecraft Na koncu pa je vedno od domišljije posameznega razvijalca in zvrsti igre odvisno, ali bo igralcu omogočil postavitev lastnega cilja ali mu bo zadal vnaprej izbrane cilje.

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 5 2.3 Izdelava Preden smo začeli z izdelavo igre, smo se morali najprej odločiti, ali bomo uporabili grafične knjižnice ali pa se bomo odločili za že obstoječ igralni pogon. Vsaka odločitev ima svoje dobre in slabe strani. Obstoječi igralni pogoni imajo zraven možnosti izrisa grafike kopico različnih funkcionalnosti, katere bi morali pri uporabi grafičnih knjižnic sami razviti. Tipične funkcionalnosti v obstoječih rešitvah so vgrajeni fizikalni pogon, zvok, animacija, umetna inteligenca, delo s trki, upravljanje s pomnilnikom, uporaba več procesorjev, mrežna podpora in lokalizacijska podpora. [4] Nekateri igralni pogoni imajo zraven osnovnih funkcionalnosti še dodatne, kot so urejevalnik sveta, generator terena, algoritem iskanja poti, sistem za delce in upravljanje z vhodnimi napravami (tipkovnica, miška, zaslon na dotik, igralni plošček). Te funkcionalnosti so nam v korist predvsem pri hitrejšem in lažjem razvoju igre. Programski jeziki za delo v igralnih pogonih so pogosto visokonivojski. Igralni pogoni nam omogočajo tudi dokaj enostavno prenašanje iger med platformami, tako da nam igre ni potrebno razvijati od začetka za vsako platformo, temveč popravimo le tiste dele, ki so specifični za določeno platformo. Obstoječi igralni pogoni imajo več slabosti. Pred uporabo se moramo ravnanja z vsakim najprej naučiti, kar nam lahko vzame kar nekaj časa, še posebej če dobra in celovita dokumentacija ni na voljo. Prav tako se lahko zgodi, da igralni pogon ni bil narejen za zvrst igre, kakršno razvijamo, ter zato ne bo dovolj efektiven ali pa bo procesorsko, grafično ali pomnilniško požrešen [5]. Če igralni pogon vsebuje hrošče in ni odprtokoden, določenih napak ne moremo odpraviti. Če naša igra za implementacijo ne zahteva zahtevnejših orodij, je izdelava take igre hitrejša in cenejša z uporabo grafične knjižnice, za kompleksnejše igre pa je izdelava igre z igralnim pogonom sicer hitrejša, ni pa vedno poceni.

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 6 2.4 Uporabniški vmesnik Uporabniški vmesnik je namenjen prenašanju informacij med igro in uporabnikom ter je nujna kompomenta kvalitetne igre. Uporabniki običajno ne poznajo algoritmov, podatkovnih struktur in ostalih programerskih rešitev, ki skrbijo za to, da igra deluje točno tako, kot se od nje pričakuje, vidijo pa uporabniški vmesnik in tako vsako njegovo napako ali pomanjkljivost [6]. Dober uporabniški vmesnik uporabniku pove, kar mora vedeti in mu nato ni v napoto. Preden bomo implementirali uporabniški vmesnik v igro, si moramo zastaviti naslednja vprašanja. Ali nam bo vmesnik povedal, kar hočemo vedeti? Ali pridemo do informacije enostavno ali jo bomo morali iskati? Ali lahko igramo igro brez branja navodil? Ali nam bo vmesnik v napoto med igranjem? Ali lahko pohitrimo dostop do informacij z bližnjicami? Kompleksnost uporabniškega vmesnika je odvisna od kompleksnosti interakcije med uporabnikom in igro. Manj ko je interakcija kompleksna, enostavnejši je uporabniški vmesnik in obratno. Primer slabega uporabniškega vmesnika srečamo v igri The Elder Scrolls IV: Oblivion (Slika 3.2). V tej igri inventar, ki nam pokaže potrebne informacije, pokriva samo 21,7 % zaslona pri resoluciji 1920 x 1080 in tako vidimo samo 6 predmetov na stran. Mogoče je izgled inventarja lep, a je funkcionalno popolnoma neuporaben. Maksimalna velikost inventarja je namreč 200 predmetov in pri prikazu 6 predmetov na stran potrebujemo ogromno časa, da pregledamo vse predmete. Prav tako oknu ne moremo spremeniti velikosti ali ga postaviti na drugo mesto [7]. Mala pokritost za potrebne informacije ne bi bila problem, če bi bile pisava in ikone manjše in bi s tem pridobili več predmetov na eno stran. V večini iger igralec za pogled na zemljevid pritisne tipko m in ima takojšen pregled nad zemljevidom, problem igre Oblivion pa je ravno v tem, da ne pozna bližnjic. Zato je bil čas dostopanja do zemljevida in vseh ostalih potrebnih informacij neverjetno dolg.

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 7 Slika 2.2 Inventar pokriva samo 21,7 % zaslona pri igri Oblivion [7] Primer dobrega uporabniškega vmesnika srečamo v igri Civilization 5. Tamkajšnji zaslon za mesto (Slika 3.3) je odličen primer, kako dati informacije na voljo hitro in enostavno. Ta pogled nam pove gospodarsko in kulturno stanje našega imperija, proizvodnjo v mestu, rast prebivalstva in rast meja [7]. Prav tako vidimo stavbe in enote ter čas, kako dolgo bo potrebno, da bodo le-te zgrajene. Slika 2.3 Pogled na mesto v igri Civ 5 [7]

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 8 3 UNITY3D 3.1 Predstavitev Unity je integrirano avtorsko orodje za ustvarjanje videoiger, ki ga razvija podjetje Unity Technologies iz San Francisca. Sestavljen je iz igralnega pogona in integriranega razvojnega orodja. Namenjen je predvsem razvoju 3D iger, vendar se da z njim brez problema izdelovati tudi 2D igre. V zadnjih letih je njegova popularnost v porastu predvsem zaradi podpore neodvisnim razvijalcem, ki težko razvijajo svoj igralni pogon oziroma kupijo licenco kakšnega popularnega igralnega pogona. Unity ima na voljo dve licenci: Unity Free in Unity Pro. Unity Free je brezplačen za neodvisne razvijalce in podjetja, katerih dohodki ne presegajo 100 000 $. Unity Pro je plačljiva verzija, za katero je potrebno odšteti 1500 $) [8]. Z obema licencama lahko izdelamo popolno igro, vendar verzija Pro ne vsebuje vodnega žiga v spletnih igrah ali pozdravnega zaslona v aplikacijah, prav tako pa vsebuje nekatere dodatne funkcije, ki pripomorejo k boljšemu izgledu igre. Unity omogoča razvoj za različne trenutno popularne platforme, kot so mobilne naprave (Android, ios), igralne konzole (PlayStation 3, Xbox360, Wii), namizni računalniki (Windows, Mac, Linux), in za brskalnike (Unity Web Player, Adobe Flash). Trenutno je v razvoju tudi podpora za nove platforme Windows 8, Windows Phone 8, Blackberry 10 in Wii U, v načrtih pa je tudi podpora za igralni konzoli Playstation 4 in Xbox One, ki letos prihajata na svetovni trg [8]. Igralni pogon Unity uporablja za izrisovanje tehnologije Direct3D (Windows, Xbox 360), OpenGL (Linux, Playstation 3, Mac, Windows) ter OpenGL ES (Android, ios), za fiziko pa ima vgrajeno podporo za PhysX podjetja Nvidia. Prav tako omogoča uvoz sredstev iz programov 3ds Max, Maya, Blender, Modo, Softimage, Cinema 4D, Zbush, Cheetah3d, Adobe Photoshop in Adobe Fireworks [9]. Ta sredstva enostavno dodamo in urejamo z grafičnim vmesnikom Unity. Za programiranje imamo možnost izbire med jeziki C#, Boo in Javascript. Unity ima vgrajeno tudi trgovino sredstev (Unity Asset Store), v kateri lahko kupimo ali brezplačno pridobimo različna sredstva, dodatne funkcionalnosti ali primere kode [9].

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 9 Uporabniški vmesnik Unity je sestavljen iz več različnih zavihkov, ki so nam v pomoč pri razvoju (Slika 3.1). Slika 3.1 Uporabniški vmesnik Unity - Scenski pogled (Scene) je naš»interaktivni peskovnik«. Tukaj izbiramo in določimo pozicijo okolja, igralca, glavno kamero, sovražnike in vse druge objekte (GameObjects). Manipulacija in manevriranje predmetov v scenskem pogledu sta med najpomembnejšimi funkcijami v Unity, zato je pomembno, da se lahko izvedeta hitro [10]. - Hierarhija vsebuje vse objekte (GameObjects). Te objekte lahko izbiramo v hierarhiji, povlečemo enega na drugega ali jih gnezdimo. Ko objekte dodajamo ali odstranjujemo iz scene, se bodo ti pojavljali ali izginjali iz hierarhije [11]. - Orodna vrstica (Toolbar) je sestavljena iz petih osnovnih kontrol. Vsaka kontrola se nanaša na različne dele urejevalnika [12]. - Inšpektor (Inspector) prikazuje detajlne podatke izbranega objekta, kot so skripte, zvok ali kakšni grafični elementi. V inšpektorju spreminjamo lastnosti izbranega objekta. Vse lastnosti, katere vidimo v inšpektorju, lahko neposredno tudi spreminjamo. Spreminjamo lahko tudi spremenljivke iz skript, brez da bi spreminjali spremenljivke v skripti sami [13]. - V brskalniku projekta (Project) lahko dostopamo in upravljamo s sredstvi, ki pripadajo projektu [14].

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 10 V vsaki igri so potrebne interakcije med objekti, te pa dosežemo z uporabo trkalnikov (Colliders). Naloga trkalnikov je detekcija trka med dvema objektoma. Trkalniki imajo lahko osnovno obliko kvadra, krogle ali valja. Lahko pa so kompleksnejši, v obliki mrežnega trkalnika [15]. Trkalnikom lahko spreminjamo velikost in jih dodajamo različnim objektom, lahko jih pa tudi sestavljamo skupaj za kakšne bolj kompleksne objekte, kot na primer avtomatsko orožje (Slika 3.2). Slika 3.2 Sestavljeni trkalniki v obliki avtomatske puške [16] Komponenta RigidBody omogoča objektom, da delujejo pod nadzorom fizike. Objektom doda maso, zračni upor ter vpliv gravitacije. S kombinacijo trkalnikov in komponente RigidBody dobimo realistično obnašanje trkov [17]. Komponenta RigidBody dovoljuje objektom, da so pod kontrolo fizikalnega pogona, medtem ko trkalniki omogočajo trke med njimi. Alternativni način uporabe trkalnikov je ta, da jih nastavimo kot sprožilec. To naredimo tako, da obkljukamo opcijo IsTrigger v inšpektorju. Sprožilce fizikalni pogon ignorira, imajo pa poseben nabor metod, ko se zgodi trk. Uporabljamo jih lahko za sprožanje dogodkov, kot so prizori, avtomatsko odpiranje vrat, prikaz dogodkov in raznorazni drugi zamišljeni učinki [16]. V vsaki igri je potrebna svetloba, saj svetloba pričara tisto pravo vzdušje, ki ga želimo imeti v igri. Unity vsebuje štiri tipe luči. Točkovna luč (Slika 3.3) sveti v vseh smereh. To so najpogostejše luči v računalniških igrah - običajno se uporabljajo za eksplozije, žarnice, itd. Drugi tip luči so reflektorji (Slika 3.4), ki svetijo samo v eno smer in to v obliki stožca. Narejeni so kot nalašč za svetilke ali avtomobilske žaromete ali pa svetilke delovnih mest. Usmerjen tip luči (Slika 3.5) se uporablja predvsem v zunanjih prizorih, kjer je potrebno

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 11 sonce ali mesečina. Usmerjene luči vplivajo na vse površine predmetov v prizoru [18]. Četrti tip so območne luči, ki svetijo iz ene strani pravokotne ravnine in svetijo na vse objekte v svojem dosegu. Slika 3.3 Točkovna luč [18]

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 12 Slika 3.4 Reflektor [18] Slika 3.5 Usmerjeni tip luči [18]

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 13 Ves izris v Unity je narejen s pomočjo senčnikov majhnih skript, ki nam omogočajo nastavljanje načina, kako bo strojna oprema senčila. Unity ima vgrajene preko 80 različnih senčnikov [18]. Te senčnike lahko nadgrajujemo s svojimi. Igre v Unity programiramo s pomočjo skript, katere pripnemo izbranim objektom. Ko ustvarimo skripto v Unity, imamo že podani dve pomembni metodi Start() in Update(). Metoda Start se kliče ob inicializaciji objekta, medtem ko se funckija Update kliče ob vsakem izrisu igre (Frame). V tej metodi naj bi bilo vedno največ kode. Za izris uporabniškega vmesnika se uporablja funkcija OnGUI(), v kateri kličemo funkcije, potrebne za izris gumbov, oznak, itd. Za interakcijo med trkalniki pa se uporabljajo naslednje metode: - OnCollisionEnter() se kliče takrat, ko se trkalnik ali RigidBody začne dotikati drugega objekta (?) RigidBody ali trkalnika. - OnCollisionExit() se kliče takrat, ko se trkalnik ali RigidBody preneha dotikato drugea objekta RigidBody ali trkalnika. - OnCollisionStay() se kliče enkrat na izris za vsak trkalnik ali RigidBody, ki se dotika drugega objekta RigidBody ali trkalnika. - OnTriggerEnter() se kliče takrat, ko trkalnik začne dotik s sprožilcem. - OnTriggerExit() se kliče takrat, ko se trkalnik neha dotikati sprožilca. 3.2 Zgodovina Razvoj Unity se je začel leta 2001, pred uradno izdajo pa je bil Unity prvič izdan leta 2005 kot beta verzija poleg igre GooBall, ki je bila narejena posebej za Apple Macintosh. Javnosti je bil dva meseca pozneje prvič uradno predstavljen na Applovi konferenci za razvijalce (Apple's WWDC) kot orodje za razvijanje iger na OS X [19]. Kot prva uradna verzija je bil Unity izdan dva meseca po izdaji in bil leta 2006 nominiran za nagrado "Apple design" v kategoriji za najboljšo grafiko. Zaradi velikega uspeha so ga pričeli razvijati tudi za druge platforme. Leto pozneje je bila izdana naslednja večja verzija, Unity 2.0, ki je igralni pogon predvsem naredila bolj dostopen širšemu krogu uporabnikov. S prihodom popularnega iphona leta 2008 je lahko le-ta to novo dostopnost vnovčil kot prvi igralni pogon, ki je v celoti podpiral to platformo [19]. S to razširitvijo uporabnikov so naslednje leto lahko prvič ponudili Unity v zastonjski verziji, kar je povzročilo še dodaten

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 14 dvig popularnosti ter še več s strani uporabnikov ustvarjene vsebine na tem igralnem pogonu. Leta 2010 je zaradi razširitve internetnih plačljivih storitev z verzijo 3.0 izšla trgovina sredstev (Unity Asset Store), dodali pa so tudi podporo za razvoj iger na Androidu. Dve leti po tem ni bilo večjih posodobitev, leta 2012 pa sta izšli dve večji razširitvi, verziji 3.5 in 4.0, od katerih je imela verzija 4.0 večji pomen, saj je prinesla podporo za Linux, ki se še danes vedno bolj širi ne le kot alternativna platforma za razvijalce ter osnoven operacijski sistem za vsakdanja opravila, temveč tudi kot platforma za igranje iger. Danes Unity podpira razvijanje iger in drugih aplikacij za več različnih platform, kot so igralne konzole (Sony Playstation, Microsoft XBOX, Nintendo Wii, idr.), mobilne platforme (mobilni telefoni, tablični računalniki), Windows ter OS X. Od prvotne izdaje 1.0.1 je bilo temu igralnemu pogonu dodanih mnogo posodobitev, nadgradenj in opcij, njegov razvoj pa traja še danes [20]. Trenutno je Unity na voljo v verziji 4.2.1. 3.3 Prednosti in slabosti Kot vsak igralni pogon ima tudi Unity svoje prednosti in slabosti. Med prednosti vsekakor najbolj pade v oči Unityjeva sposobnost nudenja neverjetno hitrega razvoja projekta. Ta hiter razvoj je nujna posledica enostavnega uvoza sredstev, ki omogoči hiter dostop do teh brez potrebe dodatnega nastavljanja programa. Kako zelo je Unity namenjen razvijanju iger, nam da vedeti integriran urejevalnik sveta, ki razvijalcem pomaga preskočiti tisti začetni del razvijanja temeljev igre in s tem pospeši celoten razvoj. Vsebuje tudi dobra razhroščevalna orodja, kar močno pohitri celoten razvijalski proces, saj pri izdelavi iger nemalokrat večji del časa vzame ravno razhroščevanje končnega izdelka, še posebej če je ta izdelan površno. Proces izdelave pohitri tudi velika knjižnica že pripravljenih komponent (zvok, izris, slika), saj nam ni treba za razne nepogoste funkcionalnosti, ki jih želimo vključiti v projekt, ročno iskati posameznih knjižnic [21]. V primeru razvoja iger za več različnih platform Unity nudi do relativno velike mere avtomatiziran izvoz končnega izdelka na različne platforme brez večjega ročnega ponastavljanja projekta. Podpira tudi razvoj projektov v različnih jezikih (C#, JavaScript in BOO), kar je relativno impresivno, upoštevajoč dobro podporo za razhroščevanje, ki mora biti prilagojeno vsakemu jeziku posebej.

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 15 Med slabosti igralnega pogona Unity vsekakor vedno bolj spada slaba podpora omrežnemu večigralstvu, saj je razvijalec razen integrirane podpore LAN primoran vso ostalo omrežno podporo spisati sam. Smo v času ko je večigralstvo pri večini iger že bolj pravilo kot izjema, zaradi česar je čudno, da razširjen in popularen igralni pogon, kot je Unity, ne nudi integrirane večigralske podpore tudi na mrežnem nivoju [21]. Upoštevajoč, da je Unity vedno bolj namenjen masovni publiki in ne samo izkušenim razvijalcem, ob delu z igralnim pogonom takoj pade v oči tudi dejstvo, da grafični vmesnik, s katerim razvijamo projekt, trpi za mankom intuitivnosti in je na več mestih počasen.

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 16 4 PRIMER IGRE, IZDELANE Z ORODJEM UNITY3D 4.1 Sestava igre Za diplomsko nalogo smo se odločili izdelati enostavno 2D igro iz zvrsti Shoot 'em up. Ta zvrst je podzvrst streljačin. V tej zvrsti je igralec pogosto udeležen bitk v vesoljski ladji ali letalu proti velikemu številu sovražnikov [22]. Njegova naloga je uničiti čim več sovražnikov, hkrati pa se umikati njim in njihovim napadom. Začetek te zvrsti sega v daljno leto 1961 z igro SpaceWars!, ki je bila ena izmed prvih računalniških iger, največji uspeh pa je ta zvrst doživela v 80-ih letih z igro SpaceInvaders. Odločili smo se torej za igro v vesolju, kjer bomo upravljali naše plovilo s tipkami levo, desno, gor in dol. Ker pa je večina ljudi navajenih na tipke W, A, S in D smo dodali tudi podporo tem tipkam. Ladji smo dodali možnost streljanja s preslednico. Naši nasprotniki bodo asteroidi, za katere bomo dobili 10 točk, če jih uničimo, ali 1 točko, če se jim umaknemo. Prav tako bomo dobili 5 točk vsakih 5 sekund, ki jih bomo uspeli preživeti. Začeli bomo s tremi življenji in za vsak stik z asteroidom bomo izgubili po eno življenje, dokler ne bomo ostali brez življenj. Po izgubi življenja bomo 5 sekund imuni na vse napade. Da bo igra izgledala dobro, smo potrebovali 3D model vesoljske ladje, 3D modele asteroidov, eksplozije in zvok. Zato smo se odpravili v Asset Store za Unity, kjer smo iskali zastonjska sredstva za našo igro. Na našo srečo smo našli eno zastonjsko vesoljsko ladjo, vendar smo naleteli na težavo z asteroidi, saj na voljo ni bila nobena zastonjska verzija. Zato smo se odločili da bomo asteroide zamenjali s kamni. V naši igri smo implementirali tudi enostaven vmesnik. Ta nam mora prikazati le dve informaciji: doseženo število točk in število preostalih življenj. Po uničenju ladje dobimo novo, ki je nekaj sekund neuničljiva, kar nakažemo z njenim utripanjem.

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 17 4.2 Potek izdelave Preden smo začeli z razvojem igre, smo najprej v Unity ustvarili nov projekt. Nov projekt vedno vsebuje eno sceno. V sceni projekta je že vključena kamera (Main Camera), s katero vidimo dogajanje v igri. Scene lahko uporabljamo za izgradnjo glavnega menija, stopnje v igri ali karkoli drugega nam pade na pamet. V večini primerov scene vsebujejo objekte, katere lahko enostavno dodajamo z enim klikom ali pa jih povlečemo v sceno. Po pripravi scene smo morali nato popraviti našo kamero. Kamera v Unity omogoča projiciranje iz perspektive ali pravokotno projekcijo. Za našo igro je bila izbira pravokotne projekcije boljša rešitev, vendar ima Unity privzeto perspektivno lastnost. Na našo srečo je spreminjanje opcij v Unity preprosto opravilo. Kliknemo na nastavitev ki jo želimo spremeniti, in Unity nam pokaže lastnosti, ki so nam dosegljive. Po izbiri naše projekcije smo morali še spremeniti velikost vidnega polja, ki smo jo zmanjšali iz 100 na 6 (Slika 4.1). Slika 4.1 Kamera za 2D pogled

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 18 V sceno je bilo potrebno dodati tudi luči, saj bi bila igra brez luči enostavno pretemna in ne igralna. Ker se naša igra dogaja v vesolju smo se odločili za usmerjen tip luči, ki je bil več kot idealen za našo igro. Ko smo imeli pripravljeno kamero in svetlobo za našo igro, smo lahko v sceno dodali naš prvi objekt, igralca. Da pa bi bil razvoj igre čim lažji in hitrejši, smo se odločili, da na začetku ne bomo uporabljali 3D modelov, ampak bomo naše objekte najprej ponazorili z enostavnimi geometrijskimi objekti, ki so v Unity dosegljivi z enostavnim klikom. Te objekte bi na koncu razvoja enostavno zamenjali z njihovimi pripadajočimi 3D modeli. Zaradi te odločitve smo našo vesoljsko ladjo ponazorili z objektom kocke in ga s pomočjo urejevalnika enostavno povlekli na sredino (Slika 4.2). Slika 4.2 Začetek razvoja naše igre Po postavitvi vesoljske ladje smo se morali odločiti glede njenega upravljanja. Unity ima že nekatere vgrajene rešitve, kot sta First Person Controller, ki je primeren za prvoosebne igre, in 3th Person Controller, ki je primeren za tretjeosebne igre. Za 2D igre Unity ni imel nobene vgrajene rešitve, zato smo se odločili, da bomo skripto za upravljanje spisali sami. S pomočjo Unity smo ustvarili novo skripto v jeziku C#, jo poimenovali igralecladja in jo nato kot komponento pripeli objektu vesoljska ladja. Skriptiranje premikanja je bilo dokaj enostavno, saj ima Unity podane že vse potrebne funkcije. Premik po posamezni osi smo naredili s samo dvema vrsticama kode (Slika 4.3).

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 19 Slika 4.3 Koda za premikanje vesoljske ladje A kaj bi bila vesoljska ladja brez možnosti streljanja, zato smo ustvarili nov objekt v obliki kapsule, ki naj bi ponazarjal izstrelek. Vendar je bil izstrelek večji kot naša vesoljska ladja, zato smo morali zmanjšati velikost izstrelka. Na našo srečo je spreminjanje velikosti v Unity sila enostavna zadeva. Velikost lahko spreminjamo s skaliranjem. Privzeta vrednost predmeta, ko ga dodamo na sceno je 1, vrednost skaliranja izstrelka smo nato zmanjšali vzdolž osi x in z na 0.2, vzdolž osi y pa smo vrednost skaliranja izstrelka spremenili na 0.3 (Slika 4.4). Slika 4.4 Spreminjanje velikosti objektov Projektil je seveda še vedno stal na miru, zato smo morali ustvariti skripto v C#, ki smo jo pripeli našemu projektilu. S pomočjo funkcije Translate smo dodali premikanje. Prav tako

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 20 pa smo morali dodati preverjanje, ali je projektil v vidnem polju ali ne, kar pomeni majhno optimizacijo, da ne pride do prekomerne uporabe pomnilniških sredstev, saj bi drugače projektil letel naprej, dokler ne bi zaključili igre. Slika 4.5 Premikanje in uničenje objekta projektil Imeli smo delujoč projektil, vendar ga je bilo potrebno preurediti, da ga bomo lahko izstrelili. V Unity je možno obstoječe objekte spremeniti v»prefab«(montažni objekt). Narediti iz objekta»prefab«, je bila sila enostavna zadeva, saj smo s pomočjo Unity ustvarili nov»prefab«in nato smo želen objekt enostavno povlekli vanj. Tako smo dobili nov objekt»prefab«, ki ga lahko enostavno in poljubno mnogokrat kličemo s funkcijo Instantiate [23]. To funkcijo smo vključili v našo obstoječo skripto vesoljska ladja. Imeli smo popolnoma delujočo vesoljsko ladjo in bil je čas, da se posvetimo izdelavi našega sovražnika. Sovražnik je bil po načrtu podoben izstrelku, le da bi se namesto od spodaj navzgor pomikal od zgoraj navzdol, zato smo lahko uporabili del skripte za izstrelek. Ko smo imeli končane vesoljsko ladjo, izstrelek in sovražnika, smo začeli delati na interakciji med njimi, saj se do tega trenutka med njimi ni še nič dogajalo. Interakcijo med objekti smo dosegli s trkalniki in sprožilci. Da pride do sprožitve funkcije trka med dvema objektoma, so potrebni naslednji pogoji. Oba objekta morata vsebovati trkalnik, eden od trkalnikov pa mora imeti obkljukano lastnost IsTrigger, kar smo enostavno storili tako, da smo obkljukali IsTrigger na sovražniku. Prav tako mora eden od objektov vsebovati RigidBody. Tukaj pa je nastal problem, da noben od naših objektov ni imel komponento RigidBody, zato smo morali leto enemu dodati. V našem primeru je bila najboljša izbira za Rigidbody izstrelek, odkljukati pa smo morali lastnost UseGravity, saj nismo želeli, da bi gravitacija vplivala na naš

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 21 izstrelek. Prav tako smo vsem objektom dodali»tage«.»tag«v Unity je beseda, ki se sklicuje na enega ali več objektov.»tage«lahko na primer dodamo igralcu in sovražniku ali različnim objektom, s katerimi lahko ali ne moremo biti v interakciji, dodali pa smo jih objektom zato, da jih lahko med trki lažje prepoznamo (Slika 4.6). Slika 4.6 Zaznava trka Po nekaj popravkih skripte za izstrelek smo dobili na pol delujočo igro, kjer smo lahko uničevali našega sovražnika - asteroid. Kljub temu je bila igra v tej fazi dolgočasna, saj smo bili kot igralec nesmrtni, zato smo potrebovali še interakcijo med sovražnikom in našo vesoljsko ladjo. Ker smo že imeli napisano kodo za trke v izstrelku, smo del kode uporabili za trk med sovražnikom in vesoljsko ladjo. Funkcionalnost naše igre je bila skoraj končana, manjkali so nam le osnovni uporabniški vmesnik, seštevanje našega rezultata ter odštevanje naših življenj ob uničenju naše vesoljske ladje. Da bi nam bilo pri razvoju lažje, smo za naš rezultat in naša življenja izbrali statične spremenljivke, saj so enostavno dostopne. Za nas uporabniški vmesnik te spremenljivke prikazujemo s pomočjo funkcij OnGUI v zgornjem levem kotu (Slika 4.7).

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 22 Slika 4.7 Prototip igre Na koncu našega razvoja igre smo ustvarili še dve novi sceni. Prva je bila namenjena našemu štartnemu oknu, kjer smo dopisali navodila za igranje igre. Druga scena je pa namenjena sporočilu, ko nam zmanjka življenj, ter nam poda možnost ponovnega igranja. Ko je bil razvoj funkcionalnosti igre na koncu, nam je ostalo še samo, da naše objekte zamenjamo s 3D modeli, katere smo naložili iz Asset store (Slika 4.8).

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 23 Slika 4.8 Zaključen razvoj igre 4.3 Težave pri izdelavi Večina težav ki smo jih imeli med razvojem igre, je nastala zaradi nepoznavanja igralnega pogona Unity. To je tudi ena izmed slabosti igralnih pogonov, namreč vzamejo nam kar nekaj časa, preden jih spoznamo in se naučimo, kako delujejo. Največjo težavo smo imeli s trki, saj nam na začetku nikakor ni uspelo sprožiti trka med sovražnikom in izstrelkom. Poskusili smo spremeniti nastavitve, nastaviti IsTrigger najprej na izstrelek in nato na sovražnika. Kljub različnim poskusom nam nikakor ni uspelo sprožiti trka, zato smo se odločili, da se poglobimo v dokumentacijo, dokler nismo našli napake. Problem je bil v tem, da za sprožitev trka potrebujemo RigidBody na vsaj enem objektu. Zato smo naknadno dodali to funkcionalnost na izstrelek in trki so začeli delovati. Problem je nastal tudi pri klicanju metod iz drugih skript po trku. Ponovno je bil razlog nepoznavanje delovanja Unity, saj je potrebno dostopati do skript preko objektov, na katere so skripte pripete.

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 24 Težava je nastala tudi pri skriptiranju v metodi update(), ki se kliče ob vsakem izrisu. Ljudje imamo različno dobro strojno opremo, zato ima igra na različnih računalnikih različno število izrisov na sekundo, kar lahko privede do tega, da bodo naši objekti imeli različne hitrosti na različnih računalnikih. To zadevo enostavno rešimo s funkcijo Time.deltaTime, s katero naredimo igro neodvisno od števila izrisov na sekundo. Na začetku smo hoteli eksplozije ustvariti sami, vendar ima Unity za začetnika kar zahteven sistem za delce, tako da nam kljub poglabljanju v njegovo dokumentacijo in večkratnih poskusih ni uspelo narediti lepe eksplozije.

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 25 5 ANALIZA OPRAVLJENEGA DELA 5.1 Možne izboljšave igre z uporabo istega ali drugih orodij Igro lahko precej izboljšamo z dodajanjem funkcionalnosti. Dodali bi lahko različne stopnje težavnosti, dodali nov način igranja. Ena izmed možnosti bi bila tudi, da bi dodali različne pakete, katere bi lahko med letom pobrali, s čimer bi dobili razne izboljšave, kot so hitrejše streljanje, ščit, kateri bi nas branil pred udarci asteroida, dodatno življenje ali kakšen dodatek pri točkah. Prav tako bi lahko dodali različne slabosti, katere bi nam zmanjšali hitrost, povečali število asteroidov ali povečali njihovo hitrost. Lahko bi dodali novega sovražnika, recimo nezemljane z njihovimi vesoljskimi ladjami, ki bi streljali na nas. Po koncu igre bi lahko dodali tudi listo rezultatov, da bi bil eden izmed ciljev v igri izboljšati svoj najboljši rezultat. Ker je igra spisana v Unity, bi lahko z manjšimi spremembami pri upravljanju vesoljske ladje igro brez problema prenesli na Android, Windows Mobile 8, BlackBerry 10 in ios.

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 26 6 ZAKLJUČEK V diplomskem delu smo se seznanili z izdelavo 2D igre s pomočjo igralnega pogona Unity ter v praksi izdelali igralni prototip igre. Pri tem smo spoznali določene koncepte razvoja iger ter kako ustvariti dober uporabniški vmesnik. Dobro smo se seznanili z uporabo igralnega pogona Unity za izdelavo iger ter seveda spoznali njegove dobre in slabe lastnosti. Boljše bi si še morali pogledati sistem za delce, saj je le-ta zelo uporabna zadeva, a je na žalost pretežka za začetnike. Prav tako bi lahko samo igro izboljšali. Po vsem tem lahko rečemo, da je izdelovanje iger dosti bolj enostavno, kot je bilo pred leti, vendar je posledica tudi ta, da je dosti več različnih razvijalcev na trgu, kar pomeni, da je tudi konkurenca huda. Kljub temu, da se je razvoj iger poenostavil, mora biti razvijalec pravi strokovnjak na različnih področjih, da bo igra dobra. Je pa tudi res, da s pomočjo Unity in njegove trgovine s sredstvi nekaterih področij ni treba obvladati. Je pa tukaj ena lastnost, pri kateri nam pa Unity ne more pomagati, to je naša domišljija.

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 27 VIRI IN LITERATURA [1] How to become a game designer. Dostopno na: http://www.schools.com/visuals/howto-become-a-game-designer.html (8. 9. 2013) [2] How Becoming a Video Game Designer Works, 2013. Dostopno na: http://electronics.howstuffworks.com/video-game-designer.htm (8. 9. 2013) [3] Game design, 2013. Dostopno na: http://en.wikipedia.org/wiki/game_design (8. 9. 2013) [4] Game engine, 2013. Dostopno na: http://en.wikipedia.org/wiki/game_engine (9. 9. 2013) [5] What are the advantages and disadvantages to using a game engine, 2013. Dostopno na: http://gamedev.stackexchange.com/questions/859/what-are-the-advantages-anddisadvantages-to-using-a-game-engine (10. 9. 2013) [6] Graphical_user_interfac2013. Dostopno na: http://en.wikipedia.org/wiki/graphical_user_interface (11. 9. 2013) [7] Game UI By Example: A Crash Course in the Good and the Bad, 2013 Dostopno na: http://gamedev.tutsplus.com/tutorials/aesthetics/game-ui-by-example-a-crash-coursein-the-good-and-bad/ (11. 9. 2013) [8] License Comparisons, 2013. Dostopno na: http://unity3d.com/unity/licenses (12. 9. 2013) [9] Unity3D (Game Engine), 2013. Dostopno na: http://en.wikipedia.org/wiki/unity3d (8. 9. 2013) [10] Scene View, 2013. Dostopno na: http://docs.unity3d.com/documentation/manual/sceneview40.html (12.9. 2013) [11] Hierarchy, 2013. Dostopno na: http://docs.unity3d.com/documentation/manual/hierarchy.html (12. 9. 2013) [12] Toolbar, 2013. Dostopno na: http://docs.unity3d.com/documentation/manual/toolbar.html (13. 9. 2013) [13] Inspector, 2013. Dostopno na: http://docs.unity3d.com/documentation/manual/inspector.html (13.9. 2013) [14] Project Browser, 2013. Dostopno na: http://docs.unity3d.com/documentation/manual/toolbar.html (13. 9. 2013)

Uporaba orodja Unity3D za izgradnjo računalniške igre Stran 28 [15] Physics overview 2013 Dostopno na: http://docs.unity3d.com/documentation/components/dynamicsgroupoverview.html (14. 9. 2013) [16] Box Colider, 2013. Dostopno na: http://docs.unity3d.com/documentation/components/class-boxcollider.html (14. 9. 2013) [17] Rigidbody, 2013. Dostopno na: http://docs.unity3d.com/documentation/components/class-rigidbody.html (14.9. 2013) [18] Shaders, 2013. Dostopno na: http://docs.unity3d.com/documentation/manual/shaders.html (14. 9. 2013) [19] Unity Fast Facts, 2013. Dostopno na: http://unity3d.com/company/public-relations (14. 9. 2013) [20] Unity Jo: History, 2013. Dostopno na: http://www.unity-jo.com/top/history/ (14. 9. 2013) [21] Game Development Stack Exchange: What are the pro cons of unity3d, 2013. Dostopno na: http://gamedev.stackexchange.com/questions/8118/what-are-the-procons-of-unity3d-as-a-choice-to-make-games (15. 9. 2013) [22] Shoot 'em up, 2013 Dostopno na: http://en.wikipedia.org/wiki/shoot_%27em_up (16. 9. 2013) [23] Instantiate - Unity Script Reference, 2013. Dostopno na: http://docs.unity3d.com/documentation/scriptreference/object.instantiate.html (16. 9. 2013)