Vous êtes sur la page 1sur 44

UNIVERSITATEA ALEXANDRU IOAN CUZA

FACULTATEA DE INFORMATIC

LUCRARE DE LICEN

Coordonator tiinific

Lector Dr. Adrian Iftene


Absolvent

Ni Iulian-Alexandru

IAI
2013
UNIVERSITATEA ALEXANDRU IOAN CUZA

FACULTATEA DE INFORMATIC

WORMS
Joc 2D pentru platfoma Android

Coordonator tiinific

Lector Dr. Adrian Iftene


Absolvent

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.

De asemenea, sunt de acord ca Facultatea de Informatic de la Universitatea Alexandru Ioan


Cuza Iai s utilizeze, modifice, reproduc i s distribuie n scopuri necomerciale programele-
calculator, format executabil i surs, realizate de mine n cadrul prezentei lucrri de licen.

Iai, 03.07.2013

Absolvent Ni Iulian-Alexandru

_________________________
Cuprins

Introducere ............................................................................................................ 6

Capitolul 1. Platforma de dezvoltare Android ....................................................... 9

1.1 Aplicatii populare ................................................................................ 10


1.2 Worms ................................................................................................ 14
1.2.1 Scurt istoric ............................................................. 14
1.2.2 Descriere ................................................................. 15
1.2.3 Versiunile pentru platforma Android ........................ 15

1.3 Obiectiv ................................................................................................ 18

1.4 Concluzii ............................................................................................. 18

Capitolul 2. Tehnologii folosite ............................................................................. 20

2.1 Sistemul de operare Android ................................................................ 20

2.2 AndEngine ........................................................................................... 21

2.3 Box2D ................................................................................................. 22

2.4 Physics Body Editor ............................................................................ 23

2.5 Concluzii ............................................................................................. 24

Capitolul 3. Prezentarea aplicaiei ........................................................................ 25

3.1 Descriere i gameplay .......................................................................... 25

3.2 Mediul virtual ...................................................................................... 28

3.3 Armament ............................................................................................ 30

3.4 Concluzii ............................................................................................. 32

Capitolul 4. Inteligena artificial .......................................................................... 33

4.1 Obiective .............................................................................................. 33


4.2 Algoritmul A* ...................................................................................... 34

4.3 Strategii ................................................................................................ 37

4.4 Balansarea dinamic a dificultii ........................................................ 39

4.5 Concluzii ............................................................................................. 40

Concluzii finale ...................................................................................................... 41

Bibilografie ........................................................................................................... 42
6

Introducere

Considerate n jurul anilor 1950-1960 doar o simpl curiozitate n lumea calculatoarelor,


jocurile video au reuit, din 1970 cnd au atins popularitate la scar larg i pn n prezent, s
contruiasc n jurul lor una dintre industriile de top ale economiei mondiale.

Fiind disponibile pentru o multitudine de platforme precum calculatoare personale,


console sau dispozitive mobile, jocurile video sunt alese de sute de milioane de persoane din
ntreaga lume ca modalitate de petrecere a timpului liber (Fig.1). Astfel, industria jocurilor
video se afl ntr-o continu dezvoltare i ajunge la ctiguri anuale de zeci de miliarde de
dolari. Dup cum sugereaz i (Fig.2) aceste ctiguri au tendina de a crete de la an la an,
principalele motive fiind progresul constant al tehnologiilor din industria calculatoarelor, dar
i numrul tot mai mare al persoanelor care intr n contact cu aceast lume.

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

De la 17 ani de la lansarea primului smartphone modern de ctre compania Nokia


(modelul Nokia Communicator1) i pn n zilele noastre (a.c. 2013) numrul de dispozitive
mobile inteligente a depit pragul de un miliard la nivel mondial, cretere care a adus odat
cu ea i explozia pieei jocurilor video dedicate acestor dispozitive mobile.

Pe lang numrul mare de dispozitive i diversitatea categoriilor de jocuri disponibile,


aceast explozie se datoreaz i avantajelor pe care aceast industrie le are asupra surorilor
sale (industria jocurilor pentru calculatoare personale sau pentru console), att din punct de
vedere al utilizatorului final, ct i din punct de vedere al dezvoltatorilor de jocuri. Printre
aceste avantaje se numar [1]:

dimensiunea redus a dispozitivelor care permite utilizatorilor s se bucure de aplicaii


