Tím 7 - Bougles. BumpyBot

Similar documents
Aplikačný dizajn manuál

Obsah. SOA REST REST princípy REST výhody prest. Otázky

kucharka exportu pro 9FFFIMU

Registrácia účtu Hik-Connect

Spájanie tabuliek. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c)

Anycast. Ľubor Jurena CEO Michal Kolárik System Administrator

VYLEPŠOVANIE KONCEPTU TRIEDY

Copyright 2016 by Martin Krug. All rights reserved.

Databázové systémy. SQL Window functions

Mesačná kontrolná správa

Spôsoby zistenia ID KEP

Mesačná kontrolná správa

POKROČILÉ C++ Marian Vittek

REPORT DESIGNER 1 VYTVORENIE A ÚPRAVA FORMULÁRA. úprava formulárov v Money S4 / Money S Vytvorenie formulára

TP-LINK 150Mbps Wireless AP/Client Router Model TL-WR743ND Rýchly inštalačný sprievodca

Manuál k programu FileZilla

Crestron Mercury. Univerzálny Videokonferenčný a Kolaboračný systém

Microsoft Azure platforma pre Cloud Computing. Juraj Šitina, Microsoft Slovakia

Podporované grantom z Islandu, Lichtenštajnska a Nórska prostredníctvom Finančného mechanizmu EHP a Nórskeho finančného mechanizmu

Ochrana koncových staníc pomocou Cisco Security Agent 6.0. Ľubomír Varga.

Tvorba informačných systémov. 4. prednáška: Návrh IS

Xerox PARC the office of the future. Michal Winczer

D.Signer prostriedok pre vytváranie zaručeného elektronického podpisu. Inštalačná príručka

ÚMRTNOSŤ NA ÚRAZY MOZGU VO VYBRANÝCH EURÓPSKYCH KRAJINÁCH

Rýchlosť Mbit/s (download/upload) 15 Mbit / 1 Mbit. 50 Mbit / 8 Mbit. 80 Mbit / 10 Mbit. 10 Mbit / 1 Mbit. 12 Mbit / 2 Mbit.

MERANIE SOFTVÉRU. Jakub Šimko MSI

VYSOKÁ ŠKOLA MANAŢMENTU V TRENČÍNE VPLYV A VÝHODY POUŢITIA INFORMAČNÝCH SYSTÉMOV V ORGANIZÁCIÁCH Tomáš Zubo

INTERNET. História internetu

