Mario Dobaj IZDELAVA STRATEŠKE IGRE Z …V nadaljevanju smo se lotili pisanja skripte, ki iz...

38
UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Mario Dobaj IZDELAVA STRATEŠKE IGRE Z GRAFIČNIM POGONOM UNITY Diplomsko delo Maribor, april 2016

Transcript of Mario Dobaj IZDELAVA STRATEŠKE IGRE Z …V nadaljevanju smo se lotili pisanja skripte, ki iz...

UNIVERZA V MARIBORU

FAKULTETA ZA ELEKTROTEHNIKO,

RAČUNALNIŠTVO IN INFORMATIKO

Mario Dobaj

IZDELAVA STRATEŠKE IGRE

Z GRAFIČNIM POGONOM UNITY

Diplomsko delo

Maribor, april 2016

UNIVERZA V MARIBORU

FAKULTETA ZA ELEKTROTEHNIKO,

RAČUNALNIŠTVO IN INFORMATIKO

Mario Dobaj

IZDELAVA STRATEŠKE IGRE

Z GRAFIČNIM POGONOM UNITY

Diplomsko delo

Maribor, april 2016

IZDELAVA STRATEŠKE IGRE

Z GRAFIČNIM POGONOM UNITY

Diplomsko delo

Študent: Mario Dobaj

Študijski program: Univerzitetni študijski program,

Računalništvo in informacijske tehnologije

Mentor: Damjan Strnad, izr. prof. dr.

Lektorica: Aleksandra Papež, prof. slov. in zgod.

Izdelava strateške igre z grafičnim pogonom Unity

Ključne besede: Unity, strategija, igre, razvoj iger

UDK: 004.388.4:004.4'275(043.2)

Povzetek

V diplomskem delu smo preučili osnove uporabe prosto dostopnega razvojnega orodja in

grafičnega pogona Unity. Pridobljeno znanje smo nato uporabili za načrtovanje in razvoj

preproste 3D strateške igre v programu Unity. Delo je vključevalo izdelavo 3D modelov s

programom Blender, iskanje in prilagajanje brezplačnih zvočnih datotek za glasbeno

ozadje igre ter zvočne učinke. Obenem je šlo za programiranje generatorja sveta ter

implementacijo funkcionalnosti sistema ekonomije in bojevanja v igri, pripravo

uporabniškega vmesnika igre in neprestano sprotno testiranje vseh podrobnosti. Rezultat

dela je samostojna računalniška igra, ki jo je možno igrati na operacijskih sistemih Linux,

Windows in MacOS.

I

Development of a strategy game with the Unity graphics engine

Keywords: Unity, strategy, games, game development

UDK: 004.388.4:004.4'275(043.2)

Abstract

In this thesis, we studied the basics of using the free development tool and graphics engine

Unity. The knowledge we aquired was used for the planning and development of a simple

3D strategy game with the Unity engine. The work included making of 3D models with

Blender, finding and adjusting free sound files for the music background and sound effects,

programming a world generator, implementing the functionality of an economy and

fighting system, creating a user interface and continuous testing of all the details. The

result is a standalone computer game, that can be played on the Linux, Windows and

MacOS operating systems.

II

KAZALO VSEBINE

KAZALO VSEBINE............................................................................................................III

KAZALO SLIK...................................................................................................................IV

1.UVOD................................................................................................................................1

2.UPORABLJENA ORODJA...............................................................................................2

2.1.Grafično oblikovanje..................................................................................................2

2.2.Glasba.........................................................................................................................2

2.3. Programiranje............................................................................................................3

3.IMPLEMENTACIJA IGRE...............................................................................................7

3.1.Generiranje sveta........................................................................................................7

3.2. Ekonomija................................................................................................................10

3.3.Bojevanje..................................................................................................................15

3.4.Uporabniški vmesnik................................................................................................19

3.5.Glasba in zvočni učinki............................................................................................20

4.DELOVANJE IGRE........................................................................................................21

4.1.Ekonomija.................................................................................................................22

4.2.Bojevanje..................................................................................................................23

5.SKLEP..............................................................................................................................27

6.SEZNAM UPORABLJENIH VIROV.............................................................................28

7.Priloga A...........................................................................................................................29

III

KAZALO SLIK

Slika 2.1: Primer dela v programu Blender............................................................................2

Slika 2.2: Primer razvijalnega okolja Unity...........................................................................4

Slika 2.3:Primer nekaterih lastnosti, ki določajo predlogo lokostrelcev................................5

Slika 2.4: Prikaz datotek projekta v programu Unity.............................................................5

Slika 3.2: Osnovni gradnik skala...........................................................................................7

Slika 3.1: Osnovni gradnik trava...........................................................................................7

Slika 3.4: Osnovni gradnik voda...........................................................................................7

Slika 3.3: Osnovni gradnik skala s snegom...........................................................................7

Slika 3.5: Osnovni gradnik zlato...........................................................................................8

Slika 3.6: Osnovni gradnik drevo...........................................................................................8

Slika 3.7: Primer sveta, ko so sektorji veliki..........................................................................9

Slika 3.8: Primer sveta, ko so sektorji majhni........................................................................9

Slika 3.9: Praktično dostopne spremenljivke generatorja sveta...........................................10

Slika 3.10: Mestna hiša........................................................................................................11

Slika 3.11: Majhno polje......................................................................................................11

Slika 3.12: Veliko polje........................................................................................................11

Slika 3.14: Podoba zgradb med gradnjo...............................................................................11

Slika 3.13: Stanovanjska hiša...............................................................................................11

Slika 3.15: Zgradbe za pridelavo lesa, kamenja in zlata......................................................11