n orice loc s-ar afla;
modul de interacionare foarte intuitiv i natural dintre dispozitiv i utilizator prin
intermediul ecranelor tactile sau accelerometrului;
existena aa numitelor market-uri care faciliteaz din punct de vedere al utilizatorului
achiziionarea jocurilor i din punct de vedere al dezvoltatorului publicarea acestora;
numrul mare de unelte de dezvoltare pentru acest tip de aplicaii mobile;
preul accesibil al aplicaiilor.

Astfel, nu este de mirare c un studiu realizat recent de compania Flurry Analytics2


relev faptul c jocurile sunt aplicaiile cele mai folosite de ctre deintorii de dispozitive
mobile inteligente. (Fig.3)

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

Fig.3 Cele mai folosite aplicaii pe dispozitivele mobile inteligente

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.

Influenat de tendinele pieei prezentate anterior, mi propun prin intermediul acestei


lucrri implementarea unei astfel de aplicaii pentru platforma mobil Android. Aplicaia,
inspirat dintr-o serie de jocuri video popular, se ncadreaz n categoria strategie turn-based
i ofer posibilitatea utilizatorilor de a-i testa ndemnarea att mpotriva unui juctor
controlat de calculator, ct i mpotriva unui alt utilizator uman n modul hotseat (dispozitivul
este controlat pe rnd de fiecare juctor). Accentul este pus pe oferirea unei experiene de joc
bogat i intuitiv, dar i pe dezvoltarea unui algoritm robust de inteligen artificial care s
reueasc s pun juctorii n dificultate.

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 2 face o scurt introducere n lumea dezvoltrii de jocuri video i prezint


tehnologiile folosite pentru atingerea obiectivului acestei lucrri. Printre tehnologii se numr
sistemul de operare Android, motorul de joc AndEngine i motorul de fizic Box2D.

Capitolul 3 descrie n detaliu toate funcionalitile aplicaiei i metodele folosite pentru


implementarea acestora.

Capitolul 4 pune accentul pe implementarea algoritmului de inteligen artificial. Sunt


prezentate concepte generale ce au fost aplicate n procesul de implementare, modificrile i
adaptrile fcute pentru a se potrivi contextului jocului dezvoltat.
9

Capitolul 1

Platforma de dezvoltare Android

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 punct de vedere al dezvoltatorilor, Android pune la dispoziie o serie de unelte


performante (SDK, debugger, IDE, etc.) i un model unic de aplicaie, facilitnd astfel crearea
de aplicaii care s profite din plin de capabilitile software i hardware pentru o gam larg
de dispozitive. Din punct de vedere al utilizatorilor, Android ofer o experien bogat prin
design-ul i modul de interaciune extrem de intuitiv, uurina cu care se realizeaz
multitasking, multitudinea de posibiliti de customizare a dispozitivului sau modalitile de
stocare i sincronizare a datelor personale (cloud computing) [1].

Ca mai toate platformele de dezvoltare mobil moderne, Android ofer utilizatorilor i


dezvoltatorilor si un loc n care acetia pot, cu uurin, regsi, achiziiona sau publica
aplicaii. Cunoscut n momentul actual sub numele de Google Play2, market-ul platformei
Android pune la dispoziie o list numeroas de categorii de aplicaii, aceasta ntinzndu-se de
la cele cu iz financiar sau medical pn la aplicaii multimedia. Google Play menine un
caracter deschis fa de utilizatorii si permindu-le acestora un control total asupra
aplicaiilor personale i a contului Android. Astfel, n fiecare zi mii de persoane vin n contact
pentru prima dat cu acesta platform prin activarea unui dispozitiv mobil Android.

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%

Fig.4 Jocurile domin i din punct de vedere financiar celelalte aplicaii

1.1 Aplicaii populare


Cu titluri care numr zeci de milioane de descrcri, jocurile sunt cele mai cutate
aplicaii mobile ale momentului. n continuare vom prezenta pe scurt cteva dintre cele mai
populare titluri de jocuri printre utilizatorii de dispozitive mobile inteligente.

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]

Simplitatea controalelor, multitudinea de echipamente i strategii abordabile i


experiena online au fcut din Drag Racing o aplicaie extrem de popular printre deintorii
de smartphone-uri i tablete.

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]