Základná(umelecká(škola(Jána(Albrechta Topoľčianska(15

Riešenia a technológie pre jednotnú správu používateľov

Ochrana proti DDoS za použitia open-source software. Katarína Ďurechová

PODPORNÉ PROSTRIEDKY PRE VERZIOVANIE: VHODNÝ VÝBER PRE NÁŠ TÍM?

Desatinné čísla #1a. Decimal numbers #1b. How much larger is 21,8 than 1,8? Desatinné čísla #2a. Decimal numbers #2b. 14 divided by 0,5 equals...

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

NIKY a NIKY S. JEDNOFÁZOVÉ UPS od 600 do 3000 VA SVETOVÝ ŠPECIALISTA PRE ELEKTRICKÉ INŠTALÁCIE A DIGITÁLNE SYSTÉMY BUDOV

VLSM a CIDR. CCNA2 Kapitola Cisco Systems, Inc. All rights reserved. Cisco Public 1

BGP - duálne prepojenie AS. (primary + backup spoj), s IBGP, cez virtuální L2 linky

Testovanie bieleho šumu

VIRTUALIZÁCIA DÁTOVÝCH ÚLOŽÍSK. Karol Schütz, S&T Slovakia

VZDÁLENÝ PŘÍSTUP K MOBILNÍM ZAŘÍZENÍM REMOTE ACCESS TO MOBILE DEVICES

Problém Big Data a ako ho riešiť pomocou NoSQL. Ján Zázrivec Softec

VYSOKÁ ŠKOLA MANAŢMENTU V TRENČÍNE POROVNANIE NAJPOUŢÍVANEJŠÍCH INFORMAČNÝCH SYSTÉMOV BAKALÁRSKA PRÁCA

Databázy (1) Prednáška 11. Alexander Šimko

ÚRAD VEREJNÉHO ZDRAVOTNÍCTVA SLOVENSKEJ REPUBLIKY Trnavská cesta 52 P.O.BOX Bratislava

SIP v malých telekomunikačných systémoch. Convergence. A matter of lifestyle.

Informačný systém pre športový klub

LL LED svietidlá na osvetlenie športovísk. MMXIII-X LEADER LIGHT s.r.o. Všetky práva vyhradené. Uvedené dáta podliehajú zmenám.

VYSOKÁ ŠKOLA MANAŢMENTU V TRENČÍNE. Získavanie a výber zamestnancov Roland Vászondy

Xamarin písanie Android a ios aplikácií v C#

Algoritmy deterministickej a stochastickej optimalizácie a ich počítačová realizácia

1 Komplexný príklad využitia OOP

Základné a všeobecné ustanovenia

Hodnotenie kvality produktu

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Transactions of the VŠB Technical University of Ostrava, Mechanical Series No. 2, 2009, vol. LV, article No Marek BABIUCH *, Martin HNIK **

BODY PRÍPADOV POUŽITIA ALEBO AKO MERAŤ SOFTVÉR

AR6181-MX, AR6182-MX Čítačky MIFARE kariet

WEBOVÁ PLATFORMA PRE TVORBU HIER WEB PLATFORM FOR GAME DEVELOPMENT

Tréner mentálnych schopností

Prvky inovácie nových jazykov HTML5 a CSS3

Manažérsky sen dokonalej tímovej práce

Univerzita Komenského v Bratislave Fakulta matematiky, fyziky a informatiky. Interaktívna výuková webová aplikácia na riešenie úloh o pravdepodobnosti

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Nové prvky vo webových technológiách a ich vplyv na informačné systémy

Vnímanie neviditeľného [Holographic Eyes]

Aplikácia k určovaniu rastlín pre platformu ios

Responzívny dizajn a jeho realizácia v podmienkach konkrétnej spoločnosti

1. ELASTIX inštalácia 2 2. Elastix konfigurácia Nastavenie užívateľských kont Pridanie nových užívateľských kont 10 2.

Jazyk SQL. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c)

Úvod do hospodárskej informatiky (prednáška 7) František Babič

Riadenie a využitie databázy s využitím tabuľkového procesora a skriptovacieho jazyka

Tvorba webových stránok pre mobilné platformy

Vnorený počítač a jeho využitie v realizácii informačných systémov

Mobilný počítač Dolphin TM Príručka pre rýchle spustenie

}w!"#$%&'()+,-./012345<ya

Návrh kritérií pre habilitáciu docentov a vymenúvanie profesorov na Ekonomickej fakulte TU v Košiciach

SYSTÉM NA EVIDENCIU A KATEGORIZÁCIU

Knižnica (framework) pre kreslenie grafov

UNIVERZITA KONŠTANTÍNA FILOZOFA V NITRE

Transactions of the VŠB Technical University of Ostrava, Mechanical Series No. 2, 2009, vol. LV, article No. 1711

POROVNANIE GUI VYBRANÝCH SOFTVÉROVÝCH NÁSTROJOV

Edukační hra. Veronika Galovská

systemove programovanie win32 programovanie

Pentura Mini LED veľmi tenké lištové svietidlo

UNIVERZITA KOMENSKÉHO V BRATISLAVEFAKULTA MATEMATIKY, FYZIKY A INFORMATIKY

Košice. Riešenia pre malé a stredné podniky

Ekonomický pilier TUR

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Tvorba informačných systémov 3. prednáška modely vývoja informačných systémov

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY VÝUKOVÁ WEBOVÁ APLIKÁCIA NA PROGRAMOVANIE GPU.

SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE MATERIÁLOVOTECHNOLOGICKÁ FAKULTA V TRNAVE

Textový formát na zasielanie údajov podľa 27 ods. 2 písm. f) zákona

Recipient Configuration. Štefan Pataky MCP, MCTS, MCITP

Tvorba plánov DÁVID KOVÁČ

Tvorba softvéru v tretom tisícrocí

Transactions of the VŠB Technical University of Ostrava, Mechanical Series No. 2, 2008, vol. LIV, article No. 1632

SIMULÁTOR 3D TISKÁRNY SIMPLE 3D PRINTER SIMULATOR

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Transcription:

Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova 3, 842 16 Bratislava 4 Tím 7 - Bougles Vývoj hry pre mobilný telefón BumpyBot Viktor Blesák Ján Laštinec Ondrej Perešíni Študijný program: Počítačové a komunikačné systémy a siete Ročník: 1. ING Predmet: Tímový projekt I Vedúci projektu: Ing. Mária Pohronská Ak. rok: 2011/12

Obsah 1 Úvod... 1 1.1 Poţiadavky zo strany ImagineCUP... 1 1.1.1 Game Design: Phone... 2 1.2 Obsah dokumentu... 2 2 Analýza... 3 2.1 Úspešné hry... 3 2.1.1 Komerčné hry... 3 2.1.2 ImagineCup hry... 7 2.1.3 Atraktívne prvky súčasných hier... 8 2.2 Spôsoby pouţívateľskej interakcie...10 2.3 Prehľad navrhovaných herných konceptov...11 2.3.1 Biela krvinka...12 2.3.2 Farmár...12 2.3.3 Ekosystém...13 2.3.4 Budovanie infraštruktúry...13 2.4 Dostupné softvérové frameworky...14 2.4.1 Silverlight...14 2.4.2.NET...15 2.4.3 XNA...16 3 Špecifikácia poţiadaviek na tvorbu hry...17 3.1 Výber finálneho konceptu...17 3.2 Vývojové prostredie...17 4 Návrh prototypu mobilnej hry...18 4.1 Scenár...18 4.2 Herný Koncept...19 4.2.1 Pohyb...19 4.2.2 Vylepšenia...19 4.2.3 Nepriatelia...20 4.2.4 Cieľ hry...20 4.2.5 Zvyšovanie obtiaţnosti...20

4.2.6 Skóre...20 4.2.7 Technologické vylepšenia...21 4.3 Ovládanie...22 4.4 Grafické pouţívateľské prostredie a menu...24 4.5 Predbeţné grafické návrhy...26 5 Prototyp...28 5.1 Postupnosť vykonávaných operácií...28 5.2 Navrhované triedy prototypu...29 5.2.1 Trieda Character...30 5.2.2 Trieda Hero...31 5.2.3 Trieda Enemy...31 5.2.4 Trieda Wall...32 5.2.5 Trieda Technology...32 5.3 Orientácia priestoru...33 5.4 Detekcie kolízií...34 5.4.1 Kolízie medzi dvomi charaktermi...34 5.4.2 Kolízie s hranicami obrazovky...34 5.4.3 Kolízie so stenami...35 5.5 Spracovanie kolízií...38 5.5.1 Kolízia so stenou a hranicou obrazovky...38 5.5.2 Kolízia medzi pohybujúcimi sa objektmi...41 5.6 Správa pouţívateľského vstupu...42 5.7 Vykresľovanie na displej...43 5.8 Ubliţovanie nepriateľom...44 5.9 Náhodná zmena pohybu nepriateľov...44 5.10 Dosiahnuté výsledky...44 6 Zhrnutie prvej časti...46 6.1 Plán na nasledujúci semester...46 7 Konečný návrh...47 7.1 Revízia prototypu...47 7.1.1 Herný scenár...47

7.1.2 Zvyšovanie obtiaţnosti...48 7.1.3 Skóre...49 7.1.4 Technologické vylepšenia Jimmyho...50 7.1.5 Ovládanie...56 7.1.6 Kolízie medzi pohybujúcimi sa objektmi...58 7.1.7 Herné menu a nastavenia...59 7.1.8 Grafické návrhy...63 7.2 Model tried...65 7.3 Nová funkcionalita...67 7.3.1 Grafické spracovanie...67 7.3.2 Herní nepriatelia...73 7.3.3 Zvukové spracovanie...77 7.3.4 Vibračné efekty...78 7.3.5 Dizajnovanie herných úrovní...78 7.3.6 Rýchlostné a pamäťové optimalizácie...79 8 Testovanie...81 9 Inštalačná príručka...83 10 Pouţívateľská príručka...85 10.1 BumpyBot - Windows Phone 7.5 game...85 10.1.1 Game presentation...91 11 Záver...92

1 Úvod V súčasnosti sa mobilné zariadenia tešia obrovskej popularite. Počet inteligentných telefónov a iných zariadení stúpa medziročne aţ neuveriteľným tempom. Spoločne s hardvérom sa rozvíja aj softvér, medzi ktorý patria aj mobilné hry. Náš tím v zloţení Viktor Blesák, Ján Laštinec a Ondrej Perešíni sa preto rozhodol pridať svoje ţeliezko do ohňa a vyvinúť potenciálne populárnu hru. Hlavnou pohnútkou bolo zúčastnenie sa na súťaţi ImagineCUP a absolvovanie predmetu tímový projekt na Fakulte Informatiky a Informačných Technológií na Slovenskej technickej univerzite. Súťaţ ImagineCUP je kaţdoročne organizovaná spoločnosťou Microsoft. Môţu sa v nej zúčastniť tímy z akejkoľvek krajiny, avšak podmienkou je registrácia, maximálny počet štyroch členov v tíme a splnenie podmienky na výber témy príspevku. Súťaţ prebieha vo viacerých kolách. Zatiaľ čo prvé kolá zahŕňajú iba odovzdávanie dokumentácie a prototypov, tak vo finále sú tímy preverené aj na schopnosť prezentácie, jazykovú obratnosť a najmä schopnosť predať svoj produkt. Finále hosťuje kaţdoročne iná krajina. Finále ročníka 2012 sa koná v austrálskom Sydney. 1.1 Požiadavky zo strany ImagineCUP Hlavnou témou všetkých kategórií súťaţe Imagine Cup je Imagine a world where technology helps solve the toughest problems. Cieľom je vytvoriť produkt, ktorý by pomohol vyriešiť niektorý z hlavných celosvetových problémov ako napríklad tzv. Millenium Development Goals definované Organizáciou spojených národov. Medzi tieto problémy patrí napríklad: riešenie celosvetového hladu a chudoby, zlepšovanie zdravotného stavu matiek, dosahovanie všeobecného základného vzdelania pre všetkých, boj s najrozšírenejšími chorobami, presadzovanie rovnosti pohlaví a posilňovanie postavenia ţien, zabezpečenie udrţateľnosti ţivotného prostredia, zníţenie detskej úmrtnosti a vytvorenie globálneho partnerstva pre rozvoj. Obrázok 1 - Súťaž ImagineCUP je organizovaná spoločnosťou Microsoft 1

Súťaţ ImagineCUP prebieha vo viacerých kategóriách, medzi ktoré patrí v ročníku 2012 Software Design, Game Design: Xbox/Windows, Game Design: Phone a IT Challenge. Pôvodne sme chceli súťaţiť v kategórií Embedded deveploment, avšak táto kategória sa tento rok neotvorila a tak sme boli nútení vybrať si alternatívnu kategóriu. Keďţe mobilné telefóny a hry na ne sú v súčasnosti veľmi populárne, tak naše rozhodnutie padlo jednoznačne na kategóriu Game Design: Phone. 1.1.1 Game Design: Phone Obrázok 2 - Kategória Game Design Cieľom kategórie Game Design: Phone je vyvinúť hru pre mobilný telefón s platformou Windows Phone, ktorá bude hrateľná na komerčne dostupnom mobilnom telefóne. Funkčnosť hry na emulátore prostredia nie je postačujúca. Podmienkou je taktieţ, aby hra ilustrovala hlavnú tému súťaţe, pričom nemusí byť striktne náučná. Dôleţitá je zábavnosť a hrateľnosť a aby hra ilustrovala pozitívny vplyv nových technológií na zlepšenie kvality ţivota a riešenie celosvetových problémov. 1.2 Obsah dokumentu Účelom predloţeného dokumentu je informovať o cieľoch, stave prác a výsledkoch snaţenia nášho tímu. Skladá sa z viacerých hlavných kapitol. Prvá kapitola s analýzou bliţšie rozoberá uţ existujúce hry a ich populárne prvky, či spôsoby interakcie. Kapitoly Špecifikácia a Návrh uţ predkladajú navrhnuté riešenie vhodné na softvérovú realizáciu. Kapitola s prototypom stanovuje ciele prototypovania počas jednotlivých kontrolných bodoch prác na hre. Kapitola s konečným návrhom popisuje zmeny oproti prototypu a novou funkcionalitu, ktorú sme do výslednej hry pridali. V dokumentácii nechýba ani kapitola s testovaním a pouţívateľskou príručkou. Na konci sa nachádza záver, ktorý zhrňuje našu ročnú prácu na tímovom projekte. Obrázok 3 - Logo tímu 7 - Bougles. 2

2 Analýza Prvá kapitola s analýzou pribliţuje niektoré úspešné komerčné hry a minuloročné hry zo súťaţe ImagineCUP. Bliţšie rozoberá ich jednotlivé silné, ale aj slabé stránky a zaujímavé koncepty, ktorými sú výnimočné. Takáto analýza je veľmi dôleţitá, nakoľko nám pomôţe sa vyvarovať závaţným chybám v neskoršom návrhu, ako aj zlepší šance na úspech v súťaţi. V ďalšej časti analýzy sú podrobne popísané spôsoby pouţívateľskej interakcie s hrami a nami navrhnuté herné koncepty. Tieto koncepty sú podrobne opísané a presne objasňujú celý herný námet. V závere analýzy nechýba ani popis jednotlivých dostupných framework-ov, ktoré môţeme pri vývoji hry pouţiť. 2.1 Úspešné hry Cieľom našej hry je nie len hráča vzdelávať, ale predovšetkým ho aj zabaviť. Pre túto skutočnosť sme analyzovali populárne hry v rámci komerčného, ale aj akademického prostredia. Väčšina z nich mala pouţité podobné prvky ovládania. Našou snahou bolo ich identifikovať a poskytnúť do špecifikácie prvky, ktoré by nemali chýbať v ţiadnom hernom projekte, ktorý má pred sebou budúcnosť. 2.1.1 Komerčné hry Je istý predpoklad, ţe atraktívnejšie hry budú dostupné komerčným spôsobom. Preto sú prvky z takýchto hier kľúčové pre ďalšiu prácu na projekte. Spomedzi všetkých dostupných mobilných hier sme vybrali také, čo sa pravidelne umiestňujú na popredných priečkach v predaji mobilných aplikácií. Angry Birds Obrázok 4 - Angry Birds 3

Jedna z najúspešnejších hier od presadenia inteligentných telefónov v hernom priemysle 1. Atraktívna predovšetkým pre svoje arkádové spracovanie s moţnosťou postupného pridávania úrovni prostredníctvom aktualizácií. Ovládanie pozostáva výlučne z ovládania vtákov prostredníctvom dotykovej obrazovky. V rámci neho je moţné nastaviť uhol a silu vzlietnutia ako aj aktivovať špecifické vlastnosti jednotlivých vtákov. Pre správne ovládanie je preto potrebná intuitívna znalosť niektorých fyzikálnych javov (zrýchlenie, balistická krivka, atď.). Hra so sebou prináša príbeh, vďaka ktorému sa hráč lepšie vcíti do úlohy hlavného hrdinu. Grafické spracovanie je jednoduchšie, tvorené menším počtom farieb v 2D prostredí. Pri týchto vlastnostiach je zachovaná rozdielnosť jednotlivých charakterov, ako aj ich emócie a úmysly (kladný hrdinovia pôsobia motivovane, záporný naivne). Angry Birds ponúka variácie vo všetkých moţných smeroch, počínajúc od rôznych vtákov, cez prasce aţ po fyzické prekáţky a prostredia (pozadia). Hráč je za splnené úlohy odmenený. Body sú mu prisudzované podľa počtu útokov v jednotlivej úrovni a za napáchané škody v nej. Okrem bodov hráč dostáva aj hviezdičkové hodnotenie za kaţdú úroveň (od 1 po 3). Takto nazbierané odmeny slúţia na odomknutie skrytých hier alebo nových sérií úrovní. Plants vs. Zombies Ďalšia hra prináša prvky stratégie a plánovania. Rovnako ako pri Angry Birds je hra rozdelená do sérií úrovní. Úlohou hráča je preţiť zombie inváziu pomocou vyuţitia rastlín. Tie majú rôzne vlastnosti určené pre iné podmienky. Hráč si v priebehu úrovni zakupuje rastliny podľa platného cenníka. Menou tejto hry sú ţlté body / slniečka. Tie je moţné získať plynutím času alebo zakúpením špeciálnych rastlín určených na získavanie bodov. Rastliny moţno rozdeliť podľa sily strely, jeho plošného rozsahu, počtu pouţití, aktivity, doby dobíjania v obchode alebo v akcii, ich aktivity cez deň či noc, atď. Variabilita tohto prvku je vysoká. Obrázok 5 - Plants vs. Zombies 1 http://www.businessinsider.com/best-selling-iphone-apps-2010-9#angry-birds-is-the-king-of-the-appstore-1 4

Okrem mnoţstva rastlín je dostupné mnoţstvo prostredí s rôznymi scenármi príchodu Zombie. Medzi základné prostredia patria deň, noc, hmla, bazén, strecha a ich vzájomné kombinácie. Neoddeliteľnou súčasťou hry je humor. Ten je sprostredkovaný predovšetkým rozprávačom príbehu a jeho výrokmi. Mimo jednoúrovňových slniečok je v Plants vs. Zombies moţné zbierať aj mince, ktoré sa neviaţu na úroveň. Slúţia na odomykanie nových rastlín a iných herných bonusov. Hra ponúka aj špeciálne úrovne mimo hlavného deja, tzv. Minihry. Tie umoţňujú v známom prostredí hry vyuţívať iné herné princípy ako v hlavnom deji. Cut the Rope Zatiaľ čo predošlé hry boli riešené súbojom, Cut the Rope sa pokúša preveriť logické myslenie hráča. Cieľom hry je zabezpečiť pravidelný prísun cukru malému zelenému zvieratku (pravdepodobne ţaba) s čo najväčším obsahom hviezdičiek. Nie je to ale aţ také ľahké ako by sa na prvý pohľad mohlo zdať. Ako uţ názov hry napovedá, jedným zo základných úkonov v hre je pretrhnúť lano. Mimo neho je potrebné sa vyhýbať rôznym prekáţkam vyuţitím nástrojov ako fúkadlo, bublina, zachytávajúce lano, transportných klobúkov, zmeny gravitácie a ďalšie iné. Dôleţitým faktorom v hre je časovanie. Herný scenár je rozdelený do niekoľkých sekcií s dostatočným počtom úrovní. Kaţdá úroveň prináša nový nástroj a prostredie (pozadie). Nové úrovne sa odomykajú získaním určitého počtu hviezdičiek. Hra je atraktívna predovšetkým pre stvárnenie hlavného hrdinu, ktorý pôsobí svojim charakterom a animáciou na emócie hráča. Náladu hrdinu je moţné jednoznačne rozoznať. Je šťastný po získaní sladkosti a naopak nešťastný po jej stratení. V hre je výrazným spôsobom prepracovaná fyzika umoţňujúca kývanie sladkosti na lane alebo zmenu gravitácie. Obrázok 6 - Cup the Rope 5

DoodleJump Najjednoduchšou hrou z nášho výberu je pravdepodobne DoodleJump. Hra nie graficky prepracovaná, neobsahuje rôzne úrovne a napriek tomu všetkému je veľmi obľúbená 2. Hra je ovládaná pomocou gyroskopu, kde sú rozoznávané dva smery, vpravo a vľavo. Taktieţ je moţné vyuţiť dotykovú obrazovku na vystrelenie. Cieľom hry je doskákať najvyššie ako sa len dá, teoreticky je tak hra bez konca. Postavička vykonáva skoky automaticky, ako doskočí na platformu. Pre túto úlohu ju musí hráč navigovať prostredníctvom gyroskopu. Hrdina je schopný sa v rámci obrazovky posúvať len hore, preto keď dosiahne spodok obrazovky hra končí. Pre rýchlejšie napredovanie môţe hráč zbierať bonusové predmety ako raketu, pruţinu a štít. V DoodleJump je dostupných viacero platforiem, od tých regulárnych cez hýbajúce sa vertikálne, či horizontálne aţ po falošné, jednorazové, časovo obmedzené a nepravidelné. Variabilita je zachovaná aj pri nepriateľoch. Ich odlišnosť je ale len grafickým vyobrazením, funkčne sú totoţní. Hra taktieţ ponúka viacero prostredí, ktoré ale ţiadnym spôsobom nemenia priebeh hry. Obrázok 7 - DoodleJump FlightControl Ďalšou jednoduchou hrou je FlightControl. Jeho úlohou je dostať kaţdé lietadlo, či vrtuľník zo vzduchu na zem a nespôsobiť pritom ich vzájomné kolízie. Ovládanie je moţné prostredníctvom dotykovej obrazovky. Hráč na nej označí lietadlo a ukáţe mu jeho budúcu trajektóriu letu aţ na pristávajúcu dráhu. Pri nízkom počte lietadiel je to jednoduché ale s ich pribúdajúcim časom a plnšej oblohe vzniká poţiadavka na pomerne presnú synchronizáciu. Lietadlá nie sú len jedného typu a jedno 2 http://itunes.apple.com/app/doodle-jump-be-warned-insanely/id307727765) 6

je tak rýchlejšie ako druhé. Taktieţ sú oddelené dráhy pre jednotlivé typy lietadiel. Pre jednoznačnosť sú lietadlá a dráhy farebne oddelené. V rámci hry je moţné si zvoliť rôzne mapy. Tie sú rozdielne usporiadaním pristávajúcich dráh, ich počtom a pouţitými druhmi lietadiel a ich hustotou. Zaujímavou vlastnosťou je chválenie hráča počas hry za úspešné pristátie. 2.1.2 ImagineCup hry Obrázok 8 - FlightControl Okrem komerčných hier sme sa zaujímali aj o také hry, ktoré boli prítomné na predchádzajúcich ročníkov ImagineCup-u. Do analýzy sme vybrali vzorku hier, ktoré boli vyvíjané pre mobilnú platformu alebo také, ktoré si vieme na takej platforme predstaviť. Vzhľadom na neexistenciu kategórie Game Design: Phone po minulé roky, nemoţno hodnotiť náš výber za vzorový. Vo všeobecnosti tieto hry trpia prílišným vnútením myšlienky boja za lepší svet. Hráč sa tak nemôţe dostatočne uvoľniť pri ich hraní, keď je vkuse bombardovaný osvetou. Ich analýza nám môţe pomôcť vyhnúť sa takémuto problému a nájsť vhodné prvky, či oblasti kde by sa naša hra mohla uberať. Cardio Hra sa venuje veľmi zaujímavej tematike s hlavým hrdinom skupinkou nanobotov. Táto oblasť ponúka kompromisy medzi hrateľnosťou a osvetou. Úlohou hráča je postupovať cez krvný systém človeka a ničiť v ňom vírusy, baktérie a iné chorobotvorné zárodky. Hoci nás tematika oslovila, princípy ovládania nám prišli príliš mätúce a nejasné. Za zaujímavú časť projektu povaţujeme moţnosť zlepšovania si nanobotov, ktoré nie je ale dotiahnuté. Zlepšovať sa dajú iba základné parametre a to zdravie, ničenie a účinnosť. HopeBlocks Úlohou hry je vytvoriť na štvorcovom poli kombinácie blokov a rozosievať tak nádej po celom svete. Hra pôsobí ako jednoduchá variácia hry Bejeweled, takţe sa v ţiadnom prípade nejedná o originálny projekt. Vnútenie riešenia svetového problému pomocou kociek nádeje nám prišlo ako myšlienka hraničiaca s infantilnosťou. Projekt teda hodnotíme ako neoriginálnu hru s primitívnym cieľom. 7

Conjunct So zaujímavou myšlienkou prišla hra Conjuct. Tím vývojárov vytvoril variáciu ku hre Tetris, ktorej najvýraznejším znakom je ukladanie blokov do vertikálnej línie. Spôsob ovládania bol taktieţ pozmenený z padajúcich blokov na lištu chodiacich blokov. Cieľom hry je tetrisovým spôsobom odkryť čo najviac stĺpcov bez zbytočného mrhania blokmi. Myšlienka hry (riešenia miléniových problémov) bola vo väčšej časti hry potlačená a hráč sa jej venoval len okrajovo. Okrajové pokrytie problematiky je vhodný prvok aj pre našu hru. The Other Side Táto hra je príkladom toho, čomu sa máme vyvarovať. Najlepšie ju moţno definovať ako nedynamickú, nudnú a dlhú variantu Super Maria. Hra je predovšetkým nesmierne pomalá. Pre prepracovanie na druhú obrazovku je potrebné niekoľko sekúnd drţať šípku. Spôsob prekonania súperov a prekáţok je jednoduchý. V prípade náročnejšej prekáţky je kvôli pomalosti hry veľmi otravné sa pokúšať o jej znovuprekonanie. Ak by naša hra trpela takouto chybou, rozhodne by sme sa mali vyhnúť jej prezentácií v rámci promo videa 3. Brainergy Ústrednou témou Brainergy sú obnoviteľné zdroje energie a transformácia energie. Hra nám pripadala ako variácia ku hre The Incredible Machine. Podstatou je zapájať za sebou dostupné nástroje pre dosiahnutie istého cieľa. Hra pôsobí jednoducho a priamočiaro, čo je pri mobilných aplikáciách výhodou. Najväčšou nevýhodou je zvolený hudobný doprovod. Pôsobí aţ priveľmi upokojujúco, priam aţ uspávajúco. Nebyť tohto prvku, tak by sa jednalo o pomerne atraktívnu hru. 2.1.3 Atraktívne prvky súčasných hier Zdrojové údaje pre túto kapitolu tvoria jedine výber komerčných hier. Pri hrách z predošlých ročníkov ImagineCUP-u sme nespozorovali dostatočnú kvalitu, ktorá by hráča prinútila hru dlhodobo hrať alebo si ju vôbec kúpiť. Preto sme hry z predošlých ročníkov súťaţe viac vyuţili pri návrhu príbehu a deja, namiesto hracích prvkov. V nasledujúcej tabuľke sme sa zamerali na najviditeľnejšie prvky hier a zosumarizovali si ich pri jednotlivých hrách: Prvok Hra Angry Birds Plants vs. Zombies Cup the Rope DoodleJump FlightControl dimenzia grafiky 2D 2D 2D 2D 2D úrovne Krátke úrovne Krátke úrovne Krátke úrovne Postupné sťaţovanie Postupné sťaţovanie ovládanie Gestá Virtuálne tlač. Gestá Gyroskop Trajektória 3 http://www.youtube.com/watch?v=pypactuvct4 8

časovanie Čiastočne Áno Áno Áno Áno súboj Áno Áno Nie Čiastočne Nie charizmatický hrdina Áno Áno Áno, Áno Nie Nie hudba Hravá Dramatická, klavír Hravá Ţiadna Pomalý Jazz humor Čiastočne Áno Nie Nie Nie zložitejšia fyzika variácia prostredia Áno Nie Áno Čiastočne Nie Áno Áno Áno Čiastočne Čiastočne V rámci tímovej práce na projekte sme analyzovali populárne prvky aj iných hier, ktoré sa nezmestili do nášho výberu. Taktieţ sa tú nachádzajú vlastnosti hier z iných ako mobilných platforiem. Jedným z dôleţitých faktorov na vytvorenie širšieho zoznamu boli aj naše osobné skúsenosti, nadobudnuté v rámci voľného času ešte pred začatím prác na tímovom projekte. Nasledovné prvky zhŕňajú doplnkové vlastnosti mobilných hier, ktoré v ţiadnom prípade nenarušujú jednoduchosť a hrateľnosť takýchto hier. Našim cieľom je vyuţiť ich v čom najväčšom počte v navrhovanej mobilnej hry: Dynamickosť - hra musí byť dynamická, ináč začne hráča rýchlo nudiť (istou výnimkou potvrdzujúcou pravidlo sú strategické hry). Príťažlivý hlavný hrdina - kaţdú hru by mal reprezentovať určitý charizmatický hlavný hrdina, alebo predmet. Hlavný hrdina by mal mať nadprirodzené vlastnosti, alebo byť personifikovaný a vedieť ľudsky uvaţovať a rozprávať (závisí od konceptu, avšak pouţíva sa tu princíp rozkošnosti hrdinu). Úvod - je dôleţitý pre uvedenie hráča do deja a malo by ho aj vizuálne upútať. Humor - je neoddeliteľnou súčasťou úspechu, avšak je nutné s ním zaobchádzať opatrne a neprekročiť kritickú hranicu. Chytľavá hudba by mala jednoznačne reprezentovať prezentovanú hru. Príjemná hudba takisto nabáda hráča na dlhšie hranie a celkovo lepšie prijatie hry. Pekná grafika zaujme na prvý pohľad. V prípade škaredej grafiky sa priemerný hráč uţ s hrou ďalej nezaoberá, čo môţe viezť k úzkemu profilovaniu hráčov, prípadne aj celkovému neúspechu. Intuitívne ovládanie - azda najdôleţitejší prvok, hra ktorá sa nedá intuitívne ovládať nie je zábavná. Postupné sťažovanie hry -- hra sa musí sťaţovať, ináč to nie je pre hráča výzva a hra ho prestane rýchlo baviť. 9

So sťaţovaním súvisí aj herný mód, ktorý môţe byť nekonečný, alebo hra je rozdelená na viacero mini úrovní (tento bod záleţí od herného konceptu). Pri viacerých úrovniach by sa mal uplatniť princíp checkpointov, aby hráč mohol hru opustiť a neskôr sa vrátiť na pozíciu, kde skončil. Vylepšovanie hlavného hrdinu - dodáva hre ďalšiu dimenziu hrateľnosti. Hráča takáto hra baví viacej, pretoţe nehrá stále to isté, ale s miernymi variáciami sa obmieňa spôsob hrania. Vylepšovaním hrdinu hra taktieţ odmeňuje hráča za vynaloţenú snahu a zjednodušuje mu ďalší priebeh v hre. Minihry na odľahčenie - závisí od konceptu hry, avšak minihrou sa rozumie aj úroveň s hlavným nepriateľom určitej časti hry. Po jeho zdolaní je hráč odmenený stanoveným spôsobom. Pochvala hráča - za kaţdý úspešný ťah by mal byť hráč aj viditeľne pochválený. V hráčovi je tak vzbudzovaný pocit zadosťučinenia za svoj výkon. Náhodné generovanie pohybu nepriateľov alebo úrovni umoţňuje hrať dookola tie isté úrovne bez toho, aby začali byť nudné, pretoţe kaţdá hra je jedinečná. Scoreboard - v prípade statických úrovní je vhodné zaviesť skóre, ktoré si môţu hráči online porovnávať. Napojenie na sociálne siete umoţňuje rýchlejšiu propagáciu hier, ale aj dosiahnutých výsledkov. Otvorenosť pre nové nápady od hráčov by mala byť vţdy vítaná. 2.2 Spôsoby používateľskej interakcie Pri analyzovaní spôsobov ovládania rôznych mobilných hier sme sa bliţšie zamerali na viacero konceptov opísaných niţšie. Kaţdý koncept má svoje výhody a nevýhody a preto sa hodí na ovládanie iba určitého typu hier. V analýze sa zameriame na negatíva, pozitíva a aj hry pouţívajúce tieto spôsoby interakcie. Nepriame ovládanie Ďalšou moţnosťou je nepriame ovládanie, kde má hráč na pohyb objektov len obmedzený vplyv. Do tejto kategórie patrí aj ovládanie pomocou odráţania, resp. ovládanie smeru odráţania objektov napríklad vytváraním stien. Tento spôsob kladie väčšie nároky na sústredenie hráča, lebo musí predpokladať, kam sa predmety budú pohybovať. Tým pádom je hráč viac angaţovaný do hry, ale potom je dôleţité dbať o to, aby sa pri zloţitejších hrách s mnoţstvom akcií ovládanie nestalo príliš komplikovaným. Medzi hry ovládané odráţaním patrí napríklad Smashing 4. Virtuálny joystick Virtuálny joystick je vhodný hlavne pre typické arkádové hry, ktoré obsahujú veľa úrovní so stupňujúcou sa obtiaţnosťou a hlavný hrdina hry má pohyb obmedzený na 4 smery. Obmedzením tohto spôsobu ovládania je, ţe virtuálny joystick zaberá miesto na relatívne 4 http://www.onlinegames.com/smashing/ 10

malom displeji mobilného telefónu a odozva či moţnosti pohybu sú značne obmedzené. Pri niektorých hrách je moţných aj viac smerov pohybu, avšak problémom je citlivosť joysticku. Výhodou je, ţe rieši absenciu hardvérových ovládacích prvkov na dotykových zariadeniach. Pouţíva sa najmä pri ţánroch FPS (First Person Shooter), hrách kde je potrebné jedným prstom ovládať pohyb a druhým mieriť a strieľať. Virtuálne tlačidlá Ovládanie pomocou virtuálnych tlačidiel, prípadne jedného tlačidla taktieţ rieši problém chýbajúcich hardvérových tlačidiel. Výhodou tohto spôsoby ovládania je moţnosť ovládania aj komplexnejších akcií, ktoré sa vyvolajú pri stlačení. Virtuálne akčné tlačidlá je vhodné pouţiť pri dynamických hrách, kde hráč musí byť schopný rýchlo reagovať na meniace sa podmienky v hre. Tento koncept by bolo moţné pouţiť na doplnenie moţností ovládania na báze odráţania. Problémová je situácia kedy hráč netrafí tlačidlo, čo spôsobí nevykonanie poţadovanej akcie v čase keď to hráč očakáva a zhoršenie záţitku z hry. Vo forme klikania na displej sa ovládací prvok pouţíva vo veľkom počte hier ako napríklad aj DoodleJump. Vstavané senzory Populárnym spôsobom ovládania hier na dotykových telefónoch je vyuţitie akcelerometra pri pohybe telefónu, prípadne gyroskopu, ktorý sníma naklonenie. Výhodou je, ţe plocha displeja nie je nijak obmedzená ovládacími prvkami. Nevýhodou je nutnosť pohybovania telefónom, čo môţe byť v niektorých prípadoch obmedzujúce (napríklad pri ceste v dopravných prostriedkoch, alebo v iných priestorovo obmedzených prostrediach). Takéto ovládanie je tieţ často pouţívané a vyskytuje sa napríklad pri závodných hrách, kde sa nakláňaním telefónu ovláda smer jazdy. Gestá Ovládanie hier pomocou gest kreslených na displeji je v súčasnosti tieţ populárne. Výhodou tohto spôsobu je intuitívnosť ovládania a jeho vhodnosť na rôzne typy hier, či uţ sa jedná o dynamické alebo statické hry. Hráč interaguje s prostredím hry priamo a to napríklad tým, ţe mení jej prostredie alebo dianie v hre ako v prípade hry Cut the rope, kde sa pomocou gest ovláda strihanie lana drţiaceho cukríky. Ďalším zo spôsobov ovládania pomocou gesta tzv. kreslenie trajektórie pohybu. Hráč nakreslí na dotykovej obrazovke krivku, po ktorej sa potom ovládané objekty pohybujú. Tento spôsob ovládania je vhodný najmä pre aplikácie, v ktorých hráč vykonáva viacero úkonov a nemôţe sa plne sústrediť na ovládanie, prípadne je potrebné ovládať väčšie mnoţstvo objektov. Nevýhodou je relatívna nevhodnosť na vyuţitie v dynamických hrách. Tento spôsob sa vyuţíva napríklad v úspešnej hre FlightControl. 2.3 Prehľad navrhovaných herných konceptov Vhodný herný nápad je pri tvorbe hry takmer to najdôleţitejšie. Takýto nápad musí byť jednoducho a rýchlo pochopiteľný, zábavný a zároveň aj pútavý. Hráč sa musí pri ňom zabávať, ale necítiť únavu či nudu. Toto sa dá dosiahnuť rôznorodosťou herných úrovní a miernou úpravou hernej podstaty, ako je napríklad pridanie silnejšej zbrane, rýchlejšieho auta a pod. 11

Týmto spôsobom sa ale nedá úplne zmeniť herný koncept (prípadná zmena sa môţe veľmi negatívne premietnuť na hrateľnosť a vo všeobecnosti nie je veľmi odporúčaná). Počas analýzy úspešných hier a následného brainstormingu herných konceptov sme dospeli k viacerým herným konceptom. Snaţili sme sa pritom drţať hlavnej témy súťaţe, ktorá si ukladá za povinnosť myšlienku: Imagine a world where technology helps solve the toughest problems. Teda vytvoriť hru, ktorá by pomohla vyriešiť niektorý z hlavných celosvetových problémov. 2.3.1 Biela krvinka Herný koncept bielej krvinky je zdravotnícka téma podporujúca miléniové ciele Reducing child mortality a Combating widespread disease. Zakomponovanie scenára opisujúceho jeden zo spomínaných cieľov by nemal vplyv na hru samotnú, preto nemá zmysel ho konkretizovať pred výberom konkrétnej témy. Predpokladáme, ţe v danej problematike by nebol problém nasmerovať príbeh ţiadaným smerom. Herný koncept by vyuţíval prvky súboja, konkrétne medzi bielou krvinkou a nepriateľskými baktériami či vírusmi. Spôsob prístupu k hlavnému hrdinu sme rozdelili na dva základné: Pohľad z prvej osoby: na obrazovke by sa biela krvinka nenachádzala, hráč by bol v jej pozícií a plnil cieľ ničenia neţiaducich elementov v tele. Pohľad z tretej osoby: hlavný hrdina hry by aktívne vystupoval na obrazovke a svoju polohu na nej by s časom menil Hra by bola jednoznačne štylizovaná ako viac úrovňová. Jednotlivé úrovne by mali byť dostatočne krátke, aby bol hráč motivovaný hru dokončiť. S osvojením si vlastností ovládania by úrovne mali svoju náročnosť zvyšovať a nenudiť. Vzhľadom na prítomnosť súboja by mohla byť veľmi jednoducho pričlenená myšlienka ako zlepšujú technológie ţivot. Technológiu by predstavovali rôzne zbrane alebo lieky, ktorými by biela krvinka disponovala. 2.3.2 Farmár Problematika Hunger nás viedla k vytvoreniu konceptu Farmár. Cieľom hry by bolo oboznámiť hráča s poľnohospodárskou problematikou a efektívnosti vyuţívania zdrojov ako pôda, voda, slnečné ţiarenie, hnojivá, rastlinné semená, poľnohospodárske zvieratá a iné. Motivácia hráča by nebola len osvojenie si nových vedomostí z farmy ale najmä moţnosť z takto dopestovaných, či dochovaných produktov nakŕmiť hladných a upozorniť tak obyčajného človeka, ţe aj v dnešnej dobe nie je pre mnohých ľudí samozrejmosťou plný ţalúdok. Herné prostredie by sa skladalo z poľa zo surovín a nástrojov vhodných na jeho obrábanie. Okrem toho by sa objavovali hladujúci ľudia, čakajúci na jedlo. Úlohou hráča by bolo obrábať pole takou rýchlosťou ako ľudia prichádzajú. Po nenakŕmení človeka v danom časovom úseku by nezomrel, keďţe tento element nepokladáme za vhodný. Namiesto toho by sa postupne zobrazovali animácie ako ho bolí brucho, točí sa mu hlava a nakoniec odpadne a 12

príde po neho sanitka s infúziou. Farmár by mal takto povolený len istý počet výjazdov sanitiek za úroveň a po jeho prekročení by sa hra skončila. Ako vhodnejšie charaktery by sme zvolili zvieracie postavy, ako farmára aj hladujúcich. Takýto koncept by potom pôsobil menej uráţlivo voči ľudskej dôstojnosti. Pre technológie v takomto koncepte vidíme široké pole pôsobnosti od hnojív, cez umelé zavlaţovanie aţ po geneticky modifikované rastliny. 2.3.3 Ekosystém Pre oblasť Environment sme dospeli ku hernému konceptu, ktorý by pojednával a simuloval podmienky potravinového reťazca. Hráč by si tak osvojoval aké sú vzájomné vzťahy medzi jednotlivými ţivočíšnymi druhmi a nutnosť udrţiavať ich vzájomnú rovnováhu. Hra by mohla byť realizovaná v dvoch princípoch členenia: Krátke úrovne: pri tomto princípe by bolo cieľom úrovne vytvoriť rovnováhu na dané časové obdobie pri vyuţití vopred stanovených druhov. Tie by sa s meniacou úrovňou menili, rovnako ako ich počet. Kam aţ zájdeš: Cieľom hry by bolo vydrţať čo najdlhšie. Hra by musela byť navrhnutá tak, aby s pribúdajúcim časom hrania sa úroveň sťaţila aţ na takú úroveň, ţe všetky druhy vymrú. Hru by teda nebolo moţné hrať do nekonečna. Výsledkom pre hráča by bol časový údaj o dobre udrţania rovnováhy. V takejto hre by mohli byť zakomponované idei evolúcie druhov a zmeny väzieb. Do hry musí hráč istým spôsobom zasahovať. Mohol by loviť premnoţené druhy, vytláčať ich na územie s hladujúcimi predátormi, ničenia a prispôsobovania ţivotného prostredia v danej lokácii a iné. Tieto akcie by mohli byť časované nasledovne: V reálnom čase: Hra sa počas procesu nezastavuje. Hráč tak musí reagovať na aktuálnu situáciu a vykonávať len jednu operáciu v čase. Po časových úsekoch: po pevne nastavených časových intervaloch by sa hra prerušila a čakala na hráčove príkazy. Ich počet a intenzita by mohli (ale aj nemuseli) byť limitované. Technológia by mohla byť predstavená ako prostriedok na riadenie správania sa druhov. Ich úroveň by mohla vzrastať, napr. sekera a motorová píla. Technológia by mohla byť vyuţitá aj pri ţivelných alebo iných pohromách (havária ropného tankeru). 2.3.4 Budovanie infraštruktúry Veľmi populárnou témou za posledné ročníky súťaţe ImagineCup bolo budovanie infraštruktúry. V tomto smere nie je moţné vytvoriť originál, jednalo by sa iba o rozšírenú verziu SimCity o jeden z miléniových cieľov. Myslíme si, ţe hra podobného štýlu, hoci by bola vysoko prepracovaná, je odsúdená na neúspech. Ak by sa nejednalo o mnohonásobne vyuţitý koncept, tak priestor pre tvorbu a ďalšie rozšírenia by bol dostatočný, aby hra zaujala. Keďţe tomu tak nie je, rozhodli sme sa po pomerne krátkej dobe sa tomuto konceptu nevenovať a nerozvíjať ho. 13

2.4 Dostupné softvérové frameworky Pri vývoji hry nám môţu značne uľahčiť prácu uţ existujúce frameworky, z ktorých by sme mohli pouţiť určité komponenty. V analýze sa preto zameriame na trojicu frameworkov, ktoré sú najviac vyhovujúce na tvorbu našej hry. Všetky pochádzajú od spoločnosti Microsoft, keďţe sú priamo podporované na telefónoch s operačným systémom Windows Phone 7 a aj oficiálne podporované zo strany súťaţe ImagineCUP. 2.4.1 Silverlight 5 Microsoft Silverlight je aplikačný protokol vhodný na programovanie a spúšťanie internetových aplikácií, pričom sa vo svojej podstate veľmi podobá na konkurenčný Adobe Flash. Spustiteľné prostredie Silverlight aplikácií sa realizuje pomocou doplnkov do internetových prehliadačov. Obrázok 9 - Logo Microsoft Silverlight Zatiaľ čo prvotné verzie Silverlight boli určené najmä na streamovanie videa, tak súčasná verzia sa sústreďuje na multimédiá, grafiku a animácie. Toto umoţňuje programátorom jednoduchšie realizovať základné grafické rozhranie aj na zariadeniach s operačným systémom Windows Phone 7. Silverlight predstavuje jednu z dvoch aplikačných platforiem pre tento operačný systém. Prvá verzia Silverlight bola vypustená v roku 2007, zatiaľ čo posledná štvrtá v apríli 2010. Samotný Silverlight je kompatibilný s viacerými internetovými prehliadačmi na operačných systémoch od Microsoft Windows, cez Mac OS X aţ po Symbian či Phone 7. Bezplatná softvérová implementácia Moonlight umoţňuje spúšťať Silverlight verzií 1 a 2 aj na platforme Linux, FreeBSD, či iných open-source platformách. Keďţe je platforma Microsoft Silverlight vhodná najmä pre webové aplikácie a hry, tak pri tvorbe našej hry sa skôr zameriame na ďalšie frameworky, ktoré poskytujú priamo kniţnice na vykresľovanie grafiky, prehrávanie zvuku a pod. 5 http://www.silverlight.net/ 14

2.4.2.NET 6.NET Framework je integrálnou súčasťou systému Windows, ktorá podporuje vytváranie a beh novej generácie aplikácií a webových sluţieb na báze XML. Obsahuje dva hlavné komponenty: Common Language Runtime(CLR).NET Framework class library(fcl) CLR zabezpečuje funkciu code management počas behu programu, konkrétne riadenie pamäte (memory management), riadenie vláken (thread management) a ďalšie funkcie zabezpečujúce robustnosť. Kniţnica FCL slúţi ako vyčerpávajúca kolekcia tried rôznych druhov, ktoré môţu byť pouţité pri vývoji. Obrázok 10 - Logo Microsoft.NET 4.0 Obrázok 11 - Rozloženie komponentov v.net 4.0 6 http://msdn.microsoft.com/en-us/library/zw4w595w.aspx 15

Cieľom je poskytnúť konzistentné objektovo orientované prostredie a tieţ bezpečné prostredie na spúšťanie a beh kódu (code execution environment)..net Compact Framework prináša tieto výhody aj na zariadenia s obmedzenými zdrojmi, ako napríklad aj mobilné telefóny. Rozloţenie jednotlivých komponentov v.net 4 je znázornené na obrázku niţšie. 2.4.3 XNA Microsoft XNA je súbor nástrojov a prostredia, ktoré umoţňuje zjednodušene vytvárať, ladiť a spravovať hry. Pomenovanie XNA pôvodne pochádza zo skratky Xbox New Architecture. XNA si kladie za cieľ odbremeniť vývojárov jednoduchých hier od nízkoúrovňových problémov a ponúka im moţnosti pouţiť uţ existujúce kniţnice. Tento koncept prudko redukuje čas potrebný na vytvorenie hry a vývojári sa tak môţu lepšie sústrediť na ďalšie aspekty hry. Obrázok 12 - Logo Microsoft XNA Súbor nástrojov XNA bol vydaný v roku 2004. V súčasnosti je aktuálna verzia 4, ktorá bola vydaná v roku 2010 spoločne s ďalšími vývojárskymi nástrojmi pre platformu Windows Phone 7. XNA nepokrýva len mobilnú platformu, ale umoţňuje tvorbu hier aj na platformu Xbox. Súbor nástrojov XNA je pre naše potreby mimoriadne vyhovujúci. Veľa prvkov, ktoré chceme pouţiť v našej hre (2D grafika, animácie, hudba, zvukové efekty a iné) je obsiahnutých priamo v kniţniciach XNA. Framework XNA sa zakladá na platforme.net, pričom ako hlavný programovací jazyk je vyuţitý C#. Pre vývoj našej hry sú mimoriadne dôleţité dostupné ukáţkové príklady a web http://msdn.microsoft.com, ktorý nielenţe obsahuje názorné príklady pouţitia jednotlivých kniţníc, ale poskytuje aj moţnosti riešenia problémových situácií. Po rozsiahlejšej analýze sme sa rozhodli pouţiť ako nosnú platformu pre našu hru práve XNA framework v spolupráci s.net frameworkom, ktorý umoţňuje jednoduchý implementáciu všetkých našich nápadov a taktieţ aj poţiadaviek. 16

3 Špecifikácia požiadaviek na tvorbu hry Kapitola špecifikácie poţiadaviek sa sústreďuje na skrátený opis navrhnutého finálneho herného konceptu, ktorý vzišiel z predchádzajúcej podrobnej analýzy. K špecifikácií patrí aj pouţité vývojové prostredie, ktoré budeme pouţívať pri tvorbe tejto hry. 3.1 Výber finálneho konceptu Aj napriek tomu, ţe v analýze sme pojednávali o štvorici vhodných herných konceptoch, do špecifikácie a následného návrhu sme ich nezahrnuli, keďţe kaţdý z konceptov mal nedostatky v oblasti stanovených prvkov úspešnosti alebo nedostatočne rešpektoval zadanú tému súťaţe. Po hlbšej analýze herných konceptov úspešných hier a moţností ako jednoduchým spôsobom vykresliť spôsob ako moderné technológie pomáhajú zlepšiť ţivot ľuďom, sme sa rozhodli pre stvárnenie ich pozitívneho vplyvu pri riešení problému najrozšírenejších ochorení (Combating widespread disease). V konečnej fáze analýzy rôznych celosvetových problémov (najmä tých definovaných OSN) sme dospeli k záveru, ţe zvolená téma boja proti najrozšírenejším chorobám poskytuje najväčšie moţnosti zakomponovania technológií do herného konceptu, kde sa bude stvárňovať vývoj nových medicínskych technológií. (Môţe sa jednať napríklad o liečivá alebo aj zatiaľ neexistujúce sci-fi technológie.) Cieľom hry je zničenie choroboplodných organizmov do určitého časového limitu. Podrobnejší opis scenára, herného konceptu, spôsobu ovládania ako aj ilustračné obrázky sa nachádzajú v nasledujúcej kapitole (Návrh mobilnej hry). 3.2 Vývojové prostredie Vzhľadom na podmienky súťaţe a platformy Windows Phone 7 na ktorej bude realizovaná naša hra sme v rámci kompatibility obmedzení na vývojové prostredie Visual Studio od spoločnosti Microsoft. Budeme pouţívať verziu Visual Studio 2010 Express for Windows Phone, ktorá obsahuje Windows Phone SDK 7.1 so softvérovým emulátorom mobilného telefónu, na ktorom môţeme rýchlo testovať vykonané zmeny v zdrojovom kóde. Samotné Windows Phone SDK 7.1 zahŕňa aj všetky poţadované pracovné frameworky Microsoft Silverlight,.NET a aj XNA. Výhodou tohto prostredia je jeho rozšírenosť, vďaka čomu sa na internete a rôznych publikáciách nachádza mnoţstvo vzorových príkladov, ktoré nám umoţnia rýchlejšie začatie prác na projekte. Bezplatná 30-dňová verzia je prístupná na webe 7 Microsoftu. Po uplynutí tejto časovej lehoty je nutné toto vývojové prostredie zaregistrovať, čo ale pre nás nepredstavuje problém, keďţe ako súťaţiaci v ImagineCUP máme túto registráciu zdarma. 7 http://www.microsoft.com/visualstudio/en-us/products/2010-editions/windows-phone-developer-tools 17

4 Návrh prototypu mobilnej hry Kapitola s návrhom mobilnej hry sa venuje hlbšiemu rozpracovaniu témy, ktorú sme si zvolili na základe podrobnej analýzy hier opísanej v kapitole Analýza. Návrh je rozdelený do podkapitol Scenár, Herný koncept, Ovládanie, Grafické používateľské rozhranie a Predbežný grafický návrh. Scenár popisuje celkový dej hry a všetky súvislosti, ktoré budú naznačené v úvodnom videu pri spustení hry. Herný koncept sa zas zameriava na všetky herné a technologické aspekty hry. V podkapitole Ovládanie je bliţšie opísaný spôsob pouţívateľskej interakcie s navrhovanou hrou. Podkapitola Grafické používateľské rozhranie definuje jednotlivé ovládacie obrazovky, ich spojitosť a rozdelenie hernej plochy. Posledná podkapitola Predbežný grafický návrh obsahuje jednoduché náčrty hlavného hrdinu a iných prvkov. 4.1 Scenár Na začiatku hry sa bude nachádzať krátky úvod s predstavením hlavného hrdinu, ktorým je malý nanobot Jimmy. Je to výsledok najnovšej medicínskej technológie, ktorý má byť riešením všetkých problémov s najrozšírenejšími zákernými ochoreniami na svete. Pri predstavovaní však ochorie zvieratko a Jimmy má prvú príleţitosť preukázať svoje schopnosti pri boji s choroboplodnými organizmami. (Zvieratká sme zvolili najmä na základe analýzy hier, kde sa vyskytujú charizmatickí a milí hrdinovia a tieţ, ţe v prípade neúspechu v úrovni môţeme šetrnejšie vykresliť zlyhanie ako pri ľudskom hrdinovi.) Zobrazí sa krátke video znázorňujúce choré zvieratko v posteli s teplomerom v ústach a Jimmyho, ktorý prichádza na pomoc. V tomto momente sa začína samotná hra, ktorej cieľom je v čo najkratšom čase vyhubiť všetky baktérie a vírusy, aby sme zachránili ţivot chorému zvieratku. Podrobný popis herného konceptu sa nachádza v nasledujúcej kapitole. Po úspešnom zničení choroboplodných zárodkov uţ zostáva len poraziť hlavný zdroj ochorenia zvieratka - najsilnejšiu baktériu. Potom nám zvieratko vyzdravie a je predstavená nová technológia, ktorá pomáha Jimmymu ešte efektívnejšie bojovať s vírusmi a baktériami. Nanešťastie vzápätí ochorie iné zvieratko, ktoré je potrebné zachrániť no s novými vylepšeniami dokáţe nanobot Jimmy úspešne bojovať aj proti hrozivejším baktériám v sérii ďalších úrovní. V prípade, ţe sa nepodarí v stanovenom čase odstrániť baktérie a ostatné škodlivé organizmy, zvieratko sa uţ nepodarí zachrániť a je ponúknutá moţnosť opakovať danú úroveň. Celú dejovú líniu prehľadnejšie opisuje diagram na obrázku 13. 18

4.2 Herný Koncept Obrázok 13 - Vývojový diagram scenára hry Hlavnou témou navrhovanej hry je boj proti najrozšírenejším ochoreniam stvárnený bojom nanobota Jimmyho proti baktériám a vírusom. Tento koncept vychádza z konceptu bielej krvinky, ktorý je rozobratý v časti analýza. Je ale upravený a výrazne konkretizovaný. 4.2.1 Pohyb Jimmy sa pohybuje odráţaním od stien, pričom jeho pohyb je moţné kontrolovať iba nepriamo - kreslením stien na displej, od ktorých sa bude odráţať. Kreslenie je realizované gestom potiahnutia prstu po displeji, kde výsledná stena sa bude generovať ako spojnica prvého a posledného bodu dotyku. Týmto spôsobom zabezpečíme intuitívne a jednoduché ovládanie, aj keď reálne nakreslená stena nie je priamka. Podrobnejší popis ovládania sa nachádza v podkapitole Ovládanie. 4.2.2 Vylepšenia Samotné ničenie choroboplodných zárodkov je zabezpečené jednoduchým narazením prípadne preletením nanobota cez baktériu/vírus a rozhodovať o tom bude druh baktérie/vírusu. Aby hra nebola monotónna, je potrebné zakomponovať viac moţností na boj, čo bude 19

realizované rôznymi novými technológiami vylepšujúcimi schopnosti Jimmyho. Tento prvok je dôleţitý aj z hľadiska splnenia podmienok špecifikovaných súťaţou Imagine Cup. Rôzne moţnosti vylepšovania sme popísali v podkapitole Technologické vylepšenia. Dôleţité je poznamenať, ţe postupom v hre bude môcť hráč vyuţívať stále pokročilejšie technológie. 4.2.3 Nepriatelia V hre bude samozrejme aj niekoľko rôznych druhov baktérií a vírusov odlišujúcich sa výzorom i vlastnosťami ako napríklad vyššia odolnosť, rýchlosť pohybu a podobne. Po prejdení určitého počtu úrovní sa na konci sekcie objaví hlavný nepriateľ, predstavujúci zdroj ochorenia zvieratka. Jeho zničenie bude náročnejšie, ale po úspešnom zvládnutí tejto mini-úrovne bude hráč odmenený novou technológiou, ktorá mu v ďalších úrovniach zjednoduší postup. 4.2.4 Cieľ hry Cieľom hry bude v určitom časovom limite závislom na konkrétnej úrovni vyničiť všetky baktérie a vírusy. Tento čas predstavuje ţivot chorého zvieratka, ktoré treba zachrániť a čím viac baktérií je na obrazovke, tým rýchlejšie z neho ubúda. 4.2.5 Zvyšovanie obtiažnosti Ďalším dôleţitým prvkom bude stúpajúca obtiaţnosť úrovní. Táto vlastnosť je aj jedným zo základných prvkov hier všeobecne, čo potvrdzujú aj výsledky našej analýzy hier. V našom návrhu je viacero spôsobov zvyšovania obtiaţnosti vo vyšších úrovniach: Celkové zrýchlenie hry - predstavuje pre hráča výzvu najmä v oblasti ovládania a sústredenia. Zrýchli sa pohyb Jimmyho a taktieţ nepriateľov, čo spôsobí vyššiu náročnosť pri "triafaní" nepriateľov. Nové druhy odolnejších choroboplodných zárodkov - budú rýchlejšie uberať zo ţivota zvieratka a odolnejšie proti Jimmyho útokom. Na ich zničenie bude potrebné niekoľkokrát ich zasiahnuť, čo kladie dôraz na lepšie plánovanie odrazov, aby hráč nestrácal čas. Množenie choroboplodných zárodkov - zvýšenie počtu nepriateľov predstavuje taktieţ výzvu, pričom sa budú rozmnoţovať vo vyšších úrovniach rýchlejšie ako v niţších. Vyšší počet nepriateľov znamená, ţe bude rýchlejšie ubúdať zo ţivota zvieratka a teda kladie dôraz na sústredenie. V prípade, ţe v neskorších fázach zistíme potreby spestrenia prostredia hry, rozpracujeme moţnosť vloţenia objektov ako napríklad pohybujúce sa veľké červené krvinky, prípadne iné objekty, s ktorými by mohli baktérie a hlavný hrdina interagovať. 4.2.6 Skóre Aby sme zabezpečili pre hráčov moţnosť porovnávať si medzi sebou výsledky, budeme jednotlivé úrovne hodnotiť podobne ako v hre Angry Birds popisovanej v analýze. Hodnotenie sa bude zakladať na čase, ktorý bol potrebný na prejdenie úrovne. Čím rýchlejšie zvládnutá úroveň, tým lepšie hodnotenie, reprezentované počtom kríţikov. Herné štatistiky a moţnosť zdielať svoje skóre online zváţime v neskorších fázach projektu. 20

4.2.7 Technologické vylepšenia Dôleţitým faktorom z hľadiska splnenia podmienok v súťaţi ImagineCUP je zakomponovanie pozitívneho vplyvu technológií na zlepšenie ţivota. V tejto kapitole rozoberáme navrhované spôsoby ako pomocou technológií moţno vylepšiť hlavného hrdinu. Tento prvok je taktieţ dôleţitý z hľadiska hrateľnosti, lebo pri väčšom počte úrovní bez zmeny by sa hra stala neatraktívnou. V súlade so zvolenou témou v súťaţi budeme technologické vylepšenia chápať ako pokroky v medicíne, ktoré zlepšujú úroveň ţivota a zachraňujú ţivoty ľudí i zvierat. Rozhodli sme sa pouţiť výlučne pasívne technológie, ktoré budú mať po aktivácii tlačidlom automatický efekt bez potreby ďalšieho ovládania. Je to z toho dôvodu, ţe hráč bude dostatočne zaťaţený ovládaním smeru pohybu a bolo by príliš náročné venovať pozornosť zloţitému pouţívaniu technologických vylepšení. Jednotlivé vylepšenia sme rozdelili do niekoľkých tried podľa ich vplyvu na hru. Primárne vylepšenia Priamo ovplyvňujú a zlepšujú schopnosti Jimmyho v boji s baktériami a vírusmi 8 : Zvýšenie účinnosti proti rôznym typom baktérií - toto vylepšenie bude mať vplyv aj na to, či sa Jimmy odrazí resp. preletí cez zničené baktérie a účinnosť na konkrétny druh bude indikovať rovnaká farba baktérie aj technológie (rôzne druhy liekov) Zrýchlenie zrýchli pohyb Jimmyho aby bolo jednoduchšie dobehnúť zamýšľanú baktériu a tieţ jednorazovo zvýši účinnosť (vitamín) Zväčšenie akčného rádiusu - pomocou tohto vylepšenia bude moţné zasiahnuť aj baktérie, ktoré nie sú presne v dráhe pohybu nanobota, ale aj tie, čo sa nachádzajú v jeho blízkosti (ostne, prípadne chápadielka) Rozdvojenie dočasne vytvorí klon nanobota, ktorý je tieţ moţné ovládať kreslením odrazových stien (replikácia) Sekundárne vylepšenia Pomáhajú negatívnym ovplyvňovaním baktérií a umoţňujú kombinovanie s ostatnými druhmi technológií na zlepšenie efektivity: Spomalenie baktérií spomalí baktérie aby ich bolo moţné jednoduchšie trafiť (sirup, zmrazenie) Zväčšenie baktérií Zväčší baktérie taktieţ na zjednodušenie ich zasiahnutia (kontrastná látka) Odhalenie baktérií - niektoré baktérie budú neviditeľné alebo ťaţko rozoznateľné a na určitý čas sa zobrazia po pouţití tejto technológie (ultrazvuk) Priťahovanie baktérií privolá všetky baktérie v určitom polomere okolo Jimmyho a pouţitím primárnych vylepšení ich je moţné zničiť bez nutnosti ich triafať (magnet) 8 Pre jednoduchosť budeme v tejto kapitole všetky choroboplodné zárodky (vírusy, baktérie...) označovať pojmom baktérie 21

Akceleračné vylepšenia Pomáhajú pri navigácii a ovládaní pohybu nanobota, čím je moţné rýchlejšie zničiť všetky baktérie: Zameriavanie lúč, ktorý ukazuje kam sa Jimmy po odraze bude pohybovať (laser) Transport premiestnenie Jimmyho na miesto určené dotykom na displej (teleport) Autonómne (pokročilé) vylepšenia Pasca na baktérie pri pohybe bude za sebou Jimmy zanechávať horiacu stopu (zloţenú z úsekov podľa odráţania), ktorá zničí prvú baktériu, ktorá sa jej dotkne a potom úsek zmizne. Rovnako ako nasledujúca schopnosť ovplyvňuje iba baktérie a nie nanoboty (lieky s pomalým uvoľňovaním) Bomby - podobné ako predchádzajúca schopnosť, ale účinnejšia, kde Jimmy zanechá za sebou bombu, ktorá zničí prichádzajúcu baktériu (antibiotiká) Nanoboti vypustí malé autonómne nanobotíky na jedno pouţitie, automaticky ovládané, ktoré zničia najbliţšie baktérie (nanoboti) Vzdušná podpora pouţitie tejto technológie zavolá posily, ktoré zbombardujú veľkú časť obrazovky určenú dotykom, prípadne náhodne (penicilín) Globálny žolík (trasenie telefónom) technológia efektívna na všetky druhy baktérií s oblasťou pôsobenia na celú obrazovku (gama ţiarenie) 4.3 Ovládanie Na základe analýzy moţností pouţívateľskej interakcie sme sa rozhodli riešiť ovládanie kombináciou nepriameho ovládania s virtuálnymi tlačidlami. Dôvodom je, ţe chceme vytvoriť netradičný spôsob ovládania, ktorý však bude intuitívny a zároveň bude poskytovať dostatočné moţnosti pri zloţitejších akciách. Ovládanie bude zaloţené na kreslení stien pomocou gest, od ktorých sa bude náš nanobot odráţať. Virtuálne tlačidlá budú slúţiť na aktiváciu technológií. Tento spôsob nezaberá miesto na hracej ploche a implementovaním rôznych gest je moţné ovládať veľký počet akcií. Jedinou nevýhodou sa javí problém interpretácie pri zloţitejších gestách, čo však nie je náš prípad, keďţe budeme pouţívať iba jednoduché gestá. Ako bolo spomenuté vyššie, nanobot Jimmy sa bude pohybovať neustálym odráţaním od okrajov obrazovky. Hráč môţe smer pohybu ovládať len nepriamo a to gestami, ktorými bude na displej kresliť steny. Hráč môţe smer pohybu ovládať len nepriamo a to gestami, ktorými bude na displej kresliť steny. Počet stien, ktoré bude moţné nakresliť bude obmedzený na 3 (ak hráč nakreslí 4. stenu, prvá zmizne). Je to z dôvodu, aby sa hracia plocha nestala neprehľadnou. Obrázok 14 ilustruje navrhovaný koncept ovládania. 22

Obrázok 14 - Skica spôsobu ovládania Časti označené I a II predstavujú spolu celú hraciu plochu, ale na displeji bude zobrazená v jednom okamihu vţdy len jedna časť. Podrobnejšie je navrhovaný koncept posúvania zobrazenia opísaný v kapitole Grafické používateľské prostredie a menu. Prerušovaná čiara znázorňuje pohyb nanobota. To, či sa od zasiahnutej baktérie odrazí alebo cez ňu preletí je dané pouţívanými technologickými vylepšeniami a druhom baktérie. Virtuálne tlačidlá budú umiestnené po okrajoch displeja a budú slúţiť na výber a pouţívanie dostupných technológií. Týmto spôsobom zabezpečíme jednoduchú a rýchlu voľbu technológií, ktorú je moţné kombinovať s gestami na ovládanie pohybu. Pri pouţití niektorých pokročilých technológií ako napríklad transport bude moţné priamo dotykom na miesto na obrazovke definovať oblasť účinku. Jedno tlačidlo je rezervované aj na vyvolanie menu z hry. Na začiatku hry bude pohyb baktérií veľmi obmedzený a budú zoskupené do skupiniek, aby ich bolo moţné jednoducho zasiahnuť. Pri postupe do vyšších úrovní bude rásť obtiaţnosť, čo sa prejaví rôznymi spôsobmi, ako to bolo popísané v kapitole Herný koncept. Z hľadiska ovládania pôjde o zrýchlenie pohybu nanobota Jimmyho a taktieţ baktérií, ktoré budú aj viac distribuované po hracej ploche. Na zvládnutie tejto situácie budú dostupné aj akceleračné technológie, ktoré majú napomôcť pri ovládaní. Transportom si hráč bude môcť premiestniť Jimmyho na ľubovoľné miesto na displeji. Tieţ bude môcť pouţiť laserové zameriavanie, ktoré zobrazí presnú dráhu pohybu vrátane odrazov od nakreslených stien. 23

4.4 Grafické používateľské prostredie a menu Po spustení hry sa prehrá krátke animované video, ktoré uvedie hráča do deja. Toto video sa dá preskočiť kliknutím na displej a zbytočne tak nezdrţiavať uţ informovaného hráča. Následne sa zobrazí hlavné menu, ktoré bude obsahovať poloţky: New Game (nová hra) Continue Game (pokračovanie v hre) Scoreboard (tabuľka úspešných hráčov) Settings (nastavenia) Exit (koniec) Kaţdá z týchto poloţiek odkazuje buď na ďalšiu obrazovku, alebo priamo vykoná zvolenú funkciu. Diagram celého ovládacieho menu a aj jeho stručný opis je znázornený na obrázku 15. Za grafickým textom sa bude na pozadí nachádzať obrázok znázorňujúci hlavnú myšlienku hry, ktorý taktieţ dotvára hernú atmosféru. Obrázok bude buď statický alebo animovaný, čo sa určí v neskoršom prototypovaní. Obrázok 15 - Diagram herných obrazoviek Z Hlavného menu sa dá spustiť nová hra, zobraziť tabuľku úspešných hráčov (Scoreboard), zmeniť nastavenia (Settings), alebo celkovo ukončiť hru. Po spustení novej hry si môţe hráč vybrať jednu z úrovní, ktoré uţ prešiel, alebo môţe pokračovať v úrovni, na ktorej skončil. Počas hrania sa dá virtuálnym tlačidlom hra kedykoľvek pozastaviť a vyvolať herné menu v ktorom môţe vykonávať zmeny nastavení, alebo ukončiť hru. Bliţšie špecifikovanie jednotlivých obrazoviek bude nasledovať v ďalšom prototypovaní. 24

Herná obrazovka v menu a aj počas hrania je v reţime landscape, teda naleţato. Tento reţim je výhodný najmä z pohľadu hrateľnosti, keďţe pouţívateľ má k dispozícií širokouhlú obrazovku umoţňujúcu obojručnú manipuláciu. Herné pole je horizontálne predelené na 3 oblasti. Dvojica bočných polí obsahuje virtuálne akčné tlačidlá, ktoré aktivujú dostupné technológie. Tieto tlačidlá majú dynamickú funkciu, keďţe v kaţdej úrovni sú dostupné iné technológie. Funkcie tlačidiel sú pre lepšiu orientácia vizuálne odlíšené podľa ikoniek zobrazujúcich ich činnosti. Na pravej strane je zobrazený aj indikátor ţivota a na ľavej strane je virtuálne tlačidlo pozastavenia hry. Obrázok 16 - Herná obrazovka s virtuálnymi tlačidlami Obrázok 17 - Princíp rozšírenej hernej plochy 25

Keďţe mobilné telefóny disponujú relatívne malou obrazovkou, ktorá môţe obmedzovať herný priestor, tak v prípade pozitívnych výsledkov z testovania prototypu sa rozhodneme, či celkové hracie pole rozšírime na trojnásobok a to tak, ţe obrazovku rozšírime na výšku. Posúvanie bude plne automatické na základe polohy Jimmyho, tak aby sa obrazovka zbytočne stále neposúvala, ale začala sa hýbať len vtedy, keď sa Jimmy dostane do hornej alebo spodnej štvrtiny obrazovky. Algoritmus posúvania taktieţ počíta s moţnosťou odrazenia Jimmyho a zabraňuje tak chaotickému a zbytočnému rolovaniu obrazovky. Princíp rolovania je znázornený na obrázku 17. 4.5 Predbežné grafické návrhy Počas návrhu hry sme vytvorili aj predbeţné grafické návrhy niektorých objektov. Vybrané skice sú znázornené na nasledujúcich obrázkoch. Obrázok 18 - Skice - biela krvinka Obrázok 19 - Skice Jimmy - nanobot 26

Obrázok 20 - Skice - baktérie a vírusy 27

5 Prototyp Cieľom tímového projektu za zimný semester je vytvoriť funkčný prototyp, ktorý bude demonštrovať základnú funkcionalitu a poţiadavky navrhnutého riešenia. Nielenţe takýto prototyp poskytne jednoduchý náhľad na ucelený a funkčný koncept navrhovaného riešenia, ale taktieţ umoţní zistiť oblasti, ktoré môţu byť pri ďalšom programovaní problematické. Prototyp musí byť plne funkčný minimálne v emulátore zariadení. Prototyp bude obsahovať základný herný koncept v plne funkčnej podobe. Namiesto grafických a zvukových prvkov budú pouţité len jednoduché multimediálne súbory, na ktorých si overíme funkčnosť ako animácií, tak aj rôznych audiovizuálnych efektov. Základný herný koncept zahŕňa kreslenie stien, odráţanie hlavného hrdinu, pohyb nepriateľských elementov ako aj ubúdanie ich ţivota. Neskôr sa do hry pridá ešte Menu, Nastavenia, technológie, rôzne druhy nepriateľov a iných elementov. Tento prototyp by nám mal odhaliť všetky problematické oblasti, ktoré nie sme schopní vyriešiť jednoducho pomocou frameworkov, ale vyţadujú si rozsiahlejšie programovanie a teda aj dlhší čas. Pomocou prototypu budeme taktieţ vedieť spresniť časové limity, ktoré si pri vývoji postupne stanovujeme. Nasledujúce kapitoly popisujú jednotlivé dôleţité komponenty, na ktoré sme sa sústredili pri tvorbe prototypu. Tieto komponenty sú základným stavebným kameňom finálnej hry. 5.1 Postupnosť vykonávaných operácií Na úvod je potrebné osvetliť princíp fungovania herného mechanizmu. Ten je v súčasnej verzii hry vykonávaný v nekonečnej slučke bez moţnosti nenásilného ukončenia hry. Mechanizmus obsahuje päť hlavných krokov, ktoré sú ďalej rozvité (Obrázok 21). Po spustení hry dochádza k inicializácií všetkých objektov, teda Jimmyho, zoznam stien a zoznam nepriateľov. Pri inicializácii sa napĺňa jedine zoznam nepriateľov. Zoznam stien je prázdny nakoľko stenu vytvára hráč a nie hra. Všetky zoznamy sú uchovávané v štruktúre list, ktorá je súčasťou prostredia C#. Po úspešnom načítaní a vytvorení všetkých potrebných objektov prichádza na rad sledovanie hráčovej interakcie. Tá predstavuje kontrolu dotykovej obrazovky. Na jej základe je vytvorená nová stena alebo sú menené jej atribúty. Podrobný opis je v kapitole 5.6 Správa používateľského vstupu. Nasleduje aktualizácia všetkých objektov, ktorých atribúty sú periodicky menené. Súčasná verzia prototypu aktualizuje jedine polohy. Objekty, ktoré podliehajú týmto zmenám sú Jimmy a všetci nepriatelia. Pri zmene polohy môţe dochádzať ku kolíziám objektov. Práve tento proces je zachytávaný v ďalšom hlavnom bloku. Okrem detekcie kolízie je potrebné kolíziu aj vyriešiť. To je moţné vyuţitím jedného zo štyroch modelov, pričom kaţdý model sa venuje osobitnému typu kolízie: kolízia Jimmyho/nepriateľa s okrajom obrazovky, kolízia Jimmyho a nepriateľa, kolízia Jimmyho a steny, vzájomná kolízia nepriateľov. 28

Po vykonaní vstupných a logických operácií sú všetky aktívne prvky hry premietnuté do grafickej podoby. Po ukončení cyklu je proces uspaný na dobu zotrvania jedného obrázku na hracej ploche. Cyklus následne začína od sledovania vstupov na dotykovej obrazovke. Obrázok 21 Postupnosť operácií 5.2 Navrhované triedy prototypu Na obrázku 22 je znázornený UML diagram tried pouţitých pri implementácii prototypu. V nasledujúcich podkapitolách sa nachádza podrobnejší popis týchto tried. Definované triedy ešte nie sú finálne a pri postupnom pridávaní ďalších funkcií do hry ich budeme podľa potreby dopĺňať. Na ozrejmenie a otestovanie hierarchie základných objektov v hre ale postačujú. 29

5.2.1 Trieda Character Obrázok 22 - UML diagram tried prototyp Trieda Character je rodičovskou triedou pre triedu Hero, predstavujúcu nanobota Jimmyho a pre triedu Enemy, ktorá predstavuje nepriateľov. Rozhodli sme sa takto z dôvodu, ţe Jimmy a nepriatelia majú veľké mnoţstvo podobných vlastností a tieţ činností, ktoré sa s nimi dajú vykonávať. Obe triedy potrebujú zaznamenať atribúty o svojej polohe, rýchlosti a odkaz na textúru pomocou ktorej sú vykresľované. Spoločné metódy sa týkajú najmä zisťovania vzdialeností medzi objektmi, ktoré sú dôleţité pri riešení kolízií. Metódy SetDeltaPos(), SetAngle a SetSpeed() sú dôleţité pri zmenách smeru pohybu po odrazení od prekáţok. Metódy Draw() a Update() slúţia na obnovovanie pozície a vykresľovanie objektov. 30

5.2.2 Trieda Hero Obrázok 23 trieda Character Trieda Hero je určená na vytvorenie inštancie nanobota Jimmyho v hre bude práve jeden objekt tejto triedy. Rozširuje vlastnosti rodičovskej triedy o atribút technologies, ktorý slúţi na uloţenie konkrétnej pouţívanej technológie. Aby sme mohli určovať ako efektívne dokáţe Jimmy bojovať proti nepriateľom, je potrebné udrţiavať informácie o veľkosti poškodenia, ktoré udeľuje nepriateľom v prípade kolízie. Na to slúţi atribút damage. V ďalších fázach vývoja budeme túto triedu dopĺňať, ale pre potreby prototypu nám táto reprezentácia postačuje. 5.2.3 Trieda Enemy Obrázok 24 Trieda Hero Trieda Enemy reprezentuje nepriateľov. Táto trieda nám na reprezentáciu baktérií aj vírusov v prototype postačuje, keďţe môţeme jednotlivým objektom nastaviť rôzne hodnoty definujúcich atribútov. Atribút durability predstavuje odolnosť nepriateľa a tým pádom aj počet zásahov potrebných na jeho zničenie. Po kaţdom zásahu sa z neho odráta príslušná hodnota podľa atribútu damage v triede Hero. Pri poklesnutí na 0 je nepriateľ zničený. Ostatné atribúty sú pouţité na definovanie spôsobu pohybu objektu spolu s metódou UpdatePosition(). Nepriatelia sa pohybujú náhodne, pričom anglerange je uhol zmeny smeru a periodicity udáva ako často sa zmena udeje. 31

5.2.4 Trieda Wall Obrázok 25 Trieda Enemy Táto trieda predstavuje steny, ktoré hráč nakreslil za účelom ovládania pohybu Jimmyho. Je tvorená 2D textúrou, začiatočným a koncovým bodom. Atribút active slúţi na odlíšenie aktívnych a neaktívnych stien pri algoritme zisťovania kolízií. Neaktívne steny sú indikované hráčovi graficky - vyplnením rozdielnou textúrou, ktorá je uloţená v atribúte walltextureinactive. Metóda GetDistance() slúţi na zistenie vzdialenosti medzi koncovým a začiatočným bodom steny. GetUprightDistance() je ťaţiskovou metódou pri výpočte vzdialenosti Jimmyho od steny pomocou rekurzívnej triangulácie, ktorej vysvetleniu sa bliţšie venujeme v kapitole 5.4 Detekcie kolízií. Ďalšie metódy sú pouţívané pri vykresľovaní steny a zaisťovaní konzistencie grafickej a matematickej reprezentácie steny. (Pre podrobnejší popis viď kapitolu 5.7 Vykresľovanie na displej). 5.2.5 Trieda Technology Obrázok 26 Trieda Wall Trieda Technology nebola v prototype pouţitá. Vytvorili sme ju zatiaľ bez atribútov a metód, ktoré neskôr doplníme. Objekty tejto triedy budú predstavovať technologické vylepšenia 32

pomáhajúce Jimmymu bojovať proti nepriateľom podľa princípu popísaného v návrhu. Na rozlíšenie, ktorú technológiu hráč aktivoval slúţi atribút technologies v triede Hero, kde je uloţená referencia na konkrétnu pouţívanú technológiu. 5.3 Orientácia priestoru Pri určovaní smeru pohybu charakterov alebo orientácie steny vyuţívame spomínané premenné angle a deltaposition. Na správnu orientáciu v priestore musíme uvaţovať vzájomnú polohu osí X a Y obrátene. Teda tak, ţe os X smeruje doprava s os Y dole (obrázok 27). Takéto orientovanie je vhodné si osvojiť hlavne pre správnu interpretáciu všetkých atribútov typu Vector2. Takéto usporiadanie osí platí iba v landscape otočení obrazovky, čo predstavuje pre vyvíjanú hru natívne natočenie. Iné otočenie obrazovky v rámci hry nepredpokladáme. Obrázok 27 Orientácia základných osí v landscape Z orientácií osí vyplýva aj hodnota uhlov, ktorá je rovnako (zrkadlovo) otočená voči horizontálnej osi (obrázok 28). Pre jednoduchšiu implementáciu sme sa rozhodli označovať uhly kladnými hodnotami v radiánoch v rozpätí <0, 2π). Preto je potrebné, aby kaţdá metóda na svojom výstupe dávala takúto hodnotu. Nevyhnutnou podmienkou pre nastavovanie uhlov je prepočet všetkých hodnôt opisujúcich tento jav. Nemôţe sa teda stať, ţe zmena atribútu angle v charaktere nezmení atribút deltaposition, alebo naopak. Obrázok 28 Orientácia uhlov 33

5.4 Detekcie kolízií Detekcie kolízií patria v našej hre k najdôleţitejším prvkom, bez ktorých by bol celý herný koncept nefunkčný. Detekcie kolízií zabezpečujú nielen udrţanie herných charakterov v rámci hracej obrazovky, ale zabezpečujú aj určovanie kolízií Jimmyho so stenami a nepriateľmi. Dokonca aj samotní nepriatelia môţu navzájom kolidovať, čo sa prejaví ako ich vzájomný odraz. Neoddeliteľnou súčasťou detekcií kolízií sú aj metódy spracovania kolízií, ktoré sú volané len v prípade nastania nejakej kolízie a zabezpečujú korektné odrazenie alebo správanie jednotlivých charakterov v hre. Spracovania kolízií sú bliţšie opísané v kapitole 5.5 Spracovanie kolízií. V hre detegujeme 3 typy kolízií: kolízie medzi dvomi charaktermi, kolízie s hranicami obrazovky a kolízie s nakreslenými stenami. Všetky typy kolízií pouţívajú vlastné algoritmy, ktoré sú bliţšie opísané v nasledujúcich podkapitolách. 5.4.1 Kolízie medzi dvomi charaktermi Kolízia medzi dvomi charaktermi nastane v situácií, keď Jimmy narazí na jedného z nepriateľov (baktéria alebo vírus), prípadne sa zrazí dvojica nepriateľov. Kaţdý charakter v hre je reprezentovaný objektom, ktorý ma svoj vlastný polomer. Vzájomná vzdialenosť dvojice charakterov a teda vzdialenosť ich stredov je znázornená na obrázku 29. Obrázok 29 Vzdialenosť dvojice charakterov Charaktery ale nebývajú väčšinou v jednej rovine a tak sa ich vzdialenosť musí dopočítať pomocou rozdielov súradníc na súradnicovej osi na ktoré aplikujeme Pytagorovu vetu. Prepona v takomto pravouhlom trojuholníku reprezentuje vzájomnú vzdialenosť charakterov. Ak je táto vzdialenosť menšia ako súčet polomerov obidvoch charakterov, tak nastala kolízia a je zavolaná metóda spracovania danej kolízií. Detekcia kolízií charakterov musí byť volaná pre kaţdú dvojicu objektov v reálnom čase, teda pri snímkovej frekvencii 30 obrázkov za sekundu. 5.4.2 Kolízie s hranicami obrazovky Keďţe hra sa odohráva ma obmedzenej obrazovke mobilného telefónu, tak sme nútení riešiť aj kolízie charakterov s hranicami obrazovky. Hranice obrazovky sú v podstate virtuálne steny, ktoré sú rovnobeţné so súradnicovým systémom a kolíziami s nimi sú ovplyvnení nepriatelia a aj Jimmy. Pri kolízií zo stenou sa aplikuje fyzikálny princíp uhlov dopadu a odrazu, ktoré musia byť zhodné. Na to aby sme aplikovali tieto uhly správne, tak potrebujeme zistiť presné miesto kolízie. Keďţe ale kaţdá hranica obrazovky má minimálne jednu zo súradníc nulovú, tak kolmú vzdialenosť charakteru od hranice zistíme jednoduchým odpočítaním nuly od pozície charakteru. Nulu odpočítame pretoţe v neskoršej fáze hry, keď budú po bokoch obrazovky 34

ikonky technológií, tak tieto virtuálne steny len posunieme a namiesto nuly sa bude odpočítavať stanovená konštanta. Zdrojový kód je vďaka tomu uţ na toto predpripravený. Kolízia nastáva v prípade, ţe vypočítaná vzdialenosť je rovná alebo menšia ako polomer sledovaného objektu. V tomto prípade sa zavolá správna metóda spracovania kolízie, ktorá upraví smer pohybu charakteru. Metóda detekcie kolízie s hranicami obrazovky tak musí byť volaná pre kaţdý charakter v hre. 5.4.3 Kolízie so stenami Obrázok 30 Vzdialenosť charakteru od hranice obrazovky Najproblematickejšou časťou detekcií kolízií bola kolízia s nakreslenými stenami najmä preto, ţe nemusia byť rovnobeţné so súradnicovým systémom, čo nám narúša jednoduchý algoritmus zisťovania vzdialeností. Namiesto toho potrebujeme zisťovať kolmú vzdialenosť na stenu, s ktorou zvierame ľubovoľný uhol. Existuje viacero metód zistenia kolmej vzdialenosti, avšak po rozsiahlej diskusii sme sa rozhodli zvoliť metódu rekurzívnej triangulácie. Triangulácia funguje na princípe, ţe stenu si rozdelíme na polovice, pričom s vyuţitím Pytagorovej vety vypočítame vzdialenosti objektu od jednej hranice, následne od stredu a na koniec od druhej hranice steny. Z matematického princípu musí byť vzdialenosť od stredného bodu najkratšia. Následne zvolíme druhú najkratšiu vzdialenosť, teda začiatočný alebo konečný bod. Zvolená dvojica bodov nám určuje časť úsečky steny, ku ktorej je vedená kolmica z charakteru. Tento postup rekurzívne opakujeme s novou úsečkou, aţ pokiaľ nie je rozdiel dvojice najkratších vzdialeností menší ako stanovená chyba merania. Tento postup nám so zvolenou chybou merania dokáţe určiť poţadovaný bod kolmice, z ktorého následne priamou vzdialenosťou zistíme vzdialenosť objektu od steny. Chyba merania musí byť zvolená vhodne, pretoţe algoritmus by sa mohol vykonávať zbytočne dlho a jeho skoršie ukončenie značne zniţuje výpočtovú náročnosť, ktorá exponenciálne narastá, keďţe rekurzívnu trianguláciu musíme volať pre kaţdú aktívnu stenu na obrazovke. Jednotlivé fázy činnosti rekurzívnej triangulácie sú znázornené na obrázkoch 31-34. 35

Obrázok 31 Prvá fáza rekurzívnej triangulácie V prvotnej fáze triangulácie sa vyberie dvojica kratších vzdialeností, ktoré určia hranicu novej úsečky na ktorú rekurzívne zavoláme trianguláciu. Obrázok 32 Druhá fáza rekurzívnej triangulácie Rekurzívna triangulácia pokračuje v druhej fáze rovnako ako v prvom kroku. 36

Obrázok 33 Tretia fáza rekurzívnej triangulácie V tretej fáze sa pokračuje podobne ako v predošlých fázach, avšak overuje sa aj rozdiel medzi vzdialenosťami D2 a D3. V tomto prípade je rozdiel ešte dostatočne veľký a tak sa opäť rekurzívne zavolá triangulácia. Obrázok 34 Posledná fáza rekurzívnej triangulácie určuje kolmú vzdialenosť so zvolenou nepresnosťou V poslednej fáze sa zistí, ţe rozdiel vzdialeností D1 a D2 je menší neţ stanovená chyba merania. V tomto prípade sa zvolí kratšia vzdialenosť medzi stredom zisťovaného objektu a bodom D2 alebo D3, ktorá reprezentuje kolmú vzdialenosť. Takáto reprezentácia síce nie je úplne presná, avšak pre potreby našej hry je plne dostačujúca, keďţe body v súradnicovom systéme sú chápané ako celočíselné hodnoty. 37

Po zistení kolmej vzdialenosti ju uţ stačí len porovnať s polomerom objektu a ak je vzdialenosť kratšia, tak opäť zavolať správnu metódu spracovania kolízií. V priebehu testovania sme narazili na závaţný problém so spracovaniami kolízií na hraniciach steny, ktoré sa správalo ako beţný odraz, avšak v skutočnosti by došlo k spätnému odrazeniu objektu od tejto hrany. Pred volaním metódy spracovania kolízie tak overujeme, či rekurzívna triangulácia nevrátila kolmú vzdialenosť k jednému z hraničných bodov. Táto situácia nastane len v prípade, ţe Jimmy smeruje pod ostrým uhlom na jeden z hraničných bodov steny (najčastejšie letí rovnobeţným smerom so stenou na rovnakej úrovni). 5.5 Spracovanie kolízií Po správnej detekcii kolíznej situácie je potrebné ošetriť správanie sa objektov. Je pri tom nutné vychádzať z prirodzeného správania sa objektov v reálnom svete. Hráč bude môcť intuitívne ovládať hru. Riešenie kolízií moţno rozdeliť na rovnaké typy prípadov, ako tomu bolo u ich detekcií. Výsledok takýchto operácií môţe byť predovšetkým zmena smerovania (angle) objektu. Smer ale nie je uchovávaný jedine v spomínanom atribúte, ale aj v atribúte deltaposition, ktorého hodnota je rovnako menená v zapuzdrenej metóde setangle(). V niektorých prípadoch sa menia aj ďalšie atribúty opisujúce stav objektu. 5.5.1 Kolízia so stenou a hranicou obrazovky Pri riešení kolízie medzi Jimmym a stenou vyuţívame všeobecný model odrazu (Obrázok 35). Ten v zjednodušení hovorí o tom, ţe uhol odrazu sa rovná uhlu dopadu. V našej orientácií priestoru je nutné takýto model výrazne prepracovať, keďţe nemáme dostupné veľkosti uhlov vzhľadom na kolmý priemet steny. Na výpočet ţiadaných veličín máme dostupné atribúty a metódy vyjadrujúce uhol smerovania (Character), či naklonenia objektov (Wall) vzhľadom na nulový bod sústavy. Postupnými hľadaním cez podobnosti trojuholníkov sme dospeli k výsledku: ( ) kde označuje smer odrazu, smer dopadu, naklonenie steny a výsledok funkcie mod() je zvyšok po delení. Všetky uhly sú vyjadrované podľa obrázka 28. Výsledný odraz s naznačením uhlov a výpočtom je na obrázku 36. Obrázok 35 Všeobecný zákon odrazu 38

Obrázok 36 Zákon odrazu v implementovanom prostredí Rovnaký model je moţné aplikovať aj pri kolízii objektu s hranicou obrazovky. Hranice ale nie sú špeciálne reprezentované v triede, preto je nutné uhol určiť ručne. Keďţe pri hraniciach neuvaţujeme o orientácií, ale len o otočení hranice, tak jej uhol môţe nadobúdať hodnoty 0, alebo. Konkrétne pri odraze o hranicu zodpovedajúcej osi X je uhol veľký 0, pri Y je to. Správanie niektorých odrazov je znázornené na obrázku 37. Obrázok 37 Odrazy od hraníc obrazovky 39

Kolízia s hranicou steny Steny v našom ponímaní nie sú len jednorozmerné čiary, ale majú aj svoju hrúbku. S touto moţnosťou však vzniká problém, keď sa objekty môţu odráţať od hlavných hrán, ako aj od bočných (menších) hrán steny. Preto je potrebné identifikovať situáciu, keď Jimmy letí na hraničný bod steny. Tento proces bol vysvetlený v kapitole 5.4 Detekcie kolízií. V takejto situácii musíme o orientácií steny uvaţovať v rozsahu <0, 2π). Je to dôleţité pre korektné označenie bodu kolízie za startpoint, alebo endpoint. Pri rozdielnych bodoch sa totiţto môţe a nemusí jednať o odraz z bočnej strany. Uvaţujme, ţe máme Jimmyho na konštantnej pozícií s konštantným smerovaním podľa obrázka 38. Zatiaľ čo v prípade B1 a A2 sa jedná o odraz od bočnej steny, zvyšné dva prípady sú riešené obyčajným odrazom. Na vyriešenie problému identifikácie odrazu od bočnej strany je potrebné formulovanie niekoľkých, do seba vnorených podmienok (obrázok 39). Tie formulujú vzťahy medzi uhlami a umiestnením hraničného bodu steny. V prípade, ţe sa naozaj jedná o odraz od vedľajšej hrany, postupuje sa rovnako, ako v prípade odrazu od hlavnej hrany s tým rozdielom, ţe je zmenená o uhol Obrázok 38 - Kolízie na koncoch stien 40