Slika 3.16: Tržnica...............................................................................................................11

Slika 3.17: Primer iskanja lokacije za gradnjo.....................................................................12

Slika 3.18: Primer računanja oddaljenosti od mestne hiše...................................................14

Slika 3.19: Prikaz preračunavanja oddaljenosti od mestne hiše v primeru dodajanja cestnih

odsekov (primerjaj s sliko 3.18)...........................................................................................14

Slika 3.20: Tržnica in njen uporabniški vmesnik.................................................................15

Slika 3.21: Nastavitve za izdelavo navigacijske mreže........................................................16

Slika 3.22: Z modro barvo je prikazana zgrajena navigacijska mreža.................................16

Slika 3.23: Primerjava velikosti mreže za zaznavanje trkov lokostrelca in viteza...............17

Slika 3.24: Izbiranje več vojakov hkrati...............................................................................18

IV

Slika 3.25: Izhodišča za postavljanje elementov uporabniškega vmesnika.........................19

Slika 3.26: Primer hierarhije sestave uporabniškega vmesnika in njegov predogled..........20

Slika 4.1: Začetni meni igre.................................................................................................21

Slika 4.2: Primer začasno zaustavljene igre.........................................................................22

Slika 4.3: Primer začetne faze igre.......................................................................................23

Slika 4.4: Lokostrelec in vitez..............................................................................................23

Slika 4.5: Bojevniki okostnjaki............................................................................................24

Slika 4.6: Lokostrelci okostnjaki..........................................................................................24

Slika 4.7: Bojevniki »zombiji«.............................................................................................24

Slika 4.8: Primer bitke v končni fazi igre.............................................................................25

Slika 4.9: Napad zadnjega in glavnega sovražnika..............................................................26

Slika 4.10: Meni, ki se pojavi, ko uspešno končamo igro....................................................26

V

1. UVOD

Industrija razvoja iger je v zadnjih dvajsetih letih doživela neverjeten razcvet ter s tem

odprla veliko možnosti za zaslužek in ustvarjanje kvalitetnih zabavnih vsebin. Obstaja

veliko žanrov iger, ki so že ustaljeni, nekatere igre pa so tako posebne, da se jih ne da

uvrstiti v točno določeni žanr. Želje uporabnikov se neprestano spreminjajo, orodja za

razvoj in znanja pa so vedno bolj prosto dostopna. Zaradi tega se pojavlja vedno več

razvijalcev, posameznikov in manjših ekip, kar še dodatno prispeva k raznolikosti iger.

V diplomskem delu smo želeli preizkusiti pridobljeno znanje in pridobiti nove izkušnje pri

samostojnem razvijanju iger. Ta panoga razvijanja je še posebej zanimiva, saj sta

kreativnost in iznajdljivost v primeru samostojnega dela posebej pomembna.

Razvoj iger je izjemno multidisciplinaren postopek, zaradi česar je lahko samostojno

razvijanje iger zelo zahtevno. Med izdelavo diplomskega dela smo morali poskrbeti za

osnovno idejo igre, 3D modele, glasbo, zvočne efekte; raziskati in primerjati različna

orodja za razvoj; ustvariti okolje igre; si zamisliti zgradbe in vrste terena; sprogramirati

logiko, ki bo skrbela za gradnjo zgradb, pridobivanje surovin, gradnjo cest, bojevanje ter

izdelati uporabniški vmesnik. Morali smo razviti tudi primerno težavnost.

Igra, ki smo si jo zamislili, je postavljena v izmišljeni srednjeveški svet, kjer je igralec

vodja kraljestva. S pametnim in hitrim postavljanjem zgradb in cest ter zaposlovanjem

ljudi v pridelovalnih zgradbah si mora igralec zagotoviti dovolj surovin, da lahko najame

vojsko, s katero brani svojo utrdbo pred napadi zlobnih sil. Želeli smo, da bi igra temeljila

na razvijanju ekonomije, ki bi bilo občasno prekinjeno z vojaškimi odločitvami. Naš cilj je

bil ustvariti zanimivo igro za večkratno igranje.

Delovni proces smo poskušali opisati sistematično. Menimo, da ima igra dobro

izoblikovani generator sveta, na katerem temelji preostanek igre, je to tema, ki smo jo

opisali v prvem poglavju o implementaciji igre. Nato smo razložili še implementacijo

ekonomije in bojevanja ter zajeli še vidik uporabnika.

1

2. UPORABLJENA ORODJA

2.1. Grafično oblikovanje

Pri izdelavi diplomske naloge smo uporabili orodja, ki so na voljo brezplačno. Z izjemo

modelov delavcev, vojakov in sovražnikov, smo vse 3D modele izdelali sami. Pri tem smo

uporabili brezplačen program Blender [1], s katerim nismo imeli veliko predhodnih

izkušenj. Ker smo za igro potrebovali zelo preproste oblike, smo se tega lahko s pomočjo

poučnih videov na spletni strani https://youtube.com zelo hitro naučili. Primer

uporabniškega vmesnika in dela v programu Blender je viden na sliki 2.1.

2.2. Glasba

Glasbe in zvočnih učinkov, nismo izdelali sami. Zvočne učinke smo pridobili s spletnih

strani, ki imajo zbirke prosto dostopnih zvokov. Seznam zvočnih učinkov, ki smo jih

uporabili pri razvoju igre, se nahaja v prilogi A. Glasbo je izdelal Adrian von Ziegler,

2

Slika 2.1: Primer dela v programu Blender

švicarski skladatelj fantazijske instrumentalne glasbe, ki dovoljuje brezplačno uporabo

svoje glasbe v nekomercialnih projektih [2].

2.3. Programiranje