Popularitatea aplicaiei a determinat productorii s realizeze i versiuni pentru alte


platfome cum ar fi Windows 8 sau Xbox 360, cea din urm avnd parte de o priz mai bun la
public datorit modului de joc care necesit folosirea corpului pentru interaciunea cu jocul
prin intermediul tehnologiei Kinect.

Fig. 9 Captur din timpul jocului n care


se observ fructele i bomba capcan 2

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

Fig. 10 Caracterul trebuie sa ocoleasc n Fig. 11 Caracterul este ajutat de super-


vederea atingerii obiectivului 1 puteri pentru a-i atinge obiectivul 2

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].

Fig. 12 Distrugnd poriuni de teren i evitnd obstacolele, utilizatorul


trebuie s conduc apa ctre personajul aflat n partea de jos a imaginii 3

1-2. https://play.google.com/store/apps/details?id=com.kiloo.subwaysurf (surs imagini)

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.

1.2.1 Scurt istoric

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]

1.2.3 Versiunile pentru platforma Android


innd cont de faptul c industria jocurilor video i-a ndreptat foarte mult atenia n
ultimii ani asupra platformelor mobile, era aproape inevitabil ca o serie att de popular cum
este Worms s nu fie portat i la nivelul dispozitivelor mobile inteligente. Astfel, n anul 2011
dezvoltatorii de la Electronic Arts Nederland BV lanseaz primul titlu al seriei Worms
pentru sistemul de operare Android .
Aceast prim versiune mobil a jocului se bucur de multe dintre elementele definitorii
care au fcut seria att de celebr. Avem n continuare parte de mape destructibile generate in
mod aleator pe care personajele carismatice i pline de umor cu care au fost obinuii fanii
seriei sunt gata s se confrunte (Fig.13,14). Dialogurile piigiate i efectele sonore amuzante
i fac i ele locul fiind un mare plus pentru experiena de joc.

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

1-2. https://play.google.com/store/apps/details?id=com.ea.worms_row (surs imagini)


16

Pentru obinerea victoriei, la dispoziia juctorilor st un set de 26 de arme i ustensile


printre care se numar i elementele bizare i creative cu care jocul i-a obinuit fanii. Dintre
acestea amintim arme precum Banana Bomb, Holy Hand Grenade, The Sheep sau Concrete
Donkey (Fig.15).

Fig. 15 Armamentul pus la dispoziia juctorilor

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.

Fig. 16 Aplicaia are parte de un rating dezamgitor 1

Nemulumirile fanilor seriei nu au rmas ns neascultate. Astfel, n luna aprilie a


anului 2013 apare un nou titlu al seriei, el purtnd numele Worms 2: Armageddon. n acest
nou joc sunt rezolvate multe din problemele existente anterior i sunt aduse mbuntiri
substaniale experienei de joc, pstrndu-se totodat elementele care au fcut seria celebr.
Dintre acestea enumerm [9]:

rezolvarea problemelor de interaciune dintre utilizator i dispozitiv;


introducerea unor noi stiluri de joc i posibiliti de customizare a experienei de
joc;
un nou set de arme specifice seriei;
mbuntirea semnificativ a graficii (Fig. 17);
cea mai important adiie este cu siguran implementarea modului multiplayer
care permite utilizatorilor s i testeze abilitile strategice online alturi de ali
pasionai ai jocului.

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

Pornind de la conceptul care st n spatele jocului Worms, aceast lucrare i propune


abordarea dezvoltrii unui joc pentru platforma Android care s pstreze, pe ct este posibil,
caracteristicile specifice seriei. Accentul va cdea pe implementarea unui algoritm de
inteligen artificial robust care s reprezinte o provocare pentru utilizatorul final.

Jocul Worms va fi implementat pentru sistemul de operare Android i se va avea la


baz motorul de joc AndEngine i motorul de fizic Box2D. Algoritmul de inteligen
artificial va folosi tehnici de cutare a drumului optimal, diverse metode de scanare a hrii
jocului i balansarea dinamic a dificultii.

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

1-2. https://play.google.com/store/apps/details?id=com.worms2armageddon.app (surs imagini)


19

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.

Pentru dezvoltarea jocului Worms au fost folosite urmtoarele unelte i tehnologii:

sistemul de operare Android


motorul de joc AndEngine
motorul de fizic Box2D
editorul pentru obiecte fizice Physics Body Editor