Obrázok 39 Určenie uhlu odrazu pri hraničných bodoch steny 5.5.2 Kolízia medzi pohybujúcimi sa objektmi Posledným typom je kolízia dvoch pohybujúcich sa objektov, teda inštancií triedy Character. Rovnako ako pri kolíziách so stenou sme sa snaţili navrhnúť čo najvernejší model k realite. Implementácia reálneho modelu by nebola len príliš náročná, ale aj nezlučiteľná s našim návrhom atribútov tried. Triedy by museli obsahovať atribút označujúci hmotnosť objektov. Pri jeho pouţití spoločne s atribútom speed by sme dospeli k hybnosti objektu. Tento model ale následne upravuje rýchlosti objektov v kolízii, čo nie je ţiadané (v budúcnosti predpokladáme vytvorenie priestorovo väčších objektov typu Enemy, čo by malo za následok odpinkávnie menších objektov väčšími). Najmä preto sme sa rozhodli navrhnúť jednoduchší princíp, kde si dva objekty iba vymenia svoje smery (Obrázok 40). Takýto model sme označili za najvhodnejší a najintuitívnejší pre hráča. Počas úvodného testovania sme našli niekoľko chýb, ktoré môţu narúšať komfort hrania. Preto plánujeme v najbliţšej verzii tento model výrazne upraviť. 41