Za izdelavo same igre smo uporabili brezplačno različico programa Unity [3]. Unity je

orodje za izdelavo iger, ki omogoča razvoj za skoraj vse pomembnejše platforme. Usmerili

smo se v izdelavo za platforme PC, Mac in Linux, podprte pa so med drugimi tudi iOS,

Android, Windows Phone, Blackberry, Xbox, PlayStation, Wii, da pa se narediti tudi igre,

ki se jih poganja v spletnih brskalnikih. Za pisanje kode sta v Unity na voljo programska

jezika JavaScript in C#, ki smo ga izbrali. Program Unity smo izbrali, ker smo imeli z njim

že nekaj izkušenj, tako ni bilo potrebnega veliko dodatnega raziskovanja.

Razvijanje v programu Unity poteka na tak način, da večino časa oblikujemo neko sceno.

To je navidezno okolje, ki ga napolnimo z vsemi objekti igre, kateri so v določenem

trenutku v uporabi. Scen je lahko več: scena za glavni meni; scena za igro z lahkimi

nastavitvami; scena za meni, ki se pojavi, ko igro izgubiš ipd. V vsaki sceni imamo posebej

določeno hierarhijo objektov igre. Ti objekti so lahko katerikoli od 3D modelov, ki se

prikazujejo v svetu, virov svetlobe ali zvoka, nosilcev kamere, skozi katero uporabnik vidi

svet igre, nevidnih sten in podobno. Primer scene s hierarhijo objektov in ostalih

elementov uporabniškega vmesnika Unity je viden na sliki 2.2.

Ko so ustvarjeni, imajo objekti igre v Unity izmed pomembnejših lastnosti le ime in

položaj. To osnovo lahko nadgrajujemo z dodajanjem različnih elementov, s katerimi

lahko objekt popolnoma prilagodimo našim potrebam. Med drugim jim lahko dodamo 3D

modele, nevidne mreže za zaznavanje trkov, jih določimo kot predmete na katere vpliva

gravitacija in imajo svojo maso, dodamo pa jim lahko tudi ročno napisane skripte, napisane

v programskem jeziku C# ali JavaScript. V teh skriptah objektu določamo dodatne

lastnosti ter jim preko funkcij, ki se izvajajo neprestano ali ob specifičnih pogojih, dodamo

še več funkcionalnosti.

3

Tako definirane objekte lahko shranimo kot predloge, ki so v Unity poimenovane Prefab. S

pomočjo predlog lahko naredimo poljubno mnogo kopij objektov, hkrati pa lahko te

predloge uporabljamo v skriptah, saj lahko objekte s točno določenimi lastnosti ustvarimo

tudi med delovanjem igre (npr. urimo vojake ali gradimo zgradbe). Ko pritisnemo na gumb

za urjenje vojaka, se ustvari objekt vojaka, ki ima vse lastnosti shranjene v svoji predlogi.

Te lastnosti so 3D model z animacijami, mreža za zaznavanje trkov, sposobnost iskanja

poti, skripta z logiko za bojevanje in podobno. Na sliki 2.3 vidimo primer teh lastnosti za

predlogo lokostrelcev.

4

Slika 2.2: Primer razvijalnega okolja Unity

Za brskanje med vsemi predlogami, 3D modeli, zvoki, teksturami, skriptami in ostalimi

viri za razvoj igre, je v Unity na voljo pregleden način brskanja po datotekah projekta, ki

smo jih uvozili ali ustvarili. Po privzetih nastavitvah se to nahaja na dnu ekrana in je

razdeljeno na dva dela. Na levi strani se nahaja hierarhični prikaz vseh datotek, na desni pa

imamo na voljo brskanje po oknih, kot smo ga vajeni iz uporabe operacijskih sistemov

Windows, Ubuntu ali MacOS (slika 2.4).

5

Slika 2.3:Primer nekaterih lastnosti, ki določajo predlogo lokostrelcev

Slika 2.4: Prikaz datotek projekta v programu Unity

Za lažje razumevanje elementov, ki sestavljajo program Unity, je na voljo veliko spletnih

virov za učenje [4] in pregledna dokumentacija vseh razredov, ki jih Unity ponuja. Na

spletni strani programa Unity lahko najdemo obsežen katalog funkcionalnosti s

sistematičnimi opisi delovanja, uporabe ter praktičnimi primeri [5].

6

3. IMPLEMENTACIJA IGRE

3.1. Generiranje sveta

Prva stvar, ki smo jo potrebovali, je bilo okolje, v katerem se bo vse dogajalo. Lahko bi

ročno sestavili statičen svet, vendar smo želeli, da bi bil svet vsakič drugačen, saj bi le tako

bila igra zanimiva za večkratno igranje.

Najprej smo izdelali sestavne dele sveta. Ker je svet sestavljen iz šestkotnih oblik, je bilo

za osnovne gradnike dovolj, da naredimo en model ter na njem uporabimo različne

teksture. Tako smo izdelali nekaj gradnikov: travo, skalo, skalo s snegom, zlato in vodo.

Nato smo posebej izdelali še teksture, model drevesa ter modele majhnih okrasnih

elementov (rož in lokvanjev). Te osnovne gradnike lahko vidimo na slikah od 3.1 do 3.6.

7

Slika 3.2: Osnovni gradnik skala

Slika 3.3: Osnovni gradnikskala s snegom

Slika 3.1: Osnovni gradnik trava

Slika 3.4: Osnovni gradnik voda

V nadaljevanju smo se lotili pisanja skripte, ki iz osnovnih gradnikov zgradi naključni svet.

Tega smo se lotili tako, da smo najprej določili velikost sveta ter ustvarili ravno travnato