2.1 Sistemul de operare Android

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

Sprite: reprezentarea vizual a unei entiti ce poate fi desenat precum un buton, un


caracter din joc, un meniu, o hart, etc.;
Modificatori: modific n timp diverse proprieti ale entitilor (culoare, rotaie,
scalare, etc.);
Motorul propriu-zis: acesta este creierul sistemului el avnd ca atribuii expunerea
scenei ctre utilizatorului, updatarea modificatorilor i animaiilor, desenarea entitilor
pe ecran i cu input-ul primit de la utilizatori. [12]

Nivelul ridicat de abstractizare i mulimea de funcionaliti i extensii oferite face din


AndEngine o alegere ideal pentru dezvoltarea unui joc 2D cu o complexitate nu foarte
ridicat.

2.3 Box2D

Un motor de fizic este un framework ce ajut la simularea sistemelor fizice precum


dinamica corpurilor rigide n cadrul unui joc video. Deoarece n jocuri se pune mai mult
accent pe timpul n care simularea este realizat i nu pe precizia acesteia, majoritatea
motoarelor de fizic existente realizeaz aceast simulare ntr-o manier aproximativ.

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

Implementarea elegant i uurina n modul de folosire al acestor funcionaliti n


procesul de dezvoltare a jocurilor video, au fcut din Box2D unul din cele mai populare
motoare de fizic. Astfel, Box2D se poate luda c st la baza multor jocuri existente pe
pia, printre acestea numrndu-se i Angry birds (cel mai descrcat joc din istoric
platformelor mobile). Popularitatea a adus odat cu ea i portarea acestui motor pe diverse
platforme de dezvoltare, dintre care i Android. Mai precis, a fost implementat o extensie
Box2D pentru motorul de jocuri AndEngine.
Funcionalitile expuse, popularitatea i modul de mbinare cu motorul AndEngine,
fac din Box2D candidatul ideal pentru implementarea simulrii fizice din jocul Worms.

2.4 Physics Body Editor


Aplicaia Physics Body Editor1 sare n ajutorul motoarelor de fizic care suport
reprezentarea obiectelor doar sub form de poligoane convexe. n multe situaii jocurile conin
obiecte complexe ce prezint zone concave greu de administrat din punct de vedere al fizicii
coliziunilor. Dezvoltatorilor nu le rmne dect s descompun manual obiectele dorite n
poligoane convexe. Aici intervine ns Physics Body Editor care descompune forme orict de
complexe ale obiectelor furnizate programului prin intermediul unui bitmap. (Fig. 19)

Fig. 19 Descompunerea unei forme complexe n multiple poligoane convexe

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

Dup terminarea pasului descris anterior, programul folosete nodurile


determinate i formeaz multiple poligoane convexe care reunite compun obiectul
iniial. Fiecare poligon este reprezentat prin coordonatele colurilor sale. Aceste date
sunt exportate mai departe n format json i sunt apoi folosite n joc pentru crearea
formelor fizice complexe. nainte de export, programul ofer utilizatorului posibilitatea
testrii formei obinute pentru eventuale modificare ale acesteia.

Physics Body Editor este folosit n procesul de dezvoltare a jocului Worms


pentru a descompune forma hrii unui nivel n multiple poligoane convexe necesare
simulrii fizicii coliziunilor dintre obiecte.

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.

Motoarele de joc ajut la administrarea resurselor, redarea elementelor vizuale i


controlul logicii aplicaiei oferind per total un nivel de abstractizare n procesul de dezvoltare.
Motoarele de fizic ajut la transpunerea unor aspecte din realitate n lumea virtual a
jocurilor. Sunt simulate astfel concepte precum dinamica obiectelor rigide, detecia coliziunii
dintre corpuri sau existena unor fore constante (gravitaia, fora de frecare, elasticitate etc.).
Editoarele de nivel ajut dezvoltatorii n conceperea structurii nivelurilor unui joc i
exportarea rezultatelor ntr-o multitudine de formate n funcie de nevoile fiecruia.

Pentru dezvoltarea jocului Worms am ales ca unelte de dezvoltare motorul de joc