Obrázok 40 - Kolízie medzi inštanciami triedy Character 5.6 Správa používateľského vstupu Na vyhodnocovanie pouţívateľského vstupu je určená metóda HandleTouchscreenInput(), ktorá je periodicky volaná v metóde Update(). Princíp tejto metódy je znázornený v diagrame na obrázku 41. Obrázok 41 - Vývojový diagram vyhodnocovania dotykov na displej 42

Je potrebné rozlišovať 3 rôzne dotykové akcie pouţívateľa - 1. dotyk, posledný dotyk a body medzi nimi. Ako ukazuje vývojový diagram vyššie, pomocou týchto akcií dokáţeme určiť v akom štádiu kreslenia steny sa hráč práve nachádza. V prípade, ţe sa hráč práve dotkol displeja, vytvoríme objekt typu Wall (o veľkosti jedného bodu) a prenecháme kontrolu hlavnému toku programu. Ak v ďalších volaniach metódy zistíme, ţe hráč kreslí stenu, aktualizujeme posledný bod steny podľa aktuálnej pozície prsta. Takto je zabezpečené, ţe metóda Draw() stenu vykreslí správne. Keď zistíme ukončenie gesta, zaznamenáme posledný bod a aktivujeme novonakreslenú stenu. Počas kreslenia je stena neaktívna, aby nedochádzalo k nečakaným odrazom a nesprávnym stavom pri kontrolovaní kolízií. Neaktívna stena je vykreslená mierne transparentnou textúrou kvôli odlíšeniu. V tejto metóde sa tieţ kontroluje minimálna dĺţka steny a v prípade, ţe je dostatočne dlhá, tak sa upravuje jej dĺţka na násobok šírky textúry steny. Je to z dôvodu, aby grafická reprezentácia steny korešpondovala sa vnútornou matematickou reprezentáciou. Inak by mohlo prísť k nečakaným odrazom Jimmyho, čo by viedlo ku zlému dojmu z hry. Tieţ sme ošetrili situáciu, kedy hráč kreslí stenu priamo cez Jimmyho. Takáto situácia je zakázaná a takto nakreslená stena zmizne po ukončení gesta. Ako bolo popisované v kapitole 4 Návrh mobilnej hry, pohyb nanobota sa ovplyvňuje kreslením stien. Avšak pohyb nepriateľov nie je moţné ovplyvňovať, preto sme sa rozhodli, ţe baktérie a vírusy s nakreslenými stenami nebudú interagovať. Malo by to aj ďalšie negatívne účinky, pretoţe v prípade nakreslenia steny cez nepriateľa by sa tento okamţite od nej odrazil a stena by zmizla. To by znemoţnilo ovládanie pohybu Jimmyho a preto sme sa rozhodli, ţe sa nepriatelia budú pohybovať "pod stenami" (budú vykreslení neskôr). 5.7 Vykresľovanie na displej Vykresľovanie na displej je zabezpečené metódou Draw(), ktorá je volaná mnohokrát za sekundu, aby sa docielilo vykresľovanie 30 obrázkov za sekundu. Toto volanie je zabezpečené priamo frameworkom XNA na základe nastavenia periódy metódy Update() pomocou príkazu TargetElapsedTime = TimeSpan.FromTicks(333333); Na vykresľovanie je potrebné vytvoriť objekt SpriteBatch, ktorý riadi vykresľovanie objektov, pričom je mu moţné definovať parametre ako napríklad duplikácia textúr, podpora transparentnosti textúr a podobne. Keďţe naše triedy obsahujú vlastné metódy Draw() starajúce sa o ich vykreslenie, vytvorili sme jednoduchý spôsob vykresľovania rôznych objektov volaním ich vlastných metód v hlavnej línii programu v centrálnej metóde Draw(). Na tomto mieste "čiastkovým" metódam odovzdáme aj parametre ako napríklad pozíciu alebo uhol udávajúci o koľko má byť vykresľovaný objekt pootočený. Ako uţ bolo spomínané, museli sme dbať aj na fakt, aby boli grafická a logická (resp. matematická) reprezentácia objektov vzájomne zosynchronizované. Týka sa to hlavne akčných polomerov (radiusov) charakterov a dĺţky stien. Nekonzistencia týchto údajov viedla ku chybám vo vykresľovaní objektov a nesprávnej vzájomnej interakcii, čo sa konkrétne prejavilo v nesprávnych vzdialenostiach pri odráţaní. 43