ploskev. To ploskev smo nato razdelili na manjše sektorje, ki jim je generator sveta nato

določil naključni tip terena.

Vrste terena so ravnina, nizka planota, visoka planota, gora in jezero. Za vsako vrsto terena

smo pripravili funkcijo, ki je v sektorju izbrala poljubno točko ter okoli tiste točke ustrezno

spremenila ter dodala gradnike. Ker funkcije različnih vrst terena vedno vzamejo poljubno

točko v sektorju ter gradijo krožno okoli te točke, se lahko zgodi, da spremenijo tudi obliko

sosednjega sektorja. Zgodi se lahko tudi to, da se dva takšna kroga prekrijeta in dobimo

zelo zanimive oblike, kot so npr. nizka planota, ki se nenadoma dvigne v goro, ali goro, ki

je na eni strani odsekana in se spusti v jezero.

Če se generator odloči, da bo nekje ravnina, se tam z neko verjetnostjo ustvari rudnik zlata

ali kamnolom, gozdovi pa se lahko pojavijo na vseh vrstah terena. Za vse to je zelo

pomembna velikost sektorjev. Če so sektorji veliki, je možnost prekrivanja terenov zelo

majhna, če pa so sektorji manjši, je prekrivanja veliko več in svetovi so veliko bolj

razgibani ter zanimivi. Ta razlika je dobro vidna na slikah 3.7 in 3.8.

8

Slika 3.5: Osnovni gradnik zlato Slika 3.6: Osnovni gradnik drevo

Generator je pripravljen tako, da lahko veliko stvari zelo hitro prilagajamo kar preko

programa Unity, ne da bi morali iti nazaj v kodo ter tam spreminjati vrednosti(slika 3.9).

Na tak način lahko spreminjamo velikost sveta, velikost sektorjev, verjetnost pojavljanja za

vsako vrsto terena, gozdove, rudnike, rože in lokvanje.

9

Slika 3.8: Primer sveta, ko so sektorji majhni

Slika 3.7: Primer sveta, ko so sektorji veliki

Za shranjevanje podatkov, ki določajo svet igre, smo ustvarili nov razred ter ga

poimenovali »mapFragment«, kar ponazarja košček sveta. Svet si lahko predstavljano kot

dvorazsežno polje teh koščkov. Lastnosti, ki jih koščki določajo, so: koordinate, višina,

vrsta osnovnega gradnika; kateri kos ceste se na koščku nahaja; mesto drevesa, rože,

lokvanja ali delavca; ali je mesto primerno za gradnjo. Prvotno se celotno polje zapolni s

koščki sveta, ki imajo višino 0, osnovni gradnik travo, so zazidljivi in imajo točno

določene koordinate, ostale lastnosti pa so nedoločene. Med generiranjem sveta nato

funkcije gradnje različnih terenov tem koščkom sveta spreminjajo vrednosti višine in vrsto

osnovnega gradnika, po potrebi pa tudi druge lastnosti (npr. zazidljivost, pojavitev drevesa,

vode, rudnika).

3.2. Ekonomija

Na ekonomijo v igri vpliva več stvari. Na voljo so surovine hrana, les, kamen in zlato. Za

pridelavo hrane moramo ustvariti polje, ostale surovine pa lahko pridelujemo tako, da

postavimo ustrezne zgradbe blizu nahajališč surovin. S surovinami lahko v primeru

pomanjkanja trgujemo na tržnici, kar je včasih celo nujno potrebno za uspešno končano

igro. Za najemanje vojske potrebujemo zlato, ki ga je za pridelavo najmanj na voljo.

10

Slika 3.9: Praktično dostopne spremenljivke generatorja sveta

Na voljo je več različnih zgradb, ki so prikazane na slikah od 3.10 do 3.16. Glavna je

mestna hiša, ki se za razliko od ostalih zgradb vedno avtomatsko zgradi do konca. Za vse

ostale zgradbe pa velja, da morajo biti s cesto povezane z mestno hišo, preden se njihova

gradnja sploh prične.

Gradnja zgradb deluje tako, da je povezano delovanje skripte za gradnjo z gumbi

uporabniškega vmesnika. Vedno, ko uporabnik klikne na gumb za gradnjo kakšne zgradbe,

se v skripti za gradnjo, stanje spremeni iz privzetega v stanje poteka gradnje. Primernost

11

Slika 3.10: Mestna hiša Slika 3.11: Majhno polje Slika 3.12: Veliko polje

Slika 3.14: Podoba zgradb med gradnjoSlika 3.13: Stanovanjskahiša

Slika 3.15: Zgradbe za pridelavo lesa, kamenja in zlataSlika 3.16: Tržnica

lokacije za gradnjo se ugotavlja s sprotnim računanjem položaja pod miškinim kazalcem,

ki ugotavlja, ali je na danem mestu dovolj zazidljivih kosov zemlje z isto višino. Iskanje

prostora za gradnjo je uporabniku olajšano, saj je v igri velikost želene stavbe vizualno

prikazana na mestu, nad katerim je trenutno miškin kazalec (slika 3.17). Lokacija

gradbišča se s premikanjem miške posodablja in gradbišče na neprimernih lokacijah izgine.

Po izbiri primerne lokacije se preveri, če imamo za gradnjo sploh dovolj surovin. Če je

surovin dovolj, se na danem mestu postavi gradbišče. Z izjemo mestne hiše, ki se po nekaj

sekundah zgradi, se gradnja ostalih zgradb prične šele, ko jih povežemo s cestnim

omrežjem, ki se že predhodno stika z mestno hišo. Vsako gradbišče privzeto dobi kos

ceste, ki določa stran, s katere se mora dotikati cestnega omrežja.

