Za´padoˇceska´ univerzita v Plzni Fakulta aplikovany´ch vˇed Katedra informatiky a vy´poˇcetn´ı techniky
Bakal´ aˇ rsk´ a pr´ ace Hra Dobble pro mobiln´ı zaˇ r´ızen´ı
Plzeˇ n 2014
Tom´aˇs Bal´ıˇcek
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem bakal´aˇrskou pr´aci vypracoval samostatnˇe a v´ yhradnˇe s pouˇzit´ım citovan´ ych pramen˚ u. V Plzni dne 9. kvˇetna 2014 Tom´aˇs Bal´ıˇcek
Podˇ ekov´ an´ı Dˇekuji Ing. Ladislavu Peˇsiˇckovi za odborn´e veden´ı m´e bakal´aˇrsk´e pr´ace a za cenn´e rady, kter´e mi pomohly tuto pr´aci vytvoˇrit. V Plzni, dne 9. kvˇetna 2014 Tom´aˇs Bal´ıˇcek
Abstract Mobile applications and games made recently a big step forward. The demand for mobile devices is growing rapidly. Therefore, the development of mobile applications is becoming very interesting. In this area is necessary to examine the issue of game control on di↵erent types of mobile devices. Games can be single players or multiplayer. Mobile applications can be made natively for each platform separately or use a multiplatform tool.
This bachelor thesis mainly deals with programming multiplatform games written in HTML and specifically written in PhoneGap framework. The aim of this work is to program Android game with use this framework. It is card game called Dobble. The game consists in finding two identical symbols on two cards. This game is currently available only for Apple iOS (April 2014).
Abstrakt Aplikace potaˇzmo hry na mobiln´ıch zaˇr´ızen´ıch proˇsly v posledn´ıch letech velk´ ym rozmachem. Popt´avka po mobiln´ıch zaˇr´ızen´ıch rychle roste. A d´ıky tomu se st´av´a v´ yvoj aplikac´ı velice zaj´ımav´ y. V t´eto oblasti je nutn´e prozkoumat problematiku ovl´ad´an´ı her na r˚ uzn´ ych typech mobiln´ıch zaˇr´ızen´ı, hry mohou b´ yt jednouˇzivatelsk´e nebo pro v´ıce uˇzivatel˚ u. Aplikace je moˇzn´e ps´at nativnˇe pro kaˇzdou platformu zvl´aˇst’ nebo zvolit multiplatformn´ı n´astroje.
Tato bakal´aˇrsk´a pr´ace se zab´ yv´a pˇrev´aˇznˇe programov´an´ım multiplatformn´ıch her psan´ ych v HTML a konkr´etnˇe vyuˇzit´ı frameworku PhoneGap. C´ılem t´eto pr´ace je naprogramovat hru pro platformu Android. Jedn´a se o karetn´ı hru Dobble. Hra spoˇc´ıv´a v hled´an´ı dvou shodn´ ych symbol˚ u na dvou kartiˇck´ach. Hra je zat´ım pouze dostupn´a v karetn´ı podobˇe a pro platformu iOS (duben 2014).
Obsah ´ 1 Uvod
1
2 Interakce pro ovl´ ad´ an´ı mobiln´ı hry 2.1 Obyˇcejn´e telefony . . . . . . . . . . 2.1.1 Ovl´ad´an´ı . . . . . . . . . . . 2.2 Chytr´e telefony . . . . . . . . . . . 2.2.1 Gyroskop . . . . . . . . . . 2.2.2 Akcelerometr . . . . . . . . 2.2.3 Dotykov´ y displej . . . . . . 2.2.4 Shrnut´ı . . . . . . . . . . .
. . . . . . .
2 2 2 3 3 4 4 6
. . . .
7 7 7 7 8
3 Multiuˇ zivatelsk´ e hry 3.1 Jedno zaˇr´ızen´ı . . . . . . . . . . . . 3.2 Komunikace v´ıce zaˇr´ızen´ı . . . . . . 3.2.1 Bluetooth . . . . . . . . . . 3.2.2 Wi-Fi - S´ıt’ov´a komunikace .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
4 Pravidla hry 10 4.1 Single player . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4.2 Multi player - jedno zaˇr´ızen´ı . . . . . . . . . . . . . . . . . . . 10 4.3 Multi player - v´ıce zaˇr´ızen´ı . . . . . . . . . . . . . . . . . . . . 10 5 Realizace hry 5.1 Klient . . . . . . . . . . . . . . . . . . 5.1.1 Kartiˇcky . . . . . . . . . . . . . 5.1.2 Rozpozn´an´ı zvolen´eho obr´azku . 5.1.3 PhoneGap . . . . . . . . . . . . 5.1.4 Pˇr´ıprava prostˇred´ı . . . . . . . . 5.1.5 Java . . . . . . . . . . . . . . . 5.1.6 Javascript . . . . . . . . . . . . 5.1.7 HTML5 a CSS3 . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
11 11 12 12 14 15 18 19 21
OBSAH 5.2 5.3
5.4
OBSAH Server . . . . . . . . . . . . . . . . . . . . . . Komunikaˇcn´ı protokol . . . . . . . . . . . . . 5.3.1 Zah´ajen´ı komunikace serveru . . . . . . 5.3.2 Zah´ajen´ı komunikace klienta . . . . . . 5.3.3 Komunikace mezi serverem a klientem ˇ Casovˇ e kritick´e u ´seky hry . . . . . . . . . . . 5.4.1 S ohledem na v´ ykonnost zaˇr´ızen´ı . . . 5.4.2 S ohledem na rychlost pˇripojen´ı . . . . 5.4.3 Moˇzn´a ˇreˇsen´ı . . . . . . . . . . . . . .
6 Uˇ zivatelsk´ a dokumentace 6.1 Single player . . . . . . . . . . . . . . 6.2 Multi player - o✏ine . . . . . . . . . 6.3 Multi player - online . . . . . . . . . 6.4 Pˇreloˇzen´ı aplikace a spuˇstˇen´ı aplikace
. . . .
. . . .
. . . .
. . . .
. . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . .
23 24 24 25 25 26 27 27 27
. . . .
29 29 29 30 31
7 Distribuce hry
32
8 Testov´ an´ı 8.1 Lad´ıc´ı konzole Eclipse . . . . . . . . 8.2 Lad´ıc´ı n´astroje v prohl´ıˇzeˇci . . . . . . 8.3 Emul´ator . . . . . . . . . . . . . . . 8.4 Zaˇr´ızen´ı . . . . . . . . . . . . . . . . 8.5 Online verze . . . . . . . . . . . . . . 8.6 Test s ohledem na rychlost pˇripojen´ı 9 Z´ avˇ er
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
34 34 34 36 37 39 39 40
6
´ 1 Uvod Bakal´aˇrsk´a pr´ace se zab´ yv´a t´ematem multiplatformn´ıch aplikac´ı pro mobiln´ı zaˇr´ızen´ı. Bude potˇreba prozkoumat interakce pro ovl´ad´an´ı mobiln´ıch her na r˚ uzn´ ych typech telefon˚ u. U telefon˚ u, kter´e n´am nab´ız´ı ˇsirˇs´ı moˇznosti vyuˇzit´ı nal´ezt, kter´e z jejich vyspˇel´ ych funkc´ı by se dali pouˇz´ıt pro ovl´ad´an´ı her. U multiuˇzivatelsk´eho reˇzimu bude potˇreba vhodn´e nalezen´ı a propojen´ı zaˇr´ızen´ı, kter´e spolu budou komunikovat. V realizaci hry si projdeme konkr´etn´ı framework pouˇzit´ y na v´ yvoj hry, kter´a je tvoˇrena pˇrev´aˇznˇe pomoc´ı webov´ ych technologi´ı a pop´ıˇseme si pˇrevod do nativn´ı aplikace. D´ıky tomu z´ısk´ame aplikace, kter´e budou pˇrenosn´e na r˚ uzn´e mobiln´ı platformy, budou skvˇele vypadat a nav´ıc budou schopn´e vyuˇz´ıvat specifick´e vlastnosti konkr´etn´ıch zaˇr´ızen´ı. U reˇzimu online bude probr´ana problematika komunikaˇcn´ıho serveru a popis komunikace mezi jednotliv´ ymi zaˇr´ızen´ımi a vhodn´e nalezen´ı spoluhr´aˇc˚ u. Po vytvoˇren´ı aplikace si uk´aˇzeme, jak aplikaci vhodnˇe testovat v lad´ıc´ı konzoli a vyuˇz´ıvat lad´ıc´ı n´astroje modern´ıch prohl´ıˇzeˇc˚ u. Pot´e bude aplikace nasazena do emul´atoru a v posledn´ım kroku bude aplikace nasazena pˇr´ımo do fyzick´eho zaˇr´ızen´ı pro otestov´an´ı r˚ uzn´ ych rozmˇer˚ u displeje a hardwarov´ ych poˇzadavk˚ u aplikace. Posledn´ım krokem v ˇzivotn´ım cyklu aplikace je distribuce aplikace do pˇr´ısluˇsn´eho internetov´eho obchodu. Uk´aˇzeme konkr´etn´ı pˇr´ıklad nasazen´ı naˇs´ı hry do Android Store spoleˇcnosti Google.
1
2 Interakce pro ovl´ad´an´ı mobiln´ı hry Moˇznosti ovl´ad´an´ı mobiln´ıch her m˚ uˇzeme rozdˇelit podle druhu mobiln´ıho zaˇr´ızen´ı:
2.1
Obyˇ cejn´ e telefony
Jedn´a se o kategorii telefon˚ u, kter´e jsou vybaveny hardwarovou kl´avesnic´ı ve formˇe ˇc´ıslic 1-9 a nˇekolika dalˇs´ımi kontextov´ ymi tlaˇc´ıtky. Tyto zaˇr´ızen´ı jsou tak´e oznaˇcov´ana jakou hloup´a zaˇr´ızen´ı nebo anglicky cell phone. Na zaˇr´ızen´ı tohoto typu nen´ı moˇzn´e instalovat dalˇs´ı aplikace. Jedn´a se o zaˇr´ızen´ı s minim´aln´ımi funkcemi. Zaˇr´ızen´ı slouˇz´ı ve vˇetˇsinˇe pˇr´ıpad˚ u pouze k telefonov´an´ı, psan´ı SMS, popˇr´ıpadˇe MMS a novˇejˇs´ı typy tˇechto telefon˚ u byly vybaveny i kamerou. I kdyˇz se m˚ uˇze zd´at, ˇze tato zaˇr´ızen´ı jsou d´avnou histori´ı i v dneˇsn´ı dobˇe najdou urˇcit´e vyuˇzit´ı. Hlavn´ı v´ yhodou je jejich v´ ydrˇz, kdy bez pˇripojen´ı do nab´ıjeˇcky vydrˇz´ı nabit´e dlouhou dobu ve srovn´an´ı s chytr´ ymi telefony. Jejich dalˇs´ı v´ yhodou je bytelnost, pˇri p´adu z v´ yˇsky na zem vˇetˇsinou nedoch´az´ı k takov´emu poˇskozen´ı jako u chytr´ ych zaˇr´ızen´ı, jedno z nejchoulostivˇejˇs´ıch m´ıst b´ yv´a displej a ten je vˇetˇsinou menˇs´ıch rozmˇer˚ u a ˇsasi telefonu z plastu. A nev´ yhody tˇechto zaˇr´ızen´ı m˚ uˇzou b´ yt pro urˇcitou skupinu lid´ı naopak v´ yhodou, protoˇze tyto telefony nejsou napˇr´ıklad vybaveny ani GPS senzory, takˇze doinstalovat aplikaci pro ˇspehov´an´ı zaˇr´ızen´ı pomoc´ı GPS senzoru m˚ uˇze b´ yt ponˇekud sloˇzit´e. V nab´ıdce od oper´ator˚ u je to napˇr´ıklad telefon Samsung E1200M Keystone 2, u kter´eho se cena pohybuje kolem 300,- Kˇc za kus.
2.1.1
Ovl´ ad´ an´ı
Pro tuto platformu jsou moˇznosti ovl´ad´an´ı omezen´e. Tento druh telefon˚ u se ovl´ad´a pomoc´ı hardwarov´e kl´avesnice, kter´a m´a klasick´e rozvrˇzen´ı tlaˇc´ıtek 0 aˇz 9 nebo u novˇejˇs´ıch zaˇr´ızen´ı byla jiˇz QWERTY kl´avesnice. Pokud by byla hra naprogramov´ana pro tento druh telefon˚ u, kaˇzd´ y obr´azek by musel m´ıt sv´e ˇc´ıseln´e oznaˇcen´ı a na hardwarov´e kl´avesnici by se tak jednoduˇse stisklo dan´e tlaˇc´ıtko, kter´e by odpov´ıdalo obr´azku. Ale vzhledem k tomu, ˇze i propozice samotn´eho displeje nejsou na vysok´e u ´rovni bylo by to prakticky nere´aln´e.
2
Interakce pro ovl´ad´an´ı mobiln´ı hry
2.2
Chytr´e telefony
Chytr´ e telefony
Chytr´e telefony anglicky smartphone jsou zaˇr´ızen´ı, kter´a jsou vybavena pokroˇcil´ ym mobiln´ım operaˇcn´ım syst´emem a aplikaˇcn´ı rozhran´ı n´am umoˇzn ˇuje instalaci a vytv´aˇren´ı nov´ ych program˚ u. Jedn´a se napˇr´ıklad o operaˇcn´ı syst´emy: iOS, Android, Windows Phone, Firefox OS, BlackBerry OS a dalˇs´ı. V t´eto kategorii mobiln´ıch telefon˚ u jsou moˇznosti ovl´ad´an´ı jiˇz pestˇrejˇs´ı. Chytr´e telefony maj´ı spoustu v´ yhod jako napˇr´ıklad: doinstalov´an´ı velk´eho mnoˇzstv´ı aplikac´ı, kter´e jsou vˇetˇsinou ke staˇzen´ı zdarma popˇr´ıpadˇe za mal´ y poplatek, jsou vybaveny velk´ ym mnoˇzstv´ım senzor˚ u a hlavnˇe dotykov´ ym displejem. Pro ovl´ad´an´ı her se ˇcasto vyuˇz´ıv´a gyroskop. Jedn´a se o senzor kter´ y detekuje pohyb i v tˇret´ı ose. Chytr´e telefony n´am ale pˇrin´aˇs´ı tak´e spousty nev´ yhod naproti obyˇcejn´ ym telefon˚ um: jednou z hlavn´ıch nev´ yhod je v´ ydrˇz baterie, zat´ımco obyˇcejn´e telefony vydrˇz´ı bez nab´ıjen´ı i t´ yden u chytr´ ych telefon˚ u je vˇetˇsinou potˇreba nab´ıjet kaˇzd´ y den, ale to je tak´e d´ano funkcemi telefonu, kter´ y jiˇz nen´ı vyuˇz´ıv´an jen pro telefonov´an´ı a psan´ı SMS. Pak jsou to urˇcitˇe rozmˇery, zat´ımco do pˇr´ıchodu chytr´ ych telefon˚ u bylo snahou vˇetˇsiny v´ yrobc˚ u co nejv´ıce sn´ıˇzit hmotnost a rozmˇery telefonu dnes je to pr´avˇe naopak a vˇetˇsina v´ yrobc˚ u se pˇretahuje o to kdo bude m´ıt vˇetˇs´ı telefon potaˇzmo displej. A asi nejvˇetˇs´ı nebezpeˇc´ı chytr´ ych telefon˚ u jsou ˇskodliv´e aplikace. Viry jsou spojeny s hlavn´ı v´ yhodou chytr´ ych telefon˚ u a to s instalac´ı vlastn´ıch aplikac´ı. S postupn´ ym n´ar˚ ustem tˇechto zaˇr´ızen´ı bude riziko stoupat. Nyn´ı jsou aplikace nahr´avan´e do mobiln´ıch obchod˚ u velmi striktnˇe kontrolov´any, takˇze k in-fikaci zaˇr´ızen´ı doch´az´ı velice zˇr´ıdka. Pokud se pod´ıv´ame do nab´ıdky oper´ator˚ u pˇrevaˇzuj´ı pr´avˇe chytr´a zaˇr´ızen´ı. Z tˇech nejlepˇs´ıch, kter´e nyn´ı m˚ uˇzeme na trhu nal´ezt je to Samsung Galaxy S5 nebo Apple iPhone 5, kde cena tˇechto zaˇr´ızen´ı je podobn´a jako u lepˇs´ıho notebooku.
2.2.1
Gyroskop
Gyroskop [14] n´am urˇc´ı v jak´e poloze se telefon nach´az´ı a pohyb kter´ y s telefonem prov´ad´ıme. Prvn´ı kdo pouˇzil gyroskop v mobiln´ım zaˇr´ızen´ı byl Apple ve sv´em modelu iPhone 4 v roce 2010. Gyroskop je vlastnˇe setrvaˇcn´ık tvoˇren´ y tˇeˇzk´ ym kolem ot´aˇcej´ıc´ım se v loˇzisc´ıch s nepatrn´ ym tˇren´ım, kter´ y si po roztoˇcen´ı zachov´av´a polohu osy sv´e rotace v prostoru a dok´aˇze tak urˇcit svou orientaci. Vetˇsinou je setrvaˇcn´ık uloˇzen v takzvan´ ych Cardanov´ ych z´avˇesech. Rozmach tˇechto zaˇr´ızen´ıch nastal v 70. letech kdy se zaˇcali pouˇz´ıvat v balistick´ ych raket´ach nebo torp´edech a napˇr´ıklad tak´e u letadel nebo navigace 3
Interakce pro ovl´ad´an´ı mobiln´ı hry
Chytr´e telefony
lod´ı. V mobiln´ıch hr´ach m´a gyroskop tak´e velk´e vyuˇzit´ı. Pouˇz´ıv´a se napˇr´ıklad pro ovl´ad´an´ı her automobilov´ ych z´avod˚ u, kdy simulujeme natoˇcen´ım telefonu smˇer vlevo nebo vpravo. Dalˇs´ı hry, kde je gyroskop vyuˇz´ıv´an jsou napˇr´ıklad hry, kdy se snaˇz´ıme dostat kuliˇcku do c´ıle pˇres bludiˇstˇe na displeji. Gyroskop n´am pom˚ uˇze k tomu, ˇze simulace na displeji je fyzik´alnˇe odpov´ıdaj´ıc´ı skuteˇcnosti, kdy bychom mˇeli skuteˇcnou destiˇcku a na t´e kut´aleli kuliˇcku.
Obr´azek 2.1: Zn´azornˇen´ı gyroskopu [14]
2.2.2
Akcelerometr
Akcelerometr je zaˇr´ızen´ı, kter´e slouˇz´ı ke zjiˇstˇen´ı zrychlen´ı pˇri pohybu telefonu. A m˚ uˇze tak´e mˇeˇrit orientaci telefonu. To m˚ uˇzeme vyuˇz´ıt ve hr´ach pˇri r˚ uzn´ ych gestech. Nebo napˇr´ıklad v hudebn´ıch pˇrehr´avaˇc´ıch, kdy se pˇri zatˇresen´ı pˇrepne na dalˇs´ı skladbu. Velk´e vyuˇzit´ı m´a akcelerometr napˇr´ıklad v krokomˇerech, kdy je vˇetˇsina modern´ıch telefon˚ u schopna pomoc´ı nˇejak´e aplikace zaznamenat d´elku uˇsl´e trasy.
2.2.3
Dotykov´ y displej
Dotykov´e displeje m˚ uˇzeme dˇelit na dvˇe hlavn´ı kategorie, kter´e se pouˇz´ıvaj´ı u mobiln´ıch zaˇr´ızen´ı a to: rezistivn´ı a kapacitn´ı. Vzhledem k tomu, ˇze v dneˇsn´ı dobˇe se pomoc´ı dotykov´ ych displej˚ u ovl´ad´a t´emˇeˇr vˇetˇsina mobiln´ıch zaˇr´ızen´ı jejich v´ yvoj pokroˇcil v posledn´ıch letech velice kupˇredu. Velk´ y boom 4
Interakce pro ovl´ad´an´ı mobiln´ı hry
Chytr´e telefony
dotykov´ ych displej˚ u nastal v roce 2007 kdy Apple pˇredstavil sv˚ uj iPhone. Ale nebyl to zdaleka prvn´ı telefon s dotykov´ ym displejem toto prvenstv´ı si drˇz´ı Simon PDA cell phone, kter´ y v roce 1993 pˇredstavila spoleˇcnost BellSouth a IBM.
Rezistivn´ı displeje Rezistivn´ı neboli odporov´e displeje [12] m˚ uˇzeme ovl´adat prakticky ˇc´ımkoli. V okamˇziku kdy se displeje dotkneme, horn´ı dotykov´a vrstva se prohne a spoj´ı se se spodn´ı elektrovodivou vrstvou ˇc´ımˇz mezi nimi zaˇcne proch´azet ˇ ıd´ıc´ı a vyhodnocovac´ı modul n´aslednˇe vyhodnot´ı polohu elektrick´ y proud. R´ a velikost bodu dotyku. U tˇechto displej˚ u se tedy velice ˇspatnˇe prov´ad´ı gesta a horn´ı vrstva mus´ı b´ yt vyrobena z mˇekk´eho a pruˇzn´eho materi´alu, tud´ıˇz ˇcasto trp´ı poˇskr´ab´an´ım a proto tento druh displej˚ u nahradily displeje kapacitn´ı.
Obr´azek 2.2: Princip rezistivn´ıho displej [12]
Kapacitn´ı displeje Kapacitn´ı displeje [12] v dneˇsn´ı dobˇe ovl´adly trh s mobiln´ımi zaˇr´ızen´ımi. Jejich funkˇcnost spoˇc´ıv´a ve vodivosti lidsk´eho tˇela. Jakmile se dotkneme displeje, naruˇs´ı se elektrostatick´e pole displeje a mezi jeho povrchem a ˇspiˇckou 5
Interakce pro ovl´ad´an´ı mobiln´ı hry
Chytr´e telefony
prstu vznikne kapacita, kter´a uzavˇre elektrick´ y obvod. V´ yhody kapacitn´ıch displej˚ u tedy jsou, vysok´e rozliˇsen´ı displej˚ u, vysok´a svˇeteln´a propustnost a dotykov´a plocha m˚ uˇze b´ yt vyrobena z vysoce pevn´ ych a odoln´ ych skel. Nev´ yhodou je, ˇze displeje reaguj´ı pouze na dotyk prstu nebo jin´eho vodiv´eho pˇredmˇetu, takˇze napˇr´ıklad na dotek v rukavici displej nezareaguje. Ale nˇekteˇr´ı v´ yrobci doplˇ nuj´ı kapacitn´ı displej o dalˇs´ı super-citlivou vrstvu, d´ıky n´ı nen´ı probl´em ovl´ad´an´ı napˇr´ıklad nehty nebo v rukavic´ıch. Napˇr´ıklad jsou to Lumie od finsk´eho v´ yrobce Nokia.
2.2.4
Shrnut´ı
Dneˇsn´ı mobiln´ı zaˇr´ızen´ı potaˇzmo chytr´e telefony umoˇzn ˇuj´ı vyuˇzit´ı velk´eho mnoˇzstv´ı senzor˚ u a dalˇs´ıch pˇr´ısluˇsenstv´ı. Pro naˇsi hru vˇsak z˚ ustaneme u vyuˇzit´ı dotykov´eho displeje a pˇripojen´ı k s´ıti. Dotykov´ y displej n´am umoˇzn´ı vˇse co pro ovl´ad´an´ı hry potˇrebujeme v multiuˇzivatelsk´e verzi i moˇznost pˇr´ıstupu dvou hr´aˇc˚ u, kde kaˇzd´ y bude vyuˇz´ıvat svoji polovinu displeje. S´ıt’ov´e pˇripojen´ı n´am umoˇzn´ı realizovat multiuˇzivatelskou hru online, kde bude m´ıt kaˇzd´ y z hr´aˇc˚ u sv´e zaˇr´ızen´ı a tyto zaˇr´ızen´ı spolu budou komunikovat pˇres s´ıt’.
6
3 Multiuˇzivatelsk´e hry Multiuˇzivatelsk´e hry na mobiln´ıch zaˇr´ızen´ıch m˚ uˇzeme rozdˇelit na hry, kter´e se hraj´ı na jednom zaˇr´ızen´ı a hr´aˇci se o jedno zaˇr´ızen´ı stˇr´ıdaj´ı nebo hry pro dva a v´ıce hr´aˇc˚ u, kde kaˇzd´ y hraje na sv´e polovinˇe zaˇr´ızen´ı. Dalˇs´ım typem jsou hry, kde kaˇzd´ y z hr´aˇc˚ u jiˇz hraje na sv´em zaˇr´ızen´ı a tato zaˇr´ızen´ı spolu mus´ı na d´alku komunikovat.
3.1
Jedno zaˇ r´ızen´ı
Realizace t´eto multiuˇzivatelsk´e hry je velice jednoduch´a, jedn´a se o takzvanou o✏ine hru, kdy nen´ı nutn´e navazovat napˇr´ıklad s´ıt’ov´a spojen´ı, pokud hra nem´a dalˇs´ı nadstandardn´ı moˇznosti. Hr´aˇci se mohou o jedno zaˇr´ızen´ı stˇr´ıdat napˇr´ıklad po urˇcit´em ˇcase nebo vˇzdy po odehran´em kole. Ve hˇre Dobble jsem se rozhodl jako jeden z hern´ıch m´od˚ u implementovat moˇznost, hr´at na jednom zaˇr´ızen´ı souˇcasnˇe. Hra je urˇcena pro 2 hr´aˇce, z nichˇz kaˇzd´ y m´a k dispozici jednu polovinu displeje.
3.2
Komunikace v´ıce zaˇ r´ızen´ı
Pokud jsou ve hˇre zapojeny dvˇe a v´ıce zaˇr´ızen´ı, realizace t´eto hry se znaˇcnˇe zkomplikuje. Jiˇz mus´ı b´ yt k dispozici nˇejak´e spojen´ı pomoc´ı kter´eho budou dvˇe dan´a zaˇr´ızen´ı komunikovat mezi sebou. Jedn´a se o takzvanou online verzi. M´ame na v´ ybˇer mnoho typ˚ u spojen´ı, kter´a m˚ uˇzeme mezi zaˇr´ızen´ım nav´azat.
3.2.1
Bluetooth
Bluetooth [15] byl vytvoˇren firmou Ericsson v roce 1994. V dneˇsn´ı dobˇe ho nalezneme t´emˇeˇr v kaˇzd´em chytr´em telefonu. Tato technologie je definovan´a standardem IEEE 802.15.1 a spad´a do kategorie PAN, tzv. osobn´ıch poˇc´ıtaˇcov´ ych s´ıt´ı a to n´am pˇrin´aˇs´ı velk´a omezen´ı. Aby mohli dva spoluhr´aˇci vytvoˇrit spojen´ı, mus´ı se nach´azet v bl´ızk´em okol´ı nejl´epe jednoho pokoje. Ud´avan´ y dosah je 100 metr˚ u u Bluetooth 4.0 kter´e je nasazov´ano do nejnovˇejˇs´ıch mo7
Multiuˇzivatelsk´e hry
Komunikace v´ıce zaˇr´ızen´ı
biln´ıch zaˇr´ızen´ı. Tato technologie b´ yv´a pro multiuˇzivatelsk´e hry vyuˇz´ıv´ana velice zˇr´ıdka.
3.2.2
Wi-Fi - S´ıt’ov´ a komunikace
Wi-Fi je technologie, bez kter´e se v dneˇsn´ı dobˇe neobejde ˇz´adn´ y chytr´ y telefon. Slouˇz´ı pro bezdr´atovou komunikaci v poˇc´ıtaˇcov´ ych s´ıt´ıch. S´ıt’ov´a komunikace n´am jiˇz pˇrin´aˇs´ı mnohem vetˇs´ı moˇznosti. Zaˇr´ızen´ı jiˇz nejsou omezov´any vzd´alenost´ı, ve kter´e se od sebe nach´az´ı a nemus´ı spolu komunikovat na pˇr´ımo, ale pˇres nˇejak´ y komunikaˇcn´ı server. Tuto moˇznost vyuˇz´ıv´am i v hern´ım multiuˇzivatelsk´em online reˇzimu. Hr´aˇci se pˇripojuj´ı k serveru a komunikuj´ı viz obr´azek 3.1. M´a to samozˇrejmˇe i sv´e nev´ yhody, kaˇzd´e zaˇr´ızen´ı mus´ı m´ıt pˇripojen´ı k s´ıti popˇr´ıpadˇe k internetu a server mus´ı b´ yt spuˇstˇen´ y. Pokud tedy z nˇejak´eho d˚ uvodu server selˇze, nen´ı moˇzn´e ve hˇre pokraˇcovat ani vytvoˇrit hru novou.
Obr´azek 3.1: Komunikace zaˇr´ızen´ı pˇres server
8
Multiuˇzivatelsk´e hry
Komunikace v´ıce zaˇr´ızen´ı
Nalezen´ı spoluhr´ aˇ ce Nalezen´ı je moˇzn´e ˇreˇsit v´ıce r˚ uzn´ ymi zp˚ usoby. Napˇr´ıklad ve hˇre Dobble je omezen´ı, ˇze v kaˇzd´e hˇre mohou b´ yt souˇcasnˇe maxim´alnˇe 2 spoluhr´aˇci. Po pˇripojen´ı hr´aˇce k serveru je mu nab´ıdnuto jestli chce vytvoˇrit novou hru nebo se pˇripojit do nˇejak´e jiˇz vytvoˇren´e. Pokud si uˇzivatel vybere pˇripojen´ı do jiˇz vytvoˇren´e hry jsou tu dvˇe moˇznosti. Zaprv´e mu nab´ıdnout vˇsechny hry, do kter´ ych je moˇzno se moment´alnˇe se pˇripojit nebo zadat nˇejak´e ID, kter´e jasnˇe identifikuje danou hru. Pokud je tedy ve hˇre poˇzadovan´ y poˇcet spoluhr´aˇc˚ u, hra m˚ uˇze zaˇc´ıt.
9
4 Pravidla hry Hra Dobble spoˇc´ıv´a v hled´an´ı stejn´ ych obr´azk˚ u na dvou r˚ uzn´ ych kartiˇck´ach. Pˇriˇcemˇz obr´azky na kaˇzd´e z kartiˇcek jsou r˚ uznˇe velk´e. Po nalezen´ı stejn´eho obr´azku se na dan´ y obr´azek klikne a hra vyhodnot´ı jestli se obr´azek opravdu shoduje. Nyn´ı jsou 3 r˚ uzn´e hern´ı reˇzimy:
4.1
Single player
V tomto reˇzimu se hr´aˇc snaˇz´ı nasb´ırat co nejvyˇsˇs´ı sk´ore, dokud mu nedojdou ˇzivoty. Na zaˇca´tku hry m´a hr´aˇc 3 ˇzivoty. Hra je rozdˇelena na jednotliv´a kola a v kaˇzd´em n´asleduj´ıc´ım kole se sn´ıˇz´ı ˇcas na uhodnut´ı stejn´eho obr´azku. V kaˇzd´em kole je potˇreba nasb´ırat 5 spr´avn´ ych uhodnut´ı, aby se postoupilo do dalˇs´ıho kola. Pˇri postupu do dalˇs´ıho kola je hr´aˇci pˇrid´an jeden nov´ y ˇzivot. Pokud hr´aˇc vybere ˇspatn´ y obr´azek nebo mu dojde ˇcas na nalezen´ı obr´azku je mu odebr´an jeden ˇzivot. Hra je ukonˇcena po odebr´an´ı vˇsech ˇzivot˚ u.
4.2
Multi player - jedno zaˇ r´ızen´ı
V tomto reˇzimu mohou hr´at dva hr´aˇci proti sobˇe. Kaˇzd´emu hr´aˇci patˇr´ı jedna ze dvou kartiˇcek. Pˇred zah´ajen´ım hry se mus´ı nastavit poˇcet bod˚ u, kter´ y je nutn´ y pro dosaˇzen´ı v´ıtˇezstv´ı plus si kaˇzd´ y hr´aˇc m˚ uˇze zvolit barvu sv´e kartiˇcky a zadat sv´e jm´eno. Opˇet pˇri zvolen´ı spr´avn´eho obr´azku je dan´emu hr´aˇci pˇriˇcten jeden bod a pˇri ˇspatn´em pokusu jeden bod odeˇcten.
4.3
Multi player - v´ıce zaˇ r´ızen´ı
V tomto reˇzimu se hraje na dvou r˚ uzn´ ych zaˇr´ızen´ıch po s´ıti. Pˇred zaˇca´tkem hry se opˇet zvol´ı kolik bod˚ u je nutn´e pro celkov´e v´ıtˇezstv´ı. Po dosaˇzen´ı zvolen´ ych bod˚ u se hra ukonˇc´ı a kaˇzd´emu hr´aˇci je ozn´ameno jestli vyhr´al nebo naopak prohr´al. Pot´e se hra m˚ uˇze opakovat.
10
5 Realizace hry Na realizaci cel´e hry bylo pouˇzito velk´e mnoˇzstv´ı technologi´ı. Server je naps´an v n´ızko´ urovˇ nov´em jazyce C. Nativn´ı jazyk Androidu je Java a proto rozˇs´ıˇren´ı, kter´a zde potˇrebujeme pro s´ıt’ovou komunikaci jsou naps´ana v Javˇe a o obsluhu WebView tedy o GUI cel´e aplikace se star´a znaˇckovac´ı jazyk HTML5 s kask´adov´ ymi styly CSS3 a jsou obsluhov´any multiplatformn´ım, objektovˇe orientovan´ ym skriptovac´ım jazykem Javascript. V´ ysledn´a pr´ace je vidˇet na obr´azku 5.1.
Obr´azek 5.1: Hra Dobble v1.0
5.1
Klient
Pro v´ yvoj mobiln´ı aplikace jsem pouˇzil framework PhoneGap [6], kter´ y umoˇzn ˇuje napsat aplikaci pomoc´ı HTML5, Javascriptu a CSS3. Velk´a v´ yhoda tohoto frameworku je, ˇze aplikace bude jen s mal´ ymi u ´pravami multiplatformn´ı.
11
Realizace hry
5.1.1
Klient
Kartiˇ cky
Ve hˇre je celkem 55 r˚ uzn´ ych kartiˇcek a na kaˇzd´e z nich je 8 obr´azk˚ u. Kaˇzd´e dvˇe kartiˇcky maj´ı jeden obr´azek spoleˇcn´ y, ale obr´azek nemus´ı b´ yt stejnˇe velk´ y a nav´ıc r˚ uznˇe natoˇcen´ y viz obr´azek 5.2. Kartiˇcky byly pˇrevzaty z pap´ırov´e podoby hry Dobble. Znamen´a to, ˇze jednotliv´e kartiˇcky byly jedna po druh´e naskenov´any a pot´e upravov´any v programu Photoshop do poˇzadovan´e velikosti, podoby a pr˚ uhledn´eho pozad´ı. Pr˚ uhledn´e pozad´ı je poˇzadov´ano proto, aby si hr´aˇc mohl zvolit libovolnou barvu. Na kartiˇck´ach je celkem 57 r˚ uzn´ ych obr´azk˚ u, kter´e se r˚ uznˇe stˇr´ıdaj´ı, aby byla dodrˇzena logika hry a opravdu kaˇzd´a kartiˇcka mˇela s kaˇzdou pr´avˇe jeden shodn´ y obr´azek. Musel jsem tedy vypracovat matici o velikosti 55 x 55, kde je zaznamen´an shodn´ y obr´azek kaˇzd´ ych dvou kartiˇcek. Pokud tedy uˇzivatel klikne na nˇejak´ y z obr´azk˚ u, my v´ıme ˇc´ısla kartiˇcek, mezi kter´ ymi hled´a shodn´ y obr´azek a ˇc´ıslo dan´eho obr´azku, kter´e zjist´ıme z mapy kaˇzd´e kartiˇcky viz d´ale. Pot´e se tedy m˚ uˇzeme pod´ıvat do naˇs´ı matice, kde ˇr´adek matice bude ˇc´ıslo jedn´e kartiˇcky a sloupec ˇc´ıslo druh´e kartiˇcky a pokud hodnota na tomto m´ıstˇe bude rovna ˇc´ıslu zvolen´eho obr´azku, uˇzivatel zvolil spr´avnˇe. Pokud se hodnota bude liˇsit, hned v´ıme, ˇze uˇzivatel zvolil ˇspatn´ y obr´azek a m˚ uˇzeme zobrazit chybovou hl´aˇsku.
5.1.2
Rozpozn´ an´ı zvolen´ eho obr´ azku
Jak jiˇz v´ıme po stisknut´ı displeje potˇrebujeme identifikovat, na kter´ y z obr´azk˚ u bylo kliknuto. Kaˇzd´a kartiˇcka m´a tedy vygenerovan´e polygony a kaˇzd´ y polygon odpov´ıd´a jednomu obr´azku na kartiˇcce, kter´ y chceme zvolit. Pˇri doteku displeje si tedy zjist´ıme pˇresn´e souˇradnice kam bylo kliknuto. Jelikoˇz je hra pˇrenosn´a na v´ıce zaˇr´ızen´ı, mus´ı se ˇreˇsit probl´em s r˚ uzn´ ym rozliˇsen´ım displej˚ u. Pokud klikneme uprostˇred displeje na zaˇr´ızen´ıch z r˚ uzn´ ym rozliˇsen´ım dostaneme pokaˇzd´e jin´e souˇradnice. Souˇradnice polygon˚ u jsou na kartiˇck´ach o velikosti 1000px x 1000px pokud je tedy ˇs´ıˇrka displeje tak´e 1000px nemus´ı se pˇrepoˇc´ıt´avat nic. Pokud je napˇr´ıklad pouze 500px je tedy o polovinu menˇs´ı t´ım p´adem vyn´asob´ıme dvakr´at x souˇradnici bodu, kde se uˇzivatel dotkl. Nyn´ı v´ıme kam pˇresnˇe uˇzivatel klikl a m˚ uˇzeme, tak zjistit o jak´e ˇc´ıslo obr´azku se jedn´a. Proto m´a kaˇzd´a kartiˇcka vygenerovanou souˇradnicovou mapu polygon˚ u a kaˇzd´ y polygon m´a pˇriˇrazeno ˇc´ıslo od 1 do 57, jak bylo zm´ınˇeno v´ yˇse 57 je poˇcet vˇsech obr´azk˚ u, kter´e se v t´eto hˇre nach´azej´ı. Pokud se tedy bod, kam uˇzivatel klikl nach´az´ı v nˇejak´em z polygon˚ u kartiˇcky, v´ıme tedy jak´e ˇc´ıslo obr´azku to je a nic n´am nebr´an´ı v tom zjistit, jestli se uˇzivatel m´ yl´ı nebo se trefil a zvolil shodn´ y obr´azek na zobrazen´ ych kartiˇck´ach. 12
Realizace hry
Klient
Obr´azek 5.2: Uk´azka shodn´ ych obr´azk˚ u na kartiˇck´ach Generov´ an´ı polygon˚ u Na generov´an´ı tˇechto polygon˚ u pouˇz´ıv´am online n´astroj Summer [10]. Do tohoto online n´astroje si nahrajeme obr´azek, kter´ y n´am bude slouˇzit jako podklad. Po u ´spˇeˇsn´em nahr´an´ı obr´azku jiˇz m˚ uˇzeme zaˇc´ıt generovat polygony na zvolen´em pozad´ı. Pˇrepneme se tedy do moˇznosti generovat polygony a zaˇcneme generovat jednotliv´e polygony viz obr´azek 5.3. Pokud m´ame zvoleny vˇsechny polygony na dan´e kartiˇcce, m˚ uˇzeme z tohoto n´ahledu vygenerovat html k´od, kter´ y je klasick´a HTML mapa viz obr´azek 5.4. V tagu map jsou tagy area, kde v atributu coords nalezneme souˇradnice n´ami poˇzadovan´ ych polygon˚ u.
13
Realizace hry
Klient
Obr´azek 5.3: Generov´an´ı polygon˚ u jedn´e kartiˇcky
Obr´azek 5.4: Vygenerovan´a HTML mapa
5.1.3
PhoneGap
PhoneGap je webov´a str´anka zabalen´a jako nativn´ı aplikace, byl navrˇzen firmou Nitobi a v roce 2011 zakoupen firmou Adobe Systems. V souˇcasn´e dobˇe se tˇeˇs´ı velk´e popularitˇe a je pouˇzit pro velk´e mnoˇzstv´ı mobiln´ıch aplikac´ı. Nativn´ı aplikace pro jednotliv´e platformy budou vˇzdy pravdˇepodobnˇe lepˇs´ı z hlediska rychlosti a vzhledu odpov´ıdaj´ıc´ıho dan´e platformˇe. Ale vzhledem k tomu, ˇze aplikace pro jednotliv´e platformy je nutn´e vyv´ıjet kaˇzdou zvl´aˇst’, bude to vˇzdy velice n´akladn´e ˇreˇsen´ı. Prvn´ım krokem je tedy napsat webovou aplikaci v HTML5, CSS, JS a po14
Realizace hry
Klient
kud chceme, aby se aplikace podobala co nejv´ıce nativn´ı, tak je dobr´e pouˇz´ıt framework, kter´ y m´a jiˇz pˇredpˇripraven´e komponenty s co nejv´ıce nativn´ım vzhledem napˇr´ıklad jQuery mobile. Za druh´e je potˇreba zabalen´ı cel´e webov´e aplikace do nativn´ı pomoc´ı PhoneGap. Tu si lze pˇredstavit, jako pˇredpˇripraven´e nativn´ı aplikace pro jednotliv´e platformy, kter´e maj´ı pˇres celou plochu webov´ y prohl´ıˇzeˇc, kam se naˇcte pr´avˇe webov´a aplikace. Hlavn´ı v´ yhodou oproti bˇeˇzn´emu prohl´ıˇzeˇci je to, ˇze m˚ uˇzeme danou aplikaci odeslat do App Store, Google Play nebo WP Store a tak´e m´ame pˇr´ıstup ke vˇsem syst´emov´ ym API jako tˇreba geolokaci, fotoapar´atu, kontakt˚ um nebo filesyst´emu. Dalˇs´ı v´ yhodou je velk´e mnoˇzstv´ı plugin˚ u, kter´e pro v´ yvoj m˚ uˇzeme pouˇz´ıt a pokud n´am nˇejak´ y sch´az´ı, je moˇzn´e si ho pro danou platformu v nativn´ım jazyce napsat. Na obr´azku 5.5 je vidˇet, ˇze na vˇsech nejrozˇs´ıˇrenˇejˇs´ıch platform´ach m´ame jiˇz implementov´an pˇr´ıstup ke vˇsem bˇeˇzn´ ym vlastnostem, kter´e mobiln´ı zaˇr´ızen´ı nab´ızej´ı. PhoneGap je nyn´ı moˇzn´e pouˇz´ıt na vˇsechny moment´alnˇe zn´am´e operaˇcn´ı syst´emy chytr´ ych telefon˚ u. Od Amazon Fire OS, Firefox OS, Ubuntu aˇz po iOS, Android, Windows Phone potaˇzmo Windows 8. Ps´at tedy aplikace jako webov´e se vyplat´ı. Jen pokud by byla aplikace n´aroˇcnˇejˇs´ı a jednalo se o akˇcn´ı hru, asi je lepˇs´ı pˇrem´ yˇslet o nativn´ı aplikaci. Ale vzhledem k tomu, ˇze v´ yvoj webov´ ych prohl´ıˇzeˇc˚ u a webov´ ych technologi´ı jde velk´ ym tempem kupˇredu, urˇcitˇe je to dobr´a volba do budoucna. Jiˇz pomalu zaˇc´ınaj´ı nˇekter´e browsery podporovat potˇrebn´a API pro pˇr´ıstup k vlastnostem mobiln´ıch zaˇr´ızen´ı.
5.1.4
Pˇ r´ıprava prostˇ red´ı
Abychom mohli naˇs´ı aplikaci zaˇc´ıt vyv´ıjet je zapotˇreb´ı m´ıt nainstalovan´e prostˇred´ı Eclipse, kter´e je volnˇe ke staˇzen´ı na str´ank´ach http://eclipse.org. Pro v´ yvoj naˇs´ı aplikace st´ahneme verzi Eclipse pro Java v´ yvoj´aˇre, kterou nainstalujeme klasick´ ym zp˚ usobem. Pro v´ yvoj mobiln´ıch aplikac´ı je potˇreba doinstalovat Android SDK a ADT. D´ıky tomuto pluginu z´ısk´ame kompletn´ı IDE pro v´ yvoj Android aplikac´ı. To znamen´a, ˇze z´ısk´ame i Android emul´ator, ve kter´em budeme moci aplikaci spouˇstˇet a testovat.
15
Realizace hry
Klient
Obr´azek 5.5: Tabulka podporovan´ ych vlastnost´ı jednotliv´ ych platforem Zaloˇ zen´ı prvn´ıho projektu Pˇred t´ım neˇz zaloˇz´ıme nov´ y projekt si jeˇstˇe mus´ıme st´ahnout PhoneGap plugin, kter´ y nalezneme na http://phonegap.com/download, kde si m˚ uˇzeme zvolit v z´avislosti na operaˇcn´ım syst´emu jak´ y bal´ıˇcek chceme. Staˇzen´ y soubor si po staˇzen´ı rozbal´ıme na disku. Zaloˇzen´ı nov´eho projektu prob´ıh´a stejnˇe jako u standardn´ı nativn´ı Android aplikace, zvol´ıme tedy z menu New Project a ze zobrazen´e nab´ıdky vybereme Android -> android Application Project pot´e si zad´ame jm´eno naˇs´ı aplikace, minim´aln´ı verzi API, na kter´em bude moˇzn´e naˇs´ı aplikaci spustit a pˇrejdeme na str´anku, kde si zvol´ıme ikonku naˇs´ı aplikace. V posledn´ım kroku si vytvoˇr´ıme Pr´azdnou MainActivity a m˚ uˇzeme pokraˇcovat s pˇrid´an´ım frameworku PhoneGap. Cel´a struktura aplikace je vidˇet na obr´azku 5.6. V adres´aˇri assets/www/ jsou kompletn´ı zdrojov´e k´ody webov´e aplikace s pˇridanou JavaScriptovou knihovnou PhoneGap, kterou bychom pro spuˇstˇen´ı na standardn´ım webu nepotˇrebovali. Hlavn´ım souborem je samozˇrejmˇe index.html, kter´ y je pot´e zavol´an v hlavn´ı aktivitˇe aplikace viz kapitola 5.1.5. ´ Uprava souboru AndroidManifest.xml Aby naˇse aplikace mohla pˇristupovat napˇr´ıklad k internetu, je potˇreba nejdˇr´ıve definovat pˇr´ıstup v r´amci souboru AndroidManifest.xml. Moˇznosti nastaven´ı jsou pomˇernˇe ˇsirok´e, tak si uk´aˇzeme alespoˇ n z´akladn´ı, kter´a jsem pouˇzil v 16
Realizace hry
Klient
Obr´azek 5.6: Struktura Android aplikace s pˇridan´ ym frameworkem PhoneGap aplikaci Dobble nebo takov´a, kter´a by mohla b´ yt alespoˇ n vyuˇzita. Z´akladn´ım opr´avnˇen´ım, kter´e potˇrebujeme pro hran´ı verze multiplayer online je opr´avnˇen´ı INTERNET. Pokud zapomeneme pˇridat ˇr´adek s t´ımto opr´avnˇen´ım, budeme marnˇe zkoumat, proˇc se naˇs´ı aplikaci nedaˇr´ı pˇripojit k s´ıti. Dalˇs´ı opr´avnˇen´ı, kter´e je v aplikaci vyuˇz´ıv´ano je VIBRATE. Pˇri doch´azej´ıc´ım ˇcase v reˇzimu single player je uˇzivatel upozornˇen v posledn´ıch 3 sekund´ach prodluˇzuj´ıc´ımi se vibracemi. V budoucnosti by se mohlo hodit napˇr´ıklad opr´avnˇen´ı k z´ısk´an´ı polohy uˇzivatele z toho d˚ uvodu, abychom mohli v reˇzimu multiplayer online nab´ıdnout hr´aˇce z nejbliˇzˇs´ıho okol´ı. Moˇznosti geolokace jsou dvˇe a to ACCESS COARSE LOCATION a ACCESS FINE LOCATION na prvn´ı pohled m˚ uˇzou b´ yt zamˇen ˇov´any, ale je dobr´e pˇresnˇe vˇedˇet, kter´a se na co hod´ı. Rozd´ıly mezi tˇemito opr´avnˇen´ımi je ten, ˇze z´ısk´an´ı pˇresn´e polohy GPS m˚ uˇze b´ yt velice ˇcasovˇe n´aroˇcn´e, pokud jsme napˇr´ıklad v zabydlen´e oblasti nebo pˇr´ımo v budovˇe, kde nen´ı pˇr´ım´ y v´ yhled na oblohu. Proto lze pouˇz´ıt prvn´ı zmiˇ novan´ y zp˚ usob geolokace ACCESS COARSE LOCATION, na z´akladˇe s´ıt’ov´e geolokace. Tento zp˚ usob je zpravidla rychlejˇs´ı, ale m´enˇe pˇresn´ y a je zaloˇzen´ y na z´ısk´avan´ı polohy z pozemn´ıch vys´ılaˇc˚ u mobiln´ıch oper´ator˚ u a Wi-Fi s´ıt´ı. Druh´ y zp˚ usob ACCESS FINE LOCATION umoˇzn ˇuje pˇri-
17
Realizace hry
Klient
stupovat k pˇresn´e poloze zaloˇzen´e na GPS ˇcipu v zaˇr´ızen´ı.
5.1.5
Java
V´ ykonn´ y k´od klienta je naps´an v jazyce Java ve v´ yvojov´em prostˇred´ı Eclipse s pluginem Android SDK Manager. Pˇr´ıj´ım´an´ı a odes´ıl´an´ı zpr´av serveru se zajiˇst’uje pr´avˇe zde. O funkˇcnost se staraj´ı 4 tˇr´ıdy.
Tˇ r´ıda MainActivity V´ ychoz´ı tˇr´ıda cel´eho frameworku PhoneGap, kter´a se star´a o vytvoˇren´ı webov´eho okna pro zobrazen´ı aplikace. Hlavn´ı a jedin´a metoda t´eto tˇr´ıdy je onCreate(), kter´a je vidˇet na obr´azku 5.7. T´eto metodˇe zad´ame cestu k souboru, ve kter´em se nach´az´ı hlavn´ı soubor webov´e aplikace.
Obr´azek 5.7: Metoda onCreate(), kter´a je srdcem cel´e aplikace
Tˇ r´ıda ConnectionPlugin ConnectionPlugin je tˇr´ıda, kter´a zachyt´av´a poˇzadavky, kter´e pˇrich´az´ı z webov´eho rozhran´ı a jsou urˇceny pro komunikaci se serverem. V t´eto tˇr´ıdˇe se nach´az´ı dvˇe metody execute() a callJavaScript(). Metoda execute() zachyt´av´a poˇzadavky z WebView a d´ale je zpracov´av´a a druh´a metoda je urˇcena pro komunikaci z nativn´ıho prostˇred´ı do WebView. Pokud je tedy zasl´an v multiuˇzivatelsk´e hˇre online poˇzadavek na vytvoˇren´ı nov´e hry, je nejprve zasl´an poˇzadavek z WebView, kde ho metoda execute() zpracuje a odeˇsle potˇrebn´e informace na server, kter´ y po zpracov´an´ı a vytvoˇren´ı nov´e hry vr´at´ı ID hry. A metoda callJavaScript() zaˇsle dan´ y v´ ysledek do WebView, kde je o tom informov´an dan´ y uˇzivatel.
18
Realizace hry
Klient
Tˇ r´ıda TCP Connection a ListenThread Tyto dvˇe tˇr´ıdy jsou um´ıstˇeny v souboru TCP Connection.java a maj´ı za u ´kol vytvoˇren´ı a udrˇzov´an´ı komunikace se serverem. Po vytvoˇren´ı nov´e instance se v konstruktoru tˇr´ıdy TCP Connection vytvoˇr´ı nov´e vl´akno tˇr´ıdy ListenThread, kter´a se star´a o pˇr´ıjem paket˚ u ze serveru a pˇred´av´a je d´ale na WebView, kde pˇrijat´a data d´ale zpracov´av´a Javascript.
5.1.6
Javascript
WebView klienta bylo naps´ano v prostˇred´ı programu PHPStorm. Pro lepˇs´ı pr´aci s Javaskriptem [3] je pouˇzita knihovna jQuery [7] a jQuery mobile [8]. D´ale bylo nutn´e oˇsetˇrit prodlen´ı pˇri kliknut´ı pomoc´ı knihovny fastclick [11] a pro v´ ybˇer barev kartiˇcek je vyuˇzita knihovna spectrum [9] O obsluhu WebView se staraj´ı 3 hlavn´ı soubory. a) connectionPlugin.js tento soubor m´a na starosti komunikaci s Javou. Po pˇrijet´ı zpr´avy ji zpracuje a zavol´a pˇr´ısluˇsn´e metody uloˇzen´e v souboru main.js b) main.js je hlavn´ı soubor, kter´ y m´a na starosti obsluhovat ud´alosti vˇsech tlaˇc´ıtek a pˇrij´ımat zpr´avy od souboru connectionPlugin.js c) cards.js V tomto souboru jsou uloˇzeny kombinace jednotliv´ ych karet a dalˇs´ı potˇrebn´e funkce pro obsluhu kartiˇcek. D´ale m´a kaˇzd´a kartiˇcka sv˚ uj Javascriptov´ y soubor, kde je uloˇzen polygon kaˇzd´eho obr´azku generovan´ y pomoc´ı online aplikace Summer [10]. Uk´azka vytvoˇren´ı mapy jedn´e konkr´etn´ı kartiˇcky je na obr´azku 5.3. Po kliknut´ı je tedy pomoc´ı tohoto konkr´etn´ıho souboru moˇzno zjistit, na jak´ y obr´azek uˇzivatel skuteˇcnˇe klikl. Kartiˇcek je ve hˇre celkem 55 a na kaˇzd´e je 8 obr´azk˚ u. Z ˇcehoˇz kaˇzd´e dvˇe kartiˇcky maj´ı jeden stejn´ y obr´azek. Nav´ıc jsou obr´azky na kaˇzd´e kartiˇcce r˚ uznˇe velk´e.
19
Realizace hry
Klient
Knihovna jQuery jQuery [7] je JavaScriptov´a knihovna, kter´a n´am usnadˇ nuje psan´ı v JavaScriptu a je optimalizov´ana pro velk´e mnoˇzstv´ı prohl´ıˇzeˇc˚ u. jQuery je otevˇren´ y a svobodn´ y software pod licenc´ı MIT, kter´ y se v posledn´ıch nˇekolika letech velice rozˇs´ıˇril. V cel´e aplikaci tedy pro pr´aci s JavaScriptem pouˇz´ıv´am tuto knihovnu.
Knihovna jQuery mobile jQuery mobile [2] je knihovna, kter´a n´am pom˚ uˇze vytvoˇrit responzivn´ı design, kter´ y se jednoduˇse pˇrizp˚ usob´ı na r˚ uzn´e velikosti displeje. jQuery mobile vyuˇz´ıv´a ke sv´e pr´aci knihovnu jQuery. Pyˇsn´ı se podporou vˇsech modern´ıch desktopov´ ych prohl´ıˇzeˇc˚ u, smartphon˚ u, tablet˚ u a e-ˇcteˇcek. jQuery Mobile nab´ız´ı pˇet barevn´ ych sch´emat. Pokud n´am ˇza´dn´e nevyhovuje, m˚ uˇzeme si vzhled kompletnˇe navrhnout znovu – pomoc´ı ThemeRolleru [13], kter´ y v´ yvoj´aˇri pˇripravili speci´alnˇe pro jQuery Mobile. Pr´ace s n´ım je velice jednoduch´a a instinktivn´ı, pro navrˇzen´ı ˇsablony se standardnˇe pouˇzije HTML5 a konkr´etn´ı prvky jQuery mobile se uv´adˇej´ı do atributu data. Na obr´azku 5.8 m˚ uˇzete vidˇet pouˇzit´ı jQuery mobile v aplikaci Dobble. Knihovnu pouˇzijeme, tak ˇze do atributu data vloˇz´ıme potˇrebn´e informace, pokud napˇr´ıklad chceme nˇejak´emu elementu pˇriˇradit roli, jednoduˇse do data-role vloˇz´ıme hodnotu poˇzadovan´e role navbar. Dalˇs´ı moˇznost´ı je zvolit si barevn´e sch´ema tlaˇc´ıtka tak, ˇze do atributu data-theme vloˇz´ıme jednu z pˇreddefinovan´ ych barevn´ ych sch´emat A aˇz E.
Obr´azek 5.8: Pouˇzit´ı jQuery mobile v aplikaci Dobble
Knihovna FastClick FastClick je easy-to-use knihovna pro odstranˇen´ı 300ms prodlevy pˇri klepnut´ı na displej. Jelikoˇz je hra naps´ana ve frameworku PhoneGap, znamen´a to ve 20
Realizace hry
Klient
skuteˇcnosti, ˇze hra je bˇeˇz´ı v mobiln´ım prohl´ıˇzeˇci. A to sebou pˇrin´aˇs´ı sv´e v´ yhody, napˇr´ıklad pˇrenositelnost mezi zaˇr´ızen´ımi, ale tak´e nev´ yhody napˇr´ıklad 3OO milisekundovou prodlevu pˇri doteku displeje. Tato prodleva m´a samozˇrejmˇe sv´e opodstatnˇen´ı. Pokud si v bˇeˇzn´em prohl´ıˇzeˇci zobraz´ıte str´anku, kter´a nen´ı optimalizov´ana pro mobiln´ı zaˇr´ızen´ı, je vidˇet velice neˇcitelnˇe. Proto staˇc´ı dvakr´at kliknout na displej a prohl´ıˇzeˇc automaticky pˇribl´ıˇz´ı zobrazen´ y obsah. A pr´avˇe dan´ y dvojit´ y klik zp˚ usobuje tuto prodlevu. Aby prohl´ıˇzeˇc rozpoznal, ˇze jsme skuteˇcnˇe poklepali na displej zaˇr´ızen´ı dvakr´at, mus´ı po prvn´ım kliknut´ı poˇckat 300 milisekund jestli nepˇrijde i druh´ y klik, kter´ y by znamenal pˇribl´ıˇzen´ı zobrazen´eho obsahu. Ale hra Dobble je optimalizov´ana pro mobiln´ı zaˇr´ızen´ı, takˇze dvojit´ y klik pro pˇribl´ıˇzen´ı nepotˇrebujeme. Pˇrin´aˇs´ı n´am tedy jen zpoˇzdˇen´ı po kliknut´ı a vytv´aˇr´ı iluzi zpomalenosti. Tato knihovna tedy dokonale ˇreˇs´ı n´aˇs probl´em. Odstraˇ nuje moˇznost dvoj´ıho kliknut´ı na displej a proto zaˇr´ızen´ı po prvn´ım doteku displeje provede ud´alost spojenou s kliknut´ım a neˇcek´a 300 milisekund na druh´e kliknut´ı.
5.1.7
HTML5 a CSS3
HTML5 a CSS3 [4] jsou v´ıce neˇz jen dva nov´e standardy pˇredstaven´e W3C. Slouˇz´ı hlavnˇe k tomu, aby n´am pomohli tvoˇrit nov´e lepˇs´ı modern´ı webov´e aplikace. Aplikace tvoˇren´e HTML5 se snadnˇeji vyv´ıjej´ı a spravuj´ı a tak´e jsou pˇr´ıvˇetivˇejˇs´ı k uˇzivatel˚ um. HTML5 obsahuje nov´e elementy a CSS3 poskytuje nov´e pokroˇcil´e selektory, grafick´a vylepˇsen´ı a lepˇs´ı podporu font˚ u. Proto nen´ı jiˇz nutn´e jednoduˇsˇs´ı animace implementovat pomoc´ı javascriptu. ´ ziˇ a) Uloˇ stˇ e Aby bylo moˇzn´e vytv´aˇret plnohodnotn´e aplikace, kter´e funguj´ı pouze na stranˇe klienta, nesm´ı chybˇet u ´loˇziˇstˇe, ve kter´em si m˚ uˇzeme uchovat data. V HTML5 m˚ uˇzeme vyuˇz´ıvat webov´e SQL datab´aze, nebo localStorage. Lok´aln´ı SQL datab´aze v Dobble vyuˇzity nejsou, ale localStorage n´am slouˇz´ı napˇr´ıklad pro ukl´ad´an´ı nastaven´ı. LocalStorage ukl´ad´a data v p´arech kl´ıˇc/hodnota.
b) Formul´ aˇ re Dˇr´ıve jsme museli pouˇz´ıvat JavaScript a CSS k vytvoˇren´ı posuvn´ ych jezdc˚ u, kalend´aˇre pro v´ ybˇer data a kap´atka pro v´ ybˇer barvy. Vˇsechny tyto prvky 21
Realizace hry
Klient
jsou nyn´ı re´alnˇe definov´any elementy HTML5, podobnˇe jako v´ ybˇerov´e nab´ıdky, zatrh´avac´ı pol´ıˇcka nebo pˇrep´ınaˇce. Dalˇs´ım pˇr´ınosem jsou formul´aˇre typu email, ˇc´ıslo, telefon nebo url. Pˇrin´aˇs´ı n´am to napˇr´ıklad velkou v´ yhodu pr´avˇe u mobiln´ıch zaˇr´ızen´ı, protoˇze prohl´ıˇzeˇc n´am m˚ uˇze zobrazit pouze ˇc´ıselnou kl´avesnici pro zad´an´ı telefonn´ıho ˇc´ısla a nav´ıc se formul´aˇre automaticky validuj´ı a nedovol´ı odesl´an´ı formul´aˇre, pokud nen´ı zadan´ y napˇr´ıklad validn´ı email ve formul´aˇri typu email.
c) Pokroˇ cil´ e CSS selektory CSS3 obsahuje nov´e selektory, kter´e n´am umoˇzn ˇuj´ı napˇr´ıklad identifikovat lich´e a sud´e ˇra´dky tabulky, vˇsechna vybran´a zaˇskrt´avac´ı pol´ıˇcka, nebo dokonce posledn´ı odstavec ve skupinˇe. Proto nen´ı jiˇz nutn´e ”obch´azet”CSS3, abychom se dostali v efekt˚ um, kter´e potˇrebujeme z´ıskat. Bylo potˇreba pouˇz´ıt JavaScript nebo bylo nutn´e pˇrid´avat tˇr´ıdy do HTML, kter´e se pot´e stylovaly.
d) Vizu´ aln´ı efekty a animace St´ıny za obr´azky, tlaˇc´ıtky nebo texty pom´ahaj´ı dostat do aplikac´ı hloubku a pˇrechody tak´e mohou pˇridat na efektu prostoru. CSS3 n´am umoˇzn ˇuje pˇrid´avat st´ıny a pˇrechody element˚ um bez nutnosti spol´ehat na obr´azky. Nav´ıc je moˇzn´e pouˇz´ıvat transformace k vytv´aˇren´ı kulat´ ych roh˚ u nebo ke zkosen´ı ˇci otoˇcen´ı element˚ u. Kulat´e kartiˇcky jsou pr´avˇe vytvoˇreny pomoc´ı tˇechto prvk˚ u. Jedn´a se o element div, kter´ y m´a nastaven´ y border-radius na vysokou hodnotu, takˇze maxim´aln´ı zkosen´ı roh˚ u zp˚ usob´ı, ˇze v´ ysledn´ y tvar je kruh. Vytvoˇren´ı animac´ı je nyn´ı s CSS3 tak´e velice jednoduch´e, napˇr´ıklad pokud klikneme v naˇs´ı hˇre na ˇspatn´ y obr´azek, tak vyvol´ame efekt, kter´ y zp˚ usob´ı ,ˇze pozad´ı se rozblik´a ˇcervenˇe. K tomuto efektu staˇcilo p´ar ˇr´adek v CSS3 viz obr´azek 5.9. Na obr´azku m˚ uˇzeme vidˇet animaci, kter´a je v´az´ana na tˇr´ıdu hightlight-error prvn´ı parametr je n´azev animace, kter´a se m´a vykonat a druh´ y parametr, jak dlouho animace bude trvat. Definice animace se uv´ad´ı v procentech. Znamen´a to v jak´em u ´seku se maj´ı dan´e pˇr´ıkazy vykonat. V naˇs´ı uk´azkov´e animaci to tedy znamen´a, ˇze ihned po spuˇstˇen´ı se nastav´ı barva pozad´ı na ˇcervenou a v 5% celkov´eho ˇcasu animace se nastav´ı na zcela pr˚ uhlednou a tak d´ale. Takˇze v celkov´em v´ ysledku vyvol´a v´ ystraˇzn´ y blikaj´ıc´ı efekt, kter´ y je pro n´as d˚ uleˇzit´ y pokud uˇzivatel klikne na ˇspatn´ y obr´azek.
22
Realizace hry
Server
Obr´azek 5.9: Zn´azornˇen´ı animace v CSS3
5.2
Server
Server n´am slouˇz´ı pro komunikaci mezi zaˇr´ızen´ımi. Je tedy potˇreba, pokud se hr´aˇc rozhodne spustit multiuˇzivatelskou hru online. Pro dalˇs´ı dva hern´ı m´ody potˇreba nen´ı. Server byl naps´an v r´amci semestr´aln´ı pr´ace pˇredmˇetu KIV/UPS - u ´vod do poˇc´ıtaˇcov´ ych s´ıt´ı a d´ale poupraven a doladˇen v r´amci bakal´aˇrsk´e pr´ace. Je naprogramov´an v jazyce C, k´odov´an a odladˇen ve v´ yvojov´em prostˇred´ı Xcode viz obr´azek 5.10 od firmy Apple. Po pˇripojen´ı nov´eho klienta se vytvoˇr´ı nov´e vl´akno, kter´e se po celou dobu spojen´ı o tohoto klienta star´a. Pro ukl´ad´an´ı jednotliv´ ych her je pouˇz´ıv´a nov´ y datov´ y typ Game a jednotliv´e hry jsou uloˇzeny v spojov´em seznamu. Pokud se odpojuje posledn´ı hr´aˇc ze hry, dan´a hra se odstran´ı ze spojov´eho seznamu a jiˇz nen´ı moˇzn´e do n´ı vstoupit. Server m´a tˇri hlavn´ı soubory .c a ke kaˇzd´emu hlaviˇckov´ y soubor .h s hlaviˇckami metod. V souboru main.h jsou includov´any potˇrebn´e knihovny a vytvoˇreny nov´e datov´e typy.
a) Hlavn´ı soubor main.c kde se nach´az´ı metoda main. A metoda pro vytvoˇren´ı nov´eho vl´akna a obsluhu klienta. b) Soubor game.c kde jsou um´ıstˇeny metody pro pr´aci se hrou. Vytvoˇren´ı, odstranˇen´ı nov´e hry. Pˇrid´an´ı a odstranˇen´ı hr´aˇce ze hry. c) V souboru function.c se nach´az´ı pomocn´e metody. Napˇr´ıklad metoda pro parsov´an´ı ˇretˇezce, metoda pro tisk n´apovˇedy, metoda pro zpracov´an´ı parametr˚ u. 23
Realizace hry
Komunikaˇcn´ı protokol
Obr´azek 5.10: V´ yvojov´e prostˇred´ı Xcode
5.3
Komunikaˇ cn´ı protokol
Pro komunikaci mezi klientem a serverem je pouˇzit TCP protokol (Transmission Control Protocol). D´ıky tomuto protokolu m˚ uˇze server a klient mezi sebou vytvoˇrit spojen´ı pˇres kter´e pot´e pˇren´aˇs´ı data. TCP zaruˇcuje spolehliv´e doruˇcen´ı a doruˇcen´ı ve spr´avn´em poˇrad´ı.
5.3.1
Zah´ ajen´ı komunikace serveru
a) socket - Vytvoˇr´ı socket dan´eho typu. Socket nen´ı asociov´an s ˇza´dn´ ym portem. b) bind - Nav´aˇze socket se jm´enem. Pouˇz´ıv´a pouze server. c) listen - Slouˇz´ı k nastaven´ı socketu do stavu ˇcek´an´ı na pˇr´ıchoz´ı spojen´ı. d) accept - Funkce vr´at´ı parametry prvn´ıho spojen´ı ve frontˇe a nov´ y socket, kter´ y slouˇz´ı ke komunikaci s druhou stranou. P˚ uvodn´ı spojen´ı ve frontˇe a nov´ y socket, kter´ y slouˇz´ı ke komunikaci. e) recv - Pˇr´ıjem zpr´av ze socketu. f) send - Odesl´an´ı zpr´avy. 24
Realizace hry
5.3.2
Komunikaˇcn´ı protokol
Zah´ ajen´ı komunikace klienta
a) socket - Vytvoˇr´ı socket dan´eho typu. Socket nen´ı asociov´an s ˇza´dn´ ym portem. b) connect - Pro nav´az´an´ı spojen´ı. Pouˇz´ıv´a pouze klient. c) send - Odesl´an´ı zpr´avy. lze pouˇz´ıt pouze pokud je soket ve stavu pˇripojen. d) recv - Pˇr´ıjem zpr´av ze soketu. e) close - Uzavˇren´ı soketu.
5.3.3
Komunikace mezi serverem a klientem
Klient a server se dorozum´ıvaj´ı pomoc´ı ˇc´ıseln´ ych sign´al˚ u viz n´asleduj´ıc´ı tabulka. Pokud je potˇreba pˇrijmout nebo odeslat nˇejak´ y parametr, tak za ˇc´ıseln´ ym k´odem oddˇeleno stˇredn´ıkem je um´ıstˇen dalˇs´ı parametr. Napˇr´ıklad pokud server pos´ıl´a informaci o novˇe vygenerovan´ ych kart´ach, k´od kter´ y pˇrijde klientovi vypad´a n´asledovnˇe 3;16;43 prvn´ı ˇc´ıslo urˇcuje, o kter´ y sign´al se jedn´a a druh´a dvˇe ˇc´ısla jsou jiˇz parametry tedy ˇc´ıslo karty 1 a ˇc´ıslo karty 2. Pˇrehled zas´ılan´ ych k´od˚ u: Klient -> Server 1 - vytvoˇren´ı nov´e hry;poˇcet v´ıtˇezstv´ı na hru 2 - Pˇripojen´ı se do jiˇz vytvoˇren´e hry podle ;ID hry 3 - Zaslan´ı informace o spr´avn´e odpovˇedi 4 - Zasl´an´ı informace o ˇspatn´e odpovˇedi 5 - Hr´aˇc je pˇripraven ke hˇre 6 - Hr´aˇc nen´ı pˇripraven ke hˇre 7 - Odpojit hr´aˇce ze hry Server -> Klient 1 - Vytvoˇren´ı nov´e hry probˇehlo v poˇra´dku ;ID hry;karta 1;karta 2 25
ˇ Casovˇ e kritick´e u ´seky hry
Realizace hry 2 - Vytvoˇren´ı nov´e hry se nezdaˇrilo
3 - Pˇripojen´ı do nov´e hry probˇehlo v poˇr´adku ;karta 1;karta 2 4 - Pˇripojen´ı do nov´e hry se nezdaˇrilo - tato hra neexistuje 5 - Pˇripojen´ı do nov´e hry se nezdaˇrilo - ˇz´adn´e hry nejsou vytvoˇreny 6 - Chyba volan´a sluˇzba neexistuje 7 - Pˇripojen´ı do nov´e hry se nezdaˇrilo - hra je obsazena 8 - Do hry se pˇripojil protihr´aˇc 9 - Pˇripojen´ı do nov´e hry se nezdaˇrilo - poˇcet hr´aˇc˚ u ve hˇre je vyˇcerp´an (hra nem´a voln´ y socket) 10 - Protihr´aˇc se odpojil z t´eto hry 12 - Spojen´ı bylo nav´az´ano 14 - Spojen´ı se nepodaˇrilo vytvoˇrit 15 - Spojeni se serverem selhalo 16 - Vytvoˇren´ı nebo pˇripojen´ı k nov´e hˇre se nezdaˇrilo Klient je jiˇz v nˇejak´e hˇre pˇripojen;ID hry 17 - Nov´e sk´ore j´a ;sk´ore 18 - Nov´e sk´ore protivn´ık ;sk´ore 19 - Nov´a ˇc´ısla karet, nov´e sk´ore j´a ;sk´ore;karta 1;karta 2 20 - Nov´a ˇc´ısla karet, nov´e sk´ore protivn´ık ;sk´ore;karta 1;karta 2 21 - Oba hr´aˇci ready - start hry 22 - Konec hry j´a jsem vyhr´al 23 - Konec hry protivn´ı vyhr´al
5.4
ˇ Casovˇ e kritick´ eu ´ seky hry
ˇ Casovˇ e kritick´e u ´seky hry mohou nastat pouze v hern´ım reˇzimu multiplayer online. Ve verzi o✏ine, kdy uˇzivatel´e hraj´ı na jednom zaˇr´ızen´ı budou m´ıt vˇzdy stejn´e podm´ınky. Pokud bereme v u ´vahu rychlost odezvy syst´emu nebo dobu potˇrebnou na vyhodnocen´ı spr´avnosti kliknut´ı. Kdyˇz se pod´ıv´ame na hru online, kde kaˇzd´ y uˇzivatel m´a sv´e vlastn´ı zaˇr´ızen´ı, je zde jiˇz nˇekolik aspekt˚ u, kter´e by n´am mohli hru ovlivˇ novat.
26
ˇ Casovˇ e kritick´e u ´seky hry
Realizace hry
5.4.1
S ohledem na v´ ykonnost zaˇ r´ızen´ı
Prvn´ı by mohla b´ yt v´ ykonnost dan´eho zaˇr´ızen´ı, kter´a by mohla prodlouˇzit dobu potˇrebnou pro zjiˇstˇen´ı, na kter´ y obr´azek bylo kliknuto a porovn´an´ı jestli je zvolen´e rozhodnut´ı spr´avnˇe. Ale vzhledem k tomu, ˇze tyto u ´kony jsou opravdu velice rychl´e, tak v´ ykonnost zaˇr´ızen´ı je zanedbateln´a a v´ ysledek hry n´am prakticky neovlivn´ı, pokud to nebude extr´emnˇe pomal´e zaˇr´ızen´ı. Hra byla testov´ana i na emul´atoru, kter´ y bych nazval opravdu extr´emnˇe pomal´ y a pomalejˇs´ı re´aln´e zaˇr´ızen´ı budeme hledat sloˇzitˇe. Pˇresto byla hra hrateln´a a rozd´ıl v porovn´an´ı s v´ ykonnˇejˇs´ım re´aln´ ym zaˇr´ızen´ım je urˇcitˇe zn´at, ale st´ale to je v pˇrijateln´e m´ıˇre.
5.4.2
S ohledem na rychlost pˇ ripojen´ı
Druh´ ym a v´ yraznˇe z´avaˇznˇejˇs´ım probl´emem m˚ uˇze b´ yt rychlost pˇripojen´ı k s´ıti. Data, kter´a se pˇren´aˇs´ı mezi serverem a zaˇr´ızen´ım jsou minimalizov´ana a jak bylo zm´ınˇeno v´ yˇse jedn´a se pouze o ˇc´ıslo zpr´avy, kter´e se m´a vykonat. Kdybychom vzali v u ´vahu, ˇze jeden z uˇzivatel˚ u bude v nejrychlejˇs´ı s´ıti LTE, kde se rychlost stahov´an´ı pohybuje pr˚ umˇernˇe v ˇr´adech des´ıtek Mb/s a druh´ y uˇzivatel v odlehlejˇs´ı oblasti s pokryt´ım EDGE s pr˚ umˇernou rychlost´ı stahov´an´ı cca 150 kb/s. Tento probl´em n´am jiˇz m˚ uˇze pˇrin´est znaˇcn´e komplikace. Pokud vezmeme v u ´vahu, ˇze oba hr´aˇci se dotknou displeje zaˇr´ızen´ı souˇcasnˇe, tak je d´a oˇcek´avat, ˇze hr´aˇc s rychlejˇs´ım pˇripojen´ım k s´ıti z´ısk´a urˇcitou v´ yhodu. V t´eto situaci by se dal tento hendikep jeˇstˇe zanedbat, protoˇze k naprosto totoˇzn´emu stisknut´ı displeje doj´ıt prakticky nem˚ uˇze. M˚ uˇze nastat, ale z´avaˇznˇejˇs´ı situace. Hr´aˇc s pomalejˇs´ım pˇripojen´ım vid´ı spr´avnou odpovˇed’ dˇr´ıve, ale neˇz doputuje jeho spr´avn´a odpovˇed’ k serveru pˇredstihne ho druh´ y hr´aˇc s rychlejˇs´ım pˇripojen´ım. Toto uˇz je mnohem z´avaˇznˇejˇs´ı probl´em a v n´asleduj´ıc´ı kapitolce se pod´ıv´ame na jeho moˇzn´a ˇreˇsen´ı.
5.4.3
Moˇ zn´ aˇ reˇ sen´ı
Jedn´ım z ˇreˇsen´ı by mohlo b´ yt zas´ıl´an´ı ˇcasov´ ych znaˇcek spolu s odesl´an´ım odpovˇedi na server. Zde ale naraz´ıme na synchronizaci ˇcasu obou zaˇr´ızen´ı. Synchronizace by se dala vyˇreˇsit tak, ˇze pˇri pˇripojen´ı klienta na server by mu server zpˇet zaslal sv˚ uj aktu´aln´ı ˇcas, od kter´eho by se pot´e nov´a hra odv´ıjela. Pokud bychom pˇreˇsli na takov´eto ˇreˇsen´ı, server by po pˇrijet´ı zpr´avy 27
ˇ Casovˇ e kritick´e u ´seky hry
Realizace hry
uloˇzil ˇcas spr´avn´e odpovˇedi a pokud by pˇriˇsla zpr´ava od druh´eho uˇzivatele se stejn´ ymi daty ke stejn´ ym kart´am se spr´avnou odpovˇed´ı, ale s niˇzˇs´ı ˇcasovou znaˇckou body by se pˇriˇcetli hr´aˇci, od kter´eho pˇriˇsla odpovˇed’ na server d´ele, ale vzhledem k ˇcasov´e znaˇcce byla odesl´ana z dan´eho zaˇr´ızen´ı dˇr´ıve. To znamen´a, ˇze uˇzivatel byl rychlejˇs´ı, ale prodlen´ı nebylo zp˚ usobeno jeho vinnou, ale rychlost´ı pˇripojen´ı a to je pro n´as d˚ uleˇzit´ y aspekt.
28
6 Uˇzivatelsk´a dokumentace Hra Dobble se ovl´ad´a pouze dotyky displeje. Po spuˇstˇen´ı hry je defaultnˇe nastaven layout portr´et, tedy zobrazen´ı na v´ yˇsku. Na ud´alost pˇreklopen´ı na ˇs´ıˇrku tedy zaˇr´ızen´ı nijak nereaguje.
Obr´azek 6.1: Single player
6.1
Single player
Dan´ y popis se vztahuje k obr´azku 6.1 a) Pˇred spuˇstˇen´ım hry je moˇzn´e si nastavit barvu kartiˇcek a jm´eno hr´aˇce. b) Hr´aˇc vstoup´ı do 1 levelu, kde je nastaven maxim´aln´ı ˇcasov´ y limit a v kaˇzd´em dalˇs´ım kole se zrychluje. c) Po 5 spr´avn´ ych uhodnut´ı stejn´ ych obr´azk˚ u na zobrazen´ ych kartiˇck´ach hr´aˇc postoup´ı do dalˇs´ıho kola
6.2
Multi player - o✏ine
a) Pˇred zah´ajen´ım hry se nastav´ı poˇcet bod˚ u, kter´e je potˇreba z´ıskat k v´ıtˇezstv´ı ve hˇre, jm´ena jednotliv´ ych hr´aˇc˚ u a barvy kartiˇcek 29
Uˇzivatelsk´a dokumentace
Multi player - online
b) Hr´aˇc, kter´ y nejdˇr´ıve nasb´ır´a stanoven´ y poˇcet bod˚ u, vyhr´av´a.
Obr´azek 6.2: Postup vytvoˇren´ı nov´e online hry
6.3
Multi player - online
Spuˇstˇen´ı hry prob´ıh´a n´asledovnˇe viz obr´azek 6.2. ´ a) Uvodn´ ı str´anka po spuˇstˇen´ı aplikace Dobble 30
Uˇzivatelsk´a dokumentace
Pˇreloˇzen´ı aplikace a spuˇstˇen´ı aplikace
b) Nastaven´ı IP adresy a portu serveru c) Z´aloˇzka nastaven´ı online hry - Zde je moˇznost nastavit si barvu kartiˇcek d) Vytvoˇren´ı nebo pˇripojen´ı do nov´e hry, moˇznost nastaven´ı maxim´aln´ıho poˇctu v´ıtˇezstv´ı na jednu hru - V horn´ı ˇca´sti okna mus´ı b´ yt ˇcerven´ y n´apis Connection OK pokud je tam napˇr´ıklad Connection Error nepodaˇrilo se pˇripojit k serveru a t´ım p´adem nep˚ ujde vytvoˇrit nov´a hra ani se k jin´e hˇre pˇripojit. ˇ an´ı na pˇripojen´ı protihr´aˇce - Po pˇripojen´ı protihr´aˇce se tlaˇc´ıtko e) Cek´ start pˇrepne do samo do stavu actived a je moˇzn´e na nˇej kliknout a zah´ajit novou hru. f) Samotn´a hra Dobble - Klik´an´ı na obr´azky je umoˇznˇeno pouze na spodn´ı kartiˇcce na obr´azky ˇc´ıslo 4 tedy ˇcerven´e.
6.4
Pˇ reloˇ zen´ı aplikace a spuˇ stˇ en´ı aplikace
Pˇreloˇzen´ı serveru je velice snadn´e pomoc´ı make. Je k dispozici i make clean pro smaz´an´ı jiˇz vytvoˇren´eho spustiteln´eho souboru. Pot´e se vygenerovan´ y skript spust´ı ./n´azev skriptu. K dispozici jsou n´asleduj´ıc´ı parametry. -help pro vyps´an´ı n´apovˇedy, -port pro nastaven´ı ˇc´ısla portu a -ip pro nastaven´ı ip adresy. Pro spuˇstˇen´ı klienta se mus´ı nainstalovat pˇriloˇzen´ y bal´ıˇcek s pˇr´ıponou .apk, tedy standardn´ı instalaˇcn´ı soubor pro zaˇr´ızen´ı s OS Android.
31
7 Distribuce hry Abychom mohli nˇejakou mobiln´ı aplikaci pro Android distribuovat, potˇrebujeme ji nejdˇr´ıve exportovat do apk souboru. Pokud tedy chceme n´aˇs aplikaˇcn´ı soubor vyexportovat pro pouˇzit´ı na jin´ ych zaˇr´ızen´ıch, pom˚ uˇze n´am k tomu Eclipse. Z nab´ıdky zvol´ıme poloˇzku Android Tools -> Export Unsigned Application Package, kter´a n´am umoˇzn´ı exportovat soubor do n´ami zvolen´eho um´ıstˇen´ı. Tento soubor nebude digit´alnˇe podepsan´ y, proto nebude moˇzn´a instalace na zaˇr´ızen´ı, kter´e nebudou m´ıt v telefonu povolenou volbu povolit instalaci z neovˇeˇren´ ych zdroj˚ u.
Vytvoˇ ren´ı certifik´ atu Pokud bychom chtˇeli aplikaci um´ıstit do android marketu, je nutn´e ji m´ıt digit´alnˇe podepsanou tzn. mus´ıme vytvoˇrit tzv. keysotre certifik´at. Kter´ ym naˇs´ı aplikaci podep´ıˇseme a bude n´am umoˇznˇeno nahr´at ji do Android marketu. Postup pro vytvoˇren´ı certifik´atu je n´asleduj´ıc´ı. 1) Prav´ ym tlaˇc´ıtkem myˇsi klikneme na ikonku naˇseho projektu. 2) Z nab´ıdky zvol´ıme Android Tools -> Export Signed Application Package. 3) Pot´e uˇz jen zvol´ıme n´aˇs projekt a vypln´ıme um´ıstˇen´ı, heslo a u ´daje o sobˇe jak ukazuje obr´azek 7.1 T´ımto jsme vygenerovali digit´alnˇe podepsan´ y apk soubor, kter´ y jiˇz m˚ uˇzeme nahr´at do Android marketu.
Upload aplikace do Android marketu Pokud chceme hru publikovat na Android marketu, mus´ıme b´ yt registrovan´ y Android v´ yvoj´aˇr a to vyˇzaduje zaplatit poplatek ve v´ yˇsi 25$ a m´ıt vlastn´ı Google u ´ˇcet. Cel´ y proces je relativnˇe jednoduch´ y, mus´ıme souhlasit s licenˇcn´ımi podm´ınkami a zaplatit v´ yˇse zm´ınˇen´ y poplatek skrze Google checkout. Samotn´ y upload je velice jednoduch´ y. Aplikaci ovˇeˇruje intern´ı automatick´ y syst´em a aplikaci je moˇzno do Android marketu dostat bˇehem nˇekolika minut. Postup nahr´an´ı aplikace je n´asleduj´ıc´ı: 32
Distribuce hry 1) Pˇrejdeme na adresu http://market.android.com 2) Klikneme na tlaˇc´ıtko Upload Application, kde do pˇr´ısluˇsn´eho formul´aˇre vypln´ıme informace o aplikaci a pˇriloˇz´ıme samotnou aplikaci. Maxim´aln´ı velikost nahr´avan´e aplikace je 50MB. 3) Android market vyˇzaduje minim´alnˇe dva screenshoty naˇs´ı aplikace, pak ikonku aplikace a dalˇs´ı n´aleˇzitosti, kter´e se budou zobrazovat v r´amci Android marketu 4) Pˇred nahr´an´ım aplikace je potˇreba nastavit atribut android:debuggable na false. Pokud bychom na to zapomnˇeli, pˇri nahr´av´an´ı budeme upozornˇeni. 5) Po u ´spˇeˇsn´em nahr´an´ı se aplikace objev´ı v Android marketu bˇehem chv´ıle.
Obr´azek 7.1: Vyplnˇen´ı u ´daj˚ u pro nov´ y keystore
33
8 Testov´an´ı Pokud vytv´aˇr´ıme nˇejakou sloˇzitˇejˇs´ı aplikaci, dˇr´ıve nebo pozdˇeji naraz´ıme na ot´azku jak efektivnˇe aplikaci testovat. Pˇri v´ yvoji pro PhoneGap m˚ uˇzeme pracovat s velkou ˇradou testovac´ıch n´astroj˚ u j´a jsem vyuˇz´ıval n´asleduj´ıc´ı.
8.1
Lad´ıc´ı konzole Eclipse
V Eclipse jsem vyuˇz´ıval moˇznost logov´an´ı do lad´ıc´ı konzole pomoc´ı pˇr´ıkaz˚ u viz obr´azek 8.1. Toto nen´ı u ´plnˇe nejlepˇs´ı zp˚ usob testov´an´ı, ale na z´akladn´ı vˇeci to dostaˇcuje. V´ yhodou tˇechto v´ ypis˚ u je, ˇze se zobrazuj´ı pouze do konzole Eclipse a nemus´ı se pˇri vystaven´ı ostr´e verze z k´odu nijak odstraˇ novat. Tyto pˇr´ıkazy si m˚ uˇzeme filtrovat v r´amci n´astroje LogCat, na kter´ y se m˚ uˇzeme pˇrepnout zvolen´ım jin´e perspektivy v Eclipse a zvolen´ım poloˇzky DDMS.
Obr´azek 8.1: Lad´ıc´ı v´ ypisy konzole Eclipse
8.2
Lad´ıc´ı n´ astroje v prohl´ıˇ zeˇ ci
M˚ uˇzeme vyuˇz´ıt hlavn´ı v´ yhodu PhoneGap a to, ˇze se jedn´a o webovou aplikaci a testovat pˇr´ımo v prohl´ıˇzeˇc´ıch viz obr´azek 8.3. Pro testov´an´ı jsem pouˇz´ıval prohl´ıˇzeˇc Google Chrome. Chrome nab´ız´ı mnoho v´ yvoj´aˇrsk´ ych n´astroj˚ u a pro programov´an´ı, respektive testov´an´ı webov´ ych aplikac´ı, je podle m´eho n´azoru zdaleka nejlepˇs´ı. Velkou v´ yhodu vid´ım hlavnˇe v tom, ˇze webov´ y prohl´ıˇzeˇc se nach´az´ı v kaˇzd´em PC a bez ˇza´dn´ ych sloˇzit´ ych instalac´ı, n´am poskytuje hodnˇe moˇznost´ı. M˚ uˇzeme se snadno d´ıvat na obsah jednotliv´ ych element˚ u, pˇrid´avat zar´aˇzky pro debugov´an´ı k´odu. Jedna z hlavn´ıch v´ yhod, kterou jsem pro testov´an´ı vyuˇz´ıval je emulace mobiln´ıho zaˇr´ızen´ı, kde se po aktivaci prohl´ıˇzeˇc chov´a jako mobiln´ı zaˇr´ızen´ı. M˚ uˇzeme si zde vybrat z velk´eho mnoˇzstv´ı zaˇr´ızen´ı jako napˇr´ıklad Apple iPad, Apple iPhone, Amazon Kindle, Sony Xperia, 34
Testov´an´ı
Lad´ıc´ı n´astroje v prohl´ıˇzeˇci
HTC, LG a velk´e mnoˇzstv´ı telefon˚ u od Korejsk´eho v´ yrobce Samsung Galaxy. Na obr´azku 8.3 m˚ uˇzeme vidˇet emulaci mobiln´ıho zaˇr´ızen´ı Apple iPhone 4. Pokud si zvol´ıme pˇr´ımo konkr´etn´ı zaˇr´ızen´ı, Chrome za n´as nastav´ı viewPort i User Agenta. Pokud ale nechceme konkr´etn´ı zaˇr´ızen´ı, m˚ uˇzeme si vˇsechny parametry nastavit sami. V z´aloˇzce screen si m˚ uˇzeme nastavit rozliˇsen´ı, kter´e poˇzadujeme a device pixel ratio takzvan´ y pixelov´ y pomˇer. V z´aloˇzce user agent si m˚ uˇzeme nastavit konkr´etn´ı ˇretˇezec a v z´aloˇzce sensors geolokaci a akcelerometr.
Emulace viewPortu a device pixel ratio V z´aloˇzce screen si m˚ uˇzeme nastavit hodnotu rozliˇsen´ı podle naˇs´ı libosti. A tak si snadno testovat, jak se naˇse aplikace chov´a v zaˇr´ızen´ıch s r˚ uzn´ ym rozliˇsen´ım. Device pixel ratio je takzvan´ y pomˇer mezi fyzick´ ym a abstraktn´ım rozliˇsen´ım zaˇr´ızen´ı. Pokus´ım se to vysvˇetlit na pˇr´ıkladu. Vezmeme si Samsung Galaxy S4, kter´ y m´a rozliˇsen´ı Full HD 1920x1080px, tud´ıˇz m´a vysok´e DPI neboli poˇcet zobrazen´ ych bod˚ u na jednotku jednoho palce. Mus´ı se toto vysok´e rozliˇsen´ı nˇejak´ ym zp˚ usobem redukovat a k tomu n´am slouˇz´ı v´ yˇse zm´ınˇen´e device pixel ratio. Je to ˇc´ıseln´ yu ´daj, kter´ y ud´av´a kolikr´at m´a b´ yt fyzick´e rozliˇsen´ı zmenˇseno. Pokud tedy vezmeme v u ´vahu S4 od Samsungu m´a rozliˇsen´ı na ˇs´ıˇrku 1080px a device pixel ratio m´a hodnotu 3. To znamen´a, ˇze zaˇr´ızen´ı bude zobrazovat obsah jako by mˇel rozliˇsen´ı 360px. Nast´av´a tedy ot´azka, proˇc v´ yrobci dˇelaj´ı takto vysok´e rozliˇsen´ı, kter´e nakonec nen´ı ani vyuˇzito. Vysvˇetlen´ı je jednoduch´e, i kdyˇz vysok´e rozliˇsen´ı nen´ı fyzicky vyuˇzito, tak je to na displeji opravdu zn´at, pokud se na nˇej pod´ıv´ame zbl´ızka, na prvn´ı pohled pozn´ame, ˇze displej m´a vysok´e rozliˇsen´ı. Zobrazen´ı na displeji je opravdu jemn´e a kvalitn´ı. D˚ ukazem jsou vysoce kvalitn´ı displeje retina od firmy Apple. Napˇr´ıklad od 13 palcov´eho macBooku Pro umist’uj´ı displej retina s rozliˇsen´ım 2560x1600. Takov´e rozliˇsen´ı nem´a v dneˇsn´ı dobˇe ani vˇetˇsina vyr´abˇen´ ych televizor˚ usu ´hlopˇr´ıˇckou pˇres 100cm. Ve PhoneGapu nebo webov´ ych aplikac´ıch m˚ uˇzeme pr´aci s rozliˇsen´ım velice dobˇre vyuˇz´ıt, pokud napˇr´ıklad dˇel´ame responzivn´ı webdesign. Jednoduˇse ˇreˇceno chceme aplikaci, kter´a se bude pˇeknˇe zobrazovat jak na 25 palcov´em monitoru, tak na telefonu s velikost´ı displeje 4 palce. Pro pr´aci pouˇzijeme takzvan´e CSS media queries. Jsou to dotazy na urˇcit´e parametry. Pomoc´ı tˇechto dotaz˚ u si snadno m˚ uˇzeme zjistit napˇr´ıklad to, jestli je rozliˇsen´ı menˇs´ı neˇz 400px a upravit podle toho vzhled a pˇrizp˚ usobit ho mobiln´ım zaˇr´ızen´ım. Pokud se dotazujeme pr´avˇe na rozliˇsen´ı, je jiˇz zpracov´ano pomoc´ı v´ yˇse zm´ınˇen´eho device pixel ratio. Takˇze velice snadno zjist´ıme, jestli se jedn´a o mobiln´ı zaˇr´ızen´ı. 35
Testov´an´ı
Emul´ator
Emulace user agenta User agent je ˇretˇezec, kter´ y se odes´ıl´a v hlaviˇcce poˇzadavku o nˇejak´a data na server. Z tohoto ˇretˇezce rozpozn´ame nˇekolik d˚ uleˇzit´ ych informac´ı o zaˇr´ızen´ı, ˇ ezec m˚ kter´e o data ˇz´ad´a. Retˇ uˇze vypadat napˇr´ıklad takto: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36 Z tohoto ˇretˇezce pozn´ame, ˇze se jedn´a o PC s operaˇcn´ım syst´emem Mac OS X 10.9.2 a pouˇz´ıv´a prohl´ıˇzeˇc Google Chrome 34.0.1847.116, kter´ y m´a j´adro AppleWebKit.
Emulace geolokace a akcelerometru V posledn´ı z´aloˇzce m´ame moˇznost si nastavit geolokaci a souˇradnice akcelerometru. U geolokace si m˚ uˇzeme nastavit pˇresn´e souˇradnice, kde se nach´az´ıme nebo zaˇskrtnout, ˇze je pozice nedostupn´a, abychom si otestovali, jak se dan´e zaˇr´ızen´ı bude chovat, pokud napˇr´ıklad v pr˚ ubˇehu ztrat´ı sign´al. Dalˇs´ı velice zaj´ımavou moˇznost´ı pro testov´an´ı, je nastaven´ı souˇradnic akcelerometru, kter´e m˚ uˇzeme vidˇet na obr´azku 8.2. Zde si m˚ uˇzeme dobˇre nasimulovat naklonˇen´ı zaˇr´ızen´ı a snadno tak otestovat chov´an´ı aplikace. Pokud v naˇs´ı aplikaci tento senzor vyuˇz´ıv´ame.
Obr´azek 8.2: Uk´azka nastaven´ı souˇradnic akcelerometru
8.3
Emul´ ator
Testov´an´ı v emul´atoru je ponˇekud zdlouhav´e z d˚ uvodu vysok´e n´aroˇcnosti na hardware. Emul´ator byl spouˇstˇen na platformˇe s unixov´ ym j´adrem Mac 36
Testov´an´ı
Zaˇr´ızen´ı
Obr´azek 8.3: Emulace zaˇr´ızen´ı Apple iPhone 4 v prohl´ıˇzeˇci Google Chrome OS X obr´azek 8.4, i na Windowsech. Pokud testujeme v emul´atoru, m˚ uˇzeme vyuˇz´ıvat lad´ıc´ı konzoli Eclipse a testovat jiˇz plnou funkˇcnost hry.
8.4
Zaˇ r´ızen´ı
Testov´an´ı v re´aln´em zaˇr´ızen´ı je o hodnˇe sviˇznˇejˇs´ı neˇz v emul´atoru. Pouze prvn´ı spuˇstˇen´ı je komplikovanˇejˇs´ı. Pˇred nahr´an´ım na re´aln´ y telefon se mus´ı prov´est nˇekolik krok˚ u. Pokud chceme hru testovat na zaˇr´ızen´ı Android, nemus´ıme m´ıt placen´ y v´ yvoj´aˇrsk´ y certifik´at, jako je tomu napˇr´ıklad u iPhone. U OS Android tedy provedeme n´asleduj´ıc´ı nastaven´ı: V nastaven´ı telefonu pˇrejdeme do karty Aplikace -> V´ yvoj a zatrhneme volbu Ladˇen´ı USB (text se m˚ uˇze drobnˇe liˇsit v z´avislosti na verzi). 37
Testov´an´ı
Zaˇr´ızen´ı
Obr´azek 8.4: Hra Dobble spuˇstˇen´a v emul´atoru na platformˇe OS X 10.9 Mavericks
Pot´e staˇc´ı jiˇz jen propojit telefon USB kabelem s PC a doinstalovat potˇrebn´e ovladaˇce. Pˇri spuˇstˇen´ı aplikace v Eclipse by n´am mˇel d´at na v´ ybˇer jestli chceme aplikaci spustit v emul´atoru nebo na re´aln´em zaˇr´ızen´ı.
Testovan´ a zaˇ r´ızen´ı Testov´an´ı aplikace prob´ıhalo na n´asleduj´ıc´ıch re´aln´ ych zaˇr´ızen´ıch: Samsung Galaxy SI i9000 - verze API 2.3.6 rozliˇsen´ı 800x480 Samsung Galaxy SIII i9300 - verze API 4.0, rozliˇsen´ı 1280x720px. 38
Testov´an´ı
Online verze
Samsung Galaxy S4 i9505 - verze API 4.2, rozliˇsen´ı 1920x1080px HTC One V - Verze API 4.0.3, rozliˇsen´ı 800x480 Na vˇsech v´ yˇse uveden´ ych zaˇr´ızen´ıch hra fungovala bez probl´em˚ u. Hra byla jiˇz pˇredvedena v r´amci Dne otevˇren´ ych dveˇr´ı na fakultˇe FAV katedry informatiky a n´avˇstˇevn´ıci ji mˇeli zpˇr´ıstupnˇenou, jak ve formˇe emul´atoru, tak na re´aln´em zaˇr´ızen´ı.
8.5
Online verze
Testov´an´ı online verze poˇzaduje nav´ıc spuˇstˇen´ y server. Aby testov´an´ı bylo opravdu d˚ ukladn´e, bylo by potˇreba vetˇs´ı mnoˇzstv´ı zaˇr´ızen´ı. Testy serveru prob´ıhali na ˇskoln´ıch stroj´ıch, konkr´etnˇe students.kiv.zcu.cz, na kter´e je moˇzno pˇristupovat z vnˇejˇs´ı s´ıtˇe. Po spuˇstˇen´ı serveru jsem postupnˇe pˇripojoval zaˇr´ızen´ı a testoval r˚ uzn´e kombinace a propojen´ı jednotliv´ ych zaˇr´ızen´ı. Testy dopadly v´ ybornˇe, hra byla plnˇe hrateln´a.
8.6
Test s ohledem na rychlost pˇ ripojen´ı
Rychlost pˇripojen´ı byla testov´ana na dvou zaˇr´ızen´ıch, kde jedno bylo pˇripojeno do s´ıtˇe pomoc´ı Wi-Fi a druh´e pomoc´ı pomalejˇs´ıho mobiln´ıho pˇripojen´ı. I pˇres r˚ uzn´e rychlosti pˇripojen´ı se nepovedlo nasimulovat, aby hr´aˇc s pomalejˇs´ım zaˇr´ızen´ım byl znev´ yhodnˇen. Prodlevy odpovˇed´ı ze serveru byly opravdu zanedbateln´e, takˇze znev´ yhodnˇen´ı pomalejˇs´ıho pˇripojen´ı se nepovedlo prok´azat.
39
9 Z´avˇer C´ılem t´eto bakal´aˇrsk´e pr´ace bylo navrˇzen´ı, realizace a nakonec samotn´e ovˇeˇren´ı funkcionality hry Dobble. Do souˇcasn´e doby nebyla tato hra dostupn´a pro prostˇred´ı Android, ale pouze pro iOS a to bez hern´ıho m´odu multiplayer online. V prvn´ıch kapitol´ach jsem se vˇenoval prozkoum´av´an´ı jednotliv´ ych mobiln´ıch zaˇr´ızen´ı a jejich moˇzn´emu pouˇzit´ı pro mobiln´ı hry, potaˇzmo multiuˇzivatelsk´e hry online. D´ale byla hra navrˇzena po vzoru pap´ırov´e verze hry Dobble a realizov´ana pomoc´ı multiplatformn´ıho frameworku PhoneGap. Nakonec, aby byla ovˇeˇrena funkcionalita, bylo potˇreba hru otestovat na r˚ uzn´ ych zaˇr´ızen´ıch s rozd´ılnou verz´ı API a rozliˇsen´ım displeje. Funkcionalita hry byla ovˇeˇrena ve vˇsech 3 uveden´ ych hern´ıch sc´en´aˇr´ıch a to jak v emul´atoru, tak v re´aln´ ych zaˇr´ızen´ıch. Jak uˇz bylo zm´ınˇeno velkou v´ yhodou hry je, ˇze je naps´ana ve frameworku PhoneGap, proto ji m˚ uˇzeme snadno pˇren´est na dalˇs´ı platformy. V praxi se uk´azalo, ˇze pomoc´ı multiplatformn´ıch n´astroj˚ u se d´a vyvinout plnohodnotn´a aplikace, potaˇzmo hra. Webov´e technologie ˇcek´a d´ıky HTML5 a CSS3 v n´asleduj´ıc´ıch letech dalˇs´ı pokrok, proto i v oblasti multiplatformn´ıch her m˚ uˇzeme oˇcek´avat novinky. V bl´ızk´e dobˇe pl´anuji dalˇs´ı u ´pravy, v prv´e ˇradˇe umoˇznit hr´at hru i uˇzivatel˚ um iPhone a tak´e pˇr´ımo ve webov´em prohl´ıˇzeˇci. Za dalˇs´ı dodˇelat statistiky pro single player, kde by bylo vidˇet nejv´ yˇse nahran´e sk´ore a dalˇs´ı zaj´ımav´e informace. D´ale moˇznost zad´av´an´ı jm´ena kaˇzd´eho hr´aˇce a sledov´an´ı statistiky mezi jednotliv´ ymi hr´aˇci. A nakonec pˇrihlaˇsov´an´ı hr´aˇc˚ u pomoc´ı Facebooku, Twitteru popˇr´ıpadˇe Google+.
40
Seznam obr´ azk˚ u 2.1
Zn´azornˇen´ı gyroskopu [14] . . . . . . . . . . . . . . . . . . . .
4
2.2
Princip rezistivn´ıho displej [12] . . . . . . . . . . . . . . . . .
5
3.1
Komunikace zaˇr´ızen´ı pˇres server . . . . . . . . . . . . . . . . .
8
5.1
Hra Dobble v1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.2
Uk´azka shodn´ ych obr´azk˚ u na kartiˇck´ach . . . . . . . . . . . . 13
5.3
Generov´an´ı polygon˚ u jedn´e kartiˇcky . . . . . . . . . . . . . . . 14
5.4
Vygenerovan´a HTML mapa . . . . . . . . . . . . . . . . . . . 14
5.5
Tabulka podporovan´ ych vlastnost´ı jednotliv´ ych platforem . . . 16
5.6
Struktura Android aplikace s pˇridan´ ym frameworkem PhoneGap 17
5.7
Metoda onCreate(), kter´a je srdcem cel´e aplikace . . . . . . . 18
5.8
Pouˇzit´ı jQuery mobile v aplikaci Dobble . . . . . . . . . . . . 20
5.9
Zn´azornˇen´ı animace v CSS3 . . . . . . . . . . . . . . . . . . . 23
5.10 V´ yvojov´e prostˇred´ı Xcode . . . . . . . . . . . . . . . . . . . . 24 6.1
Single player . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6.2
Postup vytvoˇren´ı nov´e online hry . . . . . . . . . . . . . . . . 30
41
7.1
Vyplnˇen´ı u ´daj˚ u pro nov´ y keystore . . . . . . . . . . . . . . . . 33
8.1
Lad´ıc´ı v´ ypisy konzole Eclipse . . . . . . . . . . . . . . . . . . 34
8.2
Uk´azka nastaven´ı souˇradnic akcelerometru . . . . . . . . . . . 36
8.3
Emulace zaˇr´ızen´ı Apple iPhone 4 v prohl´ıˇzeˇci Google Chrome
8.4
Hra Dobble spuˇstˇen´a v emul´atoru na platformˇe OS X 10.9 Mavericks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
37
Pˇ rehled pouˇ zit´ ych zkratek a znaˇ cen´ı API
Application Programming Interface. Rozhran´ı pro v´ yvoj aplikac´ı.
Bluetooth
Standard pro bezdr´atovou komunikaci.
HTML
HyperText Markup Language. Jazyk pro tvorbu webov´ ych str´anek.
CSS (CSS3)
Cascading Style Sheets. Kask´adov´e styly jsou jazyk pro popis zobrazen´ı webov´ ych st´anek.
IEEE
Institute of Electrical and Electronics Engineers. Je mezin´arodn´ı neziskov´a profesn´ı organizace usiluj´ıc´ı o vzestup technologie souvisej´ıc´ı s elektrotechnikou.
Wi-Fi
Bezdr´atov´a komunikace v poˇc´ıtaˇcov´ ych s´ıt´ıch.
W3C
Word Wide Web Consortium, jehoˇz ˇclenov´e vyv´ıjej´ı webov´e standardy pro Word Wide Web.
PAN
Personal Area Network. Jsou s´ıtˇe s nejmenˇs´ı rozlehlost´ı, pouˇz´ıvan´e pro propojen´ı osobn´ıch elektronick´ ych zaˇr´ızen´ı typu mobiln´ı telefon, laptop nebo PDA.
Cardan˚ uv z´avˇes
z´avˇes se dvˇema kruhy volnˇe pohybliv´ ymi kolem os k sobˇe kolm´ ych.
GUI
Graphical User Interface. Uˇzivatelsk´e rozhran´ı, kter´e umoˇzn ˇuje ovl´adat poˇc´ıtaˇc pomoc´ı interaktivn´ıch grafick´ ych ovl´adac´ıch prvk˚ u.
JS
JavaScript. Multiplatformn´ı, objektovˇe orientovan´ y skriptovac´ı jazyk.
WP Store
Windows Phone Store. Obchod s aplikacemi pro uˇzivatele zaˇr´ızen´ı na platfomˇe Windows Phone.
OS
Operaˇcn´ı syst´em. Z´akladn´ı programov´e vybaven´ı poˇc´ıtaˇce.
SDK
Software development kit. Sada softwarov´ ych v´ yvojov´ ych n´astroj˚ u, kter´a n´am umoˇzn ˇuje vytv´aˇret jist´e aplikace.
ADT
Android Development Tools. Jedn´a se o plugin pro Eclipse pomoc´ı, kter´eho z´ısk´ame prostˇred´ı pro v´ yvoj Android aplikac´ı.
IDE
Integrated Development Environment. Prostˇred´ı pro v´ yvoj aplikac´ı vˇetˇsinou zamˇeˇren´e na konkr´etn´ı jazyk.
TCP
Transmission Control Protocol. Z´akladn´ı spolehliv´ y pˇrenosov´ y protokol transportn´ı vrstvy.
IP
Internet Protocol. Z´akladn´ı protokol pracuj´ıc´ı na s´ıt’ov´e vrstvˇe.
DPI
´ Dots per inch. Udaj urˇcuj´ıc´ı, kolik obrazov´ ych bod˚ u se vejde do d´elky jednoho palce.
USB
Universal Serial Bus. Modern´ı zp˚ usob pˇripojen´ı periferi´ı k poˇc´ıtaˇci.
QWERTY
Normalizovan´e rozloˇzen´ı kl´aves na kl´avesnici.
LTE
3GPP Long Term Evolution - technologie pro vysokorychlostn´ı internet v mobiln´ıch s´ıt´ıch.
EDGE
Enhanced Data rates for GSM Evolution - technologie pro pˇrenos dat v s´ıt´ıch GSM.
GSM
Glob´aln´ı Syst´em pro Mobiln´ı komunikaci.
iOS
je mobiln´ı operaˇcn´ı syst´em vytvoˇren´ y spoleˇcnost´ı Apple Inc.
Literatura [1] JMiroslav Ujb´anyai Programujeme pro Android Grada Publishing, a.s., 2012. ISBN 978-80-247-3995-3. [2] Jiˇr´ı V´avr˚ u jQuery Mobile Computer Press, a.s., 2013. ISBN 978-80-2513811-3. [3] Den Odell JavaScript Computer Press, a.s., 2010. ISBN 978-80-2512733-9. [4] Brian P. Hogan HTML 5 a CSS 3 Computer Press, a.s., 2011. ISBN 978-80-251-3576-1. [5] Ondˇrej Baˇse jQuery pro neprogram´atory Pr˚ uvodce vyuˇzit´ım knihovny jQuery UI Computer Press, a.s., 2012. ISBN 978-80-251-3750-5. [6] Adobe Systems Inc. Framework pro mobiln´ı zaˇr´ızen´ı [online]. 2014. [cit. 6.1.2014]. Dostupn´e z: http://phonegap.com. [7] The jQuery Foundation. FKnihovna pro usnadnˇen´ı pr´ace s javascriptem [online]. 2014. [cit. 22.3.2014]. Dostupn´e z: http://jquery.com. [8] The jQuery Foundation. User interface pro responzivn´ı webov´e str´anky [online]. 2014. [cit. 22.3.2014]. Dostupn´e z: http://jquerymobile.com. [9] Brian Grinstead. Knihovna pro moˇznost v´ybˇeru barvy [online]. [cit. 5.4.2014]. Dostupn´e z: http://bgrins.github.io/spectrum. [10] Vera Lobacheva. Webov´a aplikace pro vytvoˇren´ı souˇradnicov´e mapy [online]. [cit. 5.4.2014]. Dostupn´e z: https://github.com/summerstyle/summer. [11] FT Labs. Knihovna pro sn´ıˇzen´ı odezvy pˇri kliknut´ı na displej [online]. [cit. 29.3.2014]. Dostupn´e z: https://github.com/ftlabs/fastclick.
[12] mobilmania.cz. Uˇz v´ım, jak funguj´ı dotykov´e pleje 2004 [online]. [cit. 27.2.2014]. Dostupn´e http://www.mobilmania.cz/uz-vim-jak-funguji-dotykovedispleje/a-1108570/default.aspx.
disz:
[13] jQuery mobile. Pˇrizp˚ usoben´ı barevn´eho proveden´ı jQuery mobile [online]. [cit. 4.5.2014]. Dostupn´e z: http://themeroller.jquerymobile.com/. [14] mobilenet.cz. Senzory mobiln´ıch zaˇr´ızen´ı 2013 [online]. [cit. 16.3.2014]. Dostupn´e z: http://mobilenet.cz/clanky/techbox-vas-telefon-je -prospikovany-senzory-12496. [15] Bluetooth.org. Bluetooth specifikace [online]. [cit. 7.5.2014]. Dostupn´e z: https://www.bluetooth.org/en-us/specification/adoptedspecifications.