5.8 Ubližovanie nepriateľom V súčasnej verzii máme navrhnutú a implementovanú len zjednodušenú formu súboja medzi Jimmym a jeho nepriateľmi. K nej dochádza pri ich vzájomných kolíziách. Nepriatelia majú atribút durability, ktorý sa s kaţdou kolíziou zniţuje. Keď sa zníţi aţ na nulu, objekt je odstránený z listu nepriateľov a uţ viac nie je zobrazovaný. Inak povedané, je vymazaný. V budúcnosti plánujeme vytvoriť prepracovanejší spôsob súboja s pouţívaním technológií. Pre túto víziu sme navrhli metódu Hurt() triedy Enemy s parametrom Hero, ktorý bude niesť referenciu na aktuálne vyuţívanú technológiu. Podľa jej vlastností bude metóda rôzne pracovať. Týmto krokom plánujeme vyuţiť princíp polymorfizmu. Let Jimmyho je riešený rovnakým odrazom, ako je to v prípade dvoch nepriateľov. V prípade, ţe kolízia zničí nepriateľa, Jimmy ostáva na svojej dráhe a smer nemení. 5.9 Náhodná zmena pohybu nepriateľov Pre autentický pocit z pohybu nepriateľov sme sa rozhodli pravidelne meniť ich smerovanie. Dosiahneme tak riadený chaos. Smer nepriateľov nebude konštantný a bude sa s časom meniť. Aby sme nevytvorili absolútny chaos, je potrebné určiť intervaly zmeny smerovania a jej časovú periodicitu. Obidva tieto prvku sú zahrnuté v atribútoch triedy Enemy, konkrétne anglerange a periodicity. Atribút anglerange vyjadruje zmeny uhla smerovania. Jeho veľkosť sa pohybuje v hraniciach <0, π >. Následne je vynásobený náhodným číslom v rozmedzí <-1,1> a pričítaný k atribútu angle. Tento proces je vykonávaný raz za periodicity milisekúnd cez metódu UpdatePossition(). Logické nastavenie tohto atribútu je násobok čísla 33, keďţe je to pribliţný čas v milisekundách, počas ktorého je vykreslený jeden obrázok. Správnym nastavením spomínaných atribútov vieme docieliť ţiadaný chaos. 5.10 Dosiahnuté výsledky Počas semestra sa nám na desiatich tímových stretnutiach a pri domácej tvorbe podarilo navrhnúť a vytvoriť funkčný prototyp našej hry. Prvotnej fáze výberu vhodného námetu na hry sme venovali väčšinu nášho času, keďţe bez dobrého nápadu nemáme veľkú šancu uspieť v súťaţi Microsoft ImagineCUP. Našťastie sa nám podarilo vymyslieť konkurencieschopný námet, ktorý sme v druhej polovici semestra usilovne pretavovali do reálnej podoby prototypu. Počas tvorby tohto prototypu sme natrafili na viacero problémov, ktoré bolo nutné riešiť. Medzi najzávaţnejšie problémy patrila najmä tvorba metód detekcie a spravovania kolízií, kde sme pomocou matematického modelu a goniometrických funkcií museli zistiť korektnú fyzikálnu reprezentáciu modelovaných dejov. Túto časť zdrojového kódu sme museli naprogramovať od základov, avšak na správu pouţívateľského vstupu a vykresľovanie na displej sme mohli pouţiť dostupné kniţnice z frameworku XNA, čo nám značne zjednodušilo prácu. Aj napriek tomu sa pri vykresľovaní objavili problémy s transparenciou, rotáciami, či korektnou reprezentáciou vykresľovaného objektu. Vyriešenie týchto problémov nám ale dalo cenné skúsenosti do budúcnosti, ktoré budeme môcť najbliţšie zuţitkovať pri dokončovaní našej hry. 44

Po naimplementovaní všetkých zvolených častí prototypu sme mohli reálne vyskúšať funkčnosť a správanie hry, z ktorej sme boli nadšení. Nielen ţe uspokojila naše poţiadavky, ale uţ aj vo fáze prototypu sa zdá byť celkom zábavná. Neskoršie dokončenie nedorobených častí, zlepšenie animácií, pridanie zvuku, úrovní a deja vtiahne určite kaţdého hráča do hry. Dosiahnuté výsledky sme prezentovali na prototype, ktorý fungoval len na emulátore Windows Phone systému, keďţe miestne zastupiteľstvo spoločnosti Microsoft nám do dnešného dňa nebolo schopné poskytnúť licenciu na vývojárske odblokovanie nášho telefónu. Ihneď po získaní odblokovacieho kódu sme pripravení hru naportovať aj na reálny hardvér a vyskúšať tak jej reálne správanie a ovládanie. 45