AndEngine, motorul de fizic Box2D i editorul nivele Physics Body Editor. Datorit
funcionalitilor disponibile, modului de organizare i extensiilor oferite, AndEngine a fost
alegerea potrivit pentru implementarea unui joc cu un astfel de nivel de complexitate.
Motorul Box2D mpreun cu editorul de nivele Physics Body Editor, ofer exact performana,
scalabilitatea i funcionalitile ce au fost necesare pentru simularea aspectelor realitii n
lumea jocului Worms.
25

Capitolul 3

Prezentarea aplicaiei

Aceast lucrare are ca obiectiv crearea jocului 2D cu numele Worms pentru


platforma Android. Implementarea acestui obiectiv este realizat prin mbinarea conceptelor i
tehnologiilor prezentate n capitolele anterioare. Astfel, jocul are la baz motorul AndEngine
prin intermediul cruia sunt controlate i expuse utilizatorului aspectele vizuale i audio
(sprite-uri, animaii, efecte sonore), sunt tratate input-urile dispozitivului i sunt administrate
activitile i scene componente ale 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).

Avnd la dispoziie 40 de secunde n fiecare rund, juctorul este nevoit ca folosind


armamentul pus la ndemn s construiasc o tactic prin care s elimine echipa advers. n
fiecare rund doar unul dintre juctori este n controlul caracterelor sale. Juctorul are la
dispoziie o echip format din 4 caractere capabile s se mite n mediul nconjurtor i s
foloseasc o serie de arme cu ajutorul crora s elimine componenii echipei adverse.

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

Fig. 22 Factory design pattern pentru crearea caracterelor

n ceea ce privete interaciunea cu utilizatorul n timpul jocului, acest este realizat


ntr-un mod ct se poate de intuitiv i natural. Butoanele i informaiile sunt bine distribuite pe
suprafaa ecranului n ncercarea de a nu ngreuna experiena de joc (Fig. 23). Astfel, zonele
haurate cu rou servesc ca butoane pentru micarea la stnga sau la dreapta la nivelul solului
a caracterului curent. Sriturile sunt activate printr-o simpl apsare pe zona ce definete
caracterul. Butonul din stnga jos (1) deschide meniul din care se pot alege armele, iar cel din
dreapta jos (2) este pentru a trage cu arma curent. Direcia de tragere este reglat cu ajutorul
intei (3) care se poate plimba mprejurul caracterului. n partea de dreapta sus a ecranului (4)
utilizatorul este atenionat de timpul care a rmas din runda curent. Poriune central din josul
ecranului (5) afieaz progresul jocului (punctele de via rmase fiecrei echipe).

Fig. 22 Suprafeele din ecran destinate interaciunii cu juctorul


28

3.2 Mediul virtual

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)

Fig. 23 Forma complex a unui nivel descompus n poligoane convexe


29

Obinerea corpurilor rigide complexe care s reprezinte suprafaa de joc const n


parcurgerea urmtorilor pai:

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)

Fig. 24 Meniul cu armele disponibile n joc

n continuare vor fi prezentate n detaliu cele 6 arme aflate n dotarea fiecrui caracter
din joc:

Grenade: este o arm ce poate fi lansat de la distan i descriere o traiectorie


balistic n aer; ea este afectat de gravitaie i de impactul cu suprafaa de joc;
produce o explozie la 3 secunde dup lansare avnd capacitatea da a produce
pagube de pn la 50 de puncte de via;
Rocket launcher: este cea mai puternic arm din arsenal, dar totodat i cea
mai greu de stpnit; poate fi folosit de la distan i proiectul lansat de
aceasta descrie o traiectorie balistic n aer; proiectilul este afectat de gravitaie
i produce o explozie la contactul cu orice corp fizic avnd capacitatea da a
produce pagube de pn la 70 de puncte de via;
Sniper: este caracterizat de precizie; poate fi folosit de la distan i
proiectilul lansat de aceasta descrie o traiectorie liniar; provoac pabuge de
pn la 35 puncte de via la impactul direct cu un alt caracter;
Baseball bat: poate fi folosit doar n apropierea inamicului; dac exist
contact direct cu un caracter provoac o pagub fix de 30 de puncte de via;
31

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.

Nume Distan Raz de aciune Pagub maxim Timp de efect


(pixeli)
Grenade deprtare 64 50 3 secunde
Rocket launcher deprtare 64 70 la impact
Sniper deprtare 2 35 la impact
Baseball bat apropiere 10 30 instant
Dynamite apropiere 96 50 2 secunde
Teleport deprtare - - instant

