Documente Academic
Documente Profesional
Documente Cultură
FACULTATEA DE INFORMATIC
LUCRARE DE LICEN
Coordonator tiinific
Ni Iulian-Alexandru
IAI
2013
UNIVERSITATEA ALEXANDRU IOAN CUZA
FACULTATEA DE INFORMATIC
WORMS
Joc 2D pentru platfoma Android
Coordonator tiinific
Ni Iulian-Alexandru
IAI
2013
DECLARAIE PRIVIND ORIGINALITATE I RESPECTAREA
DREPTURILOR DE AUTOR
Prin prezenta declar c Lucrarea de licen cu titlul Worms Joc 2D pentru platforma
Android este scris de mine i nu a mai fost prezentat niciodat la o alt facultate sau
instituie de nvmnt superior din ar sau strintate. De asemenea, declar c toate sursele
utilizate, inclusiv cele preluate de pe Internet, sunt indicate n lucrare, cu respectarea regulilor
de evitare a plagiatului:
toate fragmentele de text reproduse exact, chiar i n traducere proprie din alt limb,
sunt scrise ntre ghilimele i dein referina precis a sursei;
reformularea n cuvinte proprii a textelor scrise de ctre ali autori deine referina
precis;
codul surs, imagini etc. preluate din proiecte open-source sau alte surse sunt utilizate
cu respectarea drepturilor de autor i dein referine precise;
rezumarea ideilor altor autori precizeaz referina precis la textul original.
Iai, 03.07.2013
Absolvent Ni Iulian-Alexandru
_________________________
DECLARAIE DE CONSIMMNT
Prin prezenta declar c sunt de acord ca Lucrarea de licen cu titlul Worms Joc 2D pentru
platforma Android, codul surs al programelor i celelalte coninuturi (grafice, multimedia,
date de test etc.) care nsoesc aceast lucrare s fie utilizate n cadrul Facultii de Informatic.
Iai, 03.07.2013
Absolvent Ni Iulian-Alexandru
_________________________
Cuprins
Introducere ............................................................................................................ 6
Bibilografie ........................................................................................................... 42
6
Introducere
100 70
80 60
60 50
40
40
20 Brbai
30 Miliarde de
0 dolari
Femei 20
Germania
Belgia
Olanda
S.U.A.
Marea Britanie
Frana
10
0
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
Fig.1 Procente din populaie care aleg jocurile video 1 Fig. 2 Ctigurile anuale ale industrie jocurilor video
Dei fiecare platform pentru dezvoltarea jocurilor video are un rol important i bine
definit, atenia ne este atras de dispozitivele mobile, n special smartphone-uri i tablete, a
cror ramur a cunoscut de-a lungul ultimilor ani o expansiune extraordinar.
1. Sondaj online realizat de Todays Gamers pe un eantion de 13000 de persoane din rile menionate
7
Smartphone Tablete
2%
Jocuri 4% Jocuri
3% 8%
14%
Reele sociale Reele sociale
3% 39% 9%
Utiliti Divertisment
17% Sntate 10% Utiliti
67%
Lifestyle tiri
24% Altele
Altele
1. http://en.wikipedia.org/wiki/Nokia_Communicator
2. http://www.flurry.com/flurry-analytics.html
8
Toate aspectele menionate mai sus date duc la concluzia c dispozitivele mobile
inteligente au o influen mare asupra industriei jocurilor video i vor avea parte de un viitor
ndelungat n cadrul acesteia.
n Capitolul 1 este prezentat pe scurt mediul de dezvoltare mobil Android, este realizat
un top al celor mai populare jocuri publicate sub aceast platform i sunt identificate i
analizate soluiile existente.
Capitolul 1
Android1 este n prezent cea mai popular i totodat cea mai puternic platform de
dezvoltare mobil, ea fiind nucleul a sute de milioane de dispozitive mobile rspndite n
ntreaga lume. Prin colaborri cu experi de nivel mondial n domeniul software i hardware,
platforma Android se afl ntr-o continu dezvoltare n ncercarea de a oferi att utilizatorilor,
ct i dezvoltatorilor, performane din ce n ce mai ridicate i noi capabiliti funcionale.
Din multiplele categorii de aplicaii existente pe market, ies din nou n eviden
jocurile. Acestea par a fi, conform statisticilor realizate de companii specializate n domeniu,
tipul preferat de aplicaii al utilizatorilor. Astfel, jocurile sunt att cele mai descrcate ct i
cele mai folosite aplicaii la nivel de dispozitive mobile. Totodat, un studiu realizat de
compania american Nielsen3 relev faptul c 93% dintre utilizatori ar fi dispui s plteasc
pentru achiziionarea unei aplicaii de tip joc. (Fig.4)
1. http://www.android.com/
2. https://play.google.com/
3. http://www.nielsen.com/
10
100%
90%
80%
70%
60%
50% 93%
40% 87% 84% 84% 77% 76% Procentaj din utilizatori
30% care ar plti pentru o
20% categorie de aplicaii
10%
0%
Angry birds
Cu ase titluri la activ i peste un miliard de descrcri cumulate pe toate platformele,
Angry birds este fr ndoial cea mai de succes aplicaie mobil creat pn n prezent. Jocul
a cucerit prin simplitate, creativitate, personajele carismatice i iscusite, dar i prin fizica din
spatele acestuia care aduce o nou experien de fiecare dat cnd este jucat.
Structurat pe nivele, povestea jocului este concentrat n jurul unui stol de psri care
trebuie s i recupereze oule furate de o grupare ruvoitoare de porcuori. Controlnd o
pratie uria, juctorul trebuie s lanseze psrile ctre grupul de porcuori care sunt protejai
de structuri construite din diverse materiale cu scopul de a-i elimina. Fiecare tip de pasre este
eficient pentru un anumit tip de atac i un anumit tip de material. Astfel este lsat la
latitudinea juctorului construirea unei strategii perfecte pentru ctigarea nivelului. (Fig. 5,6)
Combinaia de gameplay care conduce la dependen, caractere, stil comic i chiar pre
redus au determinat lansarea jocului i pe alte platforme cum ar fi PC sau console unde acesta
se bucura de aceeai popularitate. [3]
11
Fig.5 Pasre distrugnd structura protectiv a porcuorilor 1 Fig. 6 Tipurile de psri puse la dispoziie in joc 2
Drag Racing
Cu peste 70 de milioane de descrcri Drag Racing a devenit cel mai popular joc de
curse pentru dispozitivele mobile. Jocul presupune ctigarea a diverse turnee de curse n linie
dreapt folosind cele peste 50 de modele de maini disponibile i upgrade-uri pentru creterea
performanei acestora (Fig. 7,8). Cheia jocului este de a gsi echilibrul perfect ntre cai-putere,
control, putere de frnare i acceleraie avnd la dispoziie o anumit sum de bani, lucru nu
foarte facil cum ar prea la prima vedere. Pentru sporirea experienei de joc se d posibilitatea
organizrii de curse cu juctori din ntreaga lume, formarea de echipe pentru competiii online
i mprtirea de strategii ctigtoare. [4]
Fig.7 Main aflat in curs. Maina este controlat doar Fig.8 Meniul din care maina poate fi customizat dup
prin cele 2 pedale de schimbare a vitezei, punctele critive dorinele juctorului 4
fiind indicate de cadranul de pe mijlocul ecranului 3
1. http://www.rovio.com/UserFiles/Image/RovioProducts//380x286_48.jpg
2. http://www.rovio.com/UserFiles/Image/RovioProducts//380x286_104.png
3. https://lh6.ggpht.com/g84rWJeawTzqO3YlxssR2FqRw8MfbBNxs10c1Ns7lLR3-UQoz6quPktmGWZJOqs0J9Ue
4. https://lh4.ggpht.com/q81slIgdIz6sj9XY-ha1x4kyxK60pQfHVsSW1l7t9uSovmWlE_45LWy-a_Ff2DLuv5Y=h230
12
Fruit Ninja1
Un alt joc extrem de popular este Fruit Ninja care se mndrete cu peste 300 de
milioane de descrcri cumulate pe toate platformele mobile. Pe ct de simplu este gameplay-
ul pe att de dependent poate deveni. Scopul juctorului este ca folosind o sabie controlat
prin intermediul ecranului tactil s taie diverse fructe care sunt aruncate n suprafaa de joc i
s evite n acelai timp bombele care apar la anumite intervale de timp. Jocul se termin atunci
cnd scap netiate trei fructe sau la contactul sabiei cu o bomb capcan. ndemnarea
utilizatorilor poate fi testat i online n meciuri cu ali juctori din ntreaga lume, iar spiritul
competitiv este pus la ncercare prin intermediul topurilor celor mai buni juctori (Fig. 9). [5]
Subway surfers
Dei are n spate un concept simplist, Subway surfers3 a reuit s cucereasc utilizatorii
de dispozitive mobile, avnd la numai un an de la lansare peste 50 de milioane de descrcri.
Jocul este practic o curs infinit cu obstacole n care scopul juctorului este s parcurg,
ajutat uneori de super puteri, o distan ct mai mare (Fig. 10, 11). Grafica impresionant de
care beneficiaz i posibilitatea de a concura cu juctori din toat lumea pentru depirea de
recorduri fac din acest joc reeta perfect pentru o aplicaie destinat platformelor mobile [6].
1. http://play.google.com/store/apps/details?id=com.halfbrick.fruitninja
2. http://lh6.ggpht.com/xmvuGIyF1egkKN8jdbMHJ5SheCe2Tc2KXV86bU5GWPGrU16xhQwjMF2MDdynkRcFkcr
3. https://play.google.com/store/apps/details?id=com.kiloo.subwaysurf+
13
Wheres my water
Avnd parte de o grafic uimitoare, o simulare fizic foarte fidel lumii reale i o idee
ingenioas la baz, aplicaia Wheres my water se regsete i ea n categoria celor mai
descrcate jocuri pentru platforme mobile cu peste 100 de milioane de accesri. Fcnd parte
din genul de jocuri puzzle, acesta pune la ncercare abilitile strategice ale utilizatorilor
forndu-i pe acetia s i pun gndirea n micare. Jocul are ca scop dirijarea unui volum
de ap de-a lungul unui traseu pn ntr-un punct final, evitnd diverse obstacole i eventual
obinnd anumite bonusuri (Fig.12) [7].
3. http://www.modojo.com/news/wheres_my_water_downloaded_over_100_million_times_swampy_celebrates_1st_birthday
14
Analiznd cele cinci exemple descrise mai sus observm c indiferent c este vorba
despre un joc strategic, sportiv sau de tip puzzle, exist anumite puncte comune care fac
dintr-o astfel de aplicaie un succes n rndul utilizatorilor. Tendina nu este de a dezvolta
jocuri ct mai complexe pentru platformele mobile, ci pornind de la un concept simplu, dar
ingenios, s se contruiasc o aplicaie care s respecte urmtoarele principii:
s fie intuitiv i natural din punct de vedere al experienei de joc i al modului de
interaciune cu dispozitivul;
s conin personaje carismatice, amuzante nsoite de efecte sonore i animaii
s ofere o gam larg de variante din care utilizatorul s poate alege n timpul
jocului (personaje, ustensile, upgrade-uri etc.);
s dea posibilitatea utilizatorilor de a experimenta aplicaia n mediul online alturi
de ali juctori;
ntruct capacitatea unei baterii pentru dispozitivele mobile nu este foarte mare
jocurile ar trebui s se poat desfura n reprize scurte (aproximativ 5 minute)
pentru a nu mpiedica utilizatorul din ndeplinirea ulterioar a altor activiti.
1.2 Worms
Printre numeroasele jocuri existente pentru platforma mobil Android, regsim i dou
titluri care continu o ndelungat i celebr serie de jocuri video pentru calculatoare personale
i console, anume seria Worms1. Cele dou jocuri menionate mai devreme sunt Worms i
Worms 2: Armageddon.
Ideea jocului aparine lui Andy Davidson care a creat prima versiune a acestuia, numit
Total Wormage , pentru a participa la un concurs de programare susinut de revista Amiga
Format. Dei nu a ctigat competiia, Davidson nu s-a dat btut i n septembrie 1994 la
European Computer Trade Show1 a fost remarcat de compania britanic Team17 care s-a oferit
s l ajute la mbuntirea i publicarea proiectului. Din colaborarea celor dou pri a luat
natere n anul 1995 seria Worms care s-a bucurat nc de la nceput de popularitate. Pn n
prezent seria numr peste 10 titluri (Worms, Worms 2, Worms Armageddon, Worms 3D,
etc.) i are milioane de copii vndute n ntreaga lume. [8]
1. http://www.team17.com/
2. http://en.wikipedia.org/wiki/European_Computer_Trade_Show
15
1.2.2 Descriere
Jocul este o strategie n stilul turn-based care poate fi jucat n modul singleplayer
mpotriva calculatorului sau online n modul multiplayer alturi de ali utilizatori. Fiecare
juctor controleaz o armat de caractere asemntoare unor viermi i ajutndu-se de un set
de arme i ustensile au ca scop eliminarea echipelor adverse. Pentru a diversifica experiena de
joc mapele pe care se desfoar aciunea sunt generate n mod aleator i pot fi distruse cu
ajutorul armelor puse la dispoziie, iar ocazional sunt introduse pachete surpriz pe suprafaa
acestora. Printre caracteristicile care au fcut acest joc att de popular se numr: personajele
carismatice nzestrate cu voci piigiate care fac deliciul juctorilor, efectele sonore amuzante
rulate pe fundal i nu n ultimul rnd setul de peste 40 arme i ustensile bizare, creative dar n
acelai timp i eficiente. [8]
Fig.13 Mapa generat aleator populat de Fig. 14 Caracterele aflate n plin rzboi;
caracterele gata de confruntare 1 se observ influena exploziei asupra mapei 2
Dei se bucur de multe din elementele definitorii ale seriei Worms i are potenialul
unei aplicaii de succes, lipsurile i limitrile de care sufer aceast versiune fac din ea un
produs nefinisat, fapt ce explic i rating-ul sczut de care a avut parte aplicaia (Fig. 16).
Ca mai toate aplicaiile pentru platforma Android, jocul Worms este disponibil
pentru download pe Google Play n schimbul sumei de aproximativ 2 dolari. Analiznd
tendina preurilor pe market se poate spune c preul nu este tocmai potrivit pentru o aplicaie
cu multe goluri. Seciunea de comentarii din cadrul Google Play dedicat jocului confirm
ideea preului ridicat prin o parte din utilizatori care i exprim regretului fa de
achiziionarea produsului pentru aceast sum.
Versiunea pentru PC sau console a fost criticat de-a lungul timpului pentru lipsa de
noutai aduse jocului. Astfel, era de ateptat ca lansarea jocului pentru smartphone-urile
Android s aduc odat cu ea noutai n privina setului de arme i ustensile sau n privina
stilului de joc. Modificrile ns sunt aproape inexistente, iar n ceea ce privete armamentul
pus la dispoziie, acesta este limitat fa de celelalte versiuni ale jocului.
Pentru un utilizator care vine n contact pentru prima oar cu acest joc nelegerea
gameplay-ului i a modului de funcionare al armelor i ustensilelor este foarte important. De
aceea tutorialele de ndrumare a utilizatorului sunt extrem de binevenite. Totui, aceast
versiune a jocului nu vine foarte mult n ajutorul utilizatorului oferind doar tutoriale text
nsoite de imagini explicative care nu sunt ntotdeauna ndeajuns pentru o bun nelegere a
jocului.
Tot n seciunea de comentarii de pe Google Play vedem c jocul nu are o funcionare
corect pe tot parcusul folosirii acestuia. Astfel, utilizatorii reclam lucruri precum: dispariia
17
sau funcionarea eronat a unor butoane din cadrul jocului, controlul ngreunat al
caracterelor, nchiderea forat a aplicaiei sau imposibilitatea rulrii acesteia pentru unele
versiuni de sisteme de operare Android. Nu tocmai un comportament pe care o aplicaie
final achiziionat contracost ar trebui s l aib.
De departe cel mai mare gol al aplicaiei este lipsa modului multiplayer. Dei
beneficiaz de opiunea multiplayer, aceasta permite mai multor utilizatori s se confrunte
doar de pe acelai dispozitiv mobil, modalitate ce limiteaz experimentarea jocului n
compania altor juctori. Acest lucru aduce un minus semnificativ experienei per-totale a
aplicaiei.
1. https://play.google.com/store/apps/details?id=com.ea.worms_row
18
Toate aceste plusuri ale noii versiuni ale jocului au impresionat att fanii seriei, ct i
criticii din domeniu, ambele categorii avnd de spus doar lucruri pozitive la adresa aplicaiei.
Acest lucru se poate observa n rating-ul mult mai mare fa de versiune anterioar pe care
jocul l are i n numrul de descrcri de care aplicaia a avut parte (peste 500.000 la cteva
luni de la lansare) (Fig. 18).
Fig.17 Noul joc are parte, pe lng elementele Fig. 18 Rating-ul aplicaiei pe Google Play 2
definitorii seriei, de o grafic impresionant 1
1.3 Obiectiv
1.4 Concluzii
Piaa platformelor pentru dispozitive mobile i-a ndreptat atenia n ultimii ani asupra
dezvoltrii de jocuri video. Au aprut ca rezultat aplicaii ca Angry birds sau Fruit Ninja
care au fost achiziionate pe zeci de milioane de dispozitive din ntreaga lume. n multitudinea
de jocuri existente regsim i un titlu recent care ntrunete toate caracteristicile unei reete de
success pentru piaa dispozitivelor mobile. Este vorba versiunea mobil a celebrului joc
Worms care reuete s adune n doar cteva luni de la lansare sute de mii de descrcri.
Influenat de tendina pieei jocurilor video care se afl ntr-o continu dezvoltare i de
conceptul din spatele seriei Worms, am decis s mi ndrept atenia ctre implementarea
unui joc asemntor celui mai sus menionat avnd ca int sistemul de operare Android, cea
mai masiv i performant platform mobil a momentului.
20
Capitolul 2
Tehnologii folosite
Crearea jocurilor video este un proces complex care poate dura de la cteva zile la
civa ani i poate implica de la un singur dezvoltator pn la o companie ntreag. Printre
principalele etape ale acestui proces se numar: gsirea unui concept de baz, producia,
crearea nivelelor i a resurselor grafice/audio i testarea jocului.
Fie c este vorba despre un joc creat de un dezvoltator independent sau de o companie
din domeniu, n dezvoltarea unor astfel de aplicaii intervin numeroase unelte i tehnologii
care ajut i faciliteaz procesul. Cele mai folosite unelte software sunt: motoarele de joc
(AndEngine1, Unity2, etc.), motoarele de fizic (Box2D3, Bullet4, Phyz5, etc.), editoarele de
nivele sau convertoarele de resurse.
Android este un sistem de operare open source deinut de compania american Google
i destinat n principal dispozitivelor mobile cu ecrane tactile. Android se compune dintr-un
nucleu Linux care st la baza sistemului, o serie de librrii i API de nivel mediu scrise n
limbajul C, iar la nivelul aplicaiilor din framework-uri ce conin librrii compatibile cu Java.
Limbajul de programare principal n care sunt scrise aplicaiile Android este Java. [10]
Android este un sistem de operare puternic i special optimizat crearea unei game largi
de aplicaii pentru dispozitivele mobile inteligente. Bazele unei aplicaii Android sunt:
sunt construite din una sau mai multe componente individuale (activiti);
1. http://www.andengine.org/
2. http://unity3d.com/
3. http://box2d.org/
4. http://bulletphysics.org/wordpress/
5. http://phyz.ath.cx/
21
fiecare component execut o aciune diferit, are un rol bine definit n cadrul
aplicaiei i poate fi activat individual (chiar i de ctre alte aplicaii);
componentele permit un management facil n vederea multithreading-ul sau a
multitasking-ului;
conine un fiier numit manifest care declar toate componentele i configuraia
aplicaiei;
fiecare aplicaie ruleaz n sandbox i necesit acordul utilizatorului final pentru
folosirea diverselor componente i funcii ale dispozitivului;
permit o uoar customizare a aplicaiei pentru diferite mrimi i modele de
dispozitive. [11]
Puterea, viteza i optimizarea sistemului de operare Android 1, dar i faptul c face parte
din cea mai mare platform de dezvoltare mobil la nivel mondial, au fcut din acesta alegerea
perfect pentru implementarea acestui proiect.
2.2 AndEngine
Un motor de joc ofer dezvoltatorilor o suit de unelte pentru facilitarea crerii de
jocuri video. Printre funcionalitile de baz ale unui astfel de sistem se numr: un motor de
redare pentru grafic 2D sau 3D, managementul efectelor sonore i al animaiilor, controlul
asupra scenelor jocului sau comunicare n reea.
AndEngine2 este un motor de joc creat de Nicolas Gramlich pentru a uura munca
dezvoltatorilor de jocuri 2D pentru platforma Android. Fiind un proiect open source el este
primete constant mbuntiri i noi funcionaliti de la zeci de pasionai din ntreaga lume.
Bazat pe OpenGL, AndEngine ofer un nivel ridicat de abstractizare i acoper toate
necesitatile majore dezvoltrii un joc 2D. Este rapid, bine organizat i implementat, printre
funcionalitile sale numrndu-se scalarea pentru toate modelele de dispozitive mobile,
suport pentru multitouch, comunicare n reea, management al scenelor i entitilor din joc,
sisteme de particule etc.
Conceptele specifice jocurile video 2D acoperite de motorul AndEngine sunt:
Camera: entitate abstract care determin ce poriune din lumea virtual creat n joc
este prezentat utilizatorului; suport aciuni precum translaia sau zoom-ul;
Scena: entitate care leag toate elementele unui joc formnd lumea virtual expus
utilizatorului;
1. http://www.android.com/
2. http://www.andengine.org/
22
2.3 Box2D
Aflat printre cele mai cunoscute motoare de fizic pentru dezvoltarea jocurilor video,
1
Box2D este un proiect open source realizat de Erin Catto n C++ care i propune simularea
dinamicii corpurilor rigide n contextul unei lumi virtuale 2D. Folosind concepte teoretice din
fizica newtonian, Box2D pune la dispoziia dezvoltatorilor urmtoarele funcionaliti:
Posibilitatea crerii unei lumi virtuale supus constant unor entiti fizice precum
gravitaia, fora de frecare, densitate i elasticitatea obiectelor;
Diverse tipuri de corpuri fizice: dinamice, statice sau hibride;
Modelarea obiectelor sub form de poligoane convexe, cercuri sau forme complexe ce
pot fi obinute prin uniunea celor dou;
Detecia continu a coliziunilor dintre corpuri sau grupri de corpuri;
Metode de rezolvarea a coliziunilor;
Simularea fidel a forelor de reaciune i a impulsurilor;
Diverse tipuri de articulaii sau legturi ntre obiecte fizice. [13]
1. http://box2d.org/
23
Dup ncrcarea unei imagini cu forma dorit n program (similar cu cea din Fig. 19),
Physics Body Editor ofer utilizatorului posibilitatea de a calcula n mod automat conturul
obiectului sau i ofer libertatea acestuia de a plasa singur nodurile dorite pe grania obiectului.
Acestea sunt necesare pentru descompunerea formei n multiple poligoane convexe.
1. http://www.aurelienribon.com/blog/projects/physics-body-editor/
24
2.5 Concluzii
Fie c este vorba de un joc dezvoltat de o ntreag echip sau de un singur dezvoltator
independent, uneltele software uureaz extrem de mult procesul de creare a jocurilor video.
Capitolul 3
Prezentarea aplicaiei
Box2D creaz prin simularea fizicii obiectelor (harta, personajele, armele, proiectilele
etc.) o lume virtual care ofer utilizatorului impresia realitii. Motorul de fizic face astfel
posibil existena gravitaiei, forelor de frecare, a obiectelor fizice cu proprieti precum
densitate sau elasticitate i a coliziunilor n timp real dintre acestea.
Jocul este construit n aa fel nct s fie intuitiv, uor de jucat, dar totodat s pun la
ncercare abilitile strategice ale utilizatorilor. Sesiunile de joc sunt scurte avnd o durat de
timp de pn la 10 minute i permit deintorilor de dispozitive mobile s se bucure de
aplicaia n orice loc i moment.
Descriere
Worms face parte din categoria jocurilor strategice de tip turn-based, ceea ce nseamn
c aciunea acestuia este mparit n runde. Utilizatorii pot alege ntre dou moduri de joc:
singleplayer (mpotriva unui NPC1) sau hotseat multiplayer (mpotriva unui alt juctor uman
folosind acelai dispozitiv mobil).
1. Non-Player Character sau Non-Person Character; caracter controlat prin intermediul unui
algoritm de inteligen artificial
26
Un caracter este eliminat atunci cnd punctele lui de via ajung la 0. Jocul se termin
atunci cnd toate caracterele unei echipe au punctele de via ajunse la 0, echipa advers fiind
declarat nvingtoare.
Pentru a putea fi integrate n simularea fizic, personajelor din joc le sunt ataate
corpuri fizice dinamice care au proprieti precum mas, densitate sau elasticitate. Ele sunt
afectate de gravitaie i alte fore sau impulsuri externe. Astfel, micrile caracterelor sunt
obinute prin aplicarea unor fore externe n centrul de greutate al corpului. Pentru micarea la
nivelul solului de-a lungul mediului nconjurtor se aplic o for care are componenta x
semnificativ mai mare dect componenta y (astfel nct corpul s nu se ridice de la sol, dar s
fie capabil s se mite de-a lungul pantelor) (Fig. 20), iar pentru srituri este aplicat o for
care are componenta y semnificativ mai mare dect componenta x (permite corpului s se
eleveze de la sol) (Fig. 21).
Fig. 20 Fora aplicat pentru deplasarea Fig. 21 Fora aplicat pentru srituri
la nivelul solului
n modul singleplayer sunt create dou tipuri de caractere: cele controlate de juctorul
uman i cele controlate de algoritmul de inteligen artificial. Cele dou difer prin
proprieti ce in de logica aplicaiei, dar n momentul crerii unei echipe nu se ine cont de
tipul caracterului. Pentru a modela aceast situaie am apelat la factory design pattern(Fig. 22).
Interfaa CharacterFactory are cunotin despre clasa general Character din care motenesc
cele dou tipuri de caractere. Astfel, n momentul crerii unui caracter nu se specific tipul,
aceast decizie rmnnd pe seama claselor care implementeaz interfaa.
27
Mediul virtual al jocului Worms const ntr-o suprafa cu forme complexe (Fig.23) pe
care se desfoar btlia dintre cele dou echipe. Ele sunt create astfel nct de-a lungul
acestora s existe zone de cmp deschis, zone de retragere i componente la care nu se poate
ajunge prin simplele micri pe care caracterele sunt capabile s le execute.
Hrile sunt create n momentul lansrii jocului din resurse bitmap alb-negru (pixelii
negri reprezint suprafaa solid, pixelii albi sunt aerul). Pentru a oferi o oarecare diversitate
jocului, au fost create 3 teme vizuale: deert, polul nord i mediu montan. La pornirea jocului
este ncrcat imaginea corespunztoare nivelului selectat i este aleas o tem vizual n mod
aleatoriu. Este aplicat terenului textura specific temei alese i apoi este setat imaginea de
background corespunztoare.
Suprafaa de joc are un rol important n oferirea unei experiene de joc complete.
Aceasta ia parte n simularea fizic fiind suprafaa de suport pentru celelalte entiti din joc.
Ea ns nu este afectat de fora gravitaional sau orice alt for sau impuls din exterior. Prin
definiie, harta este un corp rigid static. Datorit formei complexe cu poriuni concave,
motorului de fizic Box2D i este imposibil s reprezinte suprafaa sub forma unui singur corp
rigid poligonal. Forma trebuie astfel simplificat prin descompunerea n poligoane convexe.
Acest lucru este realizat cu ajutorul uneltei Physics Body Editor. (Fig. 23)
Se ncarc n programul Physics Body Editor bitmap-ul alb-negru care conine forma
unui nivel din joc;
Se determin conturul formei fie cu funcia autotrace din program, fie manual prin
poziionarea nodurilor pe canvas;
Se ruleaz algoritmul de descompunere poligonal, n urma cruia se obine un fiier n
format .json (Tab. 1) care conine o list de puncte ce reprezint colurile poligoanelor;
Fiierul .json se adaug ca resurs n pachetul jocului;
n momentul pornirii unei instane a jocului, se identific fiierul corespunztor
nivelului selectat i cu ajutorul loaderului special implementat pentru a interpreta
coninutul acelui fiier se creaz o list de obiecte reprezentnd poligoanele dorite;
Folosind punctele din lista poligoanelor convexe obinut anterior se creaz un corp
rigid static pentru fiecare dintre acestea; toate aceste corpuri reunite formeaz suprafaa
de joc.
polygons: [
[ { x: 0.669921875,
y: 0.2509765625 },
{ x: 0.646484375,
y: 0.271484375 },
{ x: 0.6376953125,
y: 0.267578125 },
{ x: 0.599609375,
y: 0.19921875 }
],
[ { x: 0.599609375,
y: 0.19921875 },
{ x: 0.6865234375,
y: 0.2451171875 },
{ x: 0.669921875,
y: 0.2509765625 }
],
...
Tab. 1 Fragment dintr-un fiier .json cu informaiile despre poligoanele convexe obinute
30
3.3 Armament
Probabil cea mai important trstur a jocului Worms sunt armele care sunt puse la
dispoziie (Fig. 24). Ele sunt uneltele cu ajutorul crora jocul poate fi ctigat. Fiecare dintre
acestea au caracteristici diferite precum raza de aciune sau puterea exploziei, fcndu-le
potrivite doar n anumite situaii. (Tab. 2)
n continuare vor fi prezentate n detaliu cele 6 arme aflate n dotarea fiecrui caracter
din joc:
Dynamite: poate fi folosit doar din apropiere; este afectat doar de gravitaie
nu i de alte fore sau impulsuri exterioare; dup 2 secunde de la lansare
produce o explozie ce produce pagube de pn la 50 de puncte de via;
Teleport: nu produce pagube altor caractere; folosit pentru a transporta
instantaneu caracterul n orice loc de pe harta de joc.
3.4 Concluzii
Folosind instrumentele prezentate n Capitolul 2, jocul Worms a fost implementat
astfel nct s ofere utilizatorului final o experien de joc plcut, intuitiv i ct mai natural.
La nivelul jocului s-a ncercat obinerea diversitii prin crearea de numeroase nivele
unice prin caracteristicile oferite, prin temele de texturare disponibile i prin instrumentele ce
pot fi folosite de utilizator n timpul jocului gndite astfel nct s acopere toate situaiile ce
pot aprea.
Capitolul 4
Inteligena artificial
n jocurile de aciune n timp real, abilitile poteniale ale unui NPC sunt net
superioare oricrui juctor uman: acuratee perfect, reflexe fulgertoare, etc. Provocarea este
n acest caz crearea unui AI care s prezinte un comportament uman, nu perfecionist, oferind
astfel utilizatorului posibilitatea de a ctiga jocul n faa acestuia.
4.1 Obiective
Algoritmul A*
Cutarea drumului dintre dou puncte aparinnd unei configuraii cunoscute este
printre cele mai comune probleme pe care algoritmii de inteligen artificial i propun s le
rezolve. Printre aceti algoritmi se numr i A*, cunoscut pentru performana i acurateea
oferit. Extins din algoritmul lui Dijkstra1, A* este folosit pentru a cuta drumul optim dintre
dou puncte innd cont de obstacolele care pot aprea n cale2.
1. http://www.cs.auckland.ac.nz/software/AlgAnim/dijkstra.html
2. http://www.policyalmanac.org/games/aStarTutorial.htm
3. http://www.policyalmanac.org/games/aStarT3.jpg
35
Primul pas fcut n determinarea unui drum este simplificare ariei de cutare. Aceasta
se realizeaz prin mprirea imaginar a terenului n dreptunghiuri de mrimea unui caracter
(se obine o gril de noduri). Utiliznd bitmap-ul cu forma terenului se determin care dintre
aceste noduri ale grilei obinute reprezint eventuale obstcole i care sunt candidate pentru un
posibil drum optimal. Se determin apoi nodul de start n care se afl caracterul NPC i nodul
final n care se afl inamicul. Avnd aceste informaii se ruleaz implementarea algoritmului
A* pentru determinarea drumului ntre cele dou noduri. Modificrile aduse algorimului sunt
urmtoarele:
public LinkedList<Node> AStar(int startRow, int startCol, int endRow, int endCol) {
closedSet = new LinkedList<Node>();
openSet = new LinkedList<Node>();
path = new LinkedList<Node>();
parentNode = new HashMap<Node, Node>();
openSet.add(map[startRow][startCol]);
map[startRow][startCol].setG(0);
map[startRow][startCol].setH((Math.abs(endRow - startRow) +
Math.abs(endCol - startCol)) * 10);
while(!openSet.isEmpty()) {
int index = getLowestFCost(openSet);
Node current = openSet.get(index);
openSet.remove(index);
closedSet.add(current);
return null;
}
Funcia AStar(int, int, int, int) determin drumul optimal dintre dou puncte
de pe hart ( [startRow, startCol] i [endRow, endCol]). nti este determinat costul nodului de
start i acesta este adugat ntr-o list de prelucrare openList. Ct timp aceast list nu este
vid sau nu s-a gsit soluia, se alege din openList nodul cu costul cel mai mic
(getLowestFCost). Acesta se introduce n lista nodurilor vizitate closedList i apoi i sunt
verificai vecinii care candideaz pentru intrarea n openList. Dac unul din vecinii est sau
vest sunt detectai ca obstacole se verific posibilitatea unui salt.
37
4.3 Strategii
A doua strategie, cea de alegere a armei de atac, este mai complex dect prima ea
necesitnd mai multe calcule i timp de procesare. Sunt determinai trei algoritmi aparinnd
acestei strategii ntre care entitile NPC pot interschimba de la o rund la alta. Alegerea
strategiei se face astfel (Fig. 29):
Strategia atacului direct: primul pas este aplicarea algorimului A* pentru gsirea
unui drum de la NPC la inamicul ales; dac acesta nu exist se trece la testarea pentru
urmtoarea strategie. Dac acesta exist AI-ul parcurge drumul gsit de A*; ajuns la
captul drumului el scaneaz mprejurimile inamicului cutnd coechipieri. n cazul n
care au fost identificai coechipieri n zona vizat, AI alege s foloseasca arma
Baseball bat pentru a nu cauza pagube celorlali din echipa sa; n caz contrar el
folosete arma Dynamite care produce mai multe pagube dect Baseball bat. Pentru a
nu fi afectat de explozie AI parcurge drumul gsit de A* n ordine invers pentru a se
ndeprta de int;
Strategia atacului din poziia optimal: dac algoritmul A* nu a ntors nicio soluie
se parcurg nodurile vizitate de acestea (aflate n closedList) i se verific dac vreunul
dintre acestea are vedere direct ctre int. n caz negativ, se trece la urmtoarea
strategie; n caz pozitiv se reface drumul ctre acel nod, AI parcurge drumul ctre acel
nod i ajuns la capt folosete aceeai scanare pentru verificarea mprejurimilor de
coechipieri. n cazul n care au fost identificai coechipieri n zona vizat, AI alege s
foloseasca arma Sniper pentru a nu cauza pagube celorlali din echipa sa; n caz
contrar el folosete arma Rocket Launcher care produce mai multe pagube dect
Sniper;
Strategia atacului indirect: dac nu a fost gsit nici drumul ctre inamic, nici o
poziie optimal din care s existe vedere liber ctre int, AI alege s foloseasc arma
Rocket Launcher; acesta i fixeaz inta, caut cel mai ascuit unghi de tragere care
nu intersecteaz niciun obsctacol i lanseaz atacul ctre inamic. Dac mai mult n mai
mult de 2 runde entitatea NPC nu a reuit s cauzeze pabuge datorit obstacolelor, el
va folosi arma Teleport pentru a se deplasa instant ntr-o poziie favorabil.
39
Fig. 30 Captur din timpul jocului; AI execut un atac direct asupra inamicului
n Worms aceasta tehnic a fost implementat cu ajutorul unui scor care se pstreaz
pentru echipa utilizatorului uman. Acest scor msoar raportul dintre punctele de via ale
celor dou echipe, diversitatea armelor folosite, numrul de runde consecutive n care acesta
nu a produs pagube sau a cauzat pagube propriei echipe.
40
Folosind toate aceste date AI i regleaz acurateea cu care lanseaz atacurile, face
alegeri nu tocmai potrivite n ceea ce privete strategia abordat, mrete durata unei runde
pentru a acorda timp utilizatorului s i construiasca strategia i n cazuri extreme sare peste
runde.
4.5 Concluzii
Concluzii finale
Concluzii
Contribuii personale
Direcii de viitor
Pentru viitor exist mai multe direcii n care aplicaia poate fi dezvoltat:
Bibliografie
[1] ***, Ten Reasons why SmartPhones are killing the Gaming consoles, http://www.gadgetcage.com/ten-
reasons-why-smartphones-are-killing-the-gaming-consoles/23268/, 15.11.2012
[2] ***, Android, the world's most popular mobile platform, http://developer.android.com/about/, 15.11.2012