6 Zhrnutie prvej časti Tento dokument spolu s priloţeným prototypom hry a dokumentom riadenia je výsledkom práce tímu Bougles (tím 7 PKSS) v zimnom semestri 2011/2012 na predmete Tímový projekt I. Vytvorili sme funkčný prototyp hry, ktorý je moţné spustiť vo Windows Phone emulátore integrovanom v prostredí MS Visual Studio 2010 Express for Windows Phone. V prototype sme otestovali vybrané časti hry s dôrazom na základné princípy hry ako je pohyb, odráţanie a ošetrovanie kolízií. Podrobný návrh sa nachádza v kapitole 4 Návrh mobilnej hry. Týmto povaţujeme cieľ prototypu za úspešne ukončený. Podrobný opis práce na projekte sa nachádza v priloţenom dokumente riadenia a popis analýzy, špecifikácie poţiadaviek a hrubého návrhu sa nachádza v tomto dokumente. Všetky náleţitosti na splnenie podmienok pre dokument inţinierskeho diela aj dokument riadenia ako sú uvedené na webovej stránke predmetu sme zahrnuli do odovzdaného výsledku a teda pokladáme celkovú prácu na projekte v tomto semestri za dokončenú. 6.1 Plán na nasledujúci semester V nasledujúcom semestri budeme v práci pokračovať na predmete Tímový projekt II. Rozpracujeme grafické návrhy vrátane animácií a tieţ pridáme zvukové efekty a hudbu. Vytvoríme funkčné menu na ovládanie hry a odstránime prípadné odhalené chyby v implementácii. Tieţ implementujeme niekoľko technologických vylepšení, aby sme splnili tému súťaţe ImagineCUP, ktorá znie: Imagine a world where technology helps solve the toughest problems. Súčasťou plánu v budúcom semestri je aj registrácia tímu do kategórie Game Design: Phone súťaţe Imagine CUP 2012. Hlavné termíny na odovzdanie dokumentov potrebných na účasť v tejto súťaţi sú odovzdanie dokumentu Summary, resp. Storyboard do 14. Februára 2012. Ide o krátky popis myšlienky hry, ktorý je potrebné vhodne sformulovať v anglickom jazyku. Ďalší dôleţitý termín v pláne v budúcom semestri je odovzdanie funkčnej hry spolu s prezentačným videom a inštrukciami do 13. Marca 2012. 46

7 Konečný návrh Na konci prvého semestra tímového projektu sme odovzdali funkčný prototyp. Tento prototyp ukazoval základné moţnosti navrhovanej hry, avšak ani zďaleka nesplňoval stanovené poţiadavky. Počas ďalšieho semestra sme sa sústredili na zlepšovanie nielen funkcionality, ale aj grafickej stránky. Pribliţne v polke semestra sme odovzdali aktuálnu verziu do druhého kola súťaţe ImagineCUP, v ktorej sa nám podarilo postúpiť aj do tretieho kola. Semifinálové tretie kolo končí začiatkom mája, keď odovzdávame aj tímový projekt. Z tohto dôvodu je výsledná verzia odovzdanej hry na ImagineCUP a v rámci tímového projektu zhodná. Kapitola s konečným návrhom popisuje zmeny vykonané na prototype, doplnenú funkcionalitu, grafiku, hudbu a ďalšie efekty, ktoré sme doplnili do výslednej hry. Značná časť kapitoly sa venuje revízií prototypu, keďţe oproti odovzdanému prototypu sa výrazne zmenili niektoré herné koncepty, ktoré sa nám podarilo odladiť pre lepšiu hrateľnosť a pôţitok z hry. 7.1 Revízia prototypu Kapitola s revíziou prototypu popisuje zmenu herných konceptov v konečnom návrhu hry. Prvá časť kapitoly bliţšie opisuje zmeny herného modelu, zatiaľ čo druhá časť popisuje zmeny herných princípov, grafického modelu a iných častí. 7.1.1 Herný scenár Oproti pôvodnému hernému scenáru sme vykonali niektoré zmeny, ktoré umoţňujú lepšiu hrateľnosť a modularitu hry pre budúci vývoj. V novom scenári počítame s ďalšími verziami hry, kde v kaţdej verzii bude zachraňované nové zvieratko. Tak, ako to bolo uvedené na obrázku 13 v kapitole 4.1 Scenár, je cieľom hry záchrana chorého zvieratka, ktorého napadli nebezpečné choroboplodné zárodky. V súčasnej verzii scenára sme sa rozhodli pouţiť iba jedno choré zvieratko sloníka Otta, avšak rozšírili sme počet herných úrovní, ktoré je potrebné prejsť pre jeho záchranu. Hra sa skladá z 5 stupňov (stages), z ktorých kaţdý sa skladá zo 6 úrovní. Diagram revidovaného scenára sa nachádza na obrázku 42. V kaţdom stupni sú predstavené 2 nové technológie (viac informácii v kapitole 7.1.4 Technologické vylepšenia Jimmyho) a 2 nové druhy nepriateľa (pre bliţšie informácie pozri kapitolu 7.3.2 Herní nepriatelia). Do hry sa tak dostávajú nové prvky, čo udrţuje hráčov záujem o ďalšie úrovne. Ďalšou zmenou oproti pôvodnému plánu scenára je odstránenie hlavného nepriateľa, ktorý mal byť zdrojom nákazy. Dôvodom je, ţe by tým bol porušený koncept vytvárania úrovní a tieţ sme nestihli vytvoriť jeho grafický návrh. Dospeli sme k názoru, ţe súčasný počet herných úrovní je postačujúci a z hľadiska hrateľnosti tieţ nie je potrebné pridávať úplne odlišného nepriateľa. V budúcnosti však nad touto moţnosťou budeme uvaţovať v prípade ďalších vydaní hry. 47

7.1.2 Zvyšovanie obtiažnosti Obrázok 42 - Revízia scenára vývojový diagram Uţ v návrhu sme počítali s dizajnovaním úrovní spôsobom, aby mali stúpajúcu obtiaţnosť. Pri implementácii sme z dôvodu nedostatku času upravili spôsob, akým dosiahneme zvýšenie obtiaţnosti. Zamerali sme sa na nové druhy odolnejších a silnejších nepriateľov a spôsob zvyšovania obtiaţnosti pomocou mnoţenia nepriateľov a zrýchlenia hry sme zamietli. Navrhli a implementovali sme však aj ďalšie spôsoby ako napríklad zvyšovanie počtu nepriateľov. Tieţ sme korigovali obtiaţnosť obmedzovaním celkového Ottovho ţivota v danej úrovni, čo núti hráča rýchlejšie eliminovať nepriateľov. Vďaka modulárnemu spôsobu dizajnovania úrovní je moţné meniť obtiaţnosť jednotlivých úrovní bez potreby veľkých zásahov do zdrojového kódu. Obtiaţnosť úrovní vo finálnej verzii hry sme určili na základe podrobného testovania všetkých úrovní viacerými osobami. Nasleduje zhrnutie spôsobov, ktorými sme zvyšovanie obtiaţnosti docielili: 48

Silnejší a odolnejší nepriatelia - rýchlejšie uberajú z Ottovho ţivota a sú odolnejšie proti Jimmyho útokom. Na ich zničenie je potrebné ich niekoľkokrát zasiahnuť, čo kladie dôraz na lepšie plánovanie odrazov, aby hráč nestrácal čas a pouţíval technológie. Zvyšovanie počtu nepriateľov kaţdý nepriateľ uberá ţivot konštantne na základe jeho damage a tým pádom vzniká priamo úmerná závislosť medzi počtom nepriateľov a rýchlosťou uberania ţivota. Obmedzenie života zníţením celkového ţivota dosiahneme, ţe čas potrebný na prejdenie danej úrovni sa skráti a je potrebné rýchlejšie zničenie nepriateľov, lebo vyšší počet nepriateľov znamená, ţe bude rýchlejšie ubúdať zo ţivota zvieratka a teda kladie to dôraz na sústredenie. Scrolling obrazovky vo vyšších úrovniach je herná plocha väčšia ako displej telefónu čo spôsobí, ţe v danej úrovni je moţné umiestniť väčšie mnoţstvo nepriateľov. Malé mnoţstvo nepriateľov na veľkej ploche je taktieţ vyuţívané pri zvyšovaní obtiaţnosti, keďţe je na triafanie baktérií je potrebná istá zručnosť a skúsenosti. 7.1.3 Skóre Hráči si môţu medzi sebou porovnávať herné skóre, ktoré sa zobrazuje pre kaţdú hernú úroveň. Skóre je ukladané lokálne 9, avšak v budúcnosti plánujeme rozšírenie o sociálne siete a o cloud-ové hromadné úloţisko (Windows Azure) s Leaderboard tabuľkou. Nahrané herné skóre reflektuje skúsenosti a šikovnosť pouţívateľa, pričom výpočet prebieha nasledovne: Skóre = 60000 * (zostávajúci život / celkový život) + 40000 * (1 (herný čas / štandardný čas)); Väčšiu časť skóre (60%) tvorí zostávajúci ţivot a menšiu časť (40%) herný čas. Hodnoty počiatočného ţivota a štandardného herného času boli určené vo fáze Level dizajnu, kde sme stanovovali náročnosti jednotlivých herných úrovní. V prípade, ţe ţivot klesne na 0, tak sa hra skončí a zobrazená je cut-scéna GAME OVER. V prípade dlhšieho hracieho času ako je štandardný herný čas nedostane hráč ţiadnu časť skóre za herný čas. Tento mechanizmus môţeme popísať aj ako odmeňovanie hráča sa rýchlosť. Maximálne skóre je 100000, avšak takéto skóre je prakticky nedosiahnuteľné, pretoţe hráč by musel zničiť všetkých nepriateľov okamţite po spustení hry. Herné úrovne sú navrhnuté tak, aby sa priemerné skóre dobrého hráča pohybovalo na úrovni 30000 aţ 50000 bodov. Podľa dosiahnutého skóre, ktoré sme pre kaţdú hraciu úroveň určili vo fáze Level dizajnu, získava hráč rôzne medaile. Základná je bronzová medaila, pri vyššom úspechu je hráč ohodnotený striebornou medailou a pri excelentnom výsledku dosiahne zlatú medailu. V prípade veľmi nízkeho skóre nie je hráč odmenený ţiadnou medailou. Takýto spôsob ohodnocovania povzbudzuje hráča nielen k prejdeniu všetkých herných úrovní, ale aj k neskoršiemu opätovnému prechádzaniu úrovní a zlepšovaní si svojho dosiahnutého skóre. 9 http://msdn.microsoft.com/en-us/hh641293 49

Obrázok 43 Pri každej úrovni je zobrazené maximálne dosiahnuté skóre a medaila 7.1.4 Technologické vylepšenia Jimmyho Po analyzovaní moţností implementácie technologických vylepšení sme sa rozhodli upraviť zoznam technológií uvedený v kapitole 4.2.7 Technologické vylepšenia. Vo finálnej verzii rozdeľujeme technológie na 3 hlavné skupiny technológie pôsobiace na Jimmyho (pôvodne Primárne), technológie pôsobiace na nepriateľov (pôvodne Sekundárne) a technológie pôsobiace na zvieratko. Nepouţívame iba pasívne technológie (napríklad zrýchlenie Jimmyho, spomalenie nepriateľov...), ale tieţ aj aktívne technológie, ktoré môţeme ovládať. Ide najmä o technológie, ktoré sme mali pôvodne zaradené do skupiny akceleračné vylepšenia Laser, Teleport a pod. V nasledujúcom zozname sa nachádza prehľad všetkých technologických vylepšení dostupných v hre s krátkymi popismi. Pri kaţdej technológií je uvedená doba počas ktorej je technológia aktívna a doba potrebná na nabitie technológie pred ďalším pouţitím. 1. Technológie pôsobiace na nepriateľov a. Contrast medium Doba aktivity: 20 s Doba nabíjania: 15 s Po aktivovaním tejto technológie sa zobrazia neviditeľní nepriatelia ak na hracej ploche existujú. Bliţšie informácie o neviditeľných nepriateľoch sa nachádza v kapitole 7.3.2 Herní nepriatelia. Táto technológia nemá ţiadne ďalšie účinky a druhy nepriateľov, ktorí sú viditeľní neovplyvňuje ţiadnym spôsobom. Prezentačná obrazovka sa nachádza na obrázku 44. 50

Obrázok 44 Technológia Contrast Medium b. Stun syrup Doba aktivity: 15 s Doba nabíjania: 25 s Táto technológia spomalí všetkých nepriateľov okrem neviditeľných o určitý koeficient. Neviditeľní nepriatelia nie sú touto technológiou ovplyvnení, aby nedošlo k prezradeniu ich pozície. Prezentačná obrazovka sa nachádza na obrázku 45. Obrázok 45 Technológia Stun Sirup c. Antibiotic pills Doba aktivity: 15 s Doba nabíjania: 30 s Toto je jedna z najsilnejších technológií. Po aktivovaní ostanú na mieste, kde sa Jimmy v čase aktivácie nachádzal antibiotické tabletky, slúţiace ako bomba. Prvý nepriateľ, ktorý narazí do tabletiek je zlikvidovaný, pričom nezáleţí na jeho odolnosti ani iných parametroch. Po náraze tabletky zmiznú. Prezentačná obrazovka sa nachádza na obrázku 46. 51

Obrázok 46 Technológia Antibiotic Pills 2. Technológie pôsobiace na Jimmyho a. Atomic power cell Doba aktivity: 5 s Doba nabíjania: 25 s Technológia Atomic Power Cell na určitý čas trojnásobne zvýši zranenia, ktoré Jimmyho útoky spôsobujú nepriateľom. Slabšie baktérie (do 3 ţivotov) je teda moţné zničiť jedným nárazom. Aktivita technológie je znázornená animáciou bleskov. Prezentačná obrazovka sa nachádza na obrázku 47. Obrázok 47 Technológia Atomic Power Cell b. Battery overboost Doba aktivity: 10 s Doba nabíjania: 20 s Táto technológia dočasne zvýši rýchlosť pohybu Jimmyho. Jeho rýchlosť je po aktivácii výrazne zvýšená a najvhodnejšie pouţitie je pri veľkom počte nepriateľov, ktorým tak v krátkom čase môţe Jimmy spôsobiť veľké zranenia aj keď útok Jimmyho ostáva nezmenený. Prezentačná obrazovka sa nachádza na obrázku 48. 52

Obrázok 48 Technológia Battery Overboost c. Force field generator Doba aktivity: 10 s Doba nabíjania: 20 s Zväčší akčný rádius Jimmyho, v ktorom dochádza ku kolízii s nepriateľom a stenami. Touto technológiou sa zjednoduší triafanie do nepriateľov a tieţ sa zvyšuje počet nárazov v mieste s vysokou koncentráciou nepriateľov. Spôsobované zranenia nie sú ovplyvnené. Prezentačná obrazovka sa nachádza na obrázku 49. Obrázok 49 Technológia Force Field Generator d. Teleport Doba aktivity: 8 s Doba nabíjania: 15 s Premiestni Jimmyho na miesto označené dotykom. Teleport ostáva aktívny po dobu 8 sekúnd a v prípade, ţe hráč neoznačí do tohto limitu ţiadne miesto, je technológia povaţovaná za pouţitú a pred ďalším pouţitím treba čakať na nabitie. V prípade, ţe hráč označí miesto, kam nie je moţné Jimmyho premiestniť (napr. priamo na nepriateľa) 53

je upozornený zvukovou a vibračnou signalizáciou a ak nevypršal čas aktívnosti, môţe označiť novú cieľovú pozíciu. Prezentačná obrazovka sa nachádza na obrázku 50. Obrázok 50 Technológia Teleport e. Laser beam Doba aktivity: 8 s Doba nabíjania: 30 s Laser je ďalšia technológia, ktorú hráč aktívne ovláda. Po aktivácii je potrebné označiť dotykom poţadovaný cieľ a Jimmy vystrelí na dané miesto laserový lúč. Laser spôsobuje trojnásobne väčšie zranenia ako jednoduchý náraz Jimmyho do nepriateľa, pričom zranený je kaţdý nepriateľ, pretínajúci dráhu laseru. Podobne ako v prípade teleportu je po 8 sekundách automaticky deaktivovaný. Prezentačná obrazovka sa nachádza na obrázku 51. Obrázok 51 Technológia Laser Beam 54

f. Nanobot squad Doba aktivity: 12 s Doba nabíjania: 40 s Aktivovaním tejto technológie Jimmy vypustí do priestoru 4 malých nanobotov. Títo sa odráţajú rovnako ako Jimmy (nie je moţné ich ovládať kreslením stien), avšak pohybujú sa rýchlejšie a spôsobujú nepriateľom polovičné zranenia. Je to najsilnejšia technológia, ktorá je predstavená ako posledná. Prezentačná obrazovka sa nachádza na obrázku 52. Obrázok 52 Technológia Nanobot Squad 3. Technológie pôsobiace na choré zvieratko a. Vitamin shield Doba aktivity: 10 s Doba nabíjania: 20 s Touto technológiou je dočasne zníţený útok všetkých nepriateľov, čím sa docieli pomalšieho úbytku Ottovho ţivota. Najvyšší efekt má pri veľkom počte nepriateľov a je vhodné ju pouţiť na začiatku hry. Prezentačná obrazovka sa nachádza na obrázku 53. Obrázok 53 Technológia Vitamin Shield 55

Technologické vylepšenia sú prezentované postupne ako hráč prechádza jednotlivé úrovne a stupne, pričom na začiatku sú predstavené jednoduchšie vylepšenia s menším účinkom a neskôr sa pridávajú silnejšie. Predstavovanie berie tieţ ohľad na nových nepriateľov, na ktorých má daná technológia dobrú účinnosť (príklad: Predstavenie Stun Sirup spomalenie súčasne alebo následne po rýchlych baktériách). Postup prezentovania technologických vylepšení je nasledovný: 1. Contrast Medium 2. Stun Sirup 3. Atomic Power Cell 4. Vitamin Shield 5. Battery Overboost 6. Force Field Generator 7. Teleport 8. Antibiotic Pills 9. Laser 10. Nanobot Squad 7.1.5 Ovládanie Ovládanie zaloţené na nepriamom odráţaní Jimmyho pomocou nakreslených stien zostalo nezmenené, avšak okrem Freedrag gesta sme doplnili aj gestá Tap a Flick. Gesto Tap je vyuţívané pomocou technológie Teleport, kde sa určuje, kam sa má Jimmy teleportovať. Toto gesto taktieţ pouţívame v celom menu, kde slúţi na výber jednotlivých poloţiek. V menu sme okrem toho doplnili aj gesto Flick, pomocou ktorého môţe pouţívateľ rýchlim pohybom po obrazovke preskakovať medzi vyberanými hernými úrovňami. Základná schéma ovládania odrazov a pohybu Jimmyho je znázornená na obrázku 54. Obrázok 54 Nepriame ovládanie pohybu Jimmyho pomocou nakreslených stien V budúcnosti plánujeme doplniť aj ovládanie zaloţené na gyroskope, ktoré bude pouţité buď v novej technológii alebo bude globálne implementované v celej hre. Gyroskop umoţní jemnú zmenu smeru Jimmyho, vďaka čomu hráč získa väčšiu kontrolu nad jeho pohybom. 56

Herná obrazovka vo finálnej verzii obsahuje len jeden panel s technológiami, pretoţe pouţitie dvojice panelov zaberalo príliš veľkú časť z hracej plochy, ktorá je obmedzená neveľkými rozmermi mobilného displeja. Pozíciu panela je moţné zmeniť v nastaveniach hry. Panel môţe byť prichytený k pravému alebo ľavému okraju obrazovky. Panel obsahuje 5 pozícií pre dostupné technológie a vo vrchnej časti je zobrazený indikátor ţivota. Ubúdanie ţivota je znázornené progress barom, ktorý postupne prekrýva ţivotnú ikonku kontrastnou farbou. Hráč má takto neustále kontrolu nad zostávajúcim ţivotom. Technologický panel je znázornený na obrázku z herného tutoriálu (obrázok 55). Na podobnom princípe s progress barom sú zaloţené aj technológie, ktoré môţu byť v 3 stavoch: 1. Plne nabitá, čaká na aktiváciu 2. Aktivovaná, vybíja sa 3. Deaktivovaná, nabíja sa Aktivovanú technológiu je moţné manuálne deaktivovať opätovným kliknutím na ikonku danej technológie. Aby sa zabránilo nechcenému deaktivovaniu technológie, tak k deaktivovaniu dôjde len v prípade kliknutia minimálne po 1 sekunde od aktivácie. Kaţdá technológia má svoje vlastné časovače nabíjania a vybíjaniu, ktoré majú rôzne dĺţky. Dĺţky časovačov sú bliţšie opísané v kapitole 7.1.4. Obrázok 55 Tutorial screen technologického panela Keďţe herná plocha obmedzená na malú obrazovku mobilu je nedostačujúca, tak hra obsahuje aj rozšírenú hernú plochu, po ktorej sa obrazovka automaticky pohybuje v prípade, ţe sa Jimmy priblíţi k okraju zobrazovanej časti plochy. Herná plocha je rozšírená len na výšku, čo v prípade Landscape otočenia displeja zaručuje štvorcovú hraciu plochu. Pre lepšiu orientáciu sú jednotliví nepriatelia, ktorí sa nachádzajú mimo zobrazovanej časti označení šípkami, ktoré určujú ich pozíciu v rámci X-ovej osi. Na zobrazenie aktuálneho umiestnenia zobrazovanej časti voči celej hernej ploche slúţi malý scrool bar, ktorý sa nachádza na opačnej strane ako Technologický panel. Scrool bar je znázornený na obrázku z herného tutoriálu (obrázok 56). 57