Pridelava surovin se deli v dve skupini. Pri pridelavi hrane je velikost pridelovalne

površine polja vnaprej točno določena. Zgradimo lahko majhno ali veliko polje. Zgradbe

za pridelavo lesa, kamenja in zlata pa ob svojem nastanku preverijo okolico in ugotovijo

količino primernih surovin v okolici. Od tega je odvisno število delavcev v pridelovalni

zgradbi. V kamnolomu se tako lahko zgodi, da ne moremo zaposliti nič delavcev, če v

bližini ni kamenja. Na polju je število maksimalnih delovnih mest vedno enako.

Pomembno vlogo igrajo tudi ceste. Njihova najpomembnejša vloga je povezovanje zgradb.

12

Slika 3.17: Primer iskanja lokacije za gradnjo

Predstavljajo pa tudi pogoj za nastanek zgradb in vplivajo na hitrost pridelave surovin. Za

vsak košček ceste in vsako zgradbo se izračuna oddaljenost od mestne hiše. Bolj je

pridelovalna zgradba oddaljena od mestne hiše, počasnejša je pridelava surovin zaradi časa

potrebnega za transport. Za transport surovin je nujno, da ceste ostanejo povezane in se jih

ne uničuje. Če že dokončani zgradbi kasneje prekinemo cestno povezavo, ne bo obratovala

do ponovne vzpostavitve povezave.

Pri dodajanju cestnih odsekov se oddaljenost preračuna glede na oddaljenost sosednjih

odsekov. Dva sosednja cestna odseka sta nepovezana, če je višinska razlika med njima

večja od 1.

13

14

Slika 3.18: Primer računanja oddaljenosti od mestne hiše

Slika 3.19: Prikaz preračunavanja oddaljenosti od mestne hiše v primeru dodajanja cestnihodsekov (primerjaj s sliko 3.18)

Za ekonomijo so zelo pomembni predvsem delavci. V vsaki pridelovalni zgradbi imamo

določeno maksimalno število zaposlenih delavcev, hitrost pridelave surovin pa je odvisna

od trenutnega števila zaposlenih. Pri ljudeh pa je potrebno upoštevati, da potrebujejo mesto

za bivanje (stanovanjske hiše) in hrano. Na začetku je določeno maksimalno število ljudi

70. Ko to število z zaposlovanjem in urjenjem vojakov dosežemo, moramo zgraditi

dodatne hiše, da se poveča maksimalno število ljudi, ki jih ekonomija podpira. Hrano se v

igri primarno uporablja za plačilo delavcem. Več ljudi imaš, več hrane se porablja.

Kadar je določenih surovin na voljo zelo malo, se lahko igralci obrnejo na tržnico (slika

3.20). Tržnica je posebna zgradba, v kateri lahko katerokoli surovino zamenjamo za zlato,

z zlatom pa potem kupimo katerokoli drugo surovino. Menjalna razmerja so različna za

različne surovine. Razlike pa se pojavljajo tudi pri prodajnih in nakupnih vrednostih.

3.3. Bojevanje

V igri se bojevanje dogaja na drugačni, novi lokaciji. Orodje Unity NavMesh olajša

implementacijo premikanja ljudi v igri, saj znajo najti najkrajšo pot do neke točke in se pri

tem izogniti oviram na poti. Ker je možno Unity NavMesh uporabiti samo na statičnih,

vnaprej pripravljenih okoljih, smo morali bojevanje postaviti na neko statično lokacijo.

15

Slika 3.20: Tržnica in njen uporabniški vmesnik

Da lahko program Unity zgradi navigacijsko mrežo, moramo vsem objektom določiti:

statičnost, omogočiti hojo skozi njih ali skoke nanje. Igralnim figuram moramo določiti

polmer, višino, največji kot vzpona ter največjo višino stopnice, po kateri se zmore

vzpenjati. Te nastavitve lahko vidimo na sliki 3.21. Polmer je pomemben, ko drevesa

rastejo blizu skupaj. Če je polmer uporabnika navigacijske mreže prevelik, bo moral najti

pot okoli dreves, če pa je dovolj majhen, bo lahko šel med drevesi. Primer zgrajene

navigacijske mreže je prikazan na sliki 3.22.

16

Slika 3.21: Nastavitve za izdelavo navigacijske mreže

Slika 3.22: Z modro barvo je prikazana zgrajena navigacijska mreža

Kljub temu, da za svet bojevanja nismo uporabili svojega generatorja sveta, pa smo za

ročno gradnjo lahko uporabili svoje osnovne gradnike (travo in drevesa). Da smo stvar

nekoliko popestrili, smo spremenili barve trave in dreves – nastal je rdeči svet.

Z zlatom, ki ga pridelamo z ekonomijo, lahko na lokaciji bojevanja kupujemo vojake, s

katerimi je treba 15 minut braniti svojo utrdbo. Vojaki in sovražniki delujejo na enak

način. Njihovo osnovno stanje je, da stojijo na mestu ter čakajo na ukaz za premik.

Sovražniki dobijo ukaz za premik takoj ko so ustvarjeni, igra pa izbira med tremi

različnimi potmi do igralčeve utrdbe.

Ko vojaki dobijo ukaz za premik, z uporabo navigacijske mreže izračunajo najbližjo pot do

cilja, ter se začnejo premikati proti njemu. V majhnem krogu okoli sebe neprestano

preverjajo prisotnost sovražnika. Ko zaznajo prvega sovražnika, si shranijo prvotni cilj ter

se začnejo premikati proti lokaciji zaznanega sovražnika. Ko sta nasprotnika dovolj blizu,

si z upoštevanjem hitrosti napada ter moči obeh bojevnikov izmenjujeta udarce, dokler

