Development of a Game Engine and Editor for Creation of 2D Games
Total Page:16
File Type:pdf, Size:1020Kb
Fakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija Bojan Kerec IZDELAVA IGRALNEGA POGONA IN UREJEVALNIKA ZA IZDELAVO 2D IGER Magistrsko delo Maribor, november 2014 i IZDELAVA IGRALNEGA POGONA IN UREJEVALNIKA ZA IZDELAVO 2D IGER Magistrsko delo Študent: Bojan Kerec Študijski program: Računalništvo in informacijske tehnologije (MAG) Mentor: red. prof. dr. Borut Žalik Somentor: doc. dr. Gregor Klajnšek ii iii Zahvala Zahvaljujem se mentorju red. prof. dr. Borutu Žaliku in somentorju doc. dr. Gregorju Klajnšku za pomoč in vodenje pri izdelavi magistrskega dela. Zahvaljujem se tudi družini za podporo in strpnost. Zahvala gre tudi pristojnim organizacijam, da me niso vpisale v register nepremičnin, zaradi neštetih ur, preživetih za računalnikom. iv Izdelava igralnega pogona in urejevalnika za izdelavo 2D iger Ključne besede: igralni pogon, urejevalnik, računalniška igra UDK: 004.354.7:004.9(043.2) Povzetek: V tem magistrskem delu predstavimo postopek izdelave igralnega pogona. Nalogo začnemo z opsiom razvoja igralnih pogonov skozi čas in pregledom obstoječih rešitev. Nato podamo prednosti in slabosti izdelave lastnega igralnega pogona in ovrednotimo smotrnost izbire že obstoječega igralnega pogona. Nadaljujemo s predstavitvijo igralnega pogona, ki smo ga razvili. Predstavimo arhitekture in organizacije sistemov igralnega pogona, podamo kratek pregled implementacije najpomembnejših sistemov in opišemo izdelavo urejevalnika nivojev. Zmogljivost razvitega igralnega pogona prikažemo z izdelavo preproste 2D igre. v Development of a game engine and editor for creation of 2D games Keywords: game engine, editor, computer game UDK: 004.354.7:004.9(043.2) Abstract: In this work we present the process of development of a game engine. Thesis begins with description of evolution of game engines and with an overview of the existing solutions. After that an analysis of advantages and disadvantages of development of a proprietary game engine is given together with evaluation of expedience of using an existing game engine. Thesis continues with description of development of our proprietary game engine. The architecture of the engine and organization of core system is presented at first, followed by specific implementation details and description of development of the level editor. The power and capacity of the developed game engine is presented through development of a simple 2D game. vi Kazalo vsebine 1 Uvod ........................................................................................................................... 1 2 Obstoječe rešitve ........................................................................................................ 4 3 Izbira ali izdelava igralnega pogona ............................................................................. 7 4 Arhitektura ................................................................................................................ 9 4.1 Aplikacijski nivo ....................................................................................................... 10 4.2 Igralna logika ........................................................................................................... 11 4.3 Igralni pogledi ......................................................................................................... 12 5 Organizacija akterjev ................................................................................................. 14 6 Implementacija ......................................................................................................... 17 6.1 Razred GameApp ..................................................................................................... 18 6.2 Upravljanje z oknom ...............................................................................................20 6.3 Viri ..........................................................................................................................20 6.4 Vhodne naprave ...................................................................................................... 21 6.5 Sistem za upodabljanje ............................................................................................ 23 6.6 Dogodki ..................................................................................................................24 6.7 Mrežna komunikacija ............................................................................................. 26 6.8 Igralna logika .......................................................................................................... 27 6.9 Glavna zanka ...........................................................................................................28 6.10 Akterji................................................................................................................... 29 6.11 Scena ...................................................................................................................... 31 6.12 Igralni pogledi ........................................................................................................ 32 6.13 Avdio sistem ........................................................................................................... 32 6.14 Grafični uporabniški vmesnik ................................................................................. 33 vii 6.15 Podpora uporabi skriptnega jezika .......................................................................... 34 7 Urejevalnik ................................................................................................................ 37 8 Uporaba v praksi ....................................................................................................... 43 9 Sklep ........................................................................................................................ 48 10 Literatura ............................................................................................................. 49 Izdelava igralnega pogona in urejevalnika za izdelavo 2D igrer 1 1 Uvod Izraz igralni pogon (angl. game engine) izvira iz sredine devetdesetih let z referenco na prvoosebne strelske igre, kot je bil takrat izjemno popularen Doom, izdelek podjetja id Software. Doom je bil zasnovan z zelo dobro ločitvijo temeljnih komponent (sistem za upodabljanje, sistem za zaznavanje trkov) in komponent igre (viri, svetovi in pravila igre). Vrednost ločitve se je pokazala, ko so razvijalci začeli obstoječe produkte preurejati in iz tega izdelovati nove produkte tako, da so ti dobili novo grafično podobo, nove svetove, orožja, vozila, zgolj z minimalnimi spremembami temeljnih komponent. Proti koncu devetdesetih let so bile nekatere igre (Quake 3 Arena, Unreal) že zasnovane s ponovno uporabo in z mislijo na bodoče spremembe in nadgradnje v mislih. Temelji teh iger, imenovani igralni pogoni, so bili narejeni tako, da so omogočali izdelavo in prilagajanje vsebine igre s posebno namenskimi urejevalniki in skriptnimi jeziki. Takrat je postalo licenciranje igralnih pogonov dobra alternativa za zaslužek. Meja med igro in njenim pogonom je pogosto zamegljena. Nekateri pogoni jasno nakažejo ločnico, pri drugih pa te ločnice ne moremo določiti. Primer tega je, da v enem pogonu lahko prikažemo le točno določeno pošast, v drugem pa imamo na voljo orodja za risanje, postopek upodabljanja določene pošasti pa je definiran ločeno. Razliko med igralnim pogonom in igro v grobem določi podatkovno- usmerjena arhitektura. Kadar igra vsebuje zakodirano logiko ali pa vsebuje specifične elemente, izvorno kodo take igre zelo težko uporabimo za razvoj drugačne igre ali pa je ponovna uporaba povsem nemogoča. Iz tega spoznamo, da je igralni pogon programski produkt, ki je razširljiv in ga je moč uporabiti brez velikih sprememb kot temelj za mnogo različnih iger [1]. Igralni pogoni so običajno specifični za določen žanr. Igralni pogon za izdelavo športnih iger (Fifa) je povsem drugačen kot igralni pogon za izdelavo prvoosebnih Izdelava igralnega pogona in urejevalnika za izdelavo 2D igrer 2 strelskih iger (Quake). Vendar pa imajo tudi veliko skupnega. Vsak igralni pogon mora tako znati izrisovati geometrijo, predvajati zvok, obdelovati in analizirati vhodne podatke iz različnih naprav (tipkovnica, miška, igralni plošček) in opravljati še veliko drugih funkcij. V nadaljevanju bomo izpostavili ključne lastnosti igralnih pogonov, ki so pomembne za specifičen žanr. Prvoosebne strelske igre (angl. first person shooter - FPS) vsebujejo dokaj počasno pešačenje po notranjih ali zunanjih prostorih, vožnjo z vozili (po zemlji, zraku in vodi) in običajno veliko izbiro orožja ter balistiko. Tipični predstavniki te skupine so igre Quake, Unreal Tournament, Half Life in druge podobne igre. Običajno so tehnološko najbolj razvite in se osredotočajo na učinkovito upodabljanje 3D svetov, odzivno premikanje po svetu, kakovostne animacije in dobro umetno inteligenco. Ploščadne igre (angl. platformer) so tretjeosebne ali 2D stransko pomične (angl. side scroller) igre, pri katerih je glavna mehanika skakanje iz ploščadi na ploščad. Tipični predstavniki so Donkey Kong, Super Mario Bros ter Rachet & Clank. Ta žanr se osredotoča na premične platforme, vrvi, lestve, uganke z uporabo okolijskih elementov ter napredni nadzor nad kamero. Pretepaške igre so običajno dvoigralske igre, pri katerih se humanoidni liki mikastijo med sabo v ringu ali areni. Predstavniki so Soul Calibur, Tekken in Mortal Kombat. Igre pretepaškega žanra se osredotočajo na veliko število pretepaških animacij,