Obrázok 56 - Tutorial screen scrool baru pri zväčšenej hracej ploche 7.1.6 Kolízie medzi pohybujúcimi sa objektmi Po implementácií model odráţania, ktorého opis bol uvedený v návrhu prototypu, sme testami zistili problémy, ktoré sú s nim spojené. Vznikal pri kolízií medzi charaktermi s nízkym rozdielom vzájomných uhlov. Charaktery tak skončili v odráţajúcej sa slučke (obrázok 57). Problém nebolo moţné odstrániť jednoduchým zásahom do zdrojového kódu a navrhovaný model musel byť kompletne zmenený. V úvodnej fáze návrhu nového modelu sme uvaţovali o biliardovom modeli. Ten by zamedzoval podobným problémom, avšak spôsoboval by zmeny rýchlostí jednotlivých charakterov. Taktieţ by bolo náročné určiť hybnosť, keďţe k jeho výpočtu by sme museli poznať hmotnosť charakterov. Ten by sme mohli odvodiť od veľkosti (polomeru) charakteru. Tento spôsob sme ale povaţovali za neintuitívny, zbytočne mätúci a náročný na implementáciu. Obrázok 57 Starý model odrážania medzi objektmi 58

Situáciu sme nakoniec vyriešili modelom virtuálna stena (obrázok 58). Ten odstraňoval zistený problém, umoţňoval intuitívne ovládanie a vzhľadom na podobnosť správania sa s reálnou stenou bol model jednoduchý aj na implementáciu. Model pozostáva z nasledujúcich krokov: Detekcia kolízie (bod č. 2). Vytvorenie virtuálnej steny medzi charaktermi v kolízií (bod č. 3). Individuálny výpočet odrazu charakterov od steny (body č. 4a a 4b). Odrazenie (bod č. 5). Obrázok 58 Nový model odrazov - model virtuálna stena Ako moţno pozorovať z obrázku, model umoţňoval, aby sa smerovanie charakteru nezmenilo po kolízií. Takýto prípad mohol nastať jedine, ak pôvodné smerovania charakterov zvierali medzi sebou uhol menší ako deväťdesiat stupňov. V opačnom prípade vţdy dochádzalo k zmene smerovania. 7.1.7 Herné menu a nastavenia Kaţdá hra musí mať herné menu, ktoré umoţňuje prepínanie medzi rôznymi obrazovkami s nastaveniami, výberom herných úrovní, zobrazovaním nahraného skóre a podobne. Pre našu hru sme sa rozhodli upraviť existujúci projekt Game State Management 10, ktorý pokrýva všetky základné poţiadavky na zobrazovanie a prechod medzi jednotlivými obrazovkami. Projekt je dostupný pod licenciou Microsoft Permissive License. Táto licencia nám umoţňuje pouţívať tento projekt bez obmedzení, pokiaľ si ho nechceme patentovať a taktieţ musíme dodrţiavať 10 http://create.msdn.com/en-us/education/catalog/sample/game_state_management 59

všetky patentové značky. Do existujúceho projektu sme doprogramovali pokročilé efekty prepínania medzi obrazovkami, ktoré zahŕňajú efekt plynulej Fade-in a Fade-out zmeny pozadia, plynulé posúvanie akčných prvkov pri posúvaní obrazovky, ako aj dynamické prelínanie a ďalšie vizuálne prvky. Celé menu je tak dynamické a audiovizuálne reaguje na pouţívateľské poţiadavky. Okrem toho sa pri spustení hry a zobrazení Menu zakáţu úsporné reţimy mobilného telefónu, ktoré spôsobujú zatmavovanie obrazovky. Hráč si tak môţe plnohodnotne vychutnať hru, bez toho aby bol vyrušovaný úsporným reţimom. Oproti prototypu sme taktieţ zmenili štruktúru celého Menu, ktoré je znázornené na obrázku 59. Obrázok 59 Revízia štruktúry herného menu Po spustení hry sa hráč ocitne v Main Menu obrazovke, ktorá obsahuje niekoľko tlačidiel. V Menu sa pohybuje pomocou klikania na tieto tlačidlá, pričom navrátiť k predošlej obrazovke sa realizuje pomocou stlačenia hardvérového gombíku Back. Obrazovka Main Menu je znázornená na obrázku 60. Obrázok 60 Obrazovka Main Menu Tlačidlo Start Game spustí Level Select obrazovku, ktorá obsahuje zoznam všetkých herných úrovní. Tlačidlo Options vyvolá obrazovku s nastaveniami, kde môţe hráč ovplyvniť hlasitosť zvukového doprovodu, zvukových efektov, zapnúť alebo vypnúť vibrácie a nastaviť umiestnenie technologického panelu v hre. Po aktivácií tlačidla Credits sa pouţívateľovi zobrazí 60

obrazovka s menami všetkých vývojárov a ľudí čo boli zapojení do projektu. Tlačidlo Exit Game ukončí hru. Na ukončenie hry sa dá vyuţiť aj hardvérový gombík Back. Obrazovka Options a Credits je znázornená na obrázkoch 61 a 62. Obrázok 61 Obrazovka Options Obrázok 62 Obrazovka Credits Obrazovka Level Select poskytuje viacero moţností. Okrem toho, ţe zobrazuje herné úrovne z jedného stupňa, tak pri kaţdej úrovni je zobrazené aj maximálne dosiahnuté skóre a zodpovedajúca medaila. Medzi stupňami s úrovňami sa dá prepínať pomocou kliknutia na šípky, alebo rýchlym horizontálnym pohybom prstu po obrazovke. Obrazovka Level Select je znázornená na obrázku 63. Z tejto obrazovky je prístupný aj Tutorial, ktorý sa automatický prehrá po kliknutí na ikonku otáznika. Tutorial screen je znázornený na obrázku 64. Po kliknutí na ikonku mikroskopu sa zobrazí Help obrazovka so zoznamom všetkých nepriateľov a technológií. Po kliknutí na vybranú technológiu alebo nepriateľa sa prehrá jeho cut-scéna. Obrazovka Help screen je znázornená na obrázku 65. 61

Obrázok 63 Obrazovka Level Select Obrázok 64 Cut-scéna Tutorial screen Obrázok 65 Obrazovka Help screen 62

Spustenú hru môţe hráč kedykoľvek pozastaviť pomocou hardvérového Back gombíka, ktorý vyvolá Pause obrazovku. Pause obrazovka pozastaví hru, ale ponúka aj ďalšie moţnosti. Hráč môţe pokračovať v hre, reštartovať aktuálnu úroveň, zmeniť nastavenia alebo sa vrátiť do Main Menu. Okrem toho je na obrazovke zobrazené aj číslo aktuálnej úrovne spoločne s herným stupňom. Pause obrazovka je vyvolaná automaticky pri prijímaní hovoru, alebo pri prepnutí na inú aplikáciu. Obrazovka Pause screen je znázornená na obrázku 66. Obrázok 66 Obrazovka Pause screen Po úspešnom alebo neúspešnom ukončení úrovne je zobrazený Success alebo Fail screen, ktorý dáva moţnosť pokračovať ďalšou úrovňou, alebo opätovne spustiť neprejdenú úroveň. Obrazovka s príkladom Success screenu sa nachádza na obrázku 67. 7.1.8 Grafické návrhy Obrázok 67 Obrazovka Success screen Pri tvorbe grafiky sme zistili, ţe ani jeden člen nášho tímu nemá dostatočné grafické vlohy a preto sme sa inšpirovali novými grafickými skicami, ktoré pre nás vytvorila Katka Tarabová. Okrem toho Katka navrhla aj pozadia, jednoduché modely a všetky cut-scény. Tvorba grafickej stránky hry je popísaná v kapitole 7.3.1. Na nasledujúcich obrázkoch sa nachádzajú skice Jimmiho, nepriateľov a návrh herného pozadia, ktoré reprezentuje krvné riečište. 63

Obrázok 68 Skica nanobota Jimmyho Obrázok 69 Skice nepriateľov 64

7.2 Model tried Obrázok 70 Podklad herného pozadia Pôvodný model tried bol rozšírený o ďalšie entity (triedy), metódy a atribúty. Vychádzali sme predovšetkým z aktuálnej potreby daného prvku počas procesu implementácie. Zoznam atribútov a metód bol rozšírený v entitách Character, Enemy, Hero a Wall. Výrazne boli prepracované a rozšírené triedy opisujúce technológie: Technology, CharTech, BasicTech, TechInvisible, TechTransport, TechLaser, TechJimmys a TechPill. Návrh bol vedený tak, aby bolo potrebné vytvárať čo najmenší počet nových metód a v čo najväčšej moţnej miere vyuţívať princípy objektovo orientovaného programovania (najmä preťaţovanie). Na správne riadenie technológií slúţi trieda TechnologyManager, ktorá taktieţ umoţňuje jednoduchšie vytváranie ich inštancií. Pre vizuálne zobrazovanie slúţi trieda Animation. Referenciu na objekt tohto typu obsahuje kaţdý dynamický objekt, ktorý je vykresľovaný. Pre uchovanie konfigurácií jednotlivých herných úrovní je v projekte zahrnutá trieda Level. Grafické znázornenie modelu tried pomocou UML diagramu je zobrazené na obrázku 71. Okrem spomínaných tried sú v projekte obsiahnuté aj ďalšie triedy, ktoré vykresľujú Menu obrazovky alebo slúţia na ukladanie dosiahnutého skóre a nastavení. Tieto triedy sme do modelu nezahrnuli, keďţe sa jedná o upravené triedy z voľne dostupných príkladov zdrojových kódov. Pouţité zdrojové kódy, ako aj doplnená funkcionalita je opísaná v samostatných kapitolách. 65

Obrázok 71 UML diagram tried 66

7.3 Nová funkcionalita Kapitola s novou funkcionalitou popisuje všetky doplnené funkcie a časti, ktoré neboli obsiahnuté v prototype alebo jeho návrhu. Kaţdej časti je venovaná samostatná kapitola, ktorá stručne popisuje pridanú funkcionalitu. 7.3.1 Grafické spracovanie Pri vytváraní grafickej časti sme sa rozhodli pouţiť vývojové nástroje Gimp 2.6 a Adobe Illustrator CS4. Adobe Illustrator v trial verzii sme pouţívali najmä pri konverzii skíc (grafických návrhov) do digitálnej podoby z dôvodu, ţe podporuje vektorizáciu rastrových obrázkov a prácu s vektorovou grafikou. Pre potrebu zachovania adekvátnej kvality pri veľkej zmene rozlíšenia (potreba veľmi malých textúr) je vektorový spôsob práce s obrázkami potrebný. V prípade pouţitia rastrového grafického editora by sa kvôli aliasing efektu strácali detaily vo výslednom zmenšenom obrázku a ten by pôsobil rozmazaným dojmom. Gimp 2.6 sme pouţili pri vytváraní ostatných grafických prvkov ako sú napríklad pozadia menu, prvky grafického rozhrania GUI (tlačidlá a pod.), grafika technológií, Tutorial a Help, animovanie nepriateľov a technológií. S výhodou sme pouţili moţnosť pracovať s viacvrstvovými (multilayer) súbormi vďaka čomu bolo moţné v prípade potreby relatívne jednoducho meniť grafický dizajn. Príklad viacvrstvového modelu je znázornený na obrázku 72. Obrázok 72 Viacvrstvové pozadie v Main Menu Digitalizácia Keďţe grafické návrhy sme mali iba v papierovej forme, bolo potrebné z nich vytvoriť obrazové súbory. Rozhodli sme sa pouţiť formát PNG (Portable Network Graphics), ktorý poskytuje moţnosť uloţenia priehľadného alfa kanála a je moţné ho vo Visual Studiu pouţiť ako zdroj animácie. Pri vytváraní grafiky nepriateľov sme postupovali podľa nasledovných krokov: 1. Skenovanie skice 2. Vektorizácia 3. Kolorizovanie 4. Úprava rozlíšenia 67

Prvým krokom bolo naskenovanie obrázka. Dbali sme na správne nastavenie úrovní farieb (najmä kontrast a vyváţenie bielej), aby bolo moţné čo najvernejšie previesť naskenovaný obrázok do vektorovej reprezentácie. Na vektorizáciu sme pouţili Adobe Illustrator, ktorý dokáţe previesť jednoduché čierno-biele skice do vektorovej reprezentácie pomocou nástroja Live Trace. S vektorovým obrázkom sme mohli ďalej pracovať a kolorizovať ho podľa potreby. Pri vyfarbovaní sme sa zamerali na poţiadavku, aby nepriatelia boli kontrastní voči tmavočervenému pozadiu. Tieţ bolo potrebné farby zvoliť tak, aby sa nepriatelia farebne odlišovali. Po získaní farebného obrázka je posledným krokom upravenie veľkosti obrázka na poţadované rozlíšenie. Pri tomto kroku sme s výhodou vyuţili vektorovú reprezentáciu, ktorá dávala subjektívne aj objektívne lepšie výsledky ako rastrová zmena veľkosti v GIMPe. Postup vytvárania textúry ilustruje obrázok 73. Obrázok 73 Postup vytvárania textúr nepriateľa Animácie Podľa poţadovanej animácie pre danú baktériu bolo potrebné ďalej manipulovať s farebnou textúrou. Pri vytváraní animácií sme museli individuálne pristupovať ku kaţdému rámcu (frame), teda v prípade potreby aj vykonať niektoré, prípadne aj všetky kroky uvedené v časti Digitalizácia. Animácie sme vytvárali úpravou pôvodnej textúry, rotáciou a podobne. Výsledkom grafickej práce na animácii je PNG súbor, ktorý obsahuje všetky framy animácie v jednom páse a ktorý je ďalej softvérovo spracovávaný. Obrázok 74 Postup vytvárania animácie nepriateľa 68

Zmenou animácie/textúry je indikovaný aj zostávajúci ţivot pri odolnejších nepriateľoch. Bolo teda potrebné pre kaţdého nepriateľa vytvoriť 2 3 animácie, ktoré názorným spôsobom reprezentujú ţivot, resp. zranenia. Na obrázku 74 je znázornený postup pri vytváraní animácie konkrétneho nepriateľa. Časť 1 reprezentuje animáciu pri nezranenom nepriateľovi (5 4 ţivoty), časť 2 znázorňuje animáciu zraneného nepriateľa (3 2 ţivoty) a časť 3 je animácia zobrazovaná v prípade zostávajúceho posledného ţivota. Spôsob zobrazenia ţivotov je kľúčový z hľadiska hrateľnosti i taktiky hry. Hráč si môţe vyberať, ktorého nepriateľa zneškodní skôr prípadne akú technológiu vyuţije. Prostredie XNA umoţňuje vykresľovanie textúr na pozíciu určenú jej ľavým horným bodom. Keďţe väčšina vykresľovaných objektov je okrúhleho tvaru, tak sme na opis ich pozície vyuţívali ich stredný bod a polomer. Pred vykreslením sme ale museli transformovať takéto atribúty na tie ţiadané (ľavý horný bod objektu). Tento proces bolo jednoduchý na odvodenie aj na následne implementovanie: vykreslenie.x = stred.x polomer vykreslenie.y = stred.y polomer Obrázok 75 Centrovanie vykresľovania objektov Rotácie textúr podľa pohybu Pre čo najintuitívnejšiu detekciu smerovania nepriateľov hráčom sme sa rozhodli otáčať ich animované textúry podľa ich uhla. Pri implementácií tejto vlastnosti sme natrafili na podobný problém ako pri centrovaní, teda ţe rotácia prebieha okolo ľavého horného bodu (obrázok 76). Pre centrálne vykresľovanie sme uţ nemohli vychádzať z predchádzajúceho modelu, keď boli do výpočtu brané jedine dva parametre, z toho jeden nemenný (polomer). Namiesto toho sme museli vyuţiť aj goniometrické funkcie vychádzajúce z uhľa smerovania nepriateľa. Pre korekciu tak boli pripočítavané hodnoty podľa obrázka 77. Pre hráča pôsobí umelo, keď sa nepriateľ vykresľuje hore nohami, preto sme zabezpečili zrkadlové otočenie textúry pre takýto prípad. Keďţe v projekte bola zahrnutá moţnosť samovoľnej zmeny smerovania nepriateľov, bolo potrebné navrhnúť, aby nedochádzalo rýchlemu zrkadlovému otáčaniu textúr. Rozhodli sme sa zaviesť zrkadlovú hysteréziu, ktorá zamedzuje tomuto javu tým, ţe zrkadlové otočenie prebieha aţ za posunutou hranicou extrému. Táto hranica je individuálna pre kaţdú zmenu rotácie a je počítaná pripočítaním, resp. odpočítaním hodnoty 20 stupňov od extrému. 69

Obrázok 76 Rotácia textúr okolo ľavého horného bodu Draw position according angle Delta Y Delta X Obrázok 77 Korekcia pre centrovanie rotovaných objektov Ekvivalentné spôsoby rotácií sme vyuţili aj pri kreslení steny a vykresľovaní lasera. Tie sa od nepriateľov odlišovali tvarom (obdĺţniky namiesto kruhov) a centrálnym miestom rotácie (ľavý-stredný bod namiesto stredo-stredného bodu). 70

Zomieranie nepriateľov Dôleţitým prvkom hry je likvidácia nepriateľov. Konečnej fáza tohto procesu však ponúka viacero vizuálnych a logických výsledkov, ktoré môţu nadobudnúť nasledovné podoby: Zmiznutie nepriateľa a pokračovanie Jimmyho v ceste. Zmiznutie nepriateľa a odrazenie Jimmyho. Postupné zmiznutie nepriateľa do stratena a odrazenie Jimmyho. Rozhodli sme sa, ţe pouţívateľsky najprívetivejší je posledný menovaný spôsob. Pre takto špecifikované správanie sme vyuţili softvérové zmenšovanie textúry. Jej postupným zmenšovaným vytvárame ilúziu plynulého pohybu. Nevýhodou je, ţe prostredie nám takúto zmenu neumoţnilo vykonať z ohľadom na stred textúry a opakovanie sme museli riešiť správne centrovanie (obrázok 78). Obrázok 78 Štandardné a chcené zmenšovanie textúr Pre prehľadnosť situácie sme proces zomierania nepriateľov obohatili o zvukový prejav. Ten môţe byť uţitočný najmä pri vyuţití niektorej z technológií, keď hráč nemá vizuálnu kontrolu nad celou hracou plochou. Podobný proces bol pouţitý aj pri vizuálnych prejavoch niektorých technológií pre plynulý prechod z aktívneho do neaktívneho stavu (pill, laser, nanobot squad). Cut-scény Na vysvetlenie príbehu a predstavovanie nepriateľov a technológií slúţia cut-scény. Sú to statické obrázky ktoré opisujú danú technológiu, nepriateľa alebo príbeh. Počas prehrávania cut-scén je na pozadí pustená vlastná hudobná téma. Cut-scény sa medzi sebou prelínajú pomocou Fade-in a Fade-out efektov. Rôzne cut-scény sú zobrazené na rôzne dlhý čas. Medzi cut-scénami sa dá rýchlo presúvať pomocou klikania na displej. Cut-scény s predstavovanými nepriateľmi a technológiami sa dajú opätovne zobraziť z Help menu. Cut-scény popisujúce herný príbeh sa nachádzajú na nasledujúcich obrázkoch. 71

Obrázok 79 Cut-scény s príbehom Ukončenie hry Hra má dvojicu rôznych ukončení. V prípade ţe sa hráčovi nepodarí prejsť danú úroveň a ţivot Otta klesne na nulu, tak hra je ukončená a hráčovi je zobrazená smutná Cut-scéna so smutným hudobným doprovodom (obrázok 80). Hráč má moţnosť opätovne skúsiť prejsť danú úroveň alebo ukončiť hru. Obrázok 80 Cut-scény s negatívnym ukončením 72

Po úspešnom ukončení poslednej úrovne je Otto vyliečený a hráčovi je zobrazená ukončovacia Cut-scéna so šťastným Ottom a jeho priateľmi (obrázok 81). 7.3.2 Herní nepriatelia Obrázok 81 Cut-scéna s pozitívnym ukončením V hre sa nachádza 10 druhov nepriateľov, ktorí reprezentujú skutočné baktérie a vírusy spôsobujúce najrozšírenejšie a váţne ochorenia. Na účel predstavenia nepriateľa hráčovi sme vytvorili pre kaţdého prezentačnú obrazovku. Tá obsahuje názov baktérie/vírusu a krátky popis choroby, ktorú spôsobuje a tieţ rady, ako sa vyhnúť nákaze danou chorobou. Hra týmto poskytuje aj edukatívny účinok pre detského hráča a preventívne rady. Okrem vyobrazenia pozitívneho vplyvu nových technológií na ţivot človeka (podľa témy súťaţe ImagineCUP) naša hra teda aj rozširuje povedomie o najrozšírenejších svetových ochoreniach a spôsoboch, ako sa im vyhnúť. Dôleţitou súčasťou prezentačných obrazoviek nepriateľov sú herné charakteristiky. Tie sú reprezentované vlastnosťami Damage, Life, Speed a Effective Technology. Damage : zranenie, ktoré daný nepriateľ spôsobí Ottovi za jednotku času. Life: počet ţivotov nepriateľa, môţe nadobúdať hodnoty 1 5. Speed: rýchlosť pohybu nepriateľa. Effective Technology: technológia, prípadne viac technológií, ktoré sú vhodné na boj s daným nepriateľom. Nepriatelia sa medzi sebou líšia nielen vlastnosťami ale aj grafickým výzorom a sú predstavovaní postupne ako hráč prechádza úrovne a stupne hry. Prezentačné obrazovky nepriateľov v hre sa nachádzajú na obrázkoch niţšie a sú usporiadané od najslabšieho po najsilnejšieho. 73