eden ne umre. Preživeli preveri, če je v bližini še kakšen sovražnik. Če sovražnika ni,

nadaljuje pot proti svojemu prvotnemu cilju.

Bojevniki imajo okrog sebe nevidno mrežo za zaznavanje trkov, ki sproži dogodek ob stiku

s podobno mrežo nekega drugega vira. Velikosti mrež se močno razlikujejo glede na to

vrsto, ali gre vojaka lokostrelca ali za viteza (slika 3.23). Lokostrelec potrebuje mrežo z

večjim polmerom, saj mora prej zaznati sovražnike in jih začeti napadati.

17

Slika 3.23: Primerjava velikosti mreže za zaznavanje trkov lokostrelca in viteza

Svojim vojakom lahko dajemo ukaze za posamično premikanje, lahko pa jih označimo tudi

več naenkrat ter jim izdamo skupni ukaz za premik (slika 3.24).

Vojaki in sovražniki imajo lastnosti, ki vplivajo na bojevanje: količina življenja, moč

oklepa, verjetnost umikanja napadu, hitrost napada, moč napada in hitrost premikanja.

Bojevniki se razlikujejo tudi glede na razdaljo bojevanja (npr. vitezi ali lokostrelci).

Za razliko od 3D modelov gradnikov terena in zgradb so oblike ljudi in pošasti veliko bolj

kompleksne, hkrati pa morajo imeti tudi animacije za premikanje, bojevanje, sekanje

dreves in podobno. Ker je bilo naše znanje 3D modeliranja in izdelave animacij omejeno,

bi morali v te modele in animacije vložiti veliko časa, rezultat pa verjetno ne bi bil zelo

kakovosten. Iz tega razloga smo v spletni trgovini Unity Asset Store [6], kjer je na voljo

veliko različnih virov za razvijanje iger (npr. 3D modeli, teksture, animacije, zvočni

učinki) kupili paket modelov, ki je med drugim vključeval modele ljudi z animacijami, ki

sem jih uporabil za delavce, vojake in sovražnike [7].

3.4. Uporabniški vmesnik

Za izdelavo uporabniškega vmesnika je v programu Unity kar dobro poskrbljeno in

18

Slika 3.24: Izbiranje več vojakov hkrati

postopek ni pretirano zapleten. Kot osnovo se naredi platno, na katerega se dodaja različne

elemente uporabniškega vmesnika (npr. tekst, slike, gumbi, vnosna polja, spustni meni).

Tem elementom položaj nastavljamo tako, da jim najprej določimo izhodišče, potem pa

lahko ročno prilagajamo odmik od tega izhodišča. Izhodišča, ki so na voljo, so vidna na

sliki 3.25. Tekstovnim elementom lahko natančno določamo velikost in obliko pisave,

dostop do tekstovnih vrednosti pa je omogočen tudi preko skript.

Elementi uporabniškega vmesnika imajo lastnost vidnosti. Le-to smo uporabili tako, da

smo razdelili svoj uporabniški vmesnik na statični del (vsebuje npr. prikaz količine

surovin) in na dinamični del, ki se spreminja glede na uporabnikova dejanja. To je najbolj

očitno v spodnjem desnem kotu ekrana, kjer se uporabniški vmesnik spreminja glede na

uporabnikove klike. Prvotno stanje je, da so prikazane zgradbe, ki so na voljo za gradnjo.

Če kliknemo na kakšno pridelovalno zgradbo, se ta del vmesnika spremeni v meni

označene zgradbe in imamo na voljo zaposlovanje ali odpuščanje delavcev za tisto

zgradbo.

Če kliknemo na gumb v zgornjem desnem kotu, ki nas popelje na bojno polje, se meni za

zgradbe in zaposlovanje spet spremeni ter prikazuje možnosti za urjenje vojske. Lastnost

vidnosti smo uporabili tudi za meni, ki se pojavi čez celoten zaslon, ko s tipko ESC

začasno ustavimo igro. Na sliki 3.26 je vse to dobro vidno, saj je na dinamičnih delih

uporabniškega vmesnika vidno prekrivanje več elementov. Na levi strani te slike pa lahko

vidimo hierarhično ureditev elementov uporabniškega vmesnika.

19

Slika 3.25: Izhodišča za postavljanje elementov uporabniškega vmesnika

3.5. Glasba in zvočni učinki

Večina uspešnih iger ima v ozadju glasbo, ki poskrbi za to, da uporabniki globlje doživijo

vsebino igre. Ne smejo pa manjkati tudi zvočni učinki. Ker z ustvarjanjem glasbe nismo

imeli popolnoma nobenih izkušenj, smo pomanjkanje znanja in talenta glasbenega

ustvarjanja premostili tako, da smo poiskali prosto dostopne alternative.

Za glasbo, ki se v igri predvaja v ozadju smo uporabili glasbo švicarskega skladatelja

fantazijske instrumentalne glasbe Adriana von Zieglerja, ki dovoljuje brezplačno uporabo

svoje glasbe v nekomercialnih projektih. Zvočne učinke, ki so uporabljeni grajenje zgradb,

cest, umiraje vojakov in udarce z mečem, smo našli na spletni strani freesound.org.

Prenešene zvočne datoteke smo najprej z uporabo programa “QuickTime Player” obrezali,

tako so ostali le zaželeni odseki, nato pa smo jih z uporabo programa iTunes pretvorili v

zvočni zapis .wav.

Uporaba zvoka v Unity poteka tako, da na objekt igre dodamo vir zvoka, ki mu nato ročno

ali preko skripte določimo pripadajočo zvočno datoteko. Če vir zvoka manipuliramo preko

