V´Yvoj Hernıho Editoru Na Platformˇe Flash
Total Page:16
File Type:pdf, Size:1020Kb
MASARYKOVA UNIVERZITA F}w¡¢£¤¥¦§¨ AKULTA INFORMATIKY !"#$%&'()+,-./012345<yA| Vyvoj´ hern´ıhoeditoru na platformˇeFlash DIPLOMOVA´ PRACE´ Bc. Martin Jakubec Brno, jaro 2014 Prohl´aˇsen´ı Prohlasuji,ˇ zeˇ tato diplomova´ prace´ je mym´ puvodn˚ ´ım autorskym´ d´ılem, ktere´ jsem vypracoval samostatne.ˇ Vsechnyˇ zdroje, prameny a literaturu, ktere´ jsem priˇ vypracovan´ ´ı pouzˇ´ıval nebo z nich cerpal,ˇ v praci´ rˇadn´ eˇ cituji s uveden´ım upln´ eho´ odkazu na prˇ´ıslusnˇ y´ zdroj. Vedouc´ıpr´ace: RNDr. Barbora Kozl´ıkova,´ Ph.D. ii Podˇekov´an´ı Rad´ bych podekovalˇ Ba´reˇ Kozl´ıkove´ za skvelˇ e´ veden´ı diplomove´ prace´ a za vsechenˇ cas,ˇ ktery´ mi venovala.ˇ Dale´ chci podekovatˇ Michalu Gab- rielovi za konzultace a odborne´ rady a celemu´ tymu´ CUKETA, s.r.o. za po- skytnut´ı zazem´ ´ı priˇ vyvoji´ hern´ıho editoru. iii Shrnut´ı C´ılem diplomove´ prace´ je navrhnout a implementovat jadro´ hern´ıho en- ginu a editoru pro konfiguraci hern´ıch mechanismu˚ na platformeˇ Flash. Hern´ı engine bude modularn´ ´ı, aby jej bylo moznˇ e´ rozsiˇ rovatˇ a vyuzˇ´ıvat pro ruzn˚ e´ typy her. Soucˇast´ ´ı prace´ bude ukazka´ hry nakonfigurovane´ v tomto editoru. V neposledn´ı radˇ eˇ se budu snazitˇ prezentovat prakticke´ zkusenostiˇ z vyvoje´ realn´ e´ hry. iv Kl´ıˇcov´aslova hern´ı editor, level editor, hern´ı engine, vyvoj´ her, Adobe Flash, game en- gine, Flash Player, hern´ı prumysl,˚ hern´ı navrh,´ game design v Obsah 1 Uvod´ ................................... 3 2 Historie hern´ıhopr ˚umyslu ...................... 5 2.1 50.–60. leta´ ............................. 5 2.2 60.–70. leta´ ............................. 5 2.3 80. leta´ ............................... 6 2.4 90. leta´ ............................... 8 2.5 2000–soucasnostˇ .......................... 9 3 Hern´ıenginy a editory ......................... 10 3.1 Hern´ı enginy ............................ 10 3.1.1 Historie . 11 3.2 Dostupne´ flashove´ knihovny . 11 3.2.1 FlashPunk . 11 3.2.2 Citrus Engine . 12 3.3 Vykreslovan´ ´ı ............................ 12 3.3.1 3D vykreslovan´ ´ı ..................... 12 3.3.2 2D vykreslovan´ ´ı ..................... 13 3.3.3 Prom´ıtan´ ´ı hern´ıho svetaˇ . 13 3.4 Hern´ı editory ........................... 14 3.4.1 Historie . 14 3.4.2 Hra jako editor . 15 4 Flash jako hern´ıplatforma ...................... 16 4.1 Historie Flashe ........................... 16 4.2 Vyuzitˇ ´ı v soucasnostiˇ ....................... 17 4.3 Vykreslovan´ ´ı ve Flashi ...................... 17 4.4 Vyhl´ıdky do budoucna ...................... 17 4.5 Alternativy ............................. 18 4.5.1 Microsoft Silverlight . 18 4.5.2 HTML 5 . 18 4.5.3 Unity . 19 4.5.4 iOS . 19 5 Vyvoj´ hern´ıhoenginu ......................... 20 5.1 Jadro´ ................................ 20 1 5.1.1 World . 20 5.1.2 Player . 21 5.1.3 Entity . 21 5.1.4 IAction . 21 5.1.5 IModule . 22 5.1.6 Diagram trˇ´ıd . 22 5.2 Trˇ´ıdy a techniky pro efektivn´ı praci´ . 22 5.3 Komunikace v s´ıti ......................... 26 6 Level editor ............................... 28 6.1 Konfigurace chovan´ ´ı ....................... 28 6.1.1 Typy konfigurace . 29 6.1.2 Konfigurace meho´ enginu . 29 6.1.3 Reprezentace akc´ı a ulozenˇ e´ reakce na udalosti´ . 30 6.1.4 Verzovan´ ´ı konfigurace . 30 6.1.5 Ukazka´ popisneho´ XML souboru . 32 6.1.6 Ukazka´ konfigurace akce . 33 6.1.7 Ukazka´ konfigurace udalosti´ . 33 6.2 Navrh´ uzivatelskˇ eho´ rozhran´ı . 33 6.2.1 Casovˇ a´ osa . 34 6.2.2 Rˇ ´ıd´ıc´ı panel . 35 6.2.3 Konfiguracnˇ ´ı panel . 35 6.2.4 Flow-based programming . 35 6.2.5 Akce zpetˇ a vpredˇ . 38 6.2.6 Komponenta pro urcenˇ ´ı pozice . 38 6.2.7 Klavesov´ e´ zkratky . 38 6.3 Sprava´ extern´ıch zdroju˚ ..................... 39 6.3.1 Verzovan´ ´ı zdroju.....................˚ 39 6.3.2 Generovan´ ´ı grafickych´ atlasu˚ . 40 6.4 Automaticke´ uklad´ an´ ´ı projektu . 40 7 Specifika programov´an´ına platformˇeFlash . 42 7.1 Prace´ s typem Vector ....................... 42 7.2 Informovan´ ´ı o zmenˇ eˇ stavu enginu . 43 7.3 Garbage collector ......................... 44 8 Uk´azkov´ahra .............................. 45 8.1 Typy neprˇatelsk´ ych´ jednotek . 45 8.2 Typy strelnˇ ych´ zbran´ı ....................... 46 8.3 Uzivatelskˇ e´ rozhran´ı ....................... 46 8.4 Pouzitˇ e´ moduly .......................... 46 8.5 Shrnut´ı ............................... 46 9 Z´avˇer ................................... 48 2 Kapitola 1 Uvod´ Jelikozˇ je pocˇ´ıtacovˇ a´ hra z velke´ cˇasti´ audio-vizualn´ ´ı d´ılo, je nutne´ se behemˇ vyvoje´ soustreditˇ nejen na technickou stranku´ veci.ˇ Velkou roli hraje navrh´ hry (game design), ktery´ definuje hern´ı mechaniky a t´ım vlastneˇ urcujeˇ zabavnost´ hry. Spolu s vizualn´ ´ım a zvukovym´ zpracovan´ ´ım je to hlavn´ı cˇast´ vyvoje´ hry. Pomerˇ rozsahu prac´ı na jednotlivych´ cˇastech´ celkoveho´ pro- duktu se mu˚ zeˇ lisitˇ v zavislosti´ na typu a zameˇrenˇ ´ı hry. V 3D akcnˇ ´ıch hrach´ jde vetˇ sinouˇ predevˇ sˇ´ım o co nejrealistictˇ ejˇ sˇ´ı zobrazen´ı reality, oproti tomu takzvane´ adventury vetˇ sinouˇ vynikaj´ı umeleckˇ ym´ zpracovan´ ´ım a speci- fickymi´ hern´ımi mechanikami. V dobach´ davno´ minulych,´ kdy pocˇ´ıtacovˇ e´ hry nebyly ani zdaleka tak propracovane,´ veskerˇ e´ hern´ı mechaniky programovali prˇ´ımo pro- gramato´ ri.ˇ V dnesnˇ ´ı dobeˇ jsou ale naroky´ jak na technicke,´ tak i vizualn´ ´ı zpracovan´ ´ı mnohem vysˇsˇ´ı, proto se vyuzˇ´ıvaj´ı editory, tj. softwarove´ nastroje,´ ktere´ designerum˚ umozˇnujˇ ´ı menitˇ chovan´ ´ı hry bez nutnosti kom- pilovat hru po kazdˇ e´ zmenˇ e.ˇ Tyto editory jsou naprosto kl´ıcovˇ e´ pro krea- tivn´ı praci´ game designeru˚ a dalsˇ´ıch lid´ı, kterˇ´ı se pod´ıl´ı na tvorbeˇ audio- vizualn´ ´ı stranky´ hry. Pro nekterˇ e´ hern´ı zˇanry´ existuje relativneˇ velke´ mnozstvˇ ´ı jizˇ hotovych´ komercnˇ ´ıch enginu˚ a editoru.˚ Do teto´ kategorie patrˇ´ı hlavneˇ 3D akcnˇ ´ı hry (Unreal engine, Cry engine). Je to dano´ t´ım, zeˇ vytvoritˇ 3D vykreslovac´ı engine s co nejrealistictˇ ejˇ sˇ´ım zobrazen´ım reality nen´ı vubec˚ jednoduche.´ Tyto enginy vetˇ sinouˇ stoj´ı dost penez,ˇ na druhou stranu zarucujˇ ´ı jistou kva- litu a technickou podporu. Vetˇ sinaˇ her ma´ ale specificke´ hern´ı mechaniky a proto se ani priˇ pouzitˇ ´ı komercnˇ ´ıho softwaru nevyhnete programovan´ ´ı nastaveb´ a pluginu˚ pro specificke´ u´ celyˇ vyv´ıjene´ hry. Vytva´retˇ vlastn´ı engine a editor je ale beˇznˇ e´ i u velkych´ a usp´ eˇsnˇ ych´ fi- rem. Pro danou platformu naprˇ´ıklad na trhu nemus´ı byt´ dostupne´ zˇadn´ e´ vyhovuj´ıc´ı hotove´ reˇ senˇ ´ı. Existuj´ı natolik specificke´ hry, zeˇ je vlastn´ı en- gine vylozenˇ eˇ zˇadouc´ ´ı. Touto kategori´ı mohou byt´ napr.ˇ logicke´ hry, kde jsou hern´ı mechaniky vetˇ sinouˇ jednoduche´ a hlavn´ı duraz˚ se klade na pro- pracovanost a mnozstvˇ ´ı urovn´ ´ı, nebo adventury, ktere´ castoˇ byvaj´ ´ı velmi 3 1. U´ VOD umeleckyˇ zalozenˇ e.´ Castoˇ se pouzˇ´ıva´ extern´ı editor pro vytvorenˇ ´ı proto- typu hry (vytvorenˇ ´ı hern´ıch mechanik) a azˇ pote,´ co se vymysl´ı zakladn´ ´ı hern´ı koncept a mechaniky, tak se vytvorˇ´ı engine na m´ıru pozadavkˇ um˚ (napr.ˇ velmi obl´ıbeny´ StarCraft Editor). Ve firmeˇ CUKETA, s.r.o, kde pracuji na pozici hern´ıho vyvoj´ a´re,ˇ tvorˇ´ıme real-time strategickou 2D hru v pohledu shora (falesnˇ y´ isometricky´ pohled) na platformeˇ Flash. Vyv´ıj´ıme vlastn´ı engine a editor, protozeˇ na platformeˇ Flash nen´ı dostupny´ zˇadn´ y´ jizˇ hotovy,´ ktery´ by splnovalˇ naseˇ pozadavky.ˇ Protozeˇ tvurcem˚ obou, enginu i editoru, jsem vyhradn´ eˇ ja,´ v teto´ praci´ se budu snazitˇ priblˇ ´ızitˇ specifika vyvoje´ hern´ıho editoru a hry jako takove,´ pokud vyvoj´ enginu a prace´ game designeru˚ prob´ıhaj´ı soubeznˇ e.ˇ Dule˚ zitouˇ soucˇast´ ´ı textu by melyˇ byt´ prakticke´ zkusenostiˇ s vyvojem´ hern´ıho editoru a samozrejmˇ eˇ jeho implementace. V prvn´ı kapitole se venujiˇ velmi rychlemu´ a strucnˇ emu´ shrnut´ı histo- rie hern´ıho prumyslu.˚ V nasleduj´ ´ıc´ı kapitole popisuji ruzn˚ e´ typy hern´ıch enginu˚ a editoru,˚ jejich historii a soucasnˇ e´ vyuzitˇ ´ı. Tretˇ ´ı kapitola je venovˇ ana´ platformeˇ Flash. Popisuji historicky´ vyvoj,´ soucasnˇ e´ alternativy i vyhl´ıdky do budoucna. Dalsˇ´ı kapitoly jsou venovˇ any´ popisu prakticke´ cˇasti´ prace.´ Nejprve popisuji vyvoj´ hern´ıho enginu a jeho architekturu. Nejvetˇ sˇ´ı cˇast´ prace´ je venovˇ ana´ popisu vyvoje´ hern´ıho editoru. Popisuji jeho architekturu, formaty´ souboru˚ a konfiguraci chovan´ ´ı. Dale´ vyjme- nuji a pop´ısiˇ dule˚ zitˇ e´ komponenty editoru i uziteˇ cnˇ e´ tipy k implementaci. Upln´ eˇ na zav´ erˇ jsem naselˇ m´ısto pro dveˇ kratk´ e´ kapitoly, z nichzˇ ta prvn´ı je venovˇ ana´ nekterˇ ym´ uziteˇ cnˇ ym´ tipum˚ k programovan´ ´ı v jazyce Action- Script. V posledn´ı kapitole predstavˇ ´ım ukazkovou´ hru, ktera´ byla nakonfi- gurovana´ s pouzitˇ ´ım meho´ editoru. 4 Kapitola 2 Historie hern´ıhopr ˚umyslu V roce 2014 mame´ za sebou pribliˇ znˇ eˇ 60 let vyvoje´ pocˇ´ıtacovˇ ych´ her. V nasleduj´ ´ıc´ıch odstavc´ıch se budu snazitˇ velmi strucnˇ eˇ priblˇ ´ızitˇ nebo pripomenoutˇ zacˇatky´ hern´ıho prumyslu,˚ priˇ cemˇ zˇ se budu soustreditˇ hlavneˇ na informace relevantn´ı k tematu´ me´ prace.´ 2.1 50.–60. l´eta V roce 1952 vznikla snad upln´ eˇ prvn´ı pocˇ´ıtacovˇ a´ hra OXO. Byly to 3x3 piskvorkyˇ na pocˇ´ıtaciˇ EDSAC s osciloskopovym´ displejem a jako vstup byl pouzitˇ rotacnˇ ´ı cˇ´ıseln´ık ze stareho´ telefonu [29]. Sloˇ sp´ısˇ jen o pokus, nezˇ o necoˇ realn´ eˇ hratelneho.´ V roce 1958 potom vznikla hra Tennis for two na analogovem´ pocˇ´ıtaci,ˇ priˇ odrazu m´ıckuˇ se vygeneroval zvuk.