Obrázok 82 Cut-scéna - Salmonella Enterica Obrázok 83 Cut-scéna - Mycobacterium Tuberculosis Obrázok 84 Cut-scéna - Toxoplasma Gondii 74

Obrázok 85 Cut-scéna - Plasmodium Falciparum Obrázok 86 Cut-scéna - Legionella Pneumophila Obrázok 87 Cut-scéna - Lyssavirus 75

Obrázok 88 Cut-scéna - Staphilococcus Aureus Obrázok 89 Cut-scéna - Clostridum Tetani Obrázok 90 Cut-scéna - Borrelia Burgdorferi 76

7.3.3 Zvukové spracovanie Obrázok 91 Cut-scéna - Rotavirus Zvukovému spracovaniu hry sme venovali nadštandardné úsilie, pretoţe zvukové vnemy sú hneď po grafickom spracovaní najlepšie herné stimulátory. Vytvorili sme preto mnoţstvo zvukových tém, ktoré sa viaţu na aktuálnu hernú scénu. Napriek tomu mnoţstvo hráčov preferuje hranie bez zvukového doprovodu. Takýto pouţívatelia môţu v nastaveniach hry ovplyvňovať hlasitosť prehrávanej hudby, ale aj zvukových efektov samostatne v piatich stupňoch hlasitosti spoločne s ich vypnutím. V celej hre sú pouţité 4 rôzne hudobné doprovody, ktoré sú vytvorené spôsobom, ktorý umoţňuje ich prehrávanie v slučke. Tieto hudobné témy sú dostatočne dlhé, takţe nehrozí okamţité znudenie hráča. Okrem samotných zvukových doprovodov obsahuje hra aj mnoţstvo zvukových efektov, ktoré sa prehrávajú pri rôznych príleţitostiach. Hudobný doprovod Na všetky hudobné témy, ktoré sme pouţili v hre máme plné licencie, pretoţe okrem jednej témy sme si všetky ostatné vytvorili svojpomocne v rámci tímu. Jediný hudobný podklad, ktorý je pouţitý pri samotnom hraní hry nám na mieru vytvoril skladateľ a kamarát Richard Bešták. Túto tému sme ešte následne upravili aby mohla byť prehrávaná v slučke a mohli ju priamo pouţiť v hre. Ďalšie hudobné doprovody sú uţ jednoduchšie a skladajú sa zo štyroch akordov. Jedna hudobná téma je pouţitá pri pohybe v hernom menu, zatiaľ čo ďalšia sa prehráva pri zobrazovaní cut-scén. Samostatná hudobná téma je prehrávaná pri zobrazení cut-scény s umierajúcim Ottom, čo inšpiruje hráča na väčšie úsilie pri hraní. Pri všetkých hudobných podkladoch v hre je doprogramovaný softvérový Fade-out efekt, ktorý umoţňuje plynulý prechod medzi jednotlivými hudobnými témami. V prípade ţe by sme v hre nepouţili tento efekt, tak témy by sa prepínali skokovo, čo by pôsobilo veľmi neprirodzene a rušivo. Zvukové efekty Okrem hudobného doprovodu sú v hre pouţité najrôznejšie zvukové efekty od kliknutia gombíkov aţ po zomieranie nepriateľov. Na tento účel bolo treba pouţiť reprezentatívne zvukové efekty, ktoré vyjadrujú svojou podstatou jav, pri ktorom sú prehrávané. Najskôr sme skúšali vytvárať vlastné efekty, ale keďţe nemáme profesionálnu zvukovú výbavu, tak výsledok 77

bol rozporuplný. Rozhodli sme sa preto pouţiť zvukové efekty z kniţnice Microsoft SoundLab 11, ktoré sú pod licenciou Microsoft Permissive License. Táto licencia nám umoţňuje pouţívať zvukové efekty bez obmedzení, pokiaľ si ich nechceme patentovať, pozmeňovať a musíme dodrţiavať všetky patentové značky. V našom prípade to nepredstavuje problém, keďţe všetky náleţitosti licencie splňujeme. Zvukové efekty pouţívame pri klikaní na gombíky v Menu, pri presúvaní sa medzi stupňami s úrovňami, pri odráţaní Jimmyho od stien, hraníc obrazovky a nepriateľov, pri aktivácií, deaktivácii a chybe technológií, pri zabíjaní nepriateľov a iných javoch. Všetky zvukové efekty boli vyberané s citom pre simulovaný jav, ktorý musia čo najpresnejšie reprezentovať. Vďaka pouţitiu takéhoto bohatého zoznamu efektov je hra omnoho ţivšia a lepšie hrateľná, pretoţe pouţívateľ dostáva aj zvukovú odozvu na svoje akcie. 7.3.4 Vibračné efekty Pre zlepšenie interakcie s pouţívateľom sme do hry pridali aj vibračné efekty. Celkovo sú v hre implementované 4 typy vibračných efektov, ktoré sa rozlišujú dĺţkou pôsobenia. Vibračné časy sme nastavili na čo najkratšiu dobu, pretoţe pri dlhodobom hraní by tieto efekty mohli byť aţ otravné. Napriek tomu sa všetky vibračné efekty dajú vypnúť v nastaveniach hry. Ako najvhodnejšie vibračné časy sme stanovili dĺţky 25, 50, 100 a 400 ms. Vibrácie sú pouţité pri kolízií Jimmyho s hranicami obrazovky (25 ms), so stenami (25ms), s nepriateľmi (50 ms), pri nedovolenej aktivácií technológií (100 ms) a ukončení hry (400 ms). 7.3.5 Dizajnovanie herných úrovní Dizajnovanie jednotlivých úrovní patrí k najdôleţitejším činnostiam pri tvorbe celej hry. Príliš nízka náročnosť úrovní môţe pôsobiť nudiacim pocitom na hráčov, ktorí danú úroveň prejdú bez akejkoľvek snahy. Naopak príliš náročné úrovne neumoţnia hráčom vychutnať si hernú atmosféru a poriadne sa zabaviť. Je preto nevyhnutné navrhnúť optimálne úrovne ktoré by reflektovali reálnych hráčov. Z tohto dôvodu sme sa rozhodli zrealizovať rozsiahly betatesting, ktorý mal za účel nielen odhaliť prípadne implementačné chyby, ale vytvoriť aj tabuľku so všetkými hernými časmi a spotrebovaným ţivotom. Pomocou tejto tabuľky sme mohli následne zvoliť optimálne parametre jednotlivých úrovní. Generovanie úrovní Keďţe naša hra má pomerne jednoduché úrovne a nevyţaduje prvky nadštandardne inteligentného generovania hracích úrovní, tak sme sa rozhodli vytvoriť algoritmus ich automatického generovania. Kaţdá úroveň je tak špecifická len dostupnými technológiami, maximálnym ţivotom Otta, počtom a druhom nepriateľov. Pre lepšiu orientáciu sa Jimmy na začiatku kaţdej úrovne nachádza v strede obrazovky, avšak jeho uhol pohybu sa plne dynamicky mení s kaţdým načítaním úrovne. Podobne sú na tom aj nepriatelia, ktorých pozícia a uhol pohybu sa plne dynamicky a náhodne mení pri kaţdom načítaní úrovne. Týmto je do hry doplnený prvok náhodnosti, ktorý spoločne s náhodným pohybom nepriateľov zaručuje, ţe kaţdá úroveň je aj pri opätovnom hraní zakaţdým iná, avšak nahrané skóre je porovnateľné. Generovanie pozícií nepriateľov ale nie je triviálne, keďţe je nutné zabezpečiť, aby ich 11 http://create.msdn.com/en-us/education/catalog/utility/soundlab 78

štartovacia pozícia bola v rámci hernej plochy a aby pri štarte nekolidovali s Jimmym ale ani s ostatnými nepriateľmi. Na vhodné generovanie štartovacích pozícií nepriateľov pouţívame algoritmus s hysterézami, ktoré určujú, v akej minimálnej vzdialenosti musia byť všetci nepriatelia od seba a od Jimmyho. Nemôţe tak nastať situácia, ţe hneď po spustení hry sú viacerí nepriatelia ihneď zabití, keďţe sa nachádzajú hneď vedľa Jimmyho. Herné parametre úrovní Pomocou rozsiahleho beta-testingu sme vytvorili štatistický súbor s hernými časmi a potrebným ţivotom pre kaţdú úroveň. Beta-testing prebiehal so štyrmi reprezentatívnymi hráčmi, ktorí prešli kaţdú úroveň 5-krát. Týmto sme pre kaţdú úroveň získali štatistickú vzorku s 20-timi poloţkami. Z tejto vzorky sme mohli následne zvoliť vhodnú veľkosť ţivota, štandardného hracieho času a medailového ohodnotenia. Pri kaţdej úrovni sme nezávisle zoradili herný čas a potrebný ţivot. Z dvadsiatich vzoriek sme posledných päť hodnôt ignorovali a zapísali posledný najhorší čas a potrebný ţivot. Tieto hodnoty sme stanovili ako referenčné pre danú úroveň a následne sme pomocou týchto hodnôt vypočítali skóre kaţdého herného pokusu. Všetky tieto výsledky sme opätovne zoradili a prvým trom sme udelili zlatú medailu, ďalším štyrom striebornú a piatim bronzovú. Zvyšné tri výsledky boli bez medailového hodnotenia. Tento postup sme zopakovali pre kaţdú úroveň, aţ kým sme dosiahli všetky relevantné parametre. Niektoré úrovne sme ešte manuálne upravovali tak, ţe sme skracovali štandardný čas a ţivot, aby sme umelo zvyšovali náročnosť najmä v poslednej časti hry. 7.3.6 Rýchlostné a pamäťové optimalizácie Pre umoţnenie čo najrýchlejšieho chodu hry na mobilnom zariadení sme sa rozhodli zahrnúť do implementácie niekoľko optimalizačných prvkov. Tie umoţňujú efektívnejšie vyuţívanie procesora a pamäte telefónu. Najväčšiu časť v operačnej pamäti nepochybne tvoria textúry. Tie sú vzhľadom na platformu ukladané v bezstratovom, nekomprimovanom formáte. Keďţe mnohé objekty v aplikácií sú charakterizované tou istou textúrou, rozhodli sme sa, ţe takáto textúra bude umiestnená v pamäti maximálne jedenkrát (obrázok 92). V konečnej fáze, keď sme uţ nepotrebovali vývojársku podporu k projektu, sme skompilovali kód v móde Release namiesto Debug. Pri testovaní hry sme miestami pozorovali sekanie obrazu, ktoré ale bolo spôsobené aktivitami iných aplikácií, ktoré boli spustené na pozadí. Takisto sme sa venovali meraniu výkonnostných parametrov telefónu počas chodu hry. Zistili sme, ţe počas neho je alokovaných pribliţne 30 MB operačnej pamäte a 20 aţ 40 percent výkonu procesora telefónu HTC Titian. Najväčšia časť tohto výkonu bola ale spotrebovaná na vykresľovanie objektov a nie na výpočty spojené s gameplay-om. Vzhľadom na hardvérové poţiadavky, ktoré kladie spoločnosti Microsoft na telefóny vyuţívajúce platformu Windows Mobile 7.5 predpokladáme plynulý chod na akomkoľvek zariadení. 79

Obrázok 92 Pamäťová optimalizácia textúr 80

8 Testovanie Testovanie výslednej verzii hry prebiehalo vo viacerých úrovniach. Najskôr sme sa sústredili na postupné odstraňovanie všetkých chybičiek, následne na vhodný dizajn úrovní a aţ následne sme hru pripravili na finálne odovzdanie. Testovanie prebiehalo nielen na emulátore, ale aj na reálnych telefónoch. Na fakulte sme mali dostupné telefóny HTC Titan a HTC Radar. Zatiaľ čo Titan obsahuje výkonný 1,5 GHz procesor, tak Radar disponuje len 1 GHz modelom. Vďaka tomu sme mohli otestovať hru na jednom z najvýkonnejších ale aj najslabšom telefóne s operačným systémom Windows Phone 7.5. Testovanie preukázalo, ţe hra je pomerne nenáročná na dostupnú pamäť a procesor, keďţe pri najhoršej situácií hra spotrebuvávala len niečo cez 30 MB pamäte. Vyťaţenie procesora na slabšom Radar-e sa taktieţ pohybovala okolo 40 %, čo predstavuje dostatočnú rezervu pre budúce rozširovanie hry. Napriek tomu sme zaznamenali drobné problémy s plynulosťou na Radar-e, ktoré vznikali pri súčasnom spustení viacerých aplikácií na pozadí. Tento problém je spôsobený pravdepodobne slabším výkonom grafického čipu. Na rozsiahle otestovanie by sme potrebovali ďalšie telefóny, ktoré by vedeli presnejšie lokalizovať zdroj problémov. Obrázok 93 Prvá testovacia skupina Po úspešných rýchlostných optimalizáciách sme sa sústredili na odstraňovanie drobných chýb v zdrojovom kóde, ktoré spôsobovali nekorektné centralizovanie animácií a vykresľovanie niektorých textúr. Chyby sme úspešne lokalizovali a opravili aj vďaka testovacieho tímu hráčov, ktorí nepochádzali z nášho tímu. Vďaka tomu sme dosiahli 81

nestrannosť a významné kvalitatívne ohodnotenie ešte pred samotným odovzdaním finálnej verzie hry. Pred finálnym odovzdávaním bolo nutné ešte vytvoriť vhodné herné úrovne. Popis vytvárania úrovní sa nachádza v kapitole 7.3.5 Dizajnovanie herných úrovní. Testovanie herných úrovní spočívalo vo viacnásobnom hraní jednotlivých úrovní viacerými hráčmi, čím sme získali dostatočnú štatistickú vzorku. Pomocou tejto vzorky sme následne stanovili vhodné parametre úrovní, ktoré určujú nielen náročnosť, ale aj bodové ohodnotenie jednotlivých úrovní. Finálnu verziu hry sme ešte podrobili rozsiahlym testom, ktoré preukázali, ţe stanovená obtiaţnosť je stredne ťaţká, čo umoţňuje prejdenie hry aj menej skúseným hráčom. Testovanie sme realizovali aj v Ruţinovskej základnej škole, kde sme získavali od ţiakov cenné skúsenosti a poznatky z hrania. Hra sa im veľmi páčila a chceli by si ju zahrať aj na vlastných osobných telefónoch. Tento poznatok nás potešil a preto dúfame, ţe sa nám podarí postúpiť do finále súťaţe ImagineCUP, kde by sme obhajovali všetky kvality našej hry. Na obrázkoch 93 a 94 sa nachádzajú fotografie z testovania hry na Ruţinovskej základnej škole. Obrázok 94 Druhá testovacia skupina 82

9 Inštalačná príručka Kapitola s inštalačnou príručkou popisuje spôsob inštalácie a spustenia hry BumpyBot. Hru je moţné nainštalovať a spustiť na ľubovoľnom mobilnom telefóne s operačným systémom Windows Phone 7.5 alebo na softvérovom emulátore. Inštalačný súbor s hrou má názov BumpyBot.xap a nachádza sa v ZIP archíve na webovej stránke projektu. Tento archív obsahuje okrem spustiteľného (inštalačného) súboru aj všetky zdrojové súbory a potrebné kniţnice. Na rozbalenie archívu je nutné pouţiť heslo team07pkss. Výslednú verziu hry bude moţné nainštalovať cez beţný Marketplace tak ako to platí aj pri iných beţných aplikáciách. Súčasnú verziu hry je taktieţ moţné nainštalovať aj cez utilitu Application Deployment, ktorá vyţaduje vývojársky odblokovaný telefón alebo nainštalovaný emulátor. Screenshot tejto utility sa nachádza na obrázku 95. Pomocou utility Application Deployment je moţné nainštalovať hru nielen na telefón, ale aj na jeho softvérový emulátor. Po zvolení inštalačného zariadenia a súboru s hrou stačí spustiť Deploy a hra bude do niekoľkých minút nainštalovaná. Hra je v mobilnom telefóne alebo emulátore umiestnená v kategórií Programs, pretoţe kategória XBOX Live s hrami je nedostupná na emulátore a preto by nebolo moţné naň hru nainštalovať. Screenshot umiestnenia hry sa nachádza na obrázku 96. Hra sa spustí po kliknutí na ikonku BumpyBot. Funkčná hra v emulátore je znázornená na obrázku 97. Obrázok 95 Application Deployment Tool 83

Obrázok 96 Umiestnenie nainštalovanej hry Obrázok 97 Emulátor so spustenou hrou 84

10 Používateľská príručka Kapitola s pouţívateľskou príručkou opisuje všetky herné aspekty finálnej hry, ako aj návod ako ju hrať. Keďţe hra bola primárne vyvíjaná ako príspevok do súťaţe ImagineCUP, tak tomu zodpovedajú aj všetky vlastnosti, ktoré podliehajú stanoveným pravidlám tejto súťaţe. Keďţe táto súťaţ je medzinárodná s oficiálnym jazykom angličtinou, tak sme boli nútení všetky príspevky formulovať práve v tomto jazyku. Tento fakt nepovaţujeme za negatívum, keďţe vďaka tomu je výsledná hra pripravená na medzinárodné publikum, ale aj na neskoršie komerčné zámery. Z tohto dôvodu sme sa rozhodli neprekladať pouţívateľskú príručku, ale ponechať ju v pôvodnom znení tak, ako sme ju odovzdávali v našom príspevku. Pouţívateľskú príručku je tak moţné pouţiť pri akejkoľvek hernej prezentácií. 10.1 BumpyBot - Windows Phone 7.5 game Our game is called BumpyBot and it shows how technologies can help in fight against widespread diseases. The game helps to emphasize diseases awareness among players, mainly children. Our goal is to teach players in a funny way that without advancement in technology the medicine is short-handed. The final game release will be located in XBOX LIVE GAMES collection, however for the purpose of judging it is currently placed directly in Programs to enable playing in the emulator. After activation the Main Menu screen is displayed. Figure 1: The Main Menu screen 85

In the Options screen you can adjust volume of the music and sound effects, vibrations and technology panel position. Figure 2: The Options screen Available levels are displayed through Level Select screen accessible via Start Game button. Each stage contains six levels. You can move between the stages by clicking the arrow buttons or flicking gestures. Our game contains 30 levels of different difficulty. For the purpose of Submission 3 judging, all levels have been unlocked in the submission. To play the game, click on the icon of any available level. The highest achieved score and corresponding medal ranking of each level is displayed beside level buttons. Figure 3: Level Select screen 86

It is possible to access the Tutorial and Help screens from the Level Select screen. The tutorial screen is accessible via Question Mark button (in upper left corner). After activation it shows brief gameplay instructions. Figure 4: Tutorial screen The Help screen is accessible via Microscope button. The Help screen contains lists of all enemies and available technologies. Description of each object can be viewed after clicking on its icon. Figure 5: Help screen 87

The Description screens that introduce each new enemy or technology are shown before their first appearance in the game. Figure 6: Enemy description screen Figure 7: Technology description screen 88

The Gameplay screen is displayed on the Figure 8. It consists of several objects which are highlighted by arrows: 1. Jimmy the main character. By controlling him, you can destroy enemies. 2. Enemy Gameplay area contains several enemies. Each enemy decreases life and has its unique attributes. 3. Life indicator shows remaining life. When the indicator drops to zero current level is failed. 4. Technology accessible technologies are located in the technology bar. Each technology has some type of effect. It lasts limited amount of time and before next use it has to be fully recharged. It is not possible to activate more than one technology at a time but you can always deactivate it when you do not need it anymore. 5. Nano-wall Jimmy s bouncing movement is indirectly controlled by drawn walls which are created by user gestures. 6. Off-screen enemy indicator Some levels take advantage of automatic screen scrolling. In these levels Off-screen indicators inform the player about enemies behind the screen boundaries. 3 4 1 5 2 6 Figure 8: Gameplay screen 89

The Pause screen provides possibilities of game restart, exit to Main Menu and options adjusting. It is activated in following situations: Incoming phone call Application switch User pressing back button Figure 9: Pause screen Successful level completion is indicated by the Results screen. The player s skill is ranked with achieved score and player may be awarded with medals. From this screen player can continue to next level or retry the last level to gain better rating. Pressing the phone s back button navigates the player to the game Main Menu screen. Figure 10: Results screen 90

10.1.1 Game presentation For the purposes of game presentations we have prepared small game poster shown in the Figure 11. Also we would like to introduce you our Game Video and Game Trailer available in Youtube channel: http://www.youtube.com/bumpybot. The Game Video and Trailer display real commented gameplay, game features and much more. So sit back and enjoy our game! Figure 11: BumpyBot poster 91