skripte, imamo možnost natančneje določati lastnost predvajanja in mu lahko na primer

določimo poljubne prehode menjavanje med različnimi pesmimi, kar smo naredili za

glasbo v ozadju igre. Lahko pa zvočni vir v osnovi pustimo prazen ter v skripti določimo,

da le ob posebnih dogodkih predvaja kratek zvok (npr. ko zgradimo kakšno zgradbo ali ko

kakšen vojak umre).

20

Slika 3.26: Primer hierarhije sestave uporabniškega vmesnika in njegov predogled

4. DELOVANJE IGRE

Ko igro zaženemo se prikaže glavni meni, ki uporabniku ponuja tri načine igranja. Kot je

vidno na sliki 4.1, so na izbiro lahek način, oteženi način ter način gradnje, kjer ni

sovražnikov in časovne omejitve. Razlika med lahkim in težkim načinom je v številu

napadov sovražnikov ter v ceni in moči tvojih vojakov. V lahkem načinu ima igralec na

voljo tudi več začetnih surovin.

Med igro lahko igralec potek igre začasno ustavi s pritiskom tipke ESC. Ko se to zgodi, se

vse dogajanje ustavi, igralec pa dobi na voljo meni z izbiro da zapusti trenutno igro in se

vrne v glavni meni igre, da popolnoma zapre igro ali pa nadaljuje z igranjem. To

zaustavljeno stanje igre je prikazano na sliki 4.2.

21

Slika 4.1: Začetni meni igre

4.1. Ekonomija

Igro vedno začnemo z razvijanjem ekonomije. Ker je mestna hiša edina zgradba, ki se

gradi samostojno, jo moramo postaviti najprej. Nato poskrbimo za pridelavo surovin, zato

zgradimo zgradbo za pridelavo lesa, kamenja in polje. Za normalno gospodarstvo so te tri

surovine nujno potrebne, saj kamen in les potrebujemo za gradnjo novih zgradb, hrano pa

za urjenje delavcev. Igralci imajo poleg gradnje zgradb in cest ter urjenja delavcev tudi

možnost uničevanja stvari. Uničijo lahko zgradbe, dele cest ali drevesa, ki jih trenutno ne

potrebujejo.

Ko je gospodarska osnova urejena, je igralčevo kraljestvo podobno podobi na sliki 4.3.

Nadaljevanje igre zaznamuje razvoj ekonomije, da lahko s prodajo drugih surovin na

tržnici in z neposredno pridelavo pridelamo dovolj zlata, hkrati pa smo pozorni na napade

sovražnikov in urimo vojake.

22

Slika 4.2: Primer začasno zaustavljene igre

4.2. Bojevanje

Za boj imamo na voljo dve vrsti vojakov. To so lokostrelci in vitezi, ki jih vidimo na sliki

4.4. Najamemo jih lahko z zlatom, ki ga pridelamo s svojo ekonomijo. Cene bojevnikov pa

se razlikujejo glede na način igre. Vedno pa velja, da so vitezi dražji od lokostrelcev. Ko

najamemo vojaka, ga lahko nadzorujemo z levim miškinim gumbom, ukaz za premik pa

mu posredujemo s klikom desnega gumba na miški. Če hočemo, da napade sovražnika, ne

kliknemo na sovražnika, ampak izdamo ukaz za premik v bližino sovražnika. Ko bo vojak

sovražniku dovolj blizu, ga bo sam zaznal in napadel.

23

Slika 4.3: Primer začetne faze igre

Slika 4.4: Lokostrelec in vitez

Sovražniki v igri so »zombiji« in okostnjaki, ki pa se ravno tako delijo na lokostrelce in

borce na kratke razdalje. Napadajo v valovih intervalu dveh minutah. V lahkem načinu

igranja so v vsakem intervalu štirje napadalci, v težjem načinu pa jih je šest. Težavnost se

stopnjuje, saj so sovražniki z vsakim valom močnejši. Povečuje se jim količina življenja,

oklepa, hitrost in moč napada. Spreminjajo pa se tudi vizualno, saj imajo vedno boljšo

opremo (To prikazujejo slike od 4.5 do 4.7.). Po pretečenih 15 minutah, se prične zadnja

stopnja igre. Napade te velikanski »zombi«, ki je veliko močnejši od prejšnjih napadalcev.

Po zmagi nad njim, je igra končana.

24

Slika 4.6: Lokostrelci okostnjaki

Slika 4.5: Bojevniki okostnjaki

Slika 4.7: Bojevniki »zombiji«

Igro izgubimo, če nam sovražniki uničijo utrdbo. Utrdba ima nad seboj napis o višini

škode, ki jo še lahko utrpi pred uničenjem. Ko se sovražniki nahajajo v bližini utrdbe, ki je

v igri vidna kot krog, jo počasi uničujejo. Hitrost uničevanja je odvisna od njihove moči

napada, vseeno pa lahko utrdba dolgo zdrži, tako imamo možnost taktičnega umika za

zbiranje večje vojske. S tem sicer delno žrtvujemo svojo utrdbo, ampak povečamo možnost

za uničenje napadalcev. Če proti koncu igre igralec še nima velike vojske, bo igro zelo

težko uspešno končal, saj so za razliko od naših vojakov sovražniki vedno močnejši in

potrebujemo za končno zmago številčno premoč. Takšna situacija je prikazana na sliki 4.8.

25

Slika 4.8: Primer bitke v končni fazi igre

26

Slika 4.9: Napad zadnjega in glavnega sovražnika

Slika 4.10: Meni, ki se pojavi, ko uspešno končamo igro

5. SKLEP

Strateško igro nam je uspelo končati na želeni način. Težavnost je dobro zastavljena –