Tab 2. Caracteristicile fiecrei arme

Armele sunt folosite o singur dat pe rund de ctre un singur caracter. Ar fi


ineficient dac la fiecare rund sau de fiecare dat cnd juctorul schimb armele s-ar crea o
nou instan a clasei respective. Soluia este oferit de object pool pattern, un design pattern
creaional care se folosete de un set de obiecte iniializate i le pstreaz mereu gata pentru
folosire. Astfel, a fost creat clasa WeaponsPool care la startul jocului iniializeaz cte un
obiect din clasa specific fiecrei arme i n momentul n care primete o cerere ofer o
referin la unul din obiectele iniializate. Dup folosire, fiecare obiect este resetat la o stare
iniial. (Fig. 25)

Fig. 25 Object pool pentru clasele de arme


32

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.

La un nivel transparent utilizatorului s-au folosit concepte fizice i de inginerie a


programrii pentru a obine o aplicaie robust, scalabil i eficient din punct de vedere al
algoritmilor utilizai.
33

Capitolul 4

Inteligena artificial

n jocurile video, inteligena artificial i propune crearea de comportamente aparent


inteligente a entitilor NPC pentru a oferi utilizatorului final o provocare i pentru a mbogi
experiena de joc. Se ncearc simularea unui comportament uman i evitarea folosirii
avantajelor clare pe care o entitate NPC le are fa de un juctor uman. Printre cei mai
cunoscute concepte din domeniul inteligenei artificiale se numar arborii de decizie, reelele
neuronalele sau algoritmi genetici.

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.

n jocurile de strategie de tip turn-based lucruri se schimb, acurateea i reflexele


nemaifiind cele mai importante abiliti necesare victoriei. Intervin lucruri precum inscusimea
i intuiia uman, factori care pot fi decisivi ntrecerea cu o entitate NPC. n acest caz se
dorete proiectarea unui AI care s prezinte un comportament inteligent n alegerea strategiilor
de aprare i atac, s ofere provocare juctorului, dar n final s existe posibilitatea nfrngerii
acestuia. [15]

4.1 Obiective

Este evident necesitatea implementrii unui algoritm de inteligen artificial pentru


jocul Worms. Entitatea NPC controlat de acest algoritm trebuie s fie capabil s se mite n
mediul nconjurtor, s i identifice adversarii i s fie cunoasc modul de utilizare a tututor
armelor din gama pus la dispoziie. Pentru a pstra un nivel de corectitudine fa de juctorul
uman, AI-ul trebuie s i construiasc strategiile pe baza acelorai informaii pe care le deine
i utilizatorul, evitnd astfel s foloseasc date sau calcule din interiorul sistemului jocului.
34

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.

Ideea general a algoritmului este ca plecnd de la un nod de start i folosind o tehnic


de cutare de tip best-first n lista nodurilor adiacente s se gaseasc drumul de cost minim
pn la nodul final. Alegerea de tip best-first este fcut innd cont de costul fiecrui nod,
numit i costul F. Acesta se calculeaz ca fiind suma dintre costul necesar deplasrii din
punctul de start pn la nodul curent (costul G) i costul estimativ al deplasrii de la nodul
curent la nodul final (costul H). Costul G se determin prin atribuirea unui cost deplasrilor cu
un nod pe orizontal, vertical sau diagonal; se presupune c micrile se pot face doar n
nodurile adiacente. Pentru costul H este folosit o euristic. De-a lungul cutrii algoritmul
reine o list de noduri vizitate n cazul n care calea urmat la un moment dat nu ofer nicio
soluie final.La fiecare pas este ales nodul avnd costul cel mai mic, este adugat n lista de
vizitai i sunt verificate nodurile adiacente. Fiecrui nod din drumul parcurs i este atribuit un
nod printe astfel nct n momentul n care a fost gsit nodul final s se poat reface drumul
ctre poziia iniial (Fig. 26) [16]

Fig. 26 Nodurile parcurse de A* pentru gsirea drumului optimal 3

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

n Worms, algoritmul A* este folosit pentru a verifica existena i eventual a determina


drumul dintre o entitate NPC i inta aleas de acesta. Algoritmul este implementat cu puine
modificri pentru a respecta configuraia lumii create n joc.

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:

La verificarea vecinilor nodului curent dintr-un pas al algoritmului se sare peste


