}w !"#$%&'()+,-./012345
M ASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
Vývoj her na mobilní platformu iOS ˇ B AKALÁ RSKÁ PRÁCE
Jiˇrí Charvát
Brno, prosinec 2011
Prohlášení Prohlašuji, že tato bakaláˇrská práce je mým puvodním ˚ autorským dílem, které jsem vypracoval samostatnˇe. Všechny zdroje, prameny a literaturu, které jsem pˇri vypracování používal nebo z nich cˇ erpal, v práci rˇ ádnˇe cituji s uvedením úplného odkazu na pˇríslušný zdroj.
Jiˇrí Charvát
Vedoucí práce: RNDr. Jaroslav Škrabálek ii
Podˇekování Rád bych podˇekoval vedoucímu práce doktoru Jaroslavu Škrabálkovi za spolupráci a vedení této bakaláˇrské práce. Také dˇekuji své rodinˇe za podporu bˇehem studia.
iii
Shrnutí Oblast aplikací na chytrých telefonech zažívá v posledních letech velký rust ˚ a velkou cˇ ást tohoto rustu ˚ tvoˇrí hry. Tato bakaláˇrská práce se zabývá vývojem hry na operaˇcní systém iOS, který nastartoval nové trendy v hraní her na mobilních telefonech. Výsledkem práce je jednoduchá arkádová hra.
iv
Klíˇcová slova iOS, iPhone, hra, OpenGL, hudba, mobilní platformy, App Store
v
Obsah 1 2
3
4
5
6
7
8
Úvod . . . . . . . . . . . . . . . . . . . Výbˇer platformy . . . . . . . . . . . . 2.1 Herní handheldy . . . . . . . . . 2.2 Windows Phone . . . . . . . . . . 2.3 Android . . . . . . . . . . . . . . 2.4 iOS . . . . . . . . . . . . . . . . . 2.5 Ostatní platformy . . . . . . . . . Casual Gaming . . . . . . . . . . . . . 3.1 Historie casual her . . . . . . . . 3.2 Angry Birds . . . . . . . . . . . . App Store . . . . . . . . . . . . . . . . 4.1 Pˇríležitost pro vývojáˇre . . . . . . 4.2 Monetizace . . . . . . . . . . . . . Design . . . . . . . . . . . . . . . . . . 5.1 Herní mechanika . . . . . . . . . 5.2 Ovládání . . . . . . . . . . . . . . Výbˇer technologií . . . . . . . . . . . 6.1 Existující herní systémy . . . . . 6.2 Návrh vlastního herního systému 6.2.1 Grafika . . . . . . . . . . . 6.2.2 Zvuk . . . . . . . . . . . . 6.2.3 Programovací jazyk . . . 6.2.4 Nástroje . . . . . . . . . . Implementace . . . . . . . . . . . . . . 7.1 Aplikaˇcní rozhraní . . . . . . . . 7.2 Inicializace hry . . . . . . . . . . 7.3 Inicializace OpenGL . . . . . . . 7.4 Naˇctení textury . . . . . . . . . . 7.5 Herní smyˇcka . . . . . . . . . . . 7.6 Zvuk . . . . . . . . . . . . . . . . Závˇer . . . . . . . . . . . . . . . . . . . Literatura . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 3 3 3 4 4 5 7 8 9 11 11 12 14 14 15 18 18 19 19 20 20 20 22 22 22 23 26 27 28 29 30
vi
1 Úvod Moderní chytré mobilní telefony (smartphony) nejsou primárnˇe designovány jako herní zaˇrízení, proto se nedají považovat za plnohodnotné herní platformy. Pˇresto tato zaˇrízení zaslouží srovnání s hernímy handheldy Nintendo DS nebo Playstation Portable, protože výrazným zpusobem ˚ ovlivnily situaci v herním prumyslu, ˚ zejména v tom mobilním[1]. V souˇcasné dobˇe roste segment mobilních her vysokým tempem. Tento rychlý rust ˚ odstartoval Apple se svým iPhonem, který byl pˇredstaven Stevem Jobsem v lednu roku 2007[2]. iPhone zaútoˇcil na trh s chytrými telefony pˇredevším novým zpusobem ˚ ovládání. Díky absenci hardwarové klávesnice bylo umožnˇeno zvˇetšit displej do takových rozmˇeru, ˚ které by byly vhodné pro pohodlné ovládání dotykem prstu, ˚ místo do té doby hojnˇe používaného stylusu. Již i první generace iPhonu byla vybavena akcelerometrem, který detekuje gravitaci a odstˇredivé síly pusobící ˚ na pˇrístroj, Wi-Fi a vysokorychlostní konektivitou, díky které muže ˚ být iPhone témˇerˇ neustále pˇripojen k internetu. Tato funkcionalita dohromady s výkonným procesorem a grafickým cˇ ipem pˇrimˇela herní vývojáˇre uvažovat o designu her na tuto novou platformu. Apple mˇel puvodnˇ ˚ e v úmyslu poskytovat software tˇretích stran jen v jazyce Ajax. Tyto aplikace mˇely fungovat ve webovém prohlížeˇci Safari[2], kterým je iPhone vybaven. Apple si ovšem uvˇedomil potenciálu softwaru tˇretích stran, v bˇreznu roku 2008 pˇredstavil a uvolnil SDK1 , který vývojáˇrum ˚ umožnuje ˇ vytváˇrení vlastních iPhone nativních aplikací. V cˇ ervenci téhož roku Apple spustil distribuˇcní systém App Store, který odstartoval prudký rust ˚ hraní a vývoje her na smartphonech. Cílem této bakaláˇrské práce je vytvoˇrit hru na mobilní platformu. Vývojový tým se skládá pouze z jednoho vývojáˇre. Design hry, výbˇer technologií a samotný vývoj je tomu pˇrizpusoben. ˚ V textu práce jsou nejdˇríve srovnány souˇcasné nejvˇetší mobilní platformy a herní handheldy z pohledu samostatného vývojáˇre. Z tohoto výbˇeru je zvolena platforma iOS. Dále je v textu práce popsána problematika 1. Software development kit.
1
1. Ú VOD designu casual her, studie je ilustrována na úspˇešné hˇre Angry Birds. Další kapitola je vˇenována analýze a nastítˇení možných monetizaˇcních strategií v distribuˇcním systému App Store. Další kapitoly se vˇenují vývoji hry, jejíž implementace je hlavním výstupem této práce. Nejdˇríve je popsán design hry, v následující kapitole jsou vypsány technologie dostupné pro vývoj hry na iOS a vybrány vhodné z nich. Další kapitola se vˇenuje popisu samotné implementace a argumentaci použitých postupu. ˚ Výsledky práce a možná budoucí rozšíˇrení jsou popsány v závˇereˇcné kapitole.
Obrázek 1.1: Trism - jedna z prvních her na iPhone, zdroj gizmodo.com.
2
2 Výbˇer platformy Úkolem této bakaláˇrské práce není navrhnout multiplatformní herní systém, ale vybrat jednu vhodnou platformu pro nativní vývoj jednoduché hry s možností budoucího rozšíˇrení hry na jinou platformu. Moderní smartphony disponují uzavˇrenými operaˇcními systémy, k jejich prostˇredkum ˚ a službám lze pˇristupovat jen pomocí API, které je pro každou z platforem jiné, multiplatformní vývoj hry na smartphony tedy prakticky znamená vývoj hry soubˇežnˇe na jednotlivých platformách.
2.1 Herní handheldy Nejvˇetší pˇrekážkou pro vývoj hry na velké platformy (Sony PlayStation 3, Xbox 360, Nintendo Wii) a jejich menší sourozence (Sony Playstation Portable, Nintendo DSi) je jejich uzavˇrenost novým developerum ˚ a kladení ruzných ˚ pˇrekážek výrobci zaˇrízení. Pro získání SDK na nˇekterou z tˇechto platforem je tˇreba, aby developer kontaktoval výrobce zaˇrízení (Microsoft, Nintendo, Sony), poskytnul dukladné ˚ informace o své firmˇe, dokumentaci o chystané hˇre a portfolio dosud vydaných her. Teprve poté se výrobce konzole rozhodne, zda je developer dostateˇcnˇe kompetentní pro vývoj a pˇrípadnˇe poskytne licenci a nástroje. Pokud developer obdrží licenci, následuje nákladný vývoj, jehož souˇcástí jsou poplatky za testování, licence a certifikace, které se poˇcítají rˇ ádovˇe na tisíce dolaru. ˚ Kvuli ˚ vysokým nákladum ˚ a nutnosti pˇredvedení portfolia dosud vydaných her je pro zaˇcínající vývojový tým v souˇcasné dobˇe velmi obtížné zaˇcínat vývoj herního titulu na handheldu.
2.2 Windows Phone Windows Phone je nástupcem operaˇcního systému Windows Mobile od Microsoftu, se svým pˇredchudcem ˚ má ovšem jen málo spoleˇcného. Ze tˇrí hlavních srovnávaných platforem je nejmladší a v soucˇ asné dobˇe s nejménˇe poˇcetnou uživatelskou základnou[3]. Jeho online store má nejménˇe aplikací, není v souˇcasné dobˇe tak pˇresycený 3
ˇ PLATFORMY 2. V ÝB ER
jako iOS App Store a Android Market. Vývoj hry na Windows Phone probíhá v XNA frameworku v jazyce C#. Pˇrestože hardware Windows Phone podporuje OpenGL ES a jiné multiplatformní technologie, Microsoft nabízí pouze podporu Direct X, který je jednoduše portovatelný na Windows a Xbox, na ostatních platformách ovšem podporován Direct X není. Jednotlivé pˇrístroje, na kterých bˇeží Windows Phone, nejsou vyrábˇeny Microsoftem, ale ruznými ˚ výrobci. Granularita hardwaru1 je potlaˇcena fixními požadavky na hardware telefonu. Každý Windows Phone telefon souˇcasné generace disponuje stejným CPU2 , grafickým cˇ ipem, velikostí operaˇcní pamˇeti a rozlišením displeje. Poˇcet pˇrístroju˚ bˇežících na operaˇcním systému Windows Phone v souˇcasné dobˇe zdaleka nedosahuje poˇctu pˇrístroju˚ na konkurenˇcních platformách iOS a Android[3, 21], trpí tedy menším potenciálem.
2.3 Android Google Android je mobilní platforma s velmi rychle rostoucím pocˇ tem uživatelu˚ (viz. obrázek 2.1). Pˇrístroje pro tuto platformu vyrábí více firem, což se také jeví jako nejvˇetší pˇrekážka pro vývoj her na tuto platformu. Telefony jsou vybaveny cˇ ipy ruzných ˚ výrobcu˚ a ruz˚ ných specifikací, displeje mají ruzná ˚ rozlišení a rozmˇery apod.
2.4 iOS Náklady na vývoj aplikace pro platformu iOS jsou vˇetší než u konkurentu. ˚ Poplatek za Developer Account cˇ iní 99 dolaru˚ za rok. Na Androidu je tˇreba uhradit jednorázový poplatek 25 dolaru, ˚ na Windows Phone 99 dolaru. ˚ Vývoj aplikací na iOS probíhá pouze na poˇcítaˇci s operaˇcním systémem Mac OSX. iOS ovšem nabízí nejziskovˇejší distribuˇcní systém (viz. obrázek 2.2). Hotová aplikace musí pˇred vydání projít schvalovacím procesem, který muže ˚ na iOS trvat i nˇekolik týdnu[4]. ˚ Tímto pˇrístupem se Ap1. Zejména ruzná ˚ rozlišení displeje, odlišnosti v rychlosti hardware, podporovaných technologíí, funkcionalitˇe atp. 2. Central processing unit.
4
ˇ PLATFORMY 2. V ÝB ER
ple snaží pˇredejít rozmnožování shovelwaru3 , se kterým se potýkají jiné platformy. Vývoj probíhá v jazyce Objective-C, kompatibilní je i C a C++ kód. iOS disponuje výborným odladˇeným operaˇcním systémem a rozsáhlými vývojovými nástroji (viz. kapitola 6.2.4). Jelikož jsou jednotlivé generace pˇrístroju˚ zpˇetnˇe kompatibilní a modely netrpí rozmˇelnˇeností svých specifikací, vývoj na starší generaci pˇrístroje zjednodušuje optimalizaci aplikace na novˇejší generaci. Jelikož je platforma iOS v souˇcasné dobˇe zˇrejmˇe nejperspektivnˇejší platformou, je vybrána pro vývoj hry, jejíž implementace je soucˇ ástí této práce.
2.5 Ostatní platformy Ostatní platformy, jako Symbian, RIM a Bada jsou v souˇcasné dobˇe spíše na ústupu a není jim vˇenována další pozornost.
Obrázek 2.1: Prodej smartphonu˚ podle operaˇcního systému ve tˇretím kvartálu 2011, zdroj Gartner.com.
3. Viz.
.
5
ˇ PLATFORMY 2. V ÝB ER
Obrázek 2.2: Zisk top 200 grossing aplikací ve tˇrech nejvˇetší smartphone obchodech v listopadu 2011, zdroj Distimo.com.
6
3 Casual Gaming Hranice casual hry a non-casual hry jsou velmi mlhavé, ne všechny hry lze jednoznaˇcnˇe zaˇradit mezi casual hry a stejnˇe tak nelze o všech casual hrách tvrdit, že patˇrí cˇ istˇe do kategorie casual her. Pˇresto lze u casual her definovat urˇcitou sadu vlastností, kterými se tyto hry vyznaˇcují: •
cílení na široký okruh uživatelu, ˚
•
volný žánr,
•
velmi jednoduchá herní pravidla,
•
umožnˇení hraní v krátkých dávkách,
•
absence herního konce,
•
primitivní uživatelské rozhraní,
•
velmi jednoduché ovládání,
•
proces uˇcení žádný, pˇrípadnˇe svižný[5].
Díky svým primitivním pravidlum, ˚ pˇrímoˇcarým uživatelským rozhraním a jednoduchým ovládáním jsou casual hry mnohem lépe pˇrístupné lidem, kteˇrí hry nikdy nehráli. Tento pˇrístup je odlišný od hardcore her, které jsou považovány za protipól casual her. Hardcore hra oˇcekává od hráˇce jistou znalost základních herních principu˚ a mentálních modelu, ˚ získané hraním pˇredchozích her. Zkušenˇejší hráˇc oˇcekává, že se v 3D akˇcní hˇre stˇrílejí nepˇrátelé, v akˇcní arkádˇe sbírají body, v RPG1 hˇre plní questy, zabíjí bossové, získávají zkušenostní body apod. Spustí-li hardcore hráˇc rozsáhlou RPG hru, už pˇred zhruba tuší, že by mˇel zaˇcít pracovat na vylepšování vlastností svého avatara, ve hˇre konverzovat s herními postavami, zkoumat okolí. Je-li do takového svˇeta vržen hráˇc, který nemá zkušenosti s hraním her, dokáže se ve zmˇeti herních pravidel a informací ztratit a složitost hry ho odradí od jejího hraní. 1. Role-playing game.
7
3. C ASUAL G AMING Casual hry nemají vymezen žánr, pˇresto se nˇekteré žánry objevují cˇ astˇeji a nˇekteré ménˇe. Velmi oblíbené jsou mezi casual hráˇci zejména puzzle hry, šachy a karetní hry. Všechny tyto žánry spolu mají své pˇredchudce ˚ v oblíbených stolních hrách. Pro casual hráˇce jsou principy tˇechto her alesponˇ okrajovˇe známy a není potˇreba, aby si pro jejich hraní vytváˇreli nové mentální modely a uˇcili nová herní pravidla.
3.1 Historie casual her Za pˇredchudce ˚ casual her se všeobecnˇe považují klasické arkádové hry jako Pac-man, Tetris, ale tˇreba i Solitaire a Minesweeper. Expanze webu zajistila i expanzi casual her. Zaˇcaly vznikat hry pro webové prohlížeˇce. Vˇetšinou šlo o jednoduché karetní nebo logické hry, ovládané pouze myší. Velkou expanzi casual her na internetu zpusobil ˚ Flash, díky kterému zaˇcaly vznikat weby, které se specializují na distribuci casual her2 . Distribucí v tomto pˇrípadˇe rozumíme vystavení hry na webovém portálu, systém ratingu her, žebˇríˇcky hratelnosti, nikoliv distribuci krabicové verze hry. Velmi oblíbené jsou hry na mobilních telefonech. Zpoˇcátku byly hry na mobilech distribuovány jako souˇcást daného modelu, bez možnosti instalovat nové hry. Pˇríchodem chytrých telefonu˚ vznikla možnost nákupu nových her, distribuˇcní systémy byly ovšem ve srovnání s moderními distribuˇcními systémy, jako App Store (viz. kapitola 4) nebo Android Market, nemotorné a zdlouhavé. iOS App Store je prvním mobilním distribuˇcním systémem, který umožnuje ˇ pˇrímo v telefonu procházet seznamy herních titulu, ˚ prohlížet si obrázky ze hry, porovnávat aplikace mezi sebou, a hlavnˇe jedním stlaˇcením tlacˇ ítka aplikaci koupit a nainstalovat. Tento velmi pˇrímoˇcarý pˇrístup umožnil uživatelum ˚ jednoduchý pˇrístup k novým aplikacím, vˇcetnˇe her. Díky faktu, že v App Storu stojí po boku užitkové aplikace a hry, i cˇ lovˇek, který nikdy žádnou hru nehrál, získává velmi jednoduchou a rychlou možnost, jak hru vyzkoušet. Vznikl tak obrovský potenciál pro vývojáˇre casual her. 2. Napˇríklad .
8
3. C ASUAL G AMING
3.2 Angry Birds Hra, která této šance využila asi nejlépe, je hra Angry Birds od finských vývojáˇru˚ Rovio. Hra spoˇcívá ve vrhání ptáku˚ ve tvaru dˇelových koulí z praku na domeˇcky poskládané z kvádru˚ ruzných ˚ materiálu. ˚ V tˇechto domeˇccích se schovávájí prasátka, která musí hráˇc vrháním ptáku˚ zneškodnit. U tohoto jednoduchého herního konceptu tráví hráˇci po celém svˇetˇe zhruba 200 milionu˚ minut každý den[6]. V úvodním menu hry je uprostˇred obrazovky umístˇeno jediné dominantní tlaˇcítko pro spuštˇení hry. Po stisknutí se objeví nabídka s dostupnými úrovnˇemi. Odemknutá je jen jedna, volba je tedy jasná. Hra následnˇe na jediném obrázku vysvˇetluje základní ovládání hry. Pˇred hráˇce nejsou kladeny žádné další pˇrekážky. I cˇ lovˇek, který nikdy žádnou mobilní hru nehrál, je schopen rychle hru spustit a pochopit základní herní pravidla. Hráˇc má v první úrovni (levelu) hry k dispozici pouze jeden základní druh ptáka (zbranˇe) a proti nˇemu stojí jednoduchá nepˇrátelská stavba. První level slouží k vytvoˇrení základního mentálního modelu hry (zpusob ˚ interakce s hrou, systém bodování, základní strategii). Pokud by se tento model nestával postupnˇe složitˇejší, hráˇce by hra zaˇcala nudit. Proto je ve hˇre chytˇre implementován proces uˇcení, který není ani pomalý (hráˇci by se hra zdále až moc primitivní a jednotvárná), ale ani pˇríliš rychlý (hra by se stávala složitˇejší pˇríliš rychle, hráˇc by nestíhal vstˇrebávat nové principy)[6]. Do procesu uˇcení je zapojeno nˇekolik herních prvku. ˚ Jedním z nich je postupné pˇridávání nových druhu˚ ptáku, ˚ kteˇrí mají odlišné schopnosti (žlutý dokáže prorazit nˇekolik vrstev dˇrevˇeného opevnˇení, modrý se umí bˇehem letu rozdˇelit na tˇri menší apod.). Dalším je zvyšování pocˇ tu druhu˚ nepˇrátel, zvyšující se odolnost jednotlivých opevnˇení nebo pˇridávání nových materiálu, ˚ ze kterých jsou opevnˇení postavena. Dokonˇcení levelu netrvá déle než nˇekolik minut. Pro zachování zábavnosti a minimalizaci frustrace existuje v Angry Birds možnost korekce chyby. Pokud se hráˇci jeho hod nepovede, muže ˚ velmi jednoduše upravit dráhu letu podle zobrazené trajektorie poslední stˇrely. Pokud se mu nepovede splnit level, muže ˚ ho stiskem jednoho tlacˇ ítka spustit znovu. Výsledkem je plynulý a rychlý postup hráˇce jednotlivými levely a pravidelné odmˇenování ˇ hráˇce v krátkých intervalech. 9
3. C ASUAL G AMING Hráˇc v Angry Birds postupnˇe prochází jednotlivými úrovnˇemi, které nabízí nové výzvy. Má ale také možnost spustit levely, které prošel už dˇríve. U každého levelu muže ˚ hráˇc dosáhnout jedné až tˇrí zlatých hvˇezd, pˇriˇcemž tyto hvˇezdy jsou v herní nabídce pomˇernˇe výraznˇe zobrazeny. Hráˇc se postupem cˇ asu zlepšuje v ovládání hry a zpˇetnˇe levely prochází za cílem zisku maximálního poˇctu zlatých hvˇezd, což prodlužuje herní dobu a dále odmˇenuje ˇ hráˇce. Angry Birds exceluje v základním principu zpracování grafiky a zvuku v casual hrách - zapamatovatelnost. Jednoduchá pastelová grafika, ve které jsou vyvedeny uhranˇcivé obliˇceje hlavních protagonistu, ˚ koresponduje s jednoduchou melodií, která se ve hˇre cˇ asto opakuje. Hráˇc si tuto melodii jednoznaˇcnˇe asociuje s hrou. Zvuky se zdají být na první poslech primitivní, v podvˇedomí hráˇce však vyvolávají emoce. Ptáci reagují na souˇcasný stav hry. Na zaˇcátku levelu vydávají povzbuzující zvuky, pˇri odpalu vyjadˇrují odhodlání k útoku, v pˇrípadˇe úspˇechu se radují. Prasata bˇehem hry hloupˇe pochrochtávají a vyvolávají v hráˇci potˇrebu ukonˇcit jejich životy. Pokud hráˇc neuspˇeje, prasata vydávají posmˇešné zvuky, generující v hráˇci zlost a vˇetší potˇrebu destrukce.
Obrázek 3.1: Nejpopulárnˇejší iOS casual hra Angry Birds, zdroj Mauronewmedia.com.
10
4 App Store Velkou expanzi casual her na internetu zpusobil ˚ Flash, díky kterému zaˇcaly vznikat webové portály, které se specializují na distribuci casual her (napˇr. pogo.com). Herní vývojáˇr zaplatí urˇcitý poplatek, portál hru vyvˇesí v seznamu her a developerovi vyplácí cˇ ástku odvíjející se hlavnˇe od poˇctu spuštˇení hry. Hry mohou být rˇ azeny podle kategorií, poˇctu spuštˇení, hodnocení hráˇcu˚ apod. Podobný systém zavedl App Store, služba sloužící k distribuci aplikací tˇretích stran na mobilní telefony s operaˇcním systémem iOS. App Store byl spuštˇen v cˇ ervenci roku 2008[7]. Za dva a pul ˚ roku z nˇej bylo staženo pˇres 10 miliard aplikací[8].
4.1 Pˇríležitost pro vývojáˇre Nejvˇetší výhodou moderních mobilních distribuˇcních systému˚ pro developery ve srovnání napˇríklad s krabicovým distribuˇcním systémem je, že nabízet svuj ˚ software v nich muže ˚ prakticky kdokoliv. Pro distribuci vlastní aplikace v App Storu je podmínkou složení poplatku 99 dolaru˚ za Apple Developer account a aplikace musí projít schvalovacím procesem. Neexistuje zde nutnost využívat služeb publisheru, ˚ distributoru, ˚ obchodníku˚ a dalších prostˇredníku, ˚ kteˇrí si úˇctují marže a samotnému vývojáˇri zustane ˚ jen malý podíl ze zisku. Vývojáˇr dostane od Applu 70% zisku, což je mnohem vyšší podíl než pˇri klasické krabicové distribuci. Díky minimálním pˇrekážkám se vývoji her na iOS zaˇcalo vˇenovat obrovské množství developeru˚ a konkurence zaˇcala narustat ˚ velkým tempem. V prvních mˇesících po otevˇrení App Storu staˇcilo pro vygenerování zisku aplikaci vyvˇesit. Ceny za hry byly nˇekolikanásobnˇe vyšší než v souˇcasné dobˇe. Konkurence ovšem zaˇcala rychle pˇribývat a donutila vývojáˇre snížit cenu aplikací na minimální možnou cenu, kterou App Store dovoluje nastavit. V souˇcasné dobˇe se v App Storu objevují stovky nových aplikací dennˇe, z nichž vˇetšinu tvoˇrí hry. Jakmile aplikace projde schvalovacím procesem, je vystavena v App Storu v seznamu nových aplikací, ve kterém je vystavena jen nˇekolik hodin do té doby, než se seznam aktualizuje opˇet o nové. Pokud není její prodej podpoˇren marketingem, hrozí stažení jen nˇe11
4. A PP S TORE kolika kusu˚ bˇehem prvních pár hodin a pak se ztratí v závalu nových aplikací. Konkurenci mezi hrami v App Storu zvyšuje pusobení ˚ stále více „velkých“ herních vydavatelu˚ jako Gameloft, EA nebo Zynga. Tyto spoleˇcnosti disponují velkými finanˇcními a lidskými zdroji a jsou ochotny do vývoje hry investovat mnohonásobnˇe vyšší sumy než malá nezávislá studia, která dominovala dˇríve a jejichž herní tituly jsou postupnˇe vytlaˇcovány z pˇredních pˇríˇcek prodejnosti.
4.2 Monetizace V App Storu lze aplikace monetizovat nˇekolika zpusoby. ˚ Prvním z nich je klasický zpusob, ˚ kdy uživatel zaplatí za hru ještˇe pˇred samotným spuštˇením aplikace. Dobrým zvykem pˇri výbˇeru tohoto modelu je poskytnout verzi hry zdarma s omezenou funkcionalitou, aby si hráˇc mohl hru nejdˇríve vyzkoušet a pˇrípadnˇe koupit. Tento model obnáší dvˇe základní strategie pro prodej aplikace. První z nich je nastavení minimální ceny1 a vytvoˇrení dostateˇcného všeobecného vˇedomí o aplikaci ještˇe pˇred jejím vydáním (sociální sítˇe, zajištˇení preview cˇ lánku˚ na herních portálech atp.), cˇ ímž se zvýší šance, že se aplikace po zahájení prodeje propracuje do tabulek top prodejnosti. Jakmile se aplikace v tabulkách objeví, zaˇcne generovat nˇekolikanásobnˇe vyšší zisky. Druhou strategií je nastavení vyšší ceny než minimální (pˇetkrát vyšší cena s pˇetinovým poˇctem stažení znamená stejný zisk) a investice do marketingové kampanˇe. Velmi úspˇešní jsou v tomto modelu napˇríklad brnˇenští Madfinger Games se svým Shadowgunem. Druhým zpusobem ˚ je využití mikroplateb pro nákup ruzných ˚ herních bonusu. ˚ tzv. freemium hry. Tyto hry jsou zdarma, za reálné peníze však nabízí rozšíˇrenou funkcionalitu (in-game purchases). Záleží na samotném hráˇci, zda se rozhodne do hry investovat peníze, at’ už z duvodu ˚ získání bonusu ve hˇre nebo podpory vývojáˇru˚ za kvalitnˇe odvedenou práci. Tento model úspˇešnˇe aplikovala rˇ ada her, napˇríklad Tiny Tower. Nevýhodou tohoto platebního modelu je nutnost zahrnout jej do designu hry z duvodu ˚ správného a fungujícího herního systému, proto lze tento model huˇ ˚ re aplikovat na nˇekteré 1. Tato cena v dobˇe psaní práce odpovídala 0,79 EUR.
12
4. A PP S TORE herní žánry. Posledním modelem jsou hry s integrovanou reklamou, na iOS dostupnou ve frameworku iAd. Reklama ve hrách na iOS ovšem podle ohlasu˚ vývojáˇru˚ negeneruje dostateˇcné zisky, zatímco na platformˇe Google Android je velmi úspˇešná, využívá ji napˇríklad Angry Birds.
13
5 Design Mnou vytvoˇrená hra, jejíž implementace je souˇcástí této bakaláˇrské práce, je inspirována klasickými „shoot ’em up“ arkádovými 2D stˇríleˇckami (R-Type). Základní herní systém tvoˇrí raketka ovládaná hrácˇ em, která letí vesmírem ve 2D ortografickém pohledu a stˇrílí nepˇrátele. Design herního systému je smˇerˇ ován podle pravidel nastínˇených v kapitole o casual gamingu.
5.1 Herní mechanika Velkou výzvou pˇri vývoji hry je design a tvorba herního prostˇredí. Herní prostˇredí lze vytváˇret dvˇemy základními postupy. Prvním z nich je manuální vkládání herního obsahu (bonusu, ˚ pˇrekážek, nepˇrátel apod.) do prostˇredí. Tento zpusob ˚ používá napˇríklad hra Angry Birds, ve které hráˇc postupnˇe prochází manuálnˇe navržené statické levely. Výhodou tohoto zpusobu ˚ je úplná kontrola nad herním prubˇ ˚ ehem a obsahem, nevýhodou tohoto postupu pro vývojáˇre je velká cˇ asová a kreativní nároˇcnost pˇri vytváˇrení herního obsahu. Druhým zpusobem ˚ je procedurální generování prostˇredí. Herní prostˇredí je generováno matematicky pro každou novou hru zvlášt’ a unikátnˇe na základˇe kombinace herních prvku˚ a urˇcitých omezujících pravidel a použití náhodných cˇ ísel. Herní obsah muže ˚ být pro každou novou hru unikátní a tento zpusob ˚ také umožnuje ˇ návrh „nekoneˇcného“ herního prostˇredí. Procedurálního generování herního prostˇredí využívá napˇríklad úspˇešná hra Tiny Wings, viz. obrázek 5.1. Implementovaná hra využívá jednoduchého aktivního procedurálního systému. Ve hˇre padají asteroidy, za jejichž zniˇcení hráˇc získává body. Hráˇc si na zaˇcátku hry vybere libovolnou skladbu ze své iPod databáze, která je dostupná na všech iOS zaˇrízeních. Cílem hry je nasbírat co nejvˇetší poˇcet bodu˚ bˇehem jedné skladby. Množství asteroidu, ˚ jejich barva a rychlost jejich padání závisí na intenzitˇe pˇrehrávané hudby v daném okamžiku (ˇcím vyšší intenzita, tím cˇ ervenˇejší zbarvení asteroidu, ˚ vyšší rychlost padání). Za sestˇrelení „intenzivnˇejšího“ asteroidu získává hráˇc více bodu. ˚ Hra konˇcí, jakmile 14
5. D ESIGN
Obrázek 5.1: Procedurálnˇe generované herní prostˇredí v Tiny Wings, zdroj Toucharcade.com. konˇcí skladba. Jedna hra trvá jen nˇekolik minut, koresponduje tedy se základním principem casual hry. Hra nemá pˇrímý konec. Hráˇc muže ˚ libovolnˇe vybírat skladby a opakovanˇe pouštˇet hru, motivován je primárnˇe snahou o vylepšení maximálního skóre. Pˇrítomen je proces uˇcení, kdy hráˇc postupnˇe objevuje herní mechanismy a postupem cˇ asu je schopen na stejné skladbˇe získat vyšší skóre. Hráˇc také muže ˚ experimentovat se skladbami. Na intenzivnˇejší a delší skladbˇe lze nahrát vyšší skóre než na krátké a ménˇe intenzivní skladbˇe. Název hry by mˇel být krátký, výstižný a zapamatovatelný. Vzhledem k tématickému zamˇerˇ ení hry jsem zvolil název Song Shootix.
5.2 Ovládání Ovládání by mˇelo být v duchu casual her co nejintuitivnˇejší. Hráˇc v Song Shootixu ovládá pozici raketky, která se pohybuje po 2D ploše, 15
5. D ESIGN
Obrázek 5.2: Základní koncept hry. ve dvou osách. Pˇri navrhování ovládání na tento pohyb je možno vybírat ze dvou zpusob ˚ u. ˚ První z nich využívá akcelerometru nebo gyroskopu k detekci naklonˇení pˇrístroje. Akcelerometr trpí menší pˇresností a vyšším input lagem1 než dotykové ovládání. Novˇejší iPhony (iPhone 4 a 4S) jsou vybaveny gyroskopem, který je mnohem pˇresnˇejší a rychlejší. Song shootix je ovšem designován s ohledem na kompatibilitu se staršimi iPhony. Nekonzistence v ovládání mezi jednotlivými pˇrístroji by vedla ke zvýhodnování ˇ uživatelu˚ s novˇejšími pˇrístroji. Pro ovládání Song Shootixu je použit druhý zpusob, ˚ ovládání dotykem prstu. Pozice raketky na herní ploše je pˇrímo závislá na pozici prstu na displeji. Díky tomu, že se hra odehrává v abstraktním prostˇredí, nemusíme klást na raketku jakékoliv virtuální fyzikální omezení, napˇríklad maximální boˇcní zrychlení nebo maximální rychlost pˇremist’ování. Tato omezení by byla vhodná, pokud by se hra odehrávala napˇríklad v období druhé svˇetové války a namísto abstraktní raketky by hráˇc ovládal motorový letoun. Pˇrímý zpusob ˚ dotykového 1. Prodleva mezi pohybem hráˇcova prstu a projevem tohoto pohybu na displeji.
16
5. D ESIGN ovládání je nejpˇresnˇejší, nejrychlejší a nejpˇrirozenˇejší a zapadá do konceptu hry, skýtá ovšem problémy, kterých je tˇreba se vyvarovat a které se pˇri jiných zpusobech ˚ ovládání neobjevují[9]. Nejduležitˇ ˚ ejším z nich je zakrývání herní plochy pod hráˇcovým prstem. Z tohoto duvodu ˚ létají asteroidy v Song Shootixu jen smˇerem shora dolu, ˚ nikoliv zdola nahoru. Hráˇc musí mít veškerou herní plochu pod kontrolou, pro hráˇce by bylo frustrující, kdyby mu hrozilo nebezpeˇcí z míst, která nemá pod kontrolou kvuli ˚ designu hry. Song Shootix pˇri spuštˇení nabízí hráˇci možnost zvolit skladbu. Po jejím zvolení automaticky zaˇcíná hra. Bˇehem hry není zobrazeno žádné tlaˇcítko pro pozastavení hry. Tlaˇcítko je nepraktické, zabírá na ploše displeje zbyteˇcnˇe místo, hrozí neúmyslné maˇckání tlaˇcítka apod. Hra se automaticky pozastaví, jakmile se hráˇcuv ˚ prst pˇrestane dotýkat displeje, ovšem až po uplynutí krátkého okamžiku, aby hráˇc automatického pozastavování nezneužíval. V pozastaveném režimu se hráˇci zobrazí nejvyšší dosažené skóre a tlaˇcítko pro možnost výbˇeru jiné skladby. Jakmile se hráˇcuv ˚ prst opˇet dotkne displeje, hra se opˇet automaticky rozbˇehne. V levém horním rohu hráˇc vidí aktuální dosažené skóre, v levém dolním rohu jméno autora a název skladby. Ve spodní cˇ ásti displeje je umístˇena signalizace ubˇehnutého cˇ asu od startu skladby.
17
6 Výbˇer technologií Song Shootix je vyvíjen s cílem dosáhnout maximální plynulosti, protože se v nˇem objevuje mnoho rychle se pohybujících objektu˚ a jejich plynulý pohyb je žádoucí pro výsledný herní dojem1 . iPhone je sice pˇrístroj s pomˇernˇe výkonným hardwarem, plýtvání prostˇredky ovšem vede k dramatickému snížení životnosti baterie. Obnovovací frekvence obrazovky iPhonu cˇ iní podle specifikace 60 FPS2 [10]. Dosahuje-li hra stabilních 60 FPS, procesor a grafický cˇ ip pˇrístroje nejsou vytíženy na 100% (což je napˇríklad cíl správné optimalizace her na PC a konzolích), a plynulost hry je pˇritom zachována. Pˇri správném výbˇeru technologií a postupu˚ lze dosáhnout maximální plynulosti hry pˇri zachování stˇrídmé spotˇreby energie. Song Shootix je optimalizován na bˇeh na starších iPhonech, které nejsou vybaveny novˇejšími ARMv7 procesory a grafickými procesory PowerVR SGX (iPhone 3GS, 4, 4S). Implementace je testována na iPhonu 3G, který je vybaven pomalejším procesorem ARMv6 a grafickým procesorem PowerVR MBX, stejnˇe jako iPhone první generace[2][10]. Díky zpˇetné kompatibilitˇe jednotlivých generací iPhonu zajistí plynulý bˇeh hry na iPhonu 3G plynulý bˇeh i na novˇejších modelech, ovšem s nižší spotˇrebou energie.
6.1 Existující herní systémy Pˇri výbˇeru technologií je tˇreba si uvˇedomit, jakou funkcionalitu bude hra vyžadovat. Pro vývoj her na iOS existuje nˇekolik „dospˇelých“ komplexních herních systému˚ (enginu), ˚ které slouží pˇredevším pro vývoj her na velkých platformách (PC, konzole) a nabízí i výstup pro iOS zaˇrízení. Mezi nˇe rˇ adíme pˇredevším Unity 3D, Unreal Development kit a Torque engine. Tyto enginy jsou komerˇcní produkty, které poskytují základní funkcionalitu zdarma, pro plnohodnotný vývoj je tˇreba zaplatit licenci, jejíž cena se pohybuje v rˇ ádech stovek až tisícu˚ dolaru. ˚ Nabízí komplexní vývojová prostˇredí, nástroje 1. Porovnání ruzných ˚ poˇctu˚ snímku˚ frames-per-second.appspot.com/>. 2. Frames per second, tj. snímku˚ za vteˇrinu.
za
vteˇrinu:
18
ˇ TECHNOLOGIÍ 6. V ÝB ER
a služby pro kompletní vývoj rozsáhlých herních projektu˚ (editor, fyzikální, zvukový a vykreslovací (renderovací) engine, komplexní sít’ové služby, skriptovaní scén atd.). Pˇríklady her vyvinutých pomocí tˇechto nástroju˚ jsou napˇríklad Shadowgun brnˇenských Madfinger Games (Unity 3D), nebo Gyro13 pražského studia Cinemax (Unreal Development Kit). Tyto nástroje jsou výhodné zejména pro rozsáhlejší a složitˇejší projekty. Jejich funkcionalita zdaleka pˇrevyšuje potˇreby pro implementaci funkcionality Song Shootixu, proto nejsou použity. Cocos2D je open source renderovací engine postavený na OpenGL ES. Funkcionalitou nedosahuje rozsahu enginu˚ zmínˇených v pˇredchozím odstavci, designován je pˇredevším na tvorbu mobilních 2D her, nenabízí ovšem flexibilitu a volnost, kterou lze získat návrhem vlastního ad-hoc systému. Disponuje správcem scén, herních objektu, ˚ naˇcítání textur, propacovaným a efektivním renderovacím enginem apod. Využívá ho rˇ ada úspˇešných produktu, ˚ napˇríklad iOS hra Tiny Tower[11].
6.2 Návrh vlastního herního systému Implementace vlastního herního systému je cˇ asovˇe nároˇcnˇejší, než použití existujícího herního systému, dovoluje ovšem maximální kontrolu nad herním systémem a umožnuje ˇ dokonalejší optimalizaci a efektivnˇejší využití systémových prostˇredku˚ pˇrístroje. Vlastní herní systém je vhodný pro menší projekty, na kterých pracuje menší pocˇ et vývojáˇru. ˚ Jelikož je Song Shootix pomˇernˇe jednoduchá hra, zvolil jsem vývoj vlastního jednoduchého herního systému. 6.2.1 Grafika V iOS je pro vykreslování grafiky k dispozici Quartz 2D, což je API postavené na OpenGL ES sloužící k vykreslování základních geometrických tvaru, ˚ kˇrivek, naˇcítání a vykreslování rastrové grafiky apod. Pro vykreslování her je na iOS vhodné multiplatformní API OpenGL ES které je použito v implementaci Song Shootix. Souˇcástí starších iPhonu˚ (první generace a 3G) je specifikace OpenGL ES 1.1, která je „odlehˇcenou“ a pro mobilní zaˇrízení optimalizovanou verzí 19
ˇ TECHNOLOGIÍ 6. V ÝB ER
specifikace OpenGL 1.5 [12]. Novˇejší iPhony podporují specifikaci OpenGL ES 2.0, jejíž souˇcástí jsou pokroˇcilejší techniky vykreslování (programovatelná pipeline - shadery), pro potˇreby 2D hry a potˇrebných technik pro zobrazení 2D grafiky plnˇe postaˇcí specifikace ES 1.1. 6.2.2 Zvuk Song Shootix v souˇcasné verzi pˇrehrává hudbu ve formátech podporovaných operaˇcním systémem iOS a sleduje intenzitu zvuku v daný okamžik. Obˇe funkce zajišt’uje tˇrída AVAudioPlayer. Do budoucích verzí hry je plánováno širšího využití informací o zvukovém spektru pˇrehrávané hudby a pˇridání zvukových efektu. ˚ K tomu je na iOS vhodná multiplatformní knihovna OpenAL. Ve hˇre je v souˇcasné dobˇe implementována kostra zvukového pˇrehrávaˇce postaveného na OpenAL, není ale použita. 6.2.3 Programovací jazyk Nativním jazykem na operaˇcním systému iOS je Objective-C. V tomto jazyce je napsáno Cocoa Touch API, které tvoˇrí základ každé aplikace na iOS. Pro vlastní kód hry máme na výbˇer z nˇekolika jazyku. ˚ Mu˚ žeme jednak využít Objective-C, ten ovšem není z hlediska výkonu ideální volbou. Objective-C nabizí knihovny pro práci s poli, znakovými rˇ etˇezci atd., ve výkonovˇe kritických cˇ ástech herního kódu se ovšem projevuje výpoˇcetní režie tohoto jazyka[13] Další volbou je Objective-C++, což je v podstatˇe jazyk C++. C++ je v souˇcasné dobˇe nejpoužívanˇejší jazyk v herním prumyslu. ˚ Herní kód Song Shootixu (zdrojové soubory Game.h a Game.c) je napsán v jazyce C. Kód generovaný z jazyka C je na zaˇrízeních s procesory ARM velmi výkonný a výbornˇe optimalizovaný. Nenabízí objektový návrh, který není vzhledem k rozsáhlosti projektu tˇreba. 6.2.4 Nástroje Základní nástroj pro vývoj aplikací na platformu iOS je vývojové prostˇredí XCode, které disponuje pˇredevším rozsáhlými profilovacími a optimalizaˇcními nástroji pro testování aplikace pˇri bˇehu na 20
ˇ TECHNOLOGIÍ 6. V ÝB ER
reálném zaˇrízení. Poskytuje také výpis z konzole aplikace puštˇené na reálném pˇrístroji v reálném cˇ ase. K dispozici je také iPhone simulátor, který je vhodný pro testování funkcionality, nikoliv ovšem pro testování výkonu a spotˇreby hardwarových prostˇredku˚ aplikace. Simulátor není vybaven emulací instrukcí procesoru ARM, jako je tomu u emulátoru operaˇcního systému Android. Kód aplikace tedy bˇeží naprosto odlišnˇe než na samotném zaˇrízení.
21
7 Implementace 7.1 Aplikaˇcní rozhraní Základní tˇrídu implementace Song Shootix tvoˇrí tˇrída SSViewController, která je inicializována po spuštˇení aplikace. Její souˇcástí je XIB soubor s rozvržením hierarchie jednotlivých UIView (labely zobrazující jméno interpreta a název skladby, OpenGL view). Tato tˇrída se stará o naˇcítání a pˇrehrávání hudební skladby z iPod databáze. Tˇrída SSInterface slouží jako vykreslovací vrstva pro OpenGL a rozhraní mezi Objective-C tˇrídami a vlastním herním kódem napsaným v jazyce C. Pˇri inicializaci tˇrídy SSInterface se vytvoˇrí OpenGL kontext, který uchovává vnitˇrní stav OpenGL API. Dále alokuje render buffer, do kterého OpenGL vykresluje. Souˇcástí iPhonu je funkcionalita telefonního pˇrístroje a spuštˇená aplikace musí reagovat napˇríklad na pˇríchozí hovor. K tomu slouží tˇrída AppDelegate, ve které jsou implementovány metody pro reakci na tato pˇrerušení. V pˇrípadˇe, že se aplikace chystá vstoupit do pozadí (applicationWillResignActive:), Song Shootix pozastaví vyhodnocování herního stavu, vykreslování a pˇrehrávání hudby. Chystá-li se aplikace skonˇcit (applicationWillTerminate:), hra uloží souˇcasné skóre a informace o pˇrehráváné skladbˇe (interpret, název skladby, cˇ as) a po znovuspuštˇení aplikace tato data obnoví. Aplikace muže ˚ také obdržet varování o nízké zbývající kapacitˇe operaˇcní pamˇeti (applicationDidReceiveMemoryWarning:). Hra alokuje pamˇet’ jen pˇri svém spuštˇení a veškerou svoji pamˇet’ využívá. Dle mých testu˚ souˇcasná verze Song Shootixu i se spuštˇeným hudebním pˇrehrávaˇcem vyžaduje prumˇ ˚ ernˇe 4,5 MB operaˇcní pamˇeti, což je vzhledem ke kapacitˇe 128 MB na iPhonu 3G pomˇernˇe dobrý výsledek. Song Shootix varování o kapacitˇe operaˇcní pamˇeti ignoruje.
7.2 Inicializace hry Veškerý herní stav je uchován v jedné struktuˇre ss_GameData. Pˇri inicializaci si aplikace alokuje pamˇet’ pro uchování herního stavu, viz. zdrojový kód 7.1. Jednotlivé funkce herního kódu si pˇredávají 22
7. I MPLEMENTACE 1 2 3 4 5
struct pf_GameData∗ pf_initializeGame(float width, float height, const char∗∗ bundlePath) { struct pf_GameData∗ gameData = malloc(sizeof(struct pf_GameData)); memset(gameData, 0, sizeof(struct pf_GameData));
6
pf_initGameState(gameData); pf_initRenderEngine(gameData, width, height); pf_loadTexture(gameData, bundlePath); pf_prewarmRenderEngine(gameData);
7 8 9 10 11
return gameData;
12 13
}
Zdrojový kód 7.1: Inicializace hry.
ukazatel na tento herní stav a modifikují jej.
7.3 Inicializace OpenGL V Song Shootixu jsou využívány dvˇe základní techniky pro 2D vykreslování herního obsahu na obrazovku dostupné v OpenGL ES 1.1 - texture mapping a alpha blending[12]. Texture mapping je metoda, kdy je textura (upravená obrazová data, vytvoˇrená napˇríklad v grafickém editoru nebo procedurálnˇe) promítnuta (namapována) na geometrii, v našem pˇrípadˇe na polygon tvoˇreného dvˇema trojúhelníky. Každý trojúhelník je definován tˇremi vrcholy (vertexy). Vertex uchovává informace o pozici, texturovacích souˇradnicích (UV koordináty) a barvˇe. V ukázce zdrojového kódu 7.2 lze vidˇet systém implementace geometrie. Alpha blending slouží k zobrazení „glow“ efektu herních objektu. ˚ Tento efekt je docílen odstupnováním ˇ alfa-kanálu na textuˇre, viz. obrázek 7.1. Cílem každé OpenGL aplikace, která klade duraz ˚ na vysokou optimalizaci, je co nejmenší poˇcet vykreslovacích pˇríkazu˚ (draw call) v jednom snímku[10]. Na herní ploše se v Song Shootixu nachází v jednom okamžiku desítky jednotlivých objektu˚ (raketka, asteroidy, efekty výbuchu, ˚ stˇrely atd.). Existuje více metod, jak tyto objekty vykreslovat. 23
7. I MPLEMENTACE
Obrázek 7.1: Textura použitá v Song Shootix. Prvním z nich je naivní zpusob, ˚ kdy se pro každý objekt volá draw call ad hoc. Pˇred každým draw callem je nutno nastavit ukazatele na informace o geometrii objektu (glVertexPointer, glTexCoordPointer, glColorPointer). Každý draw call tedy vyvolává zmˇeny OpenGL stavu, které trpí urˇcitým množstvím výpoˇcetní režie. Pˇri vˇetším množství draw callu˚ se tato režie naskládá a dochází ke snížení výkonu aplikace. Druhým zpusobem, ˚ doporuˇcovaným Applem, je použití VBO1 [10] Na iOS zaˇrízeních není umožnˇeno pˇristupovat a modifikovat operaˇcní pamˇet’ GPU2 . K tomu slouží právˇe VBO, který alokuje pamˇet’ nutnou pro uchování informací o geometrii objektu˚ v operaˇcní pamˇeti GPU místo operaˇcní pamˇeti CPU, cˇ ímž se snaží vyhnout kopírování dat z operaˇcní pamˇeti CPU do operaˇcní pamˇeti GPU v každém snímku. Data jsou na GPU alokována pˇri inicializaci, pˇri bˇehu aplikace je možno data modifikovat pomocí glBufferSubdata. Tato technika se hodí pro situace, kdy je modifikována jen malá cˇ ást dat. V song shootixu je vˇetšina objektu, ˚ které se nachází ve scénˇe, v pohybu, cˇ ili by bylo tˇreba v každém snímku modifikovat vˇetšinu dat, 1. Vertex buffer object. 2. Graphics processing unit.
24
7. I MPLEMENTACE 1 2 3 4 5
typedef struct { float x; float y; } fvec2;
6 7 8 9 10 11 12 13
struct pf_Vert { fvec2 pos; fvec2 coord; GLubyte color[4]; // kvuli vykonu alignment velikosti struktury vertexu na nasobek 4 bytu };
14 15 16 17 18
struct pf_Quad { struct pf_Vert verts[4]; };
19 20 21 22 23 24
struct pf_GameData { struct pf_Quad quads[NUM_OF_QUADS]; // ... };
Zdrojový kód 7.2: Reprezentace geometrie v Song Shootix.
cˇ ímž tato technika ztrácí smysl. Tˇretí zpusob, ˚ který je implementován v Song Shootixu, spoˇcívá v uchovávání vlastních polí geometrických dat a posílání tˇechto dat v každém snímku do GPU pomocí glDrawElements. Data jsou usporˇ ádána jako pole struktur, viz. ukázka zdrojového kódu 7.2. Druhou možností je struktura polí, ta je ale pro iOS zaˇrízení ménˇe efektivní. Výhodou tohoto zpusobu ˚ je možnost modifikovat jakoukoliv geometrii bˇehem herní smyˇcky. Z nˇekterých testu[14] ˚ vyplývá, že výkon VBO a vlastních geometrických dat je velmi podobný. Podle neovˇerˇ ených informací je to z toho duvodu, ˚ že GPU iPhonu nedisponuje vlastní dedikovanou operaˇcní pamˇetí, ale operaˇcní pamˇet’ CPU a GPU je sdílená a pˇri volání glDrawElemets se nekopírují geometrická data, jak je uvedeno v dokumentaci, nýbrž jen ukazatel na tato data. Díky tomu jsou vlastní geometrická pole ideálním zpusobem ˚ 25
7. I MPLEMENTACE implementace geometrie. Song shootix v aktuální verzi alokuje prostˇredky pro cca 350 herních objektu, ˚ z nichž je v jedné chvíli ve scénˇe jen zlomek z nich. Tyto objekty jsou sice „odesílány“ do GPU, nevytˇežují jej tak jako objekty ve scénˇe, protože data jsou ještˇe pˇred rasterizací odmítnuty v OpenGL ES rendering pipeline[12]. Výhodou tohoto pˇrístupu je minimalizace poˇctu vykreslovacích pˇríkazu˚ na jeden, což výraznˇe snižuje nároky hry na CPU. Nevýhodou je vyšší zátˇež na GPU, dle mých testu˚ ovšem zvládá iPhone 3G zpracovávat pˇribližnˇe 5000 tˇechto objektu˚ mimo scénu pˇri 60 FPS.
7.4 Naˇctení textury Textury slouží k „obarvení“ polygonu, ˚ kdy je možno „nanést“ vlastní vytvoˇrenou rasterovou grafiku na geometrii herních objektu. ˚ Textury pro jednotlivé objekty je vhodné pro vˇetší výkon umístit do jedné multitextury (texture atlas)[10], viz. obrázek 7.1. Na iPhonu lze naˇcítat textury napˇríklad pomocí frameworku Core Graphics. Ten pˇrevede rastrový formát textury (BMP, PNG, JPG atd.) do formátu nekompresovaných hrubých texturových dat, která jsou naˇctena grafickým cˇ ipem. Tato konverze je provádˇena pˇri každém spuštˇení aplikace, výsledkem jsou ale vždy stejná texturovací data. Song Shootix naˇcítá již pˇrevedená hrubá data, která jsou pˇrevedena ještˇe pˇred kompilací aplikace. K tomu slouží vlastní nástroj k pˇrevodu PNG do hrubých texturových dat. Zdrojové kódy tohoto nástroje jsou pˇriloženy na CD. Výhodou tohoto pˇrístupu je rychlejší start aplikace, protože již není tˇreba pˇrevádˇet PNG do texturových dat. Song Shootix pˇri spuštˇení provˇerˇ uje, zda je pˇrístroj vybaven displejem s vysokým rozlišením (retina) a podle toho nastavuje velikost viewportu3 , velikost jednotlivých quadu˚ geometrie a naˇcítá texturu vˇetší texturu. Jelikož je rozlišení retina displeje dvakrát vˇetší než rozlišení obyˇcejného displeje, velikost veškeré geometrie a viewportu je vynásobena dvˇema a tvorba obou textur (pro obyˇcejný displej a retinu) je mnohem snažší. 3. Okno sloužící k projekci geometrické reprezentace scény na displej pˇrístroje.
26
7. I MPLEMENTACE 1 2 3 4 5 6
while(1) { processInput(); doLogic(); render(); }
Zdrojový kód 7.3: Jednoduchá herní smyˇcka.
7.5 Herní smyˇcka Vizuální reprezentace každé hry (obraz hry na displeji) je složena jako posloupnost snímku˚ (framu), ˚ které tvoˇrí obraz herního stavu v danou chvíli. Posloupností tˇechto snímku˚ vzniká pohyb podobnˇe jako ve filmu. Funkci, která poˇcítá tyto snímky, nazýváme herní smycˇ ka (game loop)[15]. Herní smyˇcka se stará o vyhodnocování vstupních zaˇrízení, herního stavu a vykreslování bˇehem jednoho snímku. Jednoduchou herní smyˇcku ukazuje zdrojový kód 7.3. Od iOS verze 3.1 je k dispozici tˇrída CADisplaylink, která zajišt’uje volání herní smyˇcky v sychronizaci s obnovovací frekvencí displeje, která je 60 Hz, nebo též 60 FPS, cˇ ili jeden snímek odpovídá pˇribližnˇe 16 milisekundám. Aby hra byla plynulá a dosáhla šedesáti FPS, musí za 16 milisekund stihnout zpracovat vstupní zaˇrízení (zpracování dotyku˚ na displeji, akcelerometr apod.), aktualizovat herní stav a vykreslit na obrazovku vizuální reprezentaci hry. Správa pamˇeti pˇri bˇehu hry (v herní smyˇcce) je velmi nežádoucí kvuli ˚ vysoké výpoˇcetní nároˇcnosti. Doba alokace pamˇeti muže ˚ velmi cˇ asto pˇresáhnout kritických 16 milisekund, tudíž muže ˚ dojít k trhání animace hry. Song shootix využívá statické alokace, kdy alokuje veškerou potˇrebnou pamˇet’ pˇri spuštˇení a bˇehem herní smyˇcky tato data jen modifikuje. Tento pˇrístup vyžaduje vyšší nároky na operaˇcní pamˇet’, protože je bˇehem hry alokována pamˇet’ i na herní prvky, které se momentálnˇe nenachází na herní ploše a na hru nemají vliv. Nevýhodou je také statické maximální množství herních prvku. ˚ Hra poˇcítá se situací, kdy bude výpoˇcet herní smyˇcky trvat déle než 16 milisekund. K tomu slouží funkce jádra operaˇcního systému mach_absolute_time(), která vrací poˇcet tiku˚ procesoru od posledního restartu pˇrístroje. Tato funkce je ve hˇre volána na zaˇcátku kaž27
7. I MPLEMENTACE 1 2 3 4 5 6 7
−(id)init { CADisplayLink∗ displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(gameLoop:)]; [displayLink setFrameInterval:FRAME_INTERVAL]; [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; }
8 9 10 11 12 13 14
void gameLoop() { processInput(); doLogic(); render(); }
Zdrojový kód 7.4: Herní smyˇcka v Song Shootix.
dého snímku v herní smyˇcce. Pomocí této funkce lze získat pˇresnou dobu od jejího posledního volání, cˇ ili dobu potˇrebnou k výpoˇctu pˇredchozího snímku a pomocí této doby koeficient timeRatio, kterým se ve hˇre násobí trvání veškerých animací. Bˇeží-li hra pˇri 60 FPS, timeRatio je 1.0 a animace bˇeží standardní rychlostí. Pokud FPS klesne napˇríklad na 30, timeRatio je 2.0 a posun všech animací v daném snímku je vynásoben tímto koefientem. Díky tomu nedochází k nežádoucímu jevu, kdy pˇri snížené FPS nedochází ke zpomalení animace, jen k nižšímu poˇctu vykreslených snímku. ˚
7.6 Zvuk iOS ve verzi 4.0 nabízí API k pˇrístupu k iPod databázi[16]. Aby hra mohla spouštˇet hudební soubor, musí jej nejdˇríve zkopírovat do adresáˇre urˇceného pro doˇcasné soubory (kvuli ˚ bezpeˇcnostnímu principu zapouzdˇrení aplikace). K tomu Song Shootix využívá tˇrídu TSLibraryImport, kterou implementovalo studio Tapsquare4 . Po zkopírování je tato skladba pˇrehrávána pomocí tˇrídy AVAudioPlayer. Tato tˇrída také poskytuje data o intenzitˇe pˇrehrávaného zvuku. V plánu pro rozšíˇrení hry je i vylepšení zpracování zvuku (viz. kapitola 8). 4.
28
8 Závˇer Cílem této bakaláˇrské bylo vyvinout hru na mobilní platformu a podat informace o vývoji a argumentaci použitých postupu. ˚ Výsledkem je implementace hry, která je pˇripravena pro distribuci v App Store. Zdrojový kód hry je pˇriložen na CD. Hra byla dukladnˇ ˚ e testována a optimalizována pro bˇeh na iPhone 3G. Díky zvoleným postupum ˚ hra dosahuje na tomto pˇrístroji stabilních šedesáti snímku˚ za vteˇrinu pˇri spotˇrebˇe asi tˇriceti procent CPU a 4,5 MB operaˇcní pamˇeti, existuje tedy velký prostor pro implementaci dodateˇcných herních prvku. ˚ Díky zvolené platformˇe iOS je hra kompatibilní i s nejnovˇejšími pˇrístroji bˇežícími na tomto operaˇcním systému, existuje tedy velký potenciál a motivace pro další rozvoj hry. Hra disponuje potenciálem zejména v implementaci detailnˇejšího zpracování spektra zvuku pˇri pˇrehrávané skladbˇe a vytvoˇrení kvalitnˇejších a propracovanˇejších grafických efektu˚ reagujících na tyto jevy. Z analýzy slyšitelného frekvenˇcního rozsahu zvuku lze napˇríklad vypozorovat rytmus skladby (v nízkých frekvencích údery bubnu, ˚ ve vysokých údery cˇ inelu˚ apod). K realizaci této funkcionality by bylo tˇreba implementovat Fourierovy transformace na zvukový signál a další úpravy, což je nad rámec této bakaláˇrské práce. Další rozvoj aplikace je možný v oblasti online služeb (Apple Game Center, OpenFeint), které by sloužily k porovnávání výsledku˚ v jednotlivých skladbách mezi hráˇci.
29
Literatura [1] Farago, Peter. Is it Game Over for Nintendo DS and Sony PSP? [online]. Publikováno 9.11.2011. Dostupné na . [2] Wikipedia contributors. iPhone [online]. Wikipedia, 2011. Dostupné na . [3] Dieter, Bohn. comScore pegs Android US smartphone marketshare at 43.7 percent [online]. Publikováno 5.10.2011. Dostupné na . [4] Bakhirev, Peter et al. Beginning iPhone Games Development, Apress, 2010. ISBN 978-1-4302-2599-7. Kapitola 1: A Revolutionary Gaming Platform: Games for Everyone, Anytime, Anywhere, s. 1-11. [5] Wikipedia contributors. Casual game [online]. Wikipedia, 2011. Dostupné na . [6] Mauro, Charles L. Why Angry Birds is so successful and popular: a cognitive teardown of the user experience [online]. Publikováno 6.2.2011. Dostupné na . [7] Wikipedia contributors. App Store (iOS) [online], Wikipedia, 2011. Dostupné na . [8] Leigh, Alexander. App Store Reaches 10 Billion Downloads [online]. Publikováno 24.1.2011. Dostupné na . 30
L ITERATURA [9] Llopis, Noel. Swiping, Flicking, and Pinching, Game Developer, duben 2009. s. 101-127. [10] OpenGL ES Programming Guide for iOS [online]. Apple Inc., 2011. Dostupné na . [11] Tiny Tower: iPhone Game of the Year [online]. 2011. Dostupné na . [12] Munshi, Aaftab et al. OpenGL ES Common/Common Lite Profile Specification, Version 1.1.12(Full Specification), April 24, 2008 [online]. The Khronos Group Inc., 2008. Dostupné na . [13] Cabrera, PJ et al. iPhone Games Projects, Apress, 2009. ISBN 9781-4302-1968-2. Kapitola 4: Brian Greenstone’s Jedi Master List for Game Optimization, s. 101-127. [14] Pasco, Daniel. iPhone Vertex Buffer Object Performance [online]. Publikováno 21.7.2009. Dostupné na . [15] Mensah, Kwasi. Game Loops on IOS [online]. Publikováno 7.12.2010. Dostupné na . [16] Media Player Framework Reference [online]. Apple Inc., 2011, cit. 2011-28-12. Dostupné na .
31