lahek način je možno igrati sproščeno, težji način pa je za povprečnega igralca kar velik

izziv. To smo testirali z večkratnim preigravanjem, preizkusili pa so jo tudi nekateri

znanci, ki so imeli sprva velike težave z uspešnim končanjem igre v težkem načinu.

Z uporabo razvojnega orodja Unity smo bili zelo zadovoljni. Delo v njem je intuitivno,

zabavno, za veliko pomembnih stvari pa program nudi poenostavljene ali pa čisto

avtomatizirane rešitve. Primer tega je prilagodljivost na velikost ekranov. Ko igro

izvozimo, ter jo na ciljnem računalniku poženemo, imamo na razpolago več primernih

nastavitev ločljivosti. Samodejno je poskrbljeno tudi za izbiro nastavitev grafične kvalitete.

Pri tem se upošteva kvaliteta senc, razdalja prikazovanja objektov ipd.

Med razvijanjem smo se naučili ogromno novih stvari. Če bi se projekta lotili še enkrat, bi

nekatere stvari reševali na drugačen način, saj imamo zdaj več izkušenj in se bolje

zavedamo tehničnih pasti ter pomena premišljenega predhodnega načrtovanja. Slab primer

je izvajanje preveč stvari v funkcijah posodabljanja oz. funkcijah objektov v igri, ki se

izvajajo neprestano. Iz tega razloga se je delovanje igre močno upočasnilo, ko je bilo na

bojišču veliko vojakov. To se sicer še vedno lahko zgodi na strojno šibkejših računalnikih,

vendar pa je trenutno stanje po popravkih veliko boljše. Samostojno razvijanje celotne igre

smo si pred začetkom dela predstavljali kot velik osebni izziv. To delo nam je bilo v

užitek, saj je zahtevalo res veliko iznajdljivosti in ustvarjalnosti. To je nekaj s čimer se v

prihodnosti vsekakor želimo še ukvarjati.

Možne nadgradnje za igro bi bile: omogočanje bojevanja na terenu za razvoj ekonomije;

vpeljava dodatnih vrst vojaških enot (konjenice in katapultov); lahko pa bi se uvedlo tudi

igranje med igralci preko interneta.

27

6. SEZNAM UPORABLJENIH VIROV

[1] Blender. Dostopno na: https://www.blender.org/download/ [7. 9. 2015]

[2] 2 Hours of Fantasy Music by Adrian von Ziegler. Dostopno na:

https://www.youtube.com/watch?v=4bhceZgdWFM [18. 11. 2015]

[3] Unity Technologies. Dostopno na: https://unity3d.com/get-unity [10. 9. 2015]

[4] Learn with Unity, Unity Technologies. Dostopno na: https://unity3d.com/learn [10.

9. 2015]

[5] Unity Manual, Unity Technologies. Dostopno na:

http://docs.unity3d.com/Manual/index.html [10. 9. 2015]

[6] Unity Asset Store. Dostopno na: https://www.assetstore.unity3d.com/en/ [15. 9.

2015]

[7] Full Fantasy Game Set, Unity Asset Store. Dostopno na:

https://www.assetstore.unity3d.com/en/#!/content/13594 [15. 9. 2015]

28

7. Priloga A

Pri razvoju igre smo uporabili naslednje prosto dostopne zvočne vire, katerih uporaba v

nekomercialne namene je brezplačna.

[1] Woman walking fast on pavement zvočni učinek. Dostopno na:

https://www.freesound.org/people/bulbastre/sounds/103974/ [17. 11. 2015]

[2] Silencyo_COUNTRY_DAY_Sickle_Wheat zvočni učinek. Dostopno na:

https://www.freesound.org/people/silencyo/sounds/81721/ [17. 11. 2015]

[3] Chopping logs in a shed zvočni učinek. Dostopno na:

https://www.freesound.org/people/Islabonita/sounds/220951/ [17. 11. 2015]

[4] Stone falls and break low pitch zvočni učinek. Dostopno na:

https://www.freesound.org/people/SoundCollectah/sounds/109360/ [17. 11. 2015]

[5] Sao Paolo Market zvočni učinek. Dostopno na:

https://www.freesound.org/people/johnnytal/sounds/168440/ [17. 11. 2015]

[6] Many_coins zvočni učinek. Dostopno na: https://www.freesound.org/people/Taira

%20Komori/sounds/213698/ [17. 11. 2015]

[7] Distant horns zvočni učinek. Dostopno na:

https://www.freesound.org/people/DANMITCH3LL/sounds/218488/ [17. 11. 2015]

[8] MedievalCombatLoop zvočni učinek. Dostopno na:

https://www.freesound.org/people/Yap_Audio_Production/sounds/218522/ [17. 11.

2015]

[9] Arrow zvočni učinek. Dostopno na:

https://www.freesound.org/people/EverHeat/sounds/205563/ [17. 11. 2015]

[10] Slashkut zvočni učinek. Dostopno na:

https://www.freesound.org/people/Abyssmal/sounds/35213/ [17. 11. 2015]

[11] Tearing_paper_14 zvočni učinek. Dostopno na:

https://www.freesound.org/people/Dymewiz/sounds/111118/ [17. 11. 2015]

29

[12] Death 5 zvočni učinek. Dostopno na:

https://www.freesound.org/people/manuts/sounds/319998/ [17. 11. 2015]

[13] Fanfare 1 zvočni učinek. Dostopno na:

https://www.freesound.org/people/primordiality/sounds/78822/ [17. 11. 2015]

[14] Slow sad tones zvočni učinek. Dostopno na: https://www.freesound.org/people/TJ

%20Mothy/sounds/92734/ [17. 11. 2015]

30