Mängumootor
Mängumootor on tarkvararaamistik arvutimängude loomiseks. Harilik mängumootor pakub võimalusi kasutaja sisendi saamiseks, failide laadimiseks, graafika renderdamiseks, helide esitamiseks, füüsika simuleerimiseks, animatsioonideks, võrgunduseks, lihtsa graafilise kasutajaliidese loomiseks ja skriptimiseks. [1] [2]
Eesmärk
muudaMängumootori eesmärk on pakkuda mänguarendajale tarkvara arendamise tööriistu, tehes sellega mängu loomise protsess lihtsamaks. Samuti muudab see kogu mänguarenduse kiiremaks ja ökonoomsemaks: kasutatakse juba varem valmis digitaalvara, et teha midagi uut. [3]
Mängumootori mõiste tekkimine
muudaMängumootori mõiste tekkis 1990ndate keskel, viidates populaarsele arvutimängule "Doom". Mängu "Doom" struktuur loodi hästi määratletud kihtidest: põhitarkvarakiht (kolmemõõtmeline graafika renderdamise süsteem, kokkupõrgete avastamise süsteem, helisüsteem), kunstivarad, mängumaailmad ja mängureeglid. Selline struktuur sai mänguarendajatele väga oluliseks, sest sai luua uusi kunstivarasid, mängumaailmaid ja mängureegleid ilma, et oleks pidanud looma uut põhitarkvara. See andis võimaluse väikestele iseseisvatele arendajatele luua mänge, muutes juba valmisolevaid mänge originaalmängu loojate tööriistu kasutades. 1990ndate lõpus disainiti mängud "Quake III Arena" ja "Unreal" just sellisel taaskasutuse põhimõttel. Nende mootorid olid väga hästi kohandatavad tänu skriptimiskeeltele nagu Quake C. Sellega tekkis ka originaalloojatele uus tuluallikas, litsentseerides oma loodud tarkvara teistele. [4]
Mängumootor ja mäng
muudaMängumootorit ja mängu on vahel raske üksteisest eristada. Neil saab vahet teha andmepõhise arhitektuuri olemasolu järgi: loeme tarkvara mängumootoriks, kui see on laiendatav ja kasutatav mängude loomiseks ilma suurte muudatusteta. Sellegipoolest ei saa ka selle eristusviisiga väga täpselt otsustada, kas tegu on mängu või mängumootoriga, sest igal mängul ja mängumootoril on oma kindel taaskasutamise ulatus. [4]
Mängumootor ja mängužanr
muudaErinevad mängužanrid nõuavad erinevaid komponente, mis muudab mängumootorid pisut žanripõhiseks. Siiski saab mõne mängumootoriga teha vägagi erinevatest žanritest arvutimänge. [4]
Mängumootori komponendid
muudaMängumootor koosneb tavaliselt tööriistade komplektist ja käituskeskkonnast. Mängumootori arhitektuur koosneb kihtidest. [4]
Käituskeskkond
muudaSihtriistvara kiht
muudaKõige madalamal kihil asub sihtriistvara, mis esitab riistvara, millel mäng töötab. Mõned näited on Microsoft Windowsi ja Linuxi baasil töötavad personaalarvutid, Apple'i iPhone ja Macintosh, Microsoft Xboxi tootepere, Sony Playstationi tootepere ja Nintendo mängukonsoolide pere. [4]
Seadmete driaverite kiht
muudaJärgmisel kihil on seadmete draiverid, mille ülesanne on hallata riistvara ressursse ning kaitsta operatsioonisüsteemi ja mängumootori ülemisi kihte, et need saaksid andmeid ainult vajalikelt riistvara seadmetelt õigesti. [4]
Operatsioonisüsteemi kiht
muudaKolmandal kihil on operatsioonisüsteem, mis korraldab kõikide protsesside täitmist. Kuna mäng ise on protsess süsteemis, siis see peab arvestama operatsioonisüsteemide eripäradega (kuidas jagatakse jooksvatele protsessidele tööaega). [4]
Kolmandate poolte arendustarkvara ja muu vahetarkvara kiht
muudaJärgmine kiht on kolmandate poolte arendustarkvara ja muu vahetarkvara, kuna paljud mängumootorid kasutavad mängu tegemiseks juba valmistatud tehnoloogiaid. Graafika renderdamine, põrked ja füüsika, animatsioonid, tehisintellekt on näited kolmandate poolte arendustarkvaradest, mis on kasutusel mängumootorite juures. [4]
Platvormist sõltumatu kiht
muudaPaljud mängud peavad töötama erinevatel platvormidel: see annab turul rohkem võimalusi. Seepärast on enamikul mängumootoritel platvormist sõltumatu kiht, mis hoolitseb selle eest, et mäng töötaks sarnaselt eri platvormidel. [4]
Põhisüsteemi kiht
muudaPõhisüsteemi kiht kujutab endast kasulikke tarkvarakomponente: matemaatika teek, mäluhaldus, juhuarvude tekitaja jne. [4]
Ressursihalduri kiht
muudaRessursihalduri kiht on vajalik, sest tagab ühtse liidese juurdepääsuks kõikidele mänguvaradele ja mootori muudele sisendandemetele. Erinevad mängumootorid realiseerivad ressursihalduse erinevalt: mõnel on selle jaoks kindel keskne süsteem (varad pakitud ühtsesse arhiivi, klassi), teised aga lubavad programmeerijal kasutada tooreid faile ilma lisasüsteemita. [4]
Renderdamise mootori kiht
muudaRenderdamise mootor on mängumootori juures mängu visualiseerimiseks suurim ja keerulisim süsteem. Seda saab ehitada üles eri viisidel – ühtset viisi ei ole, kuid paljud modernsed renderdamise mootorid jagavad sarnaseid disaini põhimõtteid. [4]
Profileerimis- ja silumistööriistade kiht
muudaMänguarendajatel peab olema võimalus profileerida ja siluda oma mängu, sest mängu jõudlus ja töökindlus on väga tähtsad. [4]
Põrgete ja füüsikasimulatsiooni kiht
muudaIlma põrgeteta oleks mängumaailma võimatu mõjutada ning kaoks mängu mõte. Mõned mängud pakuvad ka reaalset või osaliselt reaalset füüsikasimulatsiooni, et mängu paremaks muuta. Väga vähesed mänguarendajad loovad enda põrgete ja füüsikasimulatsiooni süsteemi. [4]
Animatsioonide kiht
muudaMängu tegelaste või muude objektide animeerimiseks on mängumootoril samuti vaja vastavat süsteemi, mida paljud mängumootorid pakuvad. [4]
Inimliidese seadmete kiht
muudaMängu mängimiseks on vaja saada kasutajapoolne sisend. Mõnikord võib mäng anda ka inimliideste seadmetele väljundi, mis on näiteks mängukontrolleri puhul vibreerimine. [4]
Helikiht
muudaHelid on mängule sama tähtis nagu graafika, kuid tihtilugu ei pöörata sellele nii palju tähelepanu kui graafikale. Sellegipoolest on see mängumootori seisukohalt hädavajalik komponent. [4]
Võrgundus
muudaVõrgunduse kiht on väga tähtis mitmikmängudele, mis tähendab, et samas mängumaailmas saavad mängida mängijad mitmekesi. [4]
Mängu mängimise alussüsteemide kiht
muudaMängu mängimine tähendab neid tegevusi, reegleid ja mehaanikaid mängumaailmas, mis on tavaliselt implementeeritud kas programmeerimiskeeles, milles on kirjutatud mängumootor, mõnes muus kõrgtaseme keeles või mõlemas. [4]
Mänguspetsiifiliste alamsüsteemide kiht
muudaKõige kõrgem kiht mängumootori juures on mänguspetsiifiliste alamsüsteemide kiht, sest see hõlmab mängu loogikat ja funktsioone. [4]
Tööriistad ja digitaalvarade konveier
muudaMängumootor peab suutma ja oskama kasutada väga palju andmeid mänguvara, konfiguratsioonifailide, helifailide, skriptide jms kujul. Samuti on vajalik, et mängumootor võimaldaks mänguarendajal ehitada mängumaailma ja seda ka meeles pidada. [4]
Viited
muuda- ↑ Michael Enger (20.06.2013). "Game Engines: How do they work?". Vaadatud 03.11.2018.
- ↑ "Game engines — how do they work?". Originaali arhiivikoopia seisuga 20.07.2019. Vaadatud 03.11.2018.
- ↑ Cory Hampshire (15.09.2014). "Purpose of Game Engines". Vaadatud 03.11.2018.
- ↑ 4,00 4,01 4,02 4,03 4,04 4,05 4,06 4,07 4,08 4,09 4,10 4,11 4,12 4,13 4,14 4,15 4,16 4,17 4,18 4,19 4,20 Jason Gregory (2009). Game Engine Architecture. 6000 Broken Sound Parkway NW, Suite 300: A K Peters/CRC Press. Lk 11 – 54.
{{raamatuviide}}
: CS1 hooldus: koht sisaldab numbrit (link)