nodurile nord i sud (dac privim nodurile adiacente ca pe un sistem de coordonate
carteziene) ntruct caracterele nu pot efectua astfel de deplasri n contextul lumii
create
Deoarece caracterele sunt capabile s sar peste obstacole, la verificarea vecinilor nu
sunt trecute n revist doar nodurile aflate n imediata apropiere, ci i cele aflate la un
nod distan; de exemplu, dac nodul din est este detectat ca obstacol sunt imediat
verificate nodurile adiacente cu acesta pentru a se confirma dac se poate realiza o
deplasare prin sritur peste acest nod. Aceast modificare permite att ocolirea
obstacolelor, ct i mbuntirea performanei algoritmului n contextul dat. (Fig. 27)

Fig. 27 Algoritmul gsete o posibil sritur peste un obstacol


36

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);

if (current.getRow() == endRow && current.getCol() == endCol) {


backtrackPath(startRow, startCol, endRow, endCol);
return path;
}

openSet.remove(index);
closedSet.add(current);

boolean ne = checkNeighbour(current.getRow(), current.getCol(), -1, +1,


endRow, endCol, 7);
boolean e = checkNeighbour(current.getRow(), current.getCol(), 0, +1,
endRow, endCol, 10);
boolean se = checkNeighbour(current.getRow(), current.getCol(), +1, +1,
endRow, endCol, 7);
boolean sw = checkNeighbour(current.getRow(), current.getCol(), +1, -1,
endRow, endCol, 7);
boolean w = checkNeighbour(current.getRow(), current.getCol(), 0, -1,
endRow, endCol, 10);
boolean nw = checkNeighbour(current.getRow(), current.getCol(), -1, -1,
endRow, endCol, 7);
if (!e && ne)
checkNeighbour(current.getRow(), current.getCol(), 0, +2,
endRow, endCol, 5);
else if (!w && nw)
checkNeighbour(current.getRow(), current.getCol(), 0, -2,
endRow, endCol, 7);

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

Algoritmul de inteligen artificial pentru jocul Worms este structurat cu ajutorul


design pattern-ului strategy. Strategy permite implementarea unei familii de algoritmi care
motenesc aceeai interfa i interschimbarea lor n mod dinamic la runtime. Se poate descrie
astfel comportamentul unei entiti NPC care poate lua decizii diferite de la o rund a jocului
la alta.

Sunt identificate dou strategii n implementarea algoritmului de inteligen artificial


dup care caracterele NPC s poat lua decizii: strategia alegerii inamicului ales ca int de
atac i strategia alegerii armei cu care va fi realizat atacul.

Strategia de alegere a inamicului ce urmeaz s fie atacat conine cinci algoritmi:


inamicul cel mai apropiat ca distan, inamicul cel mai deprtat ca distan, inamicul cu cele
mai multe puncte de via, inamicul cu cele mai puine puncte de via i alegerea unui
caracter n mod aleatoriu. La crearea fiecrui caracter NPC acestuia i este ataat una dintre
aceste strategii, ea rmnnd neschimbat pe tot parcursul jocului. (Fig. 28)

Fig. 28 Strategia de alegere a urmtorului atac


38

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. 29 Strategia alegerii tipului de atac executat

Fig. 30 Captur din timpul jocului; AI execut un atac direct asupra inamicului

4.4 Balansarea dinamic a dificultii

Algoritmul de inteligen artificial trebuie s fie capabil s identifice momentele n


care oponentul nu are rezultate bune n privina jocului sau din contra, demonstreaz abiliti
de nivel superiorca juctor. n funcie de aceste date AI trebuie s i schimbe
comportamentul, scenariile urmate sau parametri ai jocului n mod dinamic pentru a pstra
utilzatorul interesat de la nceputul pn la sfritul jocului.

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

Cu siguran inteligena artificial joac un rol important n construirea unei experiene


de joc complete. Provocarea este implementarea unui algoritm s pun juctorul n dificultate
pstrnd un nivel de corectitudine fa de acesta. n final juctorul trebuie s poat fi capabil
s ias nvingtor.

Algoritmul de inteligen artificial din jocul Worms i bazeaz structura pe ablonul


creaional strategy. Strategiile sunt create n jurul unor algoritmi de determinare a drumului
optim i a unor funcii de scanare a hrii. Aceste strategii sunt ataate entitilor NPC care
sunt astfel capabile s ia decizii n timpul joculi i s ofere o provocare utilizatorului uman.
Algoritmul de inteligen artificial reuete s adapteze dificultatea jocului folosind tehnici
balansare dinamic oferind n final ansa juctorului de a iei nvingtor.
41

Concluzii finale

Concluzii

Lucrarea Worms Joc 2D pentru platforma Android surprinde tendinele existente


pe piaa platformelor de dezvoltare mobil i i propune dezvoltarea unui joc care s
ntruneasc toate caracteristicile unei aplicaii reuite, accentul cznd pe implementarea unui
algoritm de inteligen artificial eficient i care s ofere utilizatorului o provocare i o
experien de joc dinamic.

Contribuii personale

Am reuit prin mbinarea elementelor vizuale i audio cu implementarea simulrii


fizice i a diversitii de aspecte ale jocului (arme, hri, teme) s creez o aplicaie ce ofer o
experien general placut, intuitiv i natural.

Experiena este completat de implementarea algoritmului de inteligen artificial


care ofer impresia general de comportament inteligent al entitii NPC. Pentru obinerea
acestui rezultat am adaptat algoritmul de pathfinding A* la contextul jocului i am
implementat un numr de funcii de scanare a hrii ce ajut la stabilirea celei mai potrivite
strategii de joc pentru AI. Am reuit prin balansarea dinamic a dificultii s adaptez jocul
pentru nivelul de ndemnare a fiecrui juctor, oferind astfel n final posibilitatea obinerii
victoriei.

Direcii de viitor

Pentru viitor exist mai multe direcii n care aplicaia poate fi dezvoltat:

Trecerea la grafic vectorial care s permit scalarea ecranului de joc pe


dispozitive de orice rezoluie fr pierderea calitii;
Introducerea de noi arme i ustensile n arsenalul jocului;
Dup cum a fost prezentat pe parcursul lucrrii, motorul de fizic lucreaz doar cu
poligoane convexe ceea ce face din implementarea unui teren destructibil o sarcin
dificil; aceast funcionalitate poate fi atins prin implementarea unui algoritm de
42

decupare a poligoanelor (sunt decupate poligoanele ce formeaz terenul la un


moment dat, se creeaz unele noi i se nlocuiete structura hrii);
Implementarea modului multiplayer online; aici provocarea va veni att pe partea de
comunicare n reea datorit capabilitilor reduse a dispozitivelor mobile, ct i pe
partea aplicaiei n ceea ce privete sincronizarea simulrii fizice ntre juctori.
43

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

[3] ***, Angry Birds (video game), http://en.wikipedia.org/wiki/Angry_Birds_(video_game), 16.11.2012

[4] ***, Drag Racing, https://play.google.com/store/apps/details?id=com.creativemobile.DragRacing,


16.11.2012

[5] ***, Fruit Ninja, http://en.wikipedia.org/wiki/Fruit_Ninja, 16.11.2012

[6] ***, Subway surfers, http://en.wikipedia.org/wiki/Subway_Surfers, 16.11.2012

[7] ***, Wheres my water, https://play.google.com/store/apps/details?id=com.disney.WMWLite, 16.11.2012

[8] ***, Worms(series), http://en.wikipedia.org/wiki/Worms_(series), 20.11.2012

[9] ***, Worms 2: Armageddon ,http://www.team17.com/games/worms/worms-2-armageddon, 16.06.2013

[10] ***, Android operating system, http://en.wikipedia.org/wiki/Android_(operating_system), 05.03.2013

[11] ***, What is Android?, http://www.engineersgarage.com/articles/what-is-android-introduction, 05.03.2013

[12] Rick Rogers, Learning Android game programming, 01.12.2011

[13] Erin Catto, About Box2D, http://box2d.org/about, 10.03.2013

[14] Aurelian Ribon, Physics Body Editor, http://www.aurelienribon.com/blog/projects/physics-body-editor/,


11.03.2013

[15] Ed Welch, Designing AI algorithms for turn based strategy games,


http://www.gamasutra.com/view/feature/129959/designing_ai_algorithms_for_.php, 15.06.2013

[16] Patrick Lester, A* Pathfinding for Beginners, http://www.policyalmanac.org/games/aStarTutorial.htm,


16.06.2013

Vous aimerez peut-être aussi