TFG EN ENGINYERIA INFORMAgraveTICA ESCOLA DrsquoENGINYERIA (EE) UNIVERSITAT AUTOgraveNOMA DE BARCELONA (UAB) 1
Creacioacute drsquoun videojoc mogravebil addictiu per a Android amb Unity
Nil Pascual Fernaacutendez
ResummdashPossiblement un dels reptes meacutes difiacutecils per un programador de videojocs eacutes aconseguir que el videojoc sigui
addictiu i agradi als usuaris finals En aquest projecte busquem implementar un videojoc addictiu per a Android des de la presa
de requisits fins la publicacioacute de lrsquoaplicacioacute a la Google Play Store Per aconseguir aquest objectiu srsquoha entrevistat a un
psicograveleg expert en la mategraveria i a partir de les seves respostes hem extret uns objectius que la nostra aplicacioacute ha de complir
per a considerar-se addictiva Lrsquoaplicacioacute ofereix diversos modes de joc immersiu en 3D a lrsquousuari on cada un conteacute una
mecagravenica i objectiu diferent Tambeacute conteacute un llistat drsquoobjectius a complir una taula de les millors puntuacions dels usuaris per a
cada joc i una botiga per a canviar visualment els diferents components del joc al gust de lrsquousuari entre altres
Paraules claumdashvideojoc Google Play Store Android C Unity programacioacute mogravebil addictiu arcade joc
Abstractmdash Possibly one of the most difficult challenges for a video game programmer is getting the video game addictive and
appealing to end users In this project we seek to implement an addictive video game for Android from the taking of
requirements to the publication of the application in the Google Play Store To achieve this goal a psychologist an expert in
the field was interviewed and based on his answers we extracted some objectives that our application must meet in order to
be considered addictive The application offers several immersive 3D game modes to the user each of which contains a
different mechanics and objective It also contains a list of goals to be met a table of the best user scores for each game and a
store to visually change the different components of the game to the users taste among others
Index Termsmdashvideo game Google Play Store Android C Unity mobile programming addictive arcade game
mdashmdashmdashmdashmdashmdashmdashmdashmdashmdash mdashmdashmdashmdashmdashmdashmdashmdashmdashmdash
1 INTRODUCCIOacute
Els jocs han existit al llarg de la histograveria de la humanitat
Els meacutes comuns han estat tradicionalment els de taula i de saloacute Els escacs les cartes o el billar han estat presents per molt temps
No seragrave fins a larribada de lelectrogravenica i la informagraveti-ca quan neixi el videojoc Lany 1973 va aparegraveixer en locals puacuteblics com bars aeroports etc el primer joc arca-de totalment electrogravenic el Pong Malgrat de la seva enor-me senzillesa va causar un gran enrenou en legravepoca a causa de que no disposava de parts mecagraveniques mogravebils tot el joc estava implementat en un microprocessador i es desenvolupava a la pantalla dun televisor
A comenccedilament dels 90s i amb laparicioacute dels PC nei-xen els primers jocs en 3D (Wolfenstein 3D Catacombs 3D) Es van aprofitar les capacitats tegravecniques que oferien els PC per desenvolupar noves tegravecniques per la realitzacioacute de videojocs com el mapeig de textures ombres dinagravemi-ques scroll etc
Amb levolucioacute tecnologravegica les companyies van co-menccedilar a plasmar-ho en els seus productes lera del 3D havia arribat i estava en el seu moment meacutes important Nintendo al 1996 va treure la seva consola Nintendo 64 i
al costat della va llanccedilar el Mario64 joc amb el qual va revolucionar el concepte de 3D amb gragravefics i textures realistes animacions meacutes fluides i una interaccioacute amb lusuari meacutes addictiva En aquell mateix any Sony va llanccedilar la seva primera consola la Playstation que tenia un reproductor de CDs lo qual comportava que els vi-deojocs es gravessin en aquest format per a la seva execu-cioacute
Entre tota aquesta guerra de consoles i ordinadors va aparegraveixer el telegravefon mogravebil i aixiacute una nova oportunitat per a la induacutestria El primer joc per mogravebil va ser llanccedilat per Nokia avui propietat de Microsoft Era el joc de lsquosnakersquo la serp que havia de menjar quadrats
El joc era molt senzill Mentre la gent es sorprenia amb els jocs de la Nintendo amb els seus gragravefics millorats tot dins dun cartutx Nokia amb aquest senzill joc canviava totalment luacutes dels mogravebils per sempre
El nostre joc lsquoGravity Pongrsquo eacutes un videojoc gratuiumlt que
es pot descarregar per a Android des de la PlayStore gra-tuiumltament el qual srsquoha desenvolupat per a entendre meacutes drsquoaprop aquest fenomen Com un joc aparentment sim-ple pot triomfar tant Que es necessita per a desenvolu-par-lo Realment hi ha al darrere un plantejament lsquosim-plersquo mdashmdashmdashmdashmdashmdashmdashmdashmdashmdashmdashmdashmdashmdashmdashmdash
bull E-mail de contacte nilpascual8gmailcom
bull Mencioacute realitzada Enginyeria del Software
bull Treball tutoritzat per Gemma Saacutenchez Albaladejo (Departament de Ciegravenci-es de la Computacioacute)
bull Curs 201920 ldquoMesrdquo de 2020 Escola drsquoEnginyeria (UAB)
2 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
2 ESTAT DE LrsquoART
Quan parlem de videojocs addictius el primer que ens ve a la ment soacuten jocs drsquoegravexit com el lsquoPongrsquo [25] lsquoFlappy birdsrsquo [26] o lsquoCandy crushrsquo [27] Tot i la seva senzilla elaboracioacute i mecagravenica no es pot negar que soacuten jocs amb un egravexit ro-tund al mercat i jugats diagraveriament per milions de perso-nes
A quegrave eacutes degut Bagravesicament a la diversioacute que ofereix
en poc temps partides ragravepides puntuacions que compa-rar amb amics i mecagraveniques fagravecils drsquoentendre per a to-thom
En el cas de lsquoGravity Pongrsquo (El nostre joc) no es busca
igualar el nivell de les visuals ni animacions drsquoaquests jocs El que es busca es desenvolupar un joc des de lrsquoinici que contingui les mateixes caracteriacutestiques i prestacions que aquests jocs tan addictius per entendre de meacutes a prop com uns jocs aparentment tant simples tenen enre-re un plantejament drsquoalta complexitat que els fa arribar a ser els jocs amb meacutes egravexit de la historia
3 OBJECTIUS
Lrsquoobjectiu principal del projecte eacutes realitzar el proceacutes de desenvolupament i disseny des de zero drsquoun videojoc addictiu per al sistema operatiu lsquoAndroidrsquo realitzat amb el motor gragravefic Unity Aixograve comportaragrave una presa de requi-sits on es contactaragrave amb experts sobre lrsquoaddiccioacute per investigar quins aspectes es podrien traduir a un videojoc del gegravenere Tambeacute srsquohauran de realitzar dissenys de lrsquoentorn on srsquoaprofitaran per a realitzar diferents tests amb potencials usuaris (lsquofirst-clickrsquo test [7]) i srsquoutilitzaran elements artiacutestics gratuiumlts [22] [23]
El segon objectiu seragrave el desenvolupament del videojoc
i lrsquoelaboracioacute del codi amb el llenguatge de programacioacute C desenvolupat amb el motor gragravefic lsquoUnityrsquo Srsquoaplicaran diferents tests a lrsquoaplicacioacute per a provar la seva seguretat i consistegravencia Dins drsquoaquest objectiu es vol desenvolupar
bull Una pagravegina principal amb tres opcions de menuacute di-ferents Histograveria Lliure i Tenda i dos petits botons que serviran per a visualitzar els objectius del joc i les taules de puntuacions
bull Un sistema de joc basat en el clagravessic joc lsquoarcadersquo i primer videojoc de la histograveria de lsquoPongrsquo perograve apor-tant un toc meacutes modern innovador i entretingut
bull Un mode histograveria on seguint una divertida histograveria amb diagravelegs entre personatges haurem de superar diferents pantalles seguint la mecagravenica explicada al punt anterior perograve amb petites variacions Constaragrave de 5 nivells amb dificultat progressiva i enemics amb intelmiddotligegravencia artificial
bull Un mode lliure on ens trobem amb lrsquoessegravencia del joc Al contrari del mode histograveria en aquest mode no ens molestaragrave cap enemic constaragrave de 5 nivells de joc diferents on cadascun canviaragrave totalment la forma de jugar la partida i on lrsquoobjectiu seragrave fer la magravexima puntuacioacute possible per rivalitzar amb els nostres amics Es guardaragrave la millor puntuacioacute acon-seguida a cada nivell i per a poder jugar es necessita-ran tiquets que si ens quedem sense haurem de vi-sualitzar un anunci per aconseguir-ne meacutes
bull Un sistema de millores aleatograveries (boost) que aparei-
xeran per pantalla oferint diferents efectes que can-viiumln el transcurs e la partida
bull Una botiga on trobarem textures visuals que po-drem comprar per a personalitzar tots els objectes del joc al nostre gust Perograve no seragrave fagravecil aconseguir-ho els diferents aspectes valdran monedes que no-meacutes es podran aconseguir jugant al mode lliure on cada punt aconseguit seragrave una moneda per utilitzar a la botiga
bull I finalment un apartat drsquoobjectius i marcador de puntuacions on es podran visualitzar diferents ob-jectius a completar dins del joc i les puntuacions dels nostres amics als diferents modes de joc respecti-vament
Finalment un cop lrsquoaplicacioacute sigui testejada interna-
ment el tercer objectiu eacutes penjar-la a la plataforma Play Store drsquoAndroid on qualsevol usuari la podragrave descarre-gar gratuiumltament
4 METODOLOGIA
Per al desenvolupament drsquoaquest projecte srsquoha seguit la metodologia de lsquoRapid Prototypingrsquo [1] El lsquoRapid prototypingrsquo o disseny ragravepid se centra en una representacioacute daquells aspectes del programari que seran visibles per al client o lusuari final Aquest disseny con-dueix a la construccioacute dun prototip el qual eacutes avaluat pel client contiacutenuament per a una retroalimentacioacute Gragravecies a aquesta continua retroalimentacioacute es refinen els requisits del programari que es desenvoluparagrave Aixograve permet que al mateix temps el desenvolupador entengui millor el que sha de fer i el client vegi resultats a curt termini
Les etapes a seguir en retroalimentacioacute tal com veiem
a la figura 1 seran
bull Comunicacioacute
bull Pla ragravepid
bull Modelatge i disseny ragravepid
bull Construccioacute del prototip
bull Desenvolupament i entrega retroalimentacioacute Quegrave srsquoaplicaran per cada aspecte a desenvolupar del
joc
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 3
Fig 1 Rapid prototyping
Aquesta metodologia eacutes molt uacutetil per a un projecte on
es tenen clars els objectius generals del software perograve no srsquoidentifiquen clarament els seus requisits (lrsquoestat inicial del nostre projecte) Tambeacute seragrave altament uacutetil per a provar que el joc eacutes addictiu ja que amb un constant contacte amb els usuaris hi hauragrave un feedback molt gran en tot moment Aquesta metodologia portaragrave com a objectiu final un software de qualitat gragravecies a la bona definicioacute de requi-sits que sersquon podragrave extreure i el descart de funcionalitats o aspectes no necessaris en el projecte que endarreririen les entregues
5 PLANIFICACIOacute
51 Planificacioacute de les tasques
La primera setmana del projecte es van dedicar iacutente-grament a la planificacioacute del projecte Tot i que pot sem-blar que soacuten massa dies per a aquesta tasca es va consi-derar fonamental que la planificacioacute inicial fos la meacutes encertada possible pel bon devenir del projecte
El projecte el podem dividir principalment en sis eta-
pes o tasques principals 1 Definicioacute del projecte consisteix en la definicioacute de
lrsquoabast del projecte i la planificacioacute de les tasques que srsquohan de realitzar per tal drsquoassolir els objectius
2 Estudi sobre lrsquoaddiccioacute aquest estudi consisteix a concertar una entrevista amb un psicograveleg expert en la mategraveria per a formular-li un seguit de preguntes extreurersquon les primeres conclusions i objectius en clau de requisits que necessitaragrave el projecte Tant les preguntes formulades com les respostes extre-tes es poden trobar al document adjunt ldquoEntrevis-ta amb un psicogravelegrdquo
3 Presa de requisits aquesta etapa es considera drsquoalta importagravencia per al desenvolupament del projecte i consisteix que a partir de lrsquoetapa anteri-or i una investigacioacute personal sobre el tema a trac-tar elabora un document complet de requisits Es considera drsquoalta importagravencia ja que amb un bon document i unes bones pautes se sabragrave en tot moment el que srsquoha de fer i com srsquoha de fer Els requisits complets es poden trobar al document
adjunt ldquoDesenvolupament del jocrdquo al CAPIacuteTOL 1 4 Disseny i Test aquesta etapa consisteix que a par-
tir del document de requisits extret elaborar un document de disseny del videojoc Aquest docu-ment conteacute tant tota la part artiacutestica (Guioacute histograveria controls personatges) com la part de disseny del software (Diagrama de classes targetes crc dia-grames de sequumlegravencia disseny de interfaccedil) I a partir dels primers esbossos de interfaccedil realit-zar tests de first-click-test per a saber si la interfaccedil era correcte i intuiumltiva El document complet de disseny es pot trobar a lrsquoarxiu adjunt ldquoDesenvolupament del jocrdquo al CAPIacuteTOL 2
5 Desenvolupament de lrsquoaplicacioacute implementacioacute i testeig del videojoc a partir dels apartats anteriors
6 Pas a produccioacute un cop desenvolupada i testejada lrsquoaplicacioacute es pujaragrave una versioacute estable a la plata-forma Play Store
7 Documentacioacute del projecte redaccioacute del dossier del projecte i preparacioacute de la presentacioacute
A la Taula 1 podem veure les tasques que acabem
drsquoexplicar amb les hores planificades per la seva resolucioacute i els rols que participen en cada una drsquoelles Pel nostre cas el Project Manager el dissenyador el programador i el tester soacuten la mateixa persona (lrsquoestudiant)
TAULA 1
ROLS PER TASCA
Tasca Temps(hores) Rols participants
Definicioacute 20 Project Manager
propietari de lrsquoapp
Estudi sobre lrsquoaddiccioacute 20 Dissenyador psicograve-
leg
Presa de requisits 40 Dissenyador
Disseny i test 30 Dissenyador usuaris
de test
Desenvolupament de
lrsquoaplicacioacute
150 Programador tester
propietari de lrsquoapp
Pas a produccioacute 10 Tester propietari de
lrsquoapp
Documentacioacute del
projecte
30 Project Manager
TOTAL 300
I per finalitzar veurem quin seria el cost aproximat que suposaria pel client aquets projecte A la Taula 2 mos-trem el cost dels sous dels treballadors segons el seu rol i a la Taula 3 el cagravelcul del cost final A lrsquohora de calcular el cost final afegim uns costos indirectes corresponents als desplaccedilaments per les reunions amb el client No tindrem en compte el cost drsquoadquisicioacute dels ordinadors utilitzats pels treballadors (suposarem que soacuten de pro-pietat) ni les llicegravencies dels programes de desenvolu-pament utilitzats (ja que tot eacutes software lliure o sense cap cost)
4 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
TAULA 2
COST MONETARI
Rol treballador Cost (euroh) Temps (h) Cost total
(euro)
Project
Manager
50 50 2500
Dissenyador 25 90 2250
Programador 20 150 3000
Tester 20 30 600
TOTAL 300 8350
Per tant el cost final del projecte despreacutes drsquoaplicar un
20 de benefici seria
TAULA 5
COST TOTAL
Tipus de cost Cost (euro)
Cost Directe 8350
Benefici +20
TOTAL 10020
Hem de tenir en compte que el cost final obtingut se-
gurament no seria tant elevat La planificacioacute de les hores srsquoha realitzat tenint en compte que no tinc gaire experiegraven-cia a lrsquohora de treballar en projectes de programacioacute drsquoaquest abast El meacutes probable es que a una empresa especialitzada en el desenvolupament software no li cal-guin tantes hores per a poder assolir els objectius esta-blerts
Al apegravendixs A1 i A2 trobem tota la informacioacute sobre la planificacioacute de les tasques En el primer trobem la planifi-cacioacute inicial que es va realitzar i en el A2 la planificacioacute final que ha sorgit amb les condicions en les que srsquoha treballat
52 Avaluacioacute de Riscos
Un altre aspecte fonamental de la planificacioacute drsquoun projecte eacutes lrsquoavaluacioacute dels possibles riscos que poden comprometre el correcte desenvolupament del projecte Estudiant amb anterioritat quines poden ser les principals amenaces es poden trobar possibles solucions o fins i tot arribar a evitar-los
bull Un dels possibles riscos principals que vagraverem tenir en compte era la falta drsquoexperiegravencia amb el motor gragravefic ja que no srsquohavia treballat dins del grau Per aixograve es va treballar des de un principi en estudiar-lo a partir de la documentacioacute [17] [20] [21] [24]
bull Un segon risc podia ser la lsquono addiccioacute de lrsquoaplicacioacutersquo que aquesta no arribeacutes a ser un entorn que cridi lrsquoatencioacute i caigueacutes en la monotonia i sim-plicitat Per aixograve es va treballar en la presa de re-quisits amb psicograveleg per a que el joc tingueacutes totes les eines drsquoun videojoc drsquoaquesta classe
bull Per acabar un aspecte de risc per a la finalitzacioacute del projecte i molt important que es va tenir en
compte era no aconseguir pujar lrsquoaplicacioacute a la Play Store Degut a la situacioacute actual amb el CO-VID-19 informen a la pagravegina que cada revisioacute pot portar un temps de 7 o meacutes dies degut a questa si-tuacioacute Aquest aspecte incontrolable podia deri-var a la no pujada de lrsquoapp o a no aconseguir pujar una versioacute sense errors importants Per aixograve com veiem a la planificacioacute final al annex A2 srsquoha avan-ccedilat el proceacutes de desenvolupament per a tenir meacutes temps en aquest aspecte
6 DESENVOLUPAMENT
Per a explicar el desenvolupament de lrsquoaplicacioacute amb la magravexima exactitud possible srsquoaniragrave referenciant al docu-ment adjunt ldquoDesenvolupament del Jocrdquo un document de meacutes de 70 pagravegines que conteacute tot tota la informacioacute relacionada amb el projecte de inici a final el qual srsquoha anat redactant paralmiddotlelament amb el transcurs drsquoaquest
61 Estudi sobre lrsquoaddiccioacute
El primer pas per a comenccedilar el projecte ha sigut assegu-rar-se que aquest conteacute els aspectes clau per a que com-pleixi els objectius plantejats Per aconseguir-ho es va formalitzar una reunioacute amb una psicograveloga experta en la mategraveria
La entrevista cal destacar-la com a molt satisfactograveria gragravecies a una bona recerca del tema [2][3] es van quumlestio-nar aspectes generals al psicograveleg com Que eacutes lrsquoaddiccioacute per a tu Consideres que hi ha diferents tipus drsquoaddiccioacute De les que es va extreure una gran perspectiva sobre el punt de vista de lrsquoentrevistat i per exemple es va aconse-guir que definiacutes la nostra aplicacioacute com a tipus drsquoaddiccioacute no destructiva un gran pas ja que era un dels objectius del treball que es classifiqueacutes com a addictiva
Amb altres quumlestions com Quins soacuten els elements clau per considerar un joc addictiu O Quines caracteriacutestiques ha drsquooferir a primera vista per a seguir explorant-lo Srsquoha aconseguit extreure una part emocional molt important de lrsquoaddiccioacute que inclou els sentiments Srsquoha vist que aquests soacuten molt important que es produeixin durant el joc tant si soacuten bons com dolents Gragravecies a aquesta part es van prendre conclusions com que el sistema de ragraven-quing de puntuacions del joc deixaria de ser local per a ser global i es va concloure desenvolupar un guioacute per al mode historia el qual inclou diagravelegs amb humor entre altres
Es poden trobar la totalitat de lrsquoentrevista al document adjunt ldquoEntrevista amb un Psicogravelegrdquo i el guioacute final al document adjunt Desenvolupament del Jocrdquo a lrsquoapartat 212 ldquoLlibret i guioacuterdquo
62 Resum del Joc
El funcionament principal del videojoc eacutes semblant al joc de Pong [25] perograve respectant certes distagravencies Tot i que el joc compta amb 10 escenaris amb les seves progravepies caracteriacutestiques si meacutes no la mecagravenica principal del joc
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 5
consta drsquouna pala de joc que lrsquousuari mouragrave horitzontal-ment per a evitar que una pilota caigui al terra Tambeacute compta amb tres murs als marges de la pantalla que a part de sumar punts quan siguin tocats amb la pilota canviaran de color segons els cops consecutius que han sigut golejats Si superen els 3 cops consecutius el mur en quumlestioacute desapareixeragrave fent impossible el seu contacte amb la pilota A meacutes diferents objectes apareixeran alea-tograveriament durant la partida per a oferir-nos efectes espe-cials que ens ajudaran o ens faran la partida meacutes compli-cada durant un cert temps
Al acabar cada partida obtindrem una puntuacioacute que es mostraragrave en un marcador de puntuacions per a compa-rar-la amb la dels nostres amics A part tota la informacioacute del joc es guardaragrave al dispositiu guardant el progreacutes en tot moment
Tot i que hem dit abans que el joc compta amb 10 es-cenaris diferents aquests es divideixen en dos modes de joc Historia i Lliure
El mode historia compta amb una petita trama que in-volucraragrave al jugador per a salvar el planeta on lrsquoobjectiu seragrave acabar amb els diferents enemics dels 5 nivells que amenaccedilaran al jugador
Lrsquoobjectiu del mode lliure seragrave en canvi aconseguir la magravexima puntuacioacute possible drsquoentre 5 modes de joc de mecagraveniques i dificultats diferents
Tot el progreacutes que aconseguim al joc es plasmaragrave en forma de monedes que podrem invertir per a personalit-zar amb diferents aspectes els objectes del joc
63 Presa de Requisits
Un cop fet lrsquoestudi per a elaborar el document de re-quisits srsquohan consultat moltes fonts drsquoinformacioacute [15] [16] historia dels videojocs [4] jocs semblants arquitectures de hardware que podria suportar el joc [5] estagravendards de desenvolupament documents de requisits[6] i documen-tacioacute[17] [18] [20] Vull tornar a destacar la importagravencia de lrsquoentrevista per a poder realitzar correctament aquest document oferint uns objectius clars Amb aquest treball fet vaig comenccedilar a redactar els requisits que es troben al ldquoCAPIacuteTOL 1rdquo del document adjunt ldquoDesenvolupament del jocrdquo Aquest conteacute molts apartats entre ells dos de clau
- Els requeriments del sistema On es parla sobre el propogravesit del sistema a desenvolupar el seu objec-tiu principal i les seves funcions Aquest apartat conteacute aspectes molt concrets del desenvolupa-ment com que el joc seragrave desenvolupat en castellagrave la connectivitat o requeriments de hardware miacute-nims per al funcionament del joc i conteacute un petit estudi sobre la restriccioacute drsquoedat del joc PEGI 3 Finalment conteacute una llista completa tant dels re-queriments funcionals del sistema com dels no funcionals on srsquoexplica detalladament cada funcioacute que podragrave oferir el joc com per exemple el mode historia
o Suportaragrave 5 escenaris diferents o Inclouragrave un tutorial interactiu amb
lrsquousuari o A cada escenari apareixeragrave un enemic di-
ferent amb habilitats moviments i IA propis
- Lrsquoanagravelisi del sistema En aquesta segona seccioacute clau del document a partir de la llista de requeri-ments esmentada en lrsquoapartat anterior es fa una anagravelisi preliminar del producte resumint totes les funcionalitats que contindragrave i els efectes que pro-duiragrave cada una en el transcurs de lrsquoaplicacioacute A partir drsquoaquesta primera anagravelisi srsquohan elaborat diferents diagrames de casos drsquouacutes on es poden veure molt visualment les interaccions que pot fer lrsquousuari amb el sistema
Fig 2 Diagrama de Navegar per la tenda
Com veiem a la Figura 2 drsquoexemple podem observar
totes les opcions drsquointeraccioacute que teacute lrsquousuari un cop estagrave dins la botiga Es poden trobar tots els casos drsquouacutes al do-cument adjunt ldquo Desenvolupament del Jocrdquo a lrsquoapartat 122 ldquoCasos drsquouacutesrdquo
Finalment a partir dels diagrames de casos drsquouacutes srsquoha elaborat una fitxa com la de la figura 3 de cada un on eacutes detalla les precondicions que srsquohan de complir pregravevia-ment per a que aquest es pugui dur a terme lrsquoiniciador que executa aquest cas drsquouacutes i el curs drsquoaccions que ocor-reran a partir drsquoaquest iniciador
Nom del Cas drsquoUacutes Comprar una textura per la pilota
Requeriment(s) Explorat(s) 681516
Precondicioacute(ns)
- Lrsquousuari ha seleccionat lrsquoopcioacute del menuacute ldquoTendardquo
Iniciador(s) Lrsquousuari ha polsat sobre el botoacute de tenda
Curs drsquoAccioacute Principal
1 Lrsquousuari selecciona la tenda de la pilota
2 Lrsquousuari fa scroll fins a seleccionar una textura que li agradi i
la polsa
3 Es comprova si ja teacute comprada aquesta textura (no la teacute)
4 Es comprova si teacute suficients monedes per adquirir la textura
(en teacute)
5 Lrsquousuari adquireix la textura srsquoelimina el seu preu per a in-
dicar-ho i es carrega la textura a la pilota de mostra de la ten-
da i a la que utilitzarem en qualsevol partida
Curs(os) Alternatiu drsquoAccioacute
3b Es comprova si ja teacute comprada aquesta textura (si la teacute)
4b Es carrega la textura a la pilota de mostra de la tenda i a la que
utilitzarem en qualsevol partida
4c Es comprova si teacute suficients monedes per adquirir la textura
(no en teacute)
5c Es mostra un aviacutes que lrsquousuari no teacute suficients monedes i no
es desbloqueja la textura
Fig 3 Descripcioacute Cas drsquouacutes ldquoComprar textura per la pilotardquo
6 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
64 Disseny i Test
Un cop redactats els requisits vaig passar a redactar el ldquoCAPIacuteTOL 2 DISSENY I CONSTRUCCIOacute DEL VIDEO-JOCrdquo que conteacute les seguumlents seccions clau
- Disseny Artiacutestic Conteacute tota la informacioacute per a en-tendre el concepte artiacutestic del videojoc Tota la his-toria en la que es desenvolupa aixiacute com un guioacute complet de tots els diagravelegs del mode historia entre altres Una seccioacute interessant que apareix eacutes la explicacioacute dels controls que hauragrave drsquoutilitzar lrsquousuari i perquegrave srsquohan fet aixiacute on es concreta que el joc nomeacutes con-tindragrave dos tipus de moviments el toc amb el dit i lrsquoscroll lateral Al simplificar el joc a dos tipus de moviments srsquoaconsegueix molta senzillesa que a nivell pragravectic es tradueix a un facilitat molt gran en lrsquoaprenentatge drsquouacutes Finalment conteacute una descripcioacute completa de tots els boosts(objectes aleatoris) que intervenen a les partides i els efectes que tindran
- Disseny del Software En aquesta seccioacute srsquoha desenvolupat un diagrama de classes i escenes a partir de tots els casos drsquouacutes Srsquoha optat per incloure les escenes (progravepies del motor Unity) dins drsquoaquest diagrama ja que proporcionen molta meacutes facilitat a lrsquohora drsquoentendre la relacioacute de les classes ja que algunes no intervenen entre siacute directament sinoacute a partir drsquouna escena especiacutefica
Fig 4 Diagrama de classes i escenes
Amb el diagrama definit es descriuen la funcionalitats de cada classe junt amb els seus atributs propis i les funcions que la formen
Definides les funcions de les classes srsquohan descrit els diagrames de sequumlegravencia molt importants per a observar el flux de les diverses accions directes que pot realitzar lrsquousuari amb la interfaccedil I en consequumlegravencia com reacciona el motor a partir de cada accioacute amb les escenes arxius de
guardat i els serveis de google Ha sigut molt uacutetil per a realitzar un desenvolupament correcte
Fig 5 Diagrama de Sequumlegravencia de la primera execucioacute del Joc
La seccioacute inclou un esboacutes de tota la interfaccedil que interactua amb lrsquousuari Per aconseguir un bon resultat drsquoaquesta es van preparar unes imatges que reconstruiumlen la interfaccedil i es va fer un first-click test [7] amb lrsquoeina web lsquoopti-malworkshoprsquo A causa de la versioacute gratuiumlta srsquohan realitzat 3 estudis dife-rents ja que lrsquoeina limitava la quantitat de preguntes per estudi [8] [9] [10] Gragravecies a aquesta eina amb cada estudi realitzat hem obtingut uns resultats molt visuals que ens han servit per conegraveixer realment si els menuacutes estaven ben estructurats El resultat com podem veure a les imatges de la seccioacute A2 i A3 del apegravendix ha sigut molt satisfactori i no srsquoha necessitat de realitzar cap canvi a la interfaccedil de lrsquousuari Podem dir que el plantejament drsquouna interfaccedil molt senzi-lla i intuiumltiva ha sigut correcte
- Implementacioacute del software Per acabar questa
seccioacute conteacute tots els elements artiacutestics que interve-nen en el joc (models 3D sprites) totes les escenes i la icona que es mostraragrave a la play store
65 Desenvolupament de LrsquoAplicacioacute
651 Implementacioacute del Menuacute Principal
Respecte a la implementacioacute del videojoc es va comenccedilar per elaborar el menuacute principal Per fer-ho es va iniciar el desenvolupament del script ldquoGameManagerrdquo Srsquoha de dir que tots els components visuals del joc srsquohan creat dins drsquouna estructura canvas [13] de Unity per a crear una interfaccedil responsive [12]
Script GameManager Per a crear aquest script encarregat de guardar totes les dades srsquoha utilitzat els PlayerPrefs [14] de unity Soacuten funcions del tipus clau-valor on amb un id pots guardar un valor a un espai de memograveria del dispositiu Aquest GameManager com srsquoexplica a la documentacioacute
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 7
del desenvolupament del joc srsquoencarrega tant de crear lrsquoarxiu de guardat quan srsquoinicialitza per primer com el joc com de carregar els valors drsquoaquests un cop ja srsquoha jugat meacutes drsquoun cop Amb el GameManager com a estructura principal srsquoha comenccedilat a desenvolupar lrsquoescena del Menuacute principal Escena lsquoMenuacutersquo ndash Menuacute principal Per aquest menuacute principal que veiem a la figura 6 es buscava una sensacioacute drsquoimmersioacute al joc que et fes sentir a lrsquoespai Per aixograve es va decidir dividir les 4 parts principals drsquoaquest menuacute Menuacute principal mode lliure mode histo-ria i botiga en diferents punts de lrsquoespai 3D formant una circumferegravencia Aixograve ha permegraves desenvolupar la seguumlent foacutermula per a la cagravemera de joc que ofereix una sensacioacute de flotar a lrsquoespai cameraTransformrotation = QuaternionSlerp (camera-TransformrotationcameraDesiredLookAtrotation CAMERA_TRANSITION_SPEED TimedeltaTime) Amb aquesta foacutermula estem assignant al valor de rotacioacute de la cagravemera del joc una nova rotacioacute entre la seva posi-cioacute actual (cameraTransformrotation) i la posicioacute destiacute (cameraDesiredLookAtrotation) Gragravecies a la funcioacute slerp() realitzaragrave un moviment molt lleuger seguint la velocitat que li indiquem Per a veure millor aquest efecte de cagravemera es pot consul-tar el viacutedeo adjunt ldquoDEMO_GRAVITY_PONGrdquo
Escena lsquoMenuacutersquo ndash Mode Lliure El seguumlent pas ja amb la cagravemera a punt ha sigut desenvo-lupar el llistat de nivells del mode lliure que trobem a la figura 7 Ha sigut una decisioacute difiacutecil i bastant creativa ja que es volia una llista de nivells molt visual i vaig decidir mostrar els nivells com a imatges Investigant vaig trobar que mitjanccedilant codi pots trobar i guardar a variables els sprites que estiguin dins de la carpeta que crea unity de ldquoResourcesrdquo Amb aquesta tegravecnica i un Scroll Rect [11] podem passar els nivells amb un scroll lateral Despreacutes srsquoha afegit la imatge i el text dels tiquets a la part inferior del nivell i el regravecord del nivell a sobre drsquoaquest Per finalitzar srsquoha creat el botoacute de tornar per a que la cagravemera torni a rotar fins la posicioacute del menuacute principal Escena lsquoMenuacutersquo ndash Botiga La botiga com observem ala figura 8 manteacute una estruc-tura semblant al llistat de nivells perograve amb diferegravencies notables En comptes de carregar varies imatges carrega una imat-ge sencera amb totes les textures i la divideix en textures de 256x256 per a una millor optimitzacioacute Teacute un indica-dor monedes del joc i teacute un botoacute extra per a canviar entre la tenda de textures de la pilota i de la lluna de joc
Fig 6 Menuacute Principal
Fig 7 Mode lliure
Escena lsquoMenuacutersquo ndash Mode Histograveria El llistat de nivells del mode histograveria no utilitza la tegravecnica de cagraverrega de imatges pels nivells sinoacute que srsquohan utilitzat uns models gratuiumlts de planetes 3D Cada planeta forma un nivell amb el seu nom i el seu regravecord de temps propi Un cop acabada tota la visual de lrsquoescena del menuacute srsquoha creat el script que el gestionaria anomenat ldquoMainMenurdquo
Fig 8 Botiga
Figura 9 Mode Histograveria
Script MainMenu Aquest script srsquoencarrega de carregar i gestionar els com-ponents de lrsquoescena del menuacute del llistat de nivells i la botiga Primer de tot carrega gragravecies als playerPrefs guardats tots els textos de regravecords de puntuacioacute de cada nivell els tiquets les monedes i les textures comprades de la pilota i lluna de joc que lrsquousuari havia obtingut Srsquoha creat un sistema tant per al llistat de nivells com a la botiga de bloqueig on al llistat de nivells es bloquegen tots els botons dels jocs menys del primer fins que en aquest no srsquohagi obtingut una puntuacioacute miacutenima de 5 i a la botiga es guarda una matriu de desbloquejos que indica quines textures srsquohan comprat i ja no apareixeragrave el seu preu i quines no Tambeacute srsquoencarrega de a la botiga mostrar com quedaria la textura comprada a la pilota o a la lluna de joc i apli-car-la per a quan juguem qualsevol partida Aquest script tambeacute carrega la muacutesica del menuacute
8 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
Script History_Levels Aquest script srsquoencarrega de la gestioacute del menuacute ldquoHISTO-RIArdquo Srsquoha creat un sistema de visualitzacioacute on el jugador can-via de nivell mitjanccedilant dues fletxes i un jugador no po-dragrave accedir a un nivell fins que hagi completat lrsquoanterior Junt amb aquest sistema de bloqueig segons el nivell on es situiuml el jugador es mostraragrave el millor temps en que lrsquoha acabat (si es que hi ha) i el nom del nivell Amb aquests components descrits fins ara ja tindriacuteem tot el menuacute principal acabat Un cop acabat el menuacute srsquoha passat a crear els nivells del mode lliure
652 Implementacioacute del Mode Lliure
El mode lliure consta de 5 nivells amb mecagraveniques de joc variants perograve compartint lrsquoestructura principal del joc Per a explicar com srsquoha desenvolupat aquest mode srsquoutilitzaragrave de referegravencia el mode de joc ldquoCLASSICrdquo el mode de joc original on primer srsquoexplicaran els compo-nents de lrsquoescena i despreacutes els scripts que la componen Una part molt important drsquoaquestes escenes eacutes el disseny seguint el esquema senzill i visual del joc srsquoha passat per diversos plantejaments murs reals una barra plana Finalment despreacutes drsquoun extens plantejament es va deci-dir aplicar el disseny que veiem a la figura 10 En aquest disseny podem observar que els murs soacuten llums LED Aquesta decisioacute srsquoha considerat la millor ja que oferia tota la informacioacute que necessita el jugador dels murs sense ser un objecte molt gran i amb molt detall Finalment srsquohan utilitzat imatges de la temagravetica espacial per a completar el fons de lrsquoescena Escena CLASSIC Lrsquoescena drsquoaquest mode de joc la componen directament la pilota la lluna de joc els murs de joc la puntuacioacute el menuacute de pausa i els tiquets disponibles Perograve realment hi ha molts meacutes components secundaris que no srsquoentraragrave en detall a explicar-los perograve que valia la pena mencionar-los com uns murs secundaris invisibles que srsquoutilitzen per detectar si el jugador perd quan ha destruiumlt un mur ob-jectes que solament es mostren quan srsquoagafa un boost llums que segueixen els objectes per crear un efecte pri-mer pla la interfaccedil del menuacute de pausa Presentats aixiacute els components de lrsquoescena eacutes meacutes interes-sant veure els scripts que afecten a aquests components Script ClassicBall Aquest script que controla la pilota eacutes el meacutes important de lrsquoescena ja que gestiona tot el que pot tenir contacte amb ella La funcioacute meacutes important drsquoaquest script eacutes sens dubte OnCollisionEnter() Aquest funcioacute nativa de Unity ser-veix per a gestionar quan lrsquoobjecte topa amb un altre objecte Quan la pilota topa amb un mur detecta quin eacutes
i segons el seu color actual li canviaragrave el seu color al que toqui i suma un punt Si la pilota topa amb la lluna de joc simplement augmen-taragrave la seva velocitat Si topa amb el forat negre de la part inferior o traspassa un mur destruiumlt srsquoencarrega de parar la partida i la muacutesica mostrar el menuacute de derrota afegir a les monedes totals del jugador les guanyades aquella partida i canviar el regravecord de puntuacioacute del nivell si srsquoha superat
Fig 10 Escena CLASSIC
Fig 11 Efecte de Boost de Gel
Script ClassicPad Aquest script simplement srsquoencarrega de la gestioacute del moviment de la lluna de joc Detecta si el jugador estagrave polsant a sobre drsquoella i es mou en consequumlegravencia Per al mode histograveria srsquoencarrega de si un projectil topa amb ella parar la partida i mostrar el menuacute de derrota Script Pause Menu Aquest script com el seu nom indica gestiona tot el me-nuacute de pausa Que quan es polsi a sobre del botoacute de pausa es pari el joc i es mostri la interfaccedil que quan polsem sobre lsquoreprendrersquo la partida actual segueixi on estava que es torni al menuacute o que es surti de la partida Script Boosts Aquest script srsquoencarrega drsquoinvocar un objecte aleatori que apareix cada x segons aleatograveriament per pantalla un cert temps Segons el boost es produeix un efecte diferent Per fer aixograve se li ha assignat el script a una imatge i srsquoha jugat amb el seu render (el component que fa que es mos-tri la imatge) Gragravecies a la funcioacute TimeTimeSinceLevelLoad que ens proporciona el temps que ha passat des de que srsquoha carregat el nivell sabem quan fer invisible o no lrsquoobjecte Aixiacute creat lrsquoalgoritme que mostra una imatge aleatograveriament drsquouna llista drsquoimatges sempre que no hi hagi un boost funcionant Ara amb un switch case segons la imatge que srsquoestagrave mos-trant crida a la funcioacute del boost que toca per a que realitzi lrsquoefecte adequat Un bon exemple eacutes el boost de gel que al collir-lo com veiem a la figura 11 mostra a tots els murs que no hagin sigut destruiumlts una imatge de neu que impedeix destruir-los
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 9
Es poden trobar tots els boosts i efectes a lrsquoapartat 215 del document adjunt ldquoDesenvolupament del Jocrdquo Amb tots aquests components ja es podria jugar una par-tida ldquoCLASSICrdquo del mode lliure Per a construir els altres nivells del mode lliure srsquoha jugat amb potenciar o extreure aquestes funcions descrites per proporcionar un altre tipus de joc
bull Escena Double Trouble Aquiacute srsquoha duplicat la pilota de joc i srsquoha adaptat lrsquoentorn per a que el nivell sigui jugable
bull Escena Faster Aquest mode es juga al doble de la velocitat normal de joc utilitzant la funcioacute Ti-meTimeScale = 2 que duplica el temps
bull Escena Insight Aquest mode es juga sense veure els components del joc el jugador nomeacutes veu una estela que indica el moviment de la pilota i la lluna de joc
bull Escena Relax En aquest mode on nomeacutes es perdragrave la partida si aquesta cau al forat negre inferior Els murs mai poden ser destruiumlts i no apareixen boosts
653 Implementacioacute del Mode Histograveria
Per a aquest mode srsquoha utilitzat com a base lrsquoestructura del nivell ldquoCLASSICrdquo del mode lliure Amb aquesta es-tructura srsquohan eliminat els boosts i el marcador de pun-tuacioacute Consta drsquoun objectiu totalment diferent al mode lliure no volem aconseguir la major puntuacioacute sinoacute que volem destruir la nau enemiga i si pot ser en el menor temps possible Script Dialog Primerament srsquoha creat un sistema de diagravelegs en el que seguint el guioacute descrit al document adjunt ldquoDesenvolu-pament del Jocrdquo apartat 212 dos personatges ens ense-nyen a jugar a lrsquohora que ens narren una divertida histograve-ria Dit aixograve srsquoha creat un sistema drsquoescriptura on segons unes frases donades srsquoescriu lletra per lletra aconseguint lrsquoefecte de narracioacute dels videojocs Quan comprovem que srsquoha mostrat tota la frase per pan-talla mostrem un botoacute per a continuar amb la conversa i un altre botoacute per a saltar el diagraveleg i comenccedilar a jugar Agafant la primera lletra de la frase amb la funcioacute subs-tring() sabrem si quin personatge parla i hem de mostrar Script History_Ball La pilota srsquoha hagut drsquoadaptar a tots els nous compo-nents A meacutes srsquoha creat un sistema per a mostrar en tot mo-ment el temps que ha passat des de lrsquoinici del nivell Per fer-ho srsquohan utilitzat 2 variables pels minuts i segons Aixograve ha permegraves visualitzar amb meacutes comoditat el format de temps ldquominuts segonsrdquo amb la funcioacute toString()
permetent realitzar les comparacions de temps correcta-ment Script Launcher Aquest script srsquoencarrega un model de miacutessil que li indi-quem i crear una instagravencia drsquoaquest davant la nau amb una certa velocitat dirigit cap a la part inferior de la pan-talla Per aconseguir-ho srsquoutilitza un objecte auxiliar a lrsquoescena lsquoFirePointrsquo que eacutes situat sempre davant la nau on srsquoinstanciaragrave el model del miacutessil amb un cert impuls Po-dem visualitzar aquest sistema a la figura 12 Script ProjectileCollision Aquest script srsquoencarrega solament de destruir el miacutessil quan topi amb un objecte que no sigui la lluna de joc Eacutes un script per a optimitzar el rendiment del joc Un cop descrits els scripts en comuacute per a tots els nivells passem als scripts que a cada nivell soacuten diferents perograve que srsquoutilitzen per a una mateixa causa la gestioacute de la nau enemiga
bull Capiacutetols 1 i 2 Els capiacutetols 1 i 2 comparteixen el ma-teix moviment de la nau Aquest script mou la nau seguint un moviment aleatori Lrsquoalgorisme consisteix en que srsquoescull un punt aleatori a arribar i quan srsquoarriba srsquoescull un altre
bull Capiacutetol 3 Al tercer capiacutetol eacutes on veiem per primer cop una intelmiddotligegravencia artificial en el moviment de la nau aquesta fugiragrave de la pilota Per fer-ho srsquoha divi-dit el nivell en dues zones dreta i esquerra quan la pilota estigui a la zona de la dreta la nau es mouragrave a lrsquoesquerra i a la inversa Per a que no sigui impossi-ble tocar-la srsquoha ajustat la velocitat del seu movi-ment adequadament
bull Capiacutetol 4 Al quart capiacutetol la nau ja consta drsquouna intelmiddotligegravencia artificial meacutes avanccedilada en la que es mou segons a on la pilota estigui situada Lrsquoalgorisme consisteix en tenir la posicioacute de la pilota en tot moment i srsquoha dividit lrsquoespai de la partida en 4 quadrats com podem veure a la figura 13 Si la pilota estagrave al quadrat 1 la nau es mouragrave al qua-drat contrari el 4 Si la pilota es situa al quadrat 2 la nau es mouragrave al quadrat 3 Per a que no fos impossi-ble topar amb la nau srsquoha drsquoajustat la velocitat del moviment
bull Capiacutetol 5 Al capiacutetol final lrsquoalgoritme consta del ma-teix moviment que al nivell anterior perograve afegint un extra que si la nau es troba en el mateix quadrat que la pilota en el mateix instant de temps la nau redui-ragrave el seu tamany complicant lrsquoobjectiu drsquoaconseguir destruir-la
10 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
Fig 12 Nau amb lrsquoobjecte lsquoFire-
Pointrsquo
Fig 13 Divisioacute de quadres nivells 4 i 5
Per a veure visualment com funcionen les funcions expli-cades en aquest apartat es pot consultar el viacutedeo adjunt ldquoDEMO_GRAVITY_PONGrdquo
66 Proves
Gragravecies a la metodologia de desenvolupament de Rapid Prototyping srsquoha pogut anar testejant cada mogravedul desen-volupat al moment aixiacute extraient tots els resultats de tests ragravepidament Srsquohan realitzat 4 tipus de proves diferents
bull A les proves drsquounitat srsquoha testejat que els diferents mograveduls del sistema funcionin correctament Com que si un miacutessil drsquouna nau enemiga glopeja la lluna de joc es mostra el menuacute correcte o si tenim les su-ficients monedes per a comprar una textura la po-dem comprar satisfactograveriament entre altres
bull A les proves drsquointegracioacute srsquoha testejat que les in-teraccions entre els diferents escenaris del sistema sigui correcte Srsquoha provat que es pugi accedir a tots els nivells del videojoc i que des de aquests es pu-gui tornar correctament al menuacute principal a traveacutes del menuacute de pausa
bull Les proves de validacioacute han servit per comprovar que hem complit amb els requisits del projecte Hem testejat el correcte log in amb google la visualitzacioacute dels marcadors i la visualitzacioacute dels objectius entre altres
bull Per acabar les proves de sistema han servit gragravecies a la developer console [24] comprovar que el joc srsquoha executat correctament variant els dispositius i versions drsquoAndroid
A lrsquoapartat 31 del document adjunt ldquoDesenvolupament del Jocrdquo es poden trobar la totalitat de les proves realitza-des de cada tipus amb els seus resultats corresponents
7 CONCLUSIONS
I ja per finalitzar aquest document explicareacute quines soacuten les conclusions que he extret sobre el projecte Primer de tot crec que la planificacioacute que vaig realitzar a
lrsquoinici ha sigut lrsquoencertada Les petites alteracions que srsquohan acabat realitzant (com podem veure en el diagrama de Gantt real de lrsquoapegravendix 2) han estat meacutes enfocades a avanccedilar lrsquoinici de les tasques que no pas a endarrerir-les a causa de la situacioacute excepcional que hem viscut
Respecte a la fase drsquoimplementacioacute considero que
srsquohan completat tots els objectius que es presentaven a lrsquoinici del projecte Srsquohan desenvolupat totes les funcions que es van proposar al document de requisits amb lrsquoajuda de la psicograveloga que havia de tenir el joc per a que es considereacutes addictiu i aixiacute ha sigut Per lo que podem concloure que hem desenvolupat un joc addictiu per a Android satisfactograveriament A meacutes srsquoha de dir que lrsquoaplicacioacute eacutes responsive [12] i molt fagravecilment escalable
I com a uacuteltim punt voldria comentar que mrsquohagueacutes
agradat disposar de meacutes temps i recursos per a millorar tot lrsquoaspecte visual de lrsquoaplicacioacute encara meacutes fins a arribar a apropar-se al nivell de mitjanes produccions aquest aspecte milloraria lrsquointeregraves per al joc
71 Futures Accions
A continuacioacute detallarem aquelles accions futures que he considerat que pot ser interessant desenvolupar en prograveximes ampliacions del joc per tal que lrsquoexperiegravencia drsquouacutes dels usuaris sigui la millor possible
bull Un tutorial molt meacutes visual que es mostri el primer cop que srsquoiniciiuml lrsquoaplicacioacute on no solament srsquoexpliqui sobre la mecagravenica del joc sinoacute que tambeacute es guiiuml a lrsquousuari a traveacutes dels menuacutes la interfaccedil i els diferents modes i nivells de joc
bull Una integracioacute drsquoalgun mode de joc online on es po-gueacutes competir contra un altre jugador en temps real oferiria molt drsquoatractiu i enriquiria molt lrsquoaplicacioacute
bull Per acabar com ja hem comentat una millora visual en la que no mrsquohe pogut centrar en especial durant el projecte on amb lrsquoajuda drsquoalgun professional en la mategraveria es crearien unes visuals progravepies per al joc
8 AGRAIumlMENTS
En primer lloc mrsquoagradaria agrair a la meva famiacutelia el suport incondicional que mrsquohan donat en tot moment durant els quatre anys que porto de carrera Sense ells res de tot aixograve hauria estat possible
Tambeacute mrsquoagradaria agrair la Gemma Saacutenchez la meva tutora del TFG pels consells i lrsquoajuda que mrsquoha ofert du-rant aquests mesos tant durs i especials de projecte insis-tint en quegrave treballes ben dur des del primer dia ha per-megraves que aquest treball hagi pogut tirar endavant amb meacutes facilitat
Finalment voldria agrair a les altres persones que han fet aquest treball possible des de la psicograveloga experta que ens va ajudar a definir molt beacute els requisis fins a tots els companys i amics que han treballat com a testers del joc trobant lsquobugsrsquo i fent propostes sobre possibles millores drsquoaquest
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 11
IacuteNDEX DE FIGURES
Fig 1 lsquoRapid Prototypingrsquo3
Fig 2 Diagrama de Classes lsquoNavegar per la Tendarsquo5
Fig 3 Descripcioacute Cas drsquouacutes ldquoComprar textura pilotardquo6
Fig 4 Diagrama de Classes i Escenes6
Fig 5 Diagrama de Sequumlegravencia 1a Execucioacute6
Fig 6 Escena Menuacute Principal7
Fig 7 Escena Mode Lliure7
Fig 8 Escena Botiga8
Fig 9 Escena Mode Histograveria8
Fig 10 Escena lsquoCLASSICrsquo8
Fig 11 Efecte Boost de Gel8
Fig 12 Nau amb objecte lsquofirepointrsquo10
Fig 13 Divisioacute de quadres nivells 4 i 510
REFEREgraveNCIES
[1] Desenvolupament lsquoRapid prototypingrsquo httpseswikipediaorgwikiModelo_de_prototipos
[2] Article de lrsquoaddiccioacute als videojocs httpspsicologiaymentecomclinicaadiccion-a-videojuegos
[3] Per quegrave enganxen els videojocs httpswwwlavanguardiacomestilos-de-vida2012062954317381414por-que-enganchan-los-videojuegoshtml
[4] Historia dels Videojocs httpswwwfibupceduretroinformaticahistoriavideojocshtml
[5] Requisits miacutenims Candy Crush Saga httpswwwmicrosoftcomes-espcandy-crush-sa-ga9nblggh18846activetab=pivotregionofsystemrequirementstab
[6] Document SRS drsquoexemple httpswwwdocsitycomesejemplo-de-documento-srs4930539
[7] El lsquoFirst clickrsquo test httpsusabilityhubcomguidesfirst-click-testing
[8] Quumlestionari lsquoFirst clickrsquo test I httpsowsiocm7v7lx3h4
[9] Quumlestionari lsquoFirst clickrsquo test II httpsowsiocmj6574121
[10] Quumlestionari lsquoFirst clickrsquo test III httpsowsiocm7df25ouc
[11] Scroll Rect de Unity httpsdocsunity3dcomes20184Manualscript-ScrollRecthtml
[12] Disseny Responsive httpswww40defiebrecomque-esdiseno-responsi-ve~text=El20disentildeo20web20responsive20o3B20ordenador2C20tablet2C20smartphonehellip
[13] Canvas de Unity httpsdocsunity3dcomescurrentManualUICanvashtml
[14] Playerprefs de Unity httpsdocsunity3dcomescurrentScriptReferencePlayerPrefshtml
[15] ldquoDisseny de Softwarerdquo Assignatura del grau que ha ser-
vit de font bagravesica dels coneixements aplicats tant a An-droid com als tests amb usuaris La seva guia docent la trobem disponible a httpsdocsunity3dcomManualUnityManualhtml
[16] ldquoTest i Qualitat del Softwarerdquo Assignatura del grau que ha servit de font bagravesica dels coneixements aplicats per als tests del codi La seva guia docent la trobem disponible a httpsguiesuabcatguies_docentspublicportalhtml2019assignatura102758ca
[17] ldquoDocumentacioacuten de Unityrdquo Documentacioacute completa del motor gragravefic lsquoUnityrsquo que srsquoha anat consultant en tot mo-ment del desenvolupament httpsdocsunity3dcomManualUnityManualhtml httpswwww3schoolscomcs
[18] ldquoStack Overflowrdquo Fograverum de preguntes i respostes rela-cionades amb el moacuten de la programacioacute i la informagravetica Srsquoha anat consultant durant la fase drsquoimplementacioacute Al-gunes de les pagravegines que voldria destacar
o Text borroacutes a Unity httpsstackoverflowcomquestions16506737unity3d-3d-text-always-displayed-blur16507861
o Sing-In Google httpsstackoverflowcomquestions59599895problems-with-google-sign-in-in-unity
[19] ldquoComo firmar tu apprdquo Documentacioacute per a desenvolupa-dors Android sobre com signar una aplicacioacute per a que totes les funcions de google funcionin correctament httpsdeveloperandroidcomstudiopublishapp-signinggoogle-play-app-signing
[20] ldquoUnity Ads Documentationrdquo Documentacioacute sobre el sis-tema de publicitat de unity utilitzat a lrsquoapp httpsdocsunity3dcomPackagescomunityads34manualindexhtml
[21] ldquoGoogle play games plugin for unityrdquo Plugin per a unity per a poder utilitzar totes les funcions de google play games httpsgithubcomplaygameservicesplay-games-plugin-for-unity
[22] ldquoFlaticonrdquo Web de recursos gratuiumlts drsquoon srsquohan descarre-gat els sprites que srsquoutilitzen al joc httpswwwflaticones
[23] ldquoUnity Asset Storerdquo Web de recursos gratuiumlts de unity drsquoon srsquohan descarregat els models dels planetes que srsquoutilitzen al joc entre altres httpsassetstoreunitycomgclid=CjwKCAjwlZf3BRABEiwA8Q0qq9NcH2nCMrUHDdQUrV0K7dNiZD6JMAy7G8x93NPLzD3wZKmhiK1MQBoCvR0QAvD_BwE
[24] ldquoAyuda de Play Consolerdquo Documentacioacute sobre al play console plataform on es puja lrsquoaplicacioacute per a que es vi-sualitzi a la play store que srsquoha consultat quan han sorgit problemes httpssupportgooglecomgoogleplayandroid-developerhl=estopic=3450769
[25] ldquoPongrdquo Primer videojoc de la histograveria httpseswikipediaorgwikiPong~text=Pong20(o20Tele-Pong)mesa20(o20ping20pong)
[26] ldquoFlappy Birdsrdquo httpseswikipediaorgwikiFlappy_Bird
[27] ldquoCandy Crushrdquo httpswwwxatakamovilcommovil-y-sociedadcandy-crush-saga-la-ciencia-detras-de-la-adiccion
12 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
APEgraveNDIX
A1 DIAGRAMA DE GANTT DE LA PLANIFICACIOacute INICIAL
A1 Diagrama de Gantt corresponent a la planificacioacute inicial del projecte En aquest diagrama podem veure les diferents tasquesetapes de desenvolupament amb les setmanes que es va planificar destinar a cada una
A2 SECCIOacute DrsquoAPEgraveNDIX
A2 Diagrama de Gantt corresponent a la planificacioacute final del projecte Tal i com podem veure tenim alguns canvis en els temps respecte a la planificacioacute inicial es va acurtar la fase de desenvolupament ja que amb la situacioacute excepcional del paiacutes srsquoha disposat de molt meacutes
temps per al desenvolupament lo qual ha permegraves avanccedilar el pas a produccioacute i la documentacioacute del projecte
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 13
A3 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1
A3 Resultat Estudi 1 - Tasca 1 Com observem el 90 dels testers han completat lrsquoobjectiu de la tasca
A4 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1 (MAPA DE CALOR)
A4 Resultat estudi 1 ndash Tasca 1 (Mapa de Calor) Com podem observar la zona de tocs de dit del 70 dels tocs se centra en el botoacute correcte
14 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
2 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
2 ESTAT DE LrsquoART
Quan parlem de videojocs addictius el primer que ens ve a la ment soacuten jocs drsquoegravexit com el lsquoPongrsquo [25] lsquoFlappy birdsrsquo [26] o lsquoCandy crushrsquo [27] Tot i la seva senzilla elaboracioacute i mecagravenica no es pot negar que soacuten jocs amb un egravexit ro-tund al mercat i jugats diagraveriament per milions de perso-nes
A quegrave eacutes degut Bagravesicament a la diversioacute que ofereix
en poc temps partides ragravepides puntuacions que compa-rar amb amics i mecagraveniques fagravecils drsquoentendre per a to-thom
En el cas de lsquoGravity Pongrsquo (El nostre joc) no es busca
igualar el nivell de les visuals ni animacions drsquoaquests jocs El que es busca es desenvolupar un joc des de lrsquoinici que contingui les mateixes caracteriacutestiques i prestacions que aquests jocs tan addictius per entendre de meacutes a prop com uns jocs aparentment tant simples tenen enre-re un plantejament drsquoalta complexitat que els fa arribar a ser els jocs amb meacutes egravexit de la historia
3 OBJECTIUS
Lrsquoobjectiu principal del projecte eacutes realitzar el proceacutes de desenvolupament i disseny des de zero drsquoun videojoc addictiu per al sistema operatiu lsquoAndroidrsquo realitzat amb el motor gragravefic Unity Aixograve comportaragrave una presa de requi-sits on es contactaragrave amb experts sobre lrsquoaddiccioacute per investigar quins aspectes es podrien traduir a un videojoc del gegravenere Tambeacute srsquohauran de realitzar dissenys de lrsquoentorn on srsquoaprofitaran per a realitzar diferents tests amb potencials usuaris (lsquofirst-clickrsquo test [7]) i srsquoutilitzaran elements artiacutestics gratuiumlts [22] [23]
El segon objectiu seragrave el desenvolupament del videojoc
i lrsquoelaboracioacute del codi amb el llenguatge de programacioacute C desenvolupat amb el motor gragravefic lsquoUnityrsquo Srsquoaplicaran diferents tests a lrsquoaplicacioacute per a provar la seva seguretat i consistegravencia Dins drsquoaquest objectiu es vol desenvolupar
bull Una pagravegina principal amb tres opcions de menuacute di-ferents Histograveria Lliure i Tenda i dos petits botons que serviran per a visualitzar els objectius del joc i les taules de puntuacions
bull Un sistema de joc basat en el clagravessic joc lsquoarcadersquo i primer videojoc de la histograveria de lsquoPongrsquo perograve apor-tant un toc meacutes modern innovador i entretingut
bull Un mode histograveria on seguint una divertida histograveria amb diagravelegs entre personatges haurem de superar diferents pantalles seguint la mecagravenica explicada al punt anterior perograve amb petites variacions Constaragrave de 5 nivells amb dificultat progressiva i enemics amb intelmiddotligegravencia artificial
bull Un mode lliure on ens trobem amb lrsquoessegravencia del joc Al contrari del mode histograveria en aquest mode no ens molestaragrave cap enemic constaragrave de 5 nivells de joc diferents on cadascun canviaragrave totalment la forma de jugar la partida i on lrsquoobjectiu seragrave fer la magravexima puntuacioacute possible per rivalitzar amb els nostres amics Es guardaragrave la millor puntuacioacute acon-seguida a cada nivell i per a poder jugar es necessita-ran tiquets que si ens quedem sense haurem de vi-sualitzar un anunci per aconseguir-ne meacutes
bull Un sistema de millores aleatograveries (boost) que aparei-
xeran per pantalla oferint diferents efectes que can-viiumln el transcurs e la partida
bull Una botiga on trobarem textures visuals que po-drem comprar per a personalitzar tots els objectes del joc al nostre gust Perograve no seragrave fagravecil aconseguir-ho els diferents aspectes valdran monedes que no-meacutes es podran aconseguir jugant al mode lliure on cada punt aconseguit seragrave una moneda per utilitzar a la botiga
bull I finalment un apartat drsquoobjectius i marcador de puntuacions on es podran visualitzar diferents ob-jectius a completar dins del joc i les puntuacions dels nostres amics als diferents modes de joc respecti-vament
Finalment un cop lrsquoaplicacioacute sigui testejada interna-
ment el tercer objectiu eacutes penjar-la a la plataforma Play Store drsquoAndroid on qualsevol usuari la podragrave descarre-gar gratuiumltament
4 METODOLOGIA
Per al desenvolupament drsquoaquest projecte srsquoha seguit la metodologia de lsquoRapid Prototypingrsquo [1] El lsquoRapid prototypingrsquo o disseny ragravepid se centra en una representacioacute daquells aspectes del programari que seran visibles per al client o lusuari final Aquest disseny con-dueix a la construccioacute dun prototip el qual eacutes avaluat pel client contiacutenuament per a una retroalimentacioacute Gragravecies a aquesta continua retroalimentacioacute es refinen els requisits del programari que es desenvoluparagrave Aixograve permet que al mateix temps el desenvolupador entengui millor el que sha de fer i el client vegi resultats a curt termini
Les etapes a seguir en retroalimentacioacute tal com veiem
a la figura 1 seran
bull Comunicacioacute
bull Pla ragravepid
bull Modelatge i disseny ragravepid
bull Construccioacute del prototip
bull Desenvolupament i entrega retroalimentacioacute Quegrave srsquoaplicaran per cada aspecte a desenvolupar del
joc
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 3
Fig 1 Rapid prototyping
Aquesta metodologia eacutes molt uacutetil per a un projecte on
es tenen clars els objectius generals del software perograve no srsquoidentifiquen clarament els seus requisits (lrsquoestat inicial del nostre projecte) Tambeacute seragrave altament uacutetil per a provar que el joc eacutes addictiu ja que amb un constant contacte amb els usuaris hi hauragrave un feedback molt gran en tot moment Aquesta metodologia portaragrave com a objectiu final un software de qualitat gragravecies a la bona definicioacute de requi-sits que sersquon podragrave extreure i el descart de funcionalitats o aspectes no necessaris en el projecte que endarreririen les entregues
5 PLANIFICACIOacute
51 Planificacioacute de les tasques
La primera setmana del projecte es van dedicar iacutente-grament a la planificacioacute del projecte Tot i que pot sem-blar que soacuten massa dies per a aquesta tasca es va consi-derar fonamental que la planificacioacute inicial fos la meacutes encertada possible pel bon devenir del projecte
El projecte el podem dividir principalment en sis eta-
pes o tasques principals 1 Definicioacute del projecte consisteix en la definicioacute de
lrsquoabast del projecte i la planificacioacute de les tasques que srsquohan de realitzar per tal drsquoassolir els objectius
2 Estudi sobre lrsquoaddiccioacute aquest estudi consisteix a concertar una entrevista amb un psicograveleg expert en la mategraveria per a formular-li un seguit de preguntes extreurersquon les primeres conclusions i objectius en clau de requisits que necessitaragrave el projecte Tant les preguntes formulades com les respostes extre-tes es poden trobar al document adjunt ldquoEntrevis-ta amb un psicogravelegrdquo
3 Presa de requisits aquesta etapa es considera drsquoalta importagravencia per al desenvolupament del projecte i consisteix que a partir de lrsquoetapa anteri-or i una investigacioacute personal sobre el tema a trac-tar elabora un document complet de requisits Es considera drsquoalta importagravencia ja que amb un bon document i unes bones pautes se sabragrave en tot moment el que srsquoha de fer i com srsquoha de fer Els requisits complets es poden trobar al document
adjunt ldquoDesenvolupament del jocrdquo al CAPIacuteTOL 1 4 Disseny i Test aquesta etapa consisteix que a par-
tir del document de requisits extret elaborar un document de disseny del videojoc Aquest docu-ment conteacute tant tota la part artiacutestica (Guioacute histograveria controls personatges) com la part de disseny del software (Diagrama de classes targetes crc dia-grames de sequumlegravencia disseny de interfaccedil) I a partir dels primers esbossos de interfaccedil realit-zar tests de first-click-test per a saber si la interfaccedil era correcte i intuiumltiva El document complet de disseny es pot trobar a lrsquoarxiu adjunt ldquoDesenvolupament del jocrdquo al CAPIacuteTOL 2
5 Desenvolupament de lrsquoaplicacioacute implementacioacute i testeig del videojoc a partir dels apartats anteriors
6 Pas a produccioacute un cop desenvolupada i testejada lrsquoaplicacioacute es pujaragrave una versioacute estable a la plata-forma Play Store
7 Documentacioacute del projecte redaccioacute del dossier del projecte i preparacioacute de la presentacioacute
A la Taula 1 podem veure les tasques que acabem
drsquoexplicar amb les hores planificades per la seva resolucioacute i els rols que participen en cada una drsquoelles Pel nostre cas el Project Manager el dissenyador el programador i el tester soacuten la mateixa persona (lrsquoestudiant)
TAULA 1
ROLS PER TASCA
Tasca Temps(hores) Rols participants
Definicioacute 20 Project Manager
propietari de lrsquoapp
Estudi sobre lrsquoaddiccioacute 20 Dissenyador psicograve-
leg
Presa de requisits 40 Dissenyador
Disseny i test 30 Dissenyador usuaris
de test
Desenvolupament de
lrsquoaplicacioacute
150 Programador tester
propietari de lrsquoapp
Pas a produccioacute 10 Tester propietari de
lrsquoapp
Documentacioacute del
projecte
30 Project Manager
TOTAL 300
I per finalitzar veurem quin seria el cost aproximat que suposaria pel client aquets projecte A la Taula 2 mos-trem el cost dels sous dels treballadors segons el seu rol i a la Taula 3 el cagravelcul del cost final A lrsquohora de calcular el cost final afegim uns costos indirectes corresponents als desplaccedilaments per les reunions amb el client No tindrem en compte el cost drsquoadquisicioacute dels ordinadors utilitzats pels treballadors (suposarem que soacuten de pro-pietat) ni les llicegravencies dels programes de desenvolu-pament utilitzats (ja que tot eacutes software lliure o sense cap cost)
4 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
TAULA 2
COST MONETARI
Rol treballador Cost (euroh) Temps (h) Cost total
(euro)
Project
Manager
50 50 2500
Dissenyador 25 90 2250
Programador 20 150 3000
Tester 20 30 600
TOTAL 300 8350
Per tant el cost final del projecte despreacutes drsquoaplicar un
20 de benefici seria
TAULA 5
COST TOTAL
Tipus de cost Cost (euro)
Cost Directe 8350
Benefici +20
TOTAL 10020
Hem de tenir en compte que el cost final obtingut se-
gurament no seria tant elevat La planificacioacute de les hores srsquoha realitzat tenint en compte que no tinc gaire experiegraven-cia a lrsquohora de treballar en projectes de programacioacute drsquoaquest abast El meacutes probable es que a una empresa especialitzada en el desenvolupament software no li cal-guin tantes hores per a poder assolir els objectius esta-blerts
Al apegravendixs A1 i A2 trobem tota la informacioacute sobre la planificacioacute de les tasques En el primer trobem la planifi-cacioacute inicial que es va realitzar i en el A2 la planificacioacute final que ha sorgit amb les condicions en les que srsquoha treballat
52 Avaluacioacute de Riscos
Un altre aspecte fonamental de la planificacioacute drsquoun projecte eacutes lrsquoavaluacioacute dels possibles riscos que poden comprometre el correcte desenvolupament del projecte Estudiant amb anterioritat quines poden ser les principals amenaces es poden trobar possibles solucions o fins i tot arribar a evitar-los
bull Un dels possibles riscos principals que vagraverem tenir en compte era la falta drsquoexperiegravencia amb el motor gragravefic ja que no srsquohavia treballat dins del grau Per aixograve es va treballar des de un principi en estudiar-lo a partir de la documentacioacute [17] [20] [21] [24]
bull Un segon risc podia ser la lsquono addiccioacute de lrsquoaplicacioacutersquo que aquesta no arribeacutes a ser un entorn que cridi lrsquoatencioacute i caigueacutes en la monotonia i sim-plicitat Per aixograve es va treballar en la presa de re-quisits amb psicograveleg per a que el joc tingueacutes totes les eines drsquoun videojoc drsquoaquesta classe
bull Per acabar un aspecte de risc per a la finalitzacioacute del projecte i molt important que es va tenir en
compte era no aconseguir pujar lrsquoaplicacioacute a la Play Store Degut a la situacioacute actual amb el CO-VID-19 informen a la pagravegina que cada revisioacute pot portar un temps de 7 o meacutes dies degut a questa si-tuacioacute Aquest aspecte incontrolable podia deri-var a la no pujada de lrsquoapp o a no aconseguir pujar una versioacute sense errors importants Per aixograve com veiem a la planificacioacute final al annex A2 srsquoha avan-ccedilat el proceacutes de desenvolupament per a tenir meacutes temps en aquest aspecte
6 DESENVOLUPAMENT
Per a explicar el desenvolupament de lrsquoaplicacioacute amb la magravexima exactitud possible srsquoaniragrave referenciant al docu-ment adjunt ldquoDesenvolupament del Jocrdquo un document de meacutes de 70 pagravegines que conteacute tot tota la informacioacute relacionada amb el projecte de inici a final el qual srsquoha anat redactant paralmiddotlelament amb el transcurs drsquoaquest
61 Estudi sobre lrsquoaddiccioacute
El primer pas per a comenccedilar el projecte ha sigut assegu-rar-se que aquest conteacute els aspectes clau per a que com-pleixi els objectius plantejats Per aconseguir-ho es va formalitzar una reunioacute amb una psicograveloga experta en la mategraveria
La entrevista cal destacar-la com a molt satisfactograveria gragravecies a una bona recerca del tema [2][3] es van quumlestio-nar aspectes generals al psicograveleg com Que eacutes lrsquoaddiccioacute per a tu Consideres que hi ha diferents tipus drsquoaddiccioacute De les que es va extreure una gran perspectiva sobre el punt de vista de lrsquoentrevistat i per exemple es va aconse-guir que definiacutes la nostra aplicacioacute com a tipus drsquoaddiccioacute no destructiva un gran pas ja que era un dels objectius del treball que es classifiqueacutes com a addictiva
Amb altres quumlestions com Quins soacuten els elements clau per considerar un joc addictiu O Quines caracteriacutestiques ha drsquooferir a primera vista per a seguir explorant-lo Srsquoha aconseguit extreure una part emocional molt important de lrsquoaddiccioacute que inclou els sentiments Srsquoha vist que aquests soacuten molt important que es produeixin durant el joc tant si soacuten bons com dolents Gragravecies a aquesta part es van prendre conclusions com que el sistema de ragraven-quing de puntuacions del joc deixaria de ser local per a ser global i es va concloure desenvolupar un guioacute per al mode historia el qual inclou diagravelegs amb humor entre altres
Es poden trobar la totalitat de lrsquoentrevista al document adjunt ldquoEntrevista amb un Psicogravelegrdquo i el guioacute final al document adjunt Desenvolupament del Jocrdquo a lrsquoapartat 212 ldquoLlibret i guioacuterdquo
62 Resum del Joc
El funcionament principal del videojoc eacutes semblant al joc de Pong [25] perograve respectant certes distagravencies Tot i que el joc compta amb 10 escenaris amb les seves progravepies caracteriacutestiques si meacutes no la mecagravenica principal del joc
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 5
consta drsquouna pala de joc que lrsquousuari mouragrave horitzontal-ment per a evitar que una pilota caigui al terra Tambeacute compta amb tres murs als marges de la pantalla que a part de sumar punts quan siguin tocats amb la pilota canviaran de color segons els cops consecutius que han sigut golejats Si superen els 3 cops consecutius el mur en quumlestioacute desapareixeragrave fent impossible el seu contacte amb la pilota A meacutes diferents objectes apareixeran alea-tograveriament durant la partida per a oferir-nos efectes espe-cials que ens ajudaran o ens faran la partida meacutes compli-cada durant un cert temps
Al acabar cada partida obtindrem una puntuacioacute que es mostraragrave en un marcador de puntuacions per a compa-rar-la amb la dels nostres amics A part tota la informacioacute del joc es guardaragrave al dispositiu guardant el progreacutes en tot moment
Tot i que hem dit abans que el joc compta amb 10 es-cenaris diferents aquests es divideixen en dos modes de joc Historia i Lliure
El mode historia compta amb una petita trama que in-volucraragrave al jugador per a salvar el planeta on lrsquoobjectiu seragrave acabar amb els diferents enemics dels 5 nivells que amenaccedilaran al jugador
Lrsquoobjectiu del mode lliure seragrave en canvi aconseguir la magravexima puntuacioacute possible drsquoentre 5 modes de joc de mecagraveniques i dificultats diferents
Tot el progreacutes que aconseguim al joc es plasmaragrave en forma de monedes que podrem invertir per a personalit-zar amb diferents aspectes els objectes del joc
63 Presa de Requisits
Un cop fet lrsquoestudi per a elaborar el document de re-quisits srsquohan consultat moltes fonts drsquoinformacioacute [15] [16] historia dels videojocs [4] jocs semblants arquitectures de hardware que podria suportar el joc [5] estagravendards de desenvolupament documents de requisits[6] i documen-tacioacute[17] [18] [20] Vull tornar a destacar la importagravencia de lrsquoentrevista per a poder realitzar correctament aquest document oferint uns objectius clars Amb aquest treball fet vaig comenccedilar a redactar els requisits que es troben al ldquoCAPIacuteTOL 1rdquo del document adjunt ldquoDesenvolupament del jocrdquo Aquest conteacute molts apartats entre ells dos de clau
- Els requeriments del sistema On es parla sobre el propogravesit del sistema a desenvolupar el seu objec-tiu principal i les seves funcions Aquest apartat conteacute aspectes molt concrets del desenvolupa-ment com que el joc seragrave desenvolupat en castellagrave la connectivitat o requeriments de hardware miacute-nims per al funcionament del joc i conteacute un petit estudi sobre la restriccioacute drsquoedat del joc PEGI 3 Finalment conteacute una llista completa tant dels re-queriments funcionals del sistema com dels no funcionals on srsquoexplica detalladament cada funcioacute que podragrave oferir el joc com per exemple el mode historia
o Suportaragrave 5 escenaris diferents o Inclouragrave un tutorial interactiu amb
lrsquousuari o A cada escenari apareixeragrave un enemic di-
ferent amb habilitats moviments i IA propis
- Lrsquoanagravelisi del sistema En aquesta segona seccioacute clau del document a partir de la llista de requeri-ments esmentada en lrsquoapartat anterior es fa una anagravelisi preliminar del producte resumint totes les funcionalitats que contindragrave i els efectes que pro-duiragrave cada una en el transcurs de lrsquoaplicacioacute A partir drsquoaquesta primera anagravelisi srsquohan elaborat diferents diagrames de casos drsquouacutes on es poden veure molt visualment les interaccions que pot fer lrsquousuari amb el sistema
Fig 2 Diagrama de Navegar per la tenda
Com veiem a la Figura 2 drsquoexemple podem observar
totes les opcions drsquointeraccioacute que teacute lrsquousuari un cop estagrave dins la botiga Es poden trobar tots els casos drsquouacutes al do-cument adjunt ldquo Desenvolupament del Jocrdquo a lrsquoapartat 122 ldquoCasos drsquouacutesrdquo
Finalment a partir dels diagrames de casos drsquouacutes srsquoha elaborat una fitxa com la de la figura 3 de cada un on eacutes detalla les precondicions que srsquohan de complir pregravevia-ment per a que aquest es pugui dur a terme lrsquoiniciador que executa aquest cas drsquouacutes i el curs drsquoaccions que ocor-reran a partir drsquoaquest iniciador
Nom del Cas drsquoUacutes Comprar una textura per la pilota
Requeriment(s) Explorat(s) 681516
Precondicioacute(ns)
- Lrsquousuari ha seleccionat lrsquoopcioacute del menuacute ldquoTendardquo
Iniciador(s) Lrsquousuari ha polsat sobre el botoacute de tenda
Curs drsquoAccioacute Principal
1 Lrsquousuari selecciona la tenda de la pilota
2 Lrsquousuari fa scroll fins a seleccionar una textura que li agradi i
la polsa
3 Es comprova si ja teacute comprada aquesta textura (no la teacute)
4 Es comprova si teacute suficients monedes per adquirir la textura
(en teacute)
5 Lrsquousuari adquireix la textura srsquoelimina el seu preu per a in-
dicar-ho i es carrega la textura a la pilota de mostra de la ten-
da i a la que utilitzarem en qualsevol partida
Curs(os) Alternatiu drsquoAccioacute
3b Es comprova si ja teacute comprada aquesta textura (si la teacute)
4b Es carrega la textura a la pilota de mostra de la tenda i a la que
utilitzarem en qualsevol partida
4c Es comprova si teacute suficients monedes per adquirir la textura
(no en teacute)
5c Es mostra un aviacutes que lrsquousuari no teacute suficients monedes i no
es desbloqueja la textura
Fig 3 Descripcioacute Cas drsquouacutes ldquoComprar textura per la pilotardquo
6 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
64 Disseny i Test
Un cop redactats els requisits vaig passar a redactar el ldquoCAPIacuteTOL 2 DISSENY I CONSTRUCCIOacute DEL VIDEO-JOCrdquo que conteacute les seguumlents seccions clau
- Disseny Artiacutestic Conteacute tota la informacioacute per a en-tendre el concepte artiacutestic del videojoc Tota la his-toria en la que es desenvolupa aixiacute com un guioacute complet de tots els diagravelegs del mode historia entre altres Una seccioacute interessant que apareix eacutes la explicacioacute dels controls que hauragrave drsquoutilitzar lrsquousuari i perquegrave srsquohan fet aixiacute on es concreta que el joc nomeacutes con-tindragrave dos tipus de moviments el toc amb el dit i lrsquoscroll lateral Al simplificar el joc a dos tipus de moviments srsquoaconsegueix molta senzillesa que a nivell pragravectic es tradueix a un facilitat molt gran en lrsquoaprenentatge drsquouacutes Finalment conteacute una descripcioacute completa de tots els boosts(objectes aleatoris) que intervenen a les partides i els efectes que tindran
- Disseny del Software En aquesta seccioacute srsquoha desenvolupat un diagrama de classes i escenes a partir de tots els casos drsquouacutes Srsquoha optat per incloure les escenes (progravepies del motor Unity) dins drsquoaquest diagrama ja que proporcionen molta meacutes facilitat a lrsquohora drsquoentendre la relacioacute de les classes ja que algunes no intervenen entre siacute directament sinoacute a partir drsquouna escena especiacutefica
Fig 4 Diagrama de classes i escenes
Amb el diagrama definit es descriuen la funcionalitats de cada classe junt amb els seus atributs propis i les funcions que la formen
Definides les funcions de les classes srsquohan descrit els diagrames de sequumlegravencia molt importants per a observar el flux de les diverses accions directes que pot realitzar lrsquousuari amb la interfaccedil I en consequumlegravencia com reacciona el motor a partir de cada accioacute amb les escenes arxius de
guardat i els serveis de google Ha sigut molt uacutetil per a realitzar un desenvolupament correcte
Fig 5 Diagrama de Sequumlegravencia de la primera execucioacute del Joc
La seccioacute inclou un esboacutes de tota la interfaccedil que interactua amb lrsquousuari Per aconseguir un bon resultat drsquoaquesta es van preparar unes imatges que reconstruiumlen la interfaccedil i es va fer un first-click test [7] amb lrsquoeina web lsquoopti-malworkshoprsquo A causa de la versioacute gratuiumlta srsquohan realitzat 3 estudis dife-rents ja que lrsquoeina limitava la quantitat de preguntes per estudi [8] [9] [10] Gragravecies a aquesta eina amb cada estudi realitzat hem obtingut uns resultats molt visuals que ens han servit per conegraveixer realment si els menuacutes estaven ben estructurats El resultat com podem veure a les imatges de la seccioacute A2 i A3 del apegravendix ha sigut molt satisfactori i no srsquoha necessitat de realitzar cap canvi a la interfaccedil de lrsquousuari Podem dir que el plantejament drsquouna interfaccedil molt senzi-lla i intuiumltiva ha sigut correcte
- Implementacioacute del software Per acabar questa
seccioacute conteacute tots els elements artiacutestics que interve-nen en el joc (models 3D sprites) totes les escenes i la icona que es mostraragrave a la play store
65 Desenvolupament de LrsquoAplicacioacute
651 Implementacioacute del Menuacute Principal
Respecte a la implementacioacute del videojoc es va comenccedilar per elaborar el menuacute principal Per fer-ho es va iniciar el desenvolupament del script ldquoGameManagerrdquo Srsquoha de dir que tots els components visuals del joc srsquohan creat dins drsquouna estructura canvas [13] de Unity per a crear una interfaccedil responsive [12]
Script GameManager Per a crear aquest script encarregat de guardar totes les dades srsquoha utilitzat els PlayerPrefs [14] de unity Soacuten funcions del tipus clau-valor on amb un id pots guardar un valor a un espai de memograveria del dispositiu Aquest GameManager com srsquoexplica a la documentacioacute
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 7
del desenvolupament del joc srsquoencarrega tant de crear lrsquoarxiu de guardat quan srsquoinicialitza per primer com el joc com de carregar els valors drsquoaquests un cop ja srsquoha jugat meacutes drsquoun cop Amb el GameManager com a estructura principal srsquoha comenccedilat a desenvolupar lrsquoescena del Menuacute principal Escena lsquoMenuacutersquo ndash Menuacute principal Per aquest menuacute principal que veiem a la figura 6 es buscava una sensacioacute drsquoimmersioacute al joc que et fes sentir a lrsquoespai Per aixograve es va decidir dividir les 4 parts principals drsquoaquest menuacute Menuacute principal mode lliure mode histo-ria i botiga en diferents punts de lrsquoespai 3D formant una circumferegravencia Aixograve ha permegraves desenvolupar la seguumlent foacutermula per a la cagravemera de joc que ofereix una sensacioacute de flotar a lrsquoespai cameraTransformrotation = QuaternionSlerp (camera-TransformrotationcameraDesiredLookAtrotation CAMERA_TRANSITION_SPEED TimedeltaTime) Amb aquesta foacutermula estem assignant al valor de rotacioacute de la cagravemera del joc una nova rotacioacute entre la seva posi-cioacute actual (cameraTransformrotation) i la posicioacute destiacute (cameraDesiredLookAtrotation) Gragravecies a la funcioacute slerp() realitzaragrave un moviment molt lleuger seguint la velocitat que li indiquem Per a veure millor aquest efecte de cagravemera es pot consul-tar el viacutedeo adjunt ldquoDEMO_GRAVITY_PONGrdquo
Escena lsquoMenuacutersquo ndash Mode Lliure El seguumlent pas ja amb la cagravemera a punt ha sigut desenvo-lupar el llistat de nivells del mode lliure que trobem a la figura 7 Ha sigut una decisioacute difiacutecil i bastant creativa ja que es volia una llista de nivells molt visual i vaig decidir mostrar els nivells com a imatges Investigant vaig trobar que mitjanccedilant codi pots trobar i guardar a variables els sprites que estiguin dins de la carpeta que crea unity de ldquoResourcesrdquo Amb aquesta tegravecnica i un Scroll Rect [11] podem passar els nivells amb un scroll lateral Despreacutes srsquoha afegit la imatge i el text dels tiquets a la part inferior del nivell i el regravecord del nivell a sobre drsquoaquest Per finalitzar srsquoha creat el botoacute de tornar per a que la cagravemera torni a rotar fins la posicioacute del menuacute principal Escena lsquoMenuacutersquo ndash Botiga La botiga com observem ala figura 8 manteacute una estruc-tura semblant al llistat de nivells perograve amb diferegravencies notables En comptes de carregar varies imatges carrega una imat-ge sencera amb totes les textures i la divideix en textures de 256x256 per a una millor optimitzacioacute Teacute un indica-dor monedes del joc i teacute un botoacute extra per a canviar entre la tenda de textures de la pilota i de la lluna de joc
Fig 6 Menuacute Principal
Fig 7 Mode lliure
Escena lsquoMenuacutersquo ndash Mode Histograveria El llistat de nivells del mode histograveria no utilitza la tegravecnica de cagraverrega de imatges pels nivells sinoacute que srsquohan utilitzat uns models gratuiumlts de planetes 3D Cada planeta forma un nivell amb el seu nom i el seu regravecord de temps propi Un cop acabada tota la visual de lrsquoescena del menuacute srsquoha creat el script que el gestionaria anomenat ldquoMainMenurdquo
Fig 8 Botiga
Figura 9 Mode Histograveria
Script MainMenu Aquest script srsquoencarrega de carregar i gestionar els com-ponents de lrsquoescena del menuacute del llistat de nivells i la botiga Primer de tot carrega gragravecies als playerPrefs guardats tots els textos de regravecords de puntuacioacute de cada nivell els tiquets les monedes i les textures comprades de la pilota i lluna de joc que lrsquousuari havia obtingut Srsquoha creat un sistema tant per al llistat de nivells com a la botiga de bloqueig on al llistat de nivells es bloquegen tots els botons dels jocs menys del primer fins que en aquest no srsquohagi obtingut una puntuacioacute miacutenima de 5 i a la botiga es guarda una matriu de desbloquejos que indica quines textures srsquohan comprat i ja no apareixeragrave el seu preu i quines no Tambeacute srsquoencarrega de a la botiga mostrar com quedaria la textura comprada a la pilota o a la lluna de joc i apli-car-la per a quan juguem qualsevol partida Aquest script tambeacute carrega la muacutesica del menuacute
8 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
Script History_Levels Aquest script srsquoencarrega de la gestioacute del menuacute ldquoHISTO-RIArdquo Srsquoha creat un sistema de visualitzacioacute on el jugador can-via de nivell mitjanccedilant dues fletxes i un jugador no po-dragrave accedir a un nivell fins que hagi completat lrsquoanterior Junt amb aquest sistema de bloqueig segons el nivell on es situiuml el jugador es mostraragrave el millor temps en que lrsquoha acabat (si es que hi ha) i el nom del nivell Amb aquests components descrits fins ara ja tindriacuteem tot el menuacute principal acabat Un cop acabat el menuacute srsquoha passat a crear els nivells del mode lliure
652 Implementacioacute del Mode Lliure
El mode lliure consta de 5 nivells amb mecagraveniques de joc variants perograve compartint lrsquoestructura principal del joc Per a explicar com srsquoha desenvolupat aquest mode srsquoutilitzaragrave de referegravencia el mode de joc ldquoCLASSICrdquo el mode de joc original on primer srsquoexplicaran els compo-nents de lrsquoescena i despreacutes els scripts que la componen Una part molt important drsquoaquestes escenes eacutes el disseny seguint el esquema senzill i visual del joc srsquoha passat per diversos plantejaments murs reals una barra plana Finalment despreacutes drsquoun extens plantejament es va deci-dir aplicar el disseny que veiem a la figura 10 En aquest disseny podem observar que els murs soacuten llums LED Aquesta decisioacute srsquoha considerat la millor ja que oferia tota la informacioacute que necessita el jugador dels murs sense ser un objecte molt gran i amb molt detall Finalment srsquohan utilitzat imatges de la temagravetica espacial per a completar el fons de lrsquoescena Escena CLASSIC Lrsquoescena drsquoaquest mode de joc la componen directament la pilota la lluna de joc els murs de joc la puntuacioacute el menuacute de pausa i els tiquets disponibles Perograve realment hi ha molts meacutes components secundaris que no srsquoentraragrave en detall a explicar-los perograve que valia la pena mencionar-los com uns murs secundaris invisibles que srsquoutilitzen per detectar si el jugador perd quan ha destruiumlt un mur ob-jectes que solament es mostren quan srsquoagafa un boost llums que segueixen els objectes per crear un efecte pri-mer pla la interfaccedil del menuacute de pausa Presentats aixiacute els components de lrsquoescena eacutes meacutes interes-sant veure els scripts que afecten a aquests components Script ClassicBall Aquest script que controla la pilota eacutes el meacutes important de lrsquoescena ja que gestiona tot el que pot tenir contacte amb ella La funcioacute meacutes important drsquoaquest script eacutes sens dubte OnCollisionEnter() Aquest funcioacute nativa de Unity ser-veix per a gestionar quan lrsquoobjecte topa amb un altre objecte Quan la pilota topa amb un mur detecta quin eacutes
i segons el seu color actual li canviaragrave el seu color al que toqui i suma un punt Si la pilota topa amb la lluna de joc simplement augmen-taragrave la seva velocitat Si topa amb el forat negre de la part inferior o traspassa un mur destruiumlt srsquoencarrega de parar la partida i la muacutesica mostrar el menuacute de derrota afegir a les monedes totals del jugador les guanyades aquella partida i canviar el regravecord de puntuacioacute del nivell si srsquoha superat
Fig 10 Escena CLASSIC
Fig 11 Efecte de Boost de Gel
Script ClassicPad Aquest script simplement srsquoencarrega de la gestioacute del moviment de la lluna de joc Detecta si el jugador estagrave polsant a sobre drsquoella i es mou en consequumlegravencia Per al mode histograveria srsquoencarrega de si un projectil topa amb ella parar la partida i mostrar el menuacute de derrota Script Pause Menu Aquest script com el seu nom indica gestiona tot el me-nuacute de pausa Que quan es polsi a sobre del botoacute de pausa es pari el joc i es mostri la interfaccedil que quan polsem sobre lsquoreprendrersquo la partida actual segueixi on estava que es torni al menuacute o que es surti de la partida Script Boosts Aquest script srsquoencarrega drsquoinvocar un objecte aleatori que apareix cada x segons aleatograveriament per pantalla un cert temps Segons el boost es produeix un efecte diferent Per fer aixograve se li ha assignat el script a una imatge i srsquoha jugat amb el seu render (el component que fa que es mos-tri la imatge) Gragravecies a la funcioacute TimeTimeSinceLevelLoad que ens proporciona el temps que ha passat des de que srsquoha carregat el nivell sabem quan fer invisible o no lrsquoobjecte Aixiacute creat lrsquoalgoritme que mostra una imatge aleatograveriament drsquouna llista drsquoimatges sempre que no hi hagi un boost funcionant Ara amb un switch case segons la imatge que srsquoestagrave mos-trant crida a la funcioacute del boost que toca per a que realitzi lrsquoefecte adequat Un bon exemple eacutes el boost de gel que al collir-lo com veiem a la figura 11 mostra a tots els murs que no hagin sigut destruiumlts una imatge de neu que impedeix destruir-los
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 9
Es poden trobar tots els boosts i efectes a lrsquoapartat 215 del document adjunt ldquoDesenvolupament del Jocrdquo Amb tots aquests components ja es podria jugar una par-tida ldquoCLASSICrdquo del mode lliure Per a construir els altres nivells del mode lliure srsquoha jugat amb potenciar o extreure aquestes funcions descrites per proporcionar un altre tipus de joc
bull Escena Double Trouble Aquiacute srsquoha duplicat la pilota de joc i srsquoha adaptat lrsquoentorn per a que el nivell sigui jugable
bull Escena Faster Aquest mode es juga al doble de la velocitat normal de joc utilitzant la funcioacute Ti-meTimeScale = 2 que duplica el temps
bull Escena Insight Aquest mode es juga sense veure els components del joc el jugador nomeacutes veu una estela que indica el moviment de la pilota i la lluna de joc
bull Escena Relax En aquest mode on nomeacutes es perdragrave la partida si aquesta cau al forat negre inferior Els murs mai poden ser destruiumlts i no apareixen boosts
653 Implementacioacute del Mode Histograveria
Per a aquest mode srsquoha utilitzat com a base lrsquoestructura del nivell ldquoCLASSICrdquo del mode lliure Amb aquesta es-tructura srsquohan eliminat els boosts i el marcador de pun-tuacioacute Consta drsquoun objectiu totalment diferent al mode lliure no volem aconseguir la major puntuacioacute sinoacute que volem destruir la nau enemiga i si pot ser en el menor temps possible Script Dialog Primerament srsquoha creat un sistema de diagravelegs en el que seguint el guioacute descrit al document adjunt ldquoDesenvolu-pament del Jocrdquo apartat 212 dos personatges ens ense-nyen a jugar a lrsquohora que ens narren una divertida histograve-ria Dit aixograve srsquoha creat un sistema drsquoescriptura on segons unes frases donades srsquoescriu lletra per lletra aconseguint lrsquoefecte de narracioacute dels videojocs Quan comprovem que srsquoha mostrat tota la frase per pan-talla mostrem un botoacute per a continuar amb la conversa i un altre botoacute per a saltar el diagraveleg i comenccedilar a jugar Agafant la primera lletra de la frase amb la funcioacute subs-tring() sabrem si quin personatge parla i hem de mostrar Script History_Ball La pilota srsquoha hagut drsquoadaptar a tots els nous compo-nents A meacutes srsquoha creat un sistema per a mostrar en tot mo-ment el temps que ha passat des de lrsquoinici del nivell Per fer-ho srsquohan utilitzat 2 variables pels minuts i segons Aixograve ha permegraves visualitzar amb meacutes comoditat el format de temps ldquominuts segonsrdquo amb la funcioacute toString()
permetent realitzar les comparacions de temps correcta-ment Script Launcher Aquest script srsquoencarrega un model de miacutessil que li indi-quem i crear una instagravencia drsquoaquest davant la nau amb una certa velocitat dirigit cap a la part inferior de la pan-talla Per aconseguir-ho srsquoutilitza un objecte auxiliar a lrsquoescena lsquoFirePointrsquo que eacutes situat sempre davant la nau on srsquoinstanciaragrave el model del miacutessil amb un cert impuls Po-dem visualitzar aquest sistema a la figura 12 Script ProjectileCollision Aquest script srsquoencarrega solament de destruir el miacutessil quan topi amb un objecte que no sigui la lluna de joc Eacutes un script per a optimitzar el rendiment del joc Un cop descrits els scripts en comuacute per a tots els nivells passem als scripts que a cada nivell soacuten diferents perograve que srsquoutilitzen per a una mateixa causa la gestioacute de la nau enemiga
bull Capiacutetols 1 i 2 Els capiacutetols 1 i 2 comparteixen el ma-teix moviment de la nau Aquest script mou la nau seguint un moviment aleatori Lrsquoalgorisme consisteix en que srsquoescull un punt aleatori a arribar i quan srsquoarriba srsquoescull un altre
bull Capiacutetol 3 Al tercer capiacutetol eacutes on veiem per primer cop una intelmiddotligegravencia artificial en el moviment de la nau aquesta fugiragrave de la pilota Per fer-ho srsquoha divi-dit el nivell en dues zones dreta i esquerra quan la pilota estigui a la zona de la dreta la nau es mouragrave a lrsquoesquerra i a la inversa Per a que no sigui impossi-ble tocar-la srsquoha ajustat la velocitat del seu movi-ment adequadament
bull Capiacutetol 4 Al quart capiacutetol la nau ja consta drsquouna intelmiddotligegravencia artificial meacutes avanccedilada en la que es mou segons a on la pilota estigui situada Lrsquoalgorisme consisteix en tenir la posicioacute de la pilota en tot moment i srsquoha dividit lrsquoespai de la partida en 4 quadrats com podem veure a la figura 13 Si la pilota estagrave al quadrat 1 la nau es mouragrave al qua-drat contrari el 4 Si la pilota es situa al quadrat 2 la nau es mouragrave al quadrat 3 Per a que no fos impossi-ble topar amb la nau srsquoha drsquoajustat la velocitat del moviment
bull Capiacutetol 5 Al capiacutetol final lrsquoalgoritme consta del ma-teix moviment que al nivell anterior perograve afegint un extra que si la nau es troba en el mateix quadrat que la pilota en el mateix instant de temps la nau redui-ragrave el seu tamany complicant lrsquoobjectiu drsquoaconseguir destruir-la
10 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
Fig 12 Nau amb lrsquoobjecte lsquoFire-
Pointrsquo
Fig 13 Divisioacute de quadres nivells 4 i 5
Per a veure visualment com funcionen les funcions expli-cades en aquest apartat es pot consultar el viacutedeo adjunt ldquoDEMO_GRAVITY_PONGrdquo
66 Proves
Gragravecies a la metodologia de desenvolupament de Rapid Prototyping srsquoha pogut anar testejant cada mogravedul desen-volupat al moment aixiacute extraient tots els resultats de tests ragravepidament Srsquohan realitzat 4 tipus de proves diferents
bull A les proves drsquounitat srsquoha testejat que els diferents mograveduls del sistema funcionin correctament Com que si un miacutessil drsquouna nau enemiga glopeja la lluna de joc es mostra el menuacute correcte o si tenim les su-ficients monedes per a comprar una textura la po-dem comprar satisfactograveriament entre altres
bull A les proves drsquointegracioacute srsquoha testejat que les in-teraccions entre els diferents escenaris del sistema sigui correcte Srsquoha provat que es pugi accedir a tots els nivells del videojoc i que des de aquests es pu-gui tornar correctament al menuacute principal a traveacutes del menuacute de pausa
bull Les proves de validacioacute han servit per comprovar que hem complit amb els requisits del projecte Hem testejat el correcte log in amb google la visualitzacioacute dels marcadors i la visualitzacioacute dels objectius entre altres
bull Per acabar les proves de sistema han servit gragravecies a la developer console [24] comprovar que el joc srsquoha executat correctament variant els dispositius i versions drsquoAndroid
A lrsquoapartat 31 del document adjunt ldquoDesenvolupament del Jocrdquo es poden trobar la totalitat de les proves realitza-des de cada tipus amb els seus resultats corresponents
7 CONCLUSIONS
I ja per finalitzar aquest document explicareacute quines soacuten les conclusions que he extret sobre el projecte Primer de tot crec que la planificacioacute que vaig realitzar a
lrsquoinici ha sigut lrsquoencertada Les petites alteracions que srsquohan acabat realitzant (com podem veure en el diagrama de Gantt real de lrsquoapegravendix 2) han estat meacutes enfocades a avanccedilar lrsquoinici de les tasques que no pas a endarrerir-les a causa de la situacioacute excepcional que hem viscut
Respecte a la fase drsquoimplementacioacute considero que
srsquohan completat tots els objectius que es presentaven a lrsquoinici del projecte Srsquohan desenvolupat totes les funcions que es van proposar al document de requisits amb lrsquoajuda de la psicograveloga que havia de tenir el joc per a que es considereacutes addictiu i aixiacute ha sigut Per lo que podem concloure que hem desenvolupat un joc addictiu per a Android satisfactograveriament A meacutes srsquoha de dir que lrsquoaplicacioacute eacutes responsive [12] i molt fagravecilment escalable
I com a uacuteltim punt voldria comentar que mrsquohagueacutes
agradat disposar de meacutes temps i recursos per a millorar tot lrsquoaspecte visual de lrsquoaplicacioacute encara meacutes fins a arribar a apropar-se al nivell de mitjanes produccions aquest aspecte milloraria lrsquointeregraves per al joc
71 Futures Accions
A continuacioacute detallarem aquelles accions futures que he considerat que pot ser interessant desenvolupar en prograveximes ampliacions del joc per tal que lrsquoexperiegravencia drsquouacutes dels usuaris sigui la millor possible
bull Un tutorial molt meacutes visual que es mostri el primer cop que srsquoiniciiuml lrsquoaplicacioacute on no solament srsquoexpliqui sobre la mecagravenica del joc sinoacute que tambeacute es guiiuml a lrsquousuari a traveacutes dels menuacutes la interfaccedil i els diferents modes i nivells de joc
bull Una integracioacute drsquoalgun mode de joc online on es po-gueacutes competir contra un altre jugador en temps real oferiria molt drsquoatractiu i enriquiria molt lrsquoaplicacioacute
bull Per acabar com ja hem comentat una millora visual en la que no mrsquohe pogut centrar en especial durant el projecte on amb lrsquoajuda drsquoalgun professional en la mategraveria es crearien unes visuals progravepies per al joc
8 AGRAIumlMENTS
En primer lloc mrsquoagradaria agrair a la meva famiacutelia el suport incondicional que mrsquohan donat en tot moment durant els quatre anys que porto de carrera Sense ells res de tot aixograve hauria estat possible
Tambeacute mrsquoagradaria agrair la Gemma Saacutenchez la meva tutora del TFG pels consells i lrsquoajuda que mrsquoha ofert du-rant aquests mesos tant durs i especials de projecte insis-tint en quegrave treballes ben dur des del primer dia ha per-megraves que aquest treball hagi pogut tirar endavant amb meacutes facilitat
Finalment voldria agrair a les altres persones que han fet aquest treball possible des de la psicograveloga experta que ens va ajudar a definir molt beacute els requisis fins a tots els companys i amics que han treballat com a testers del joc trobant lsquobugsrsquo i fent propostes sobre possibles millores drsquoaquest
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 11
IacuteNDEX DE FIGURES
Fig 1 lsquoRapid Prototypingrsquo3
Fig 2 Diagrama de Classes lsquoNavegar per la Tendarsquo5
Fig 3 Descripcioacute Cas drsquouacutes ldquoComprar textura pilotardquo6
Fig 4 Diagrama de Classes i Escenes6
Fig 5 Diagrama de Sequumlegravencia 1a Execucioacute6
Fig 6 Escena Menuacute Principal7
Fig 7 Escena Mode Lliure7
Fig 8 Escena Botiga8
Fig 9 Escena Mode Histograveria8
Fig 10 Escena lsquoCLASSICrsquo8
Fig 11 Efecte Boost de Gel8
Fig 12 Nau amb objecte lsquofirepointrsquo10
Fig 13 Divisioacute de quadres nivells 4 i 510
REFEREgraveNCIES
[1] Desenvolupament lsquoRapid prototypingrsquo httpseswikipediaorgwikiModelo_de_prototipos
[2] Article de lrsquoaddiccioacute als videojocs httpspsicologiaymentecomclinicaadiccion-a-videojuegos
[3] Per quegrave enganxen els videojocs httpswwwlavanguardiacomestilos-de-vida2012062954317381414por-que-enganchan-los-videojuegoshtml
[4] Historia dels Videojocs httpswwwfibupceduretroinformaticahistoriavideojocshtml
[5] Requisits miacutenims Candy Crush Saga httpswwwmicrosoftcomes-espcandy-crush-sa-ga9nblggh18846activetab=pivotregionofsystemrequirementstab
[6] Document SRS drsquoexemple httpswwwdocsitycomesejemplo-de-documento-srs4930539
[7] El lsquoFirst clickrsquo test httpsusabilityhubcomguidesfirst-click-testing
[8] Quumlestionari lsquoFirst clickrsquo test I httpsowsiocm7v7lx3h4
[9] Quumlestionari lsquoFirst clickrsquo test II httpsowsiocmj6574121
[10] Quumlestionari lsquoFirst clickrsquo test III httpsowsiocm7df25ouc
[11] Scroll Rect de Unity httpsdocsunity3dcomes20184Manualscript-ScrollRecthtml
[12] Disseny Responsive httpswww40defiebrecomque-esdiseno-responsi-ve~text=El20disentildeo20web20responsive20o3B20ordenador2C20tablet2C20smartphonehellip
[13] Canvas de Unity httpsdocsunity3dcomescurrentManualUICanvashtml
[14] Playerprefs de Unity httpsdocsunity3dcomescurrentScriptReferencePlayerPrefshtml
[15] ldquoDisseny de Softwarerdquo Assignatura del grau que ha ser-
vit de font bagravesica dels coneixements aplicats tant a An-droid com als tests amb usuaris La seva guia docent la trobem disponible a httpsdocsunity3dcomManualUnityManualhtml
[16] ldquoTest i Qualitat del Softwarerdquo Assignatura del grau que ha servit de font bagravesica dels coneixements aplicats per als tests del codi La seva guia docent la trobem disponible a httpsguiesuabcatguies_docentspublicportalhtml2019assignatura102758ca
[17] ldquoDocumentacioacuten de Unityrdquo Documentacioacute completa del motor gragravefic lsquoUnityrsquo que srsquoha anat consultant en tot mo-ment del desenvolupament httpsdocsunity3dcomManualUnityManualhtml httpswwww3schoolscomcs
[18] ldquoStack Overflowrdquo Fograverum de preguntes i respostes rela-cionades amb el moacuten de la programacioacute i la informagravetica Srsquoha anat consultant durant la fase drsquoimplementacioacute Al-gunes de les pagravegines que voldria destacar
o Text borroacutes a Unity httpsstackoverflowcomquestions16506737unity3d-3d-text-always-displayed-blur16507861
o Sing-In Google httpsstackoverflowcomquestions59599895problems-with-google-sign-in-in-unity
[19] ldquoComo firmar tu apprdquo Documentacioacute per a desenvolupa-dors Android sobre com signar una aplicacioacute per a que totes les funcions de google funcionin correctament httpsdeveloperandroidcomstudiopublishapp-signinggoogle-play-app-signing
[20] ldquoUnity Ads Documentationrdquo Documentacioacute sobre el sis-tema de publicitat de unity utilitzat a lrsquoapp httpsdocsunity3dcomPackagescomunityads34manualindexhtml
[21] ldquoGoogle play games plugin for unityrdquo Plugin per a unity per a poder utilitzar totes les funcions de google play games httpsgithubcomplaygameservicesplay-games-plugin-for-unity
[22] ldquoFlaticonrdquo Web de recursos gratuiumlts drsquoon srsquohan descarre-gat els sprites que srsquoutilitzen al joc httpswwwflaticones
[23] ldquoUnity Asset Storerdquo Web de recursos gratuiumlts de unity drsquoon srsquohan descarregat els models dels planetes que srsquoutilitzen al joc entre altres httpsassetstoreunitycomgclid=CjwKCAjwlZf3BRABEiwA8Q0qq9NcH2nCMrUHDdQUrV0K7dNiZD6JMAy7G8x93NPLzD3wZKmhiK1MQBoCvR0QAvD_BwE
[24] ldquoAyuda de Play Consolerdquo Documentacioacute sobre al play console plataform on es puja lrsquoaplicacioacute per a que es vi-sualitzi a la play store que srsquoha consultat quan han sorgit problemes httpssupportgooglecomgoogleplayandroid-developerhl=estopic=3450769
[25] ldquoPongrdquo Primer videojoc de la histograveria httpseswikipediaorgwikiPong~text=Pong20(o20Tele-Pong)mesa20(o20ping20pong)
[26] ldquoFlappy Birdsrdquo httpseswikipediaorgwikiFlappy_Bird
[27] ldquoCandy Crushrdquo httpswwwxatakamovilcommovil-y-sociedadcandy-crush-saga-la-ciencia-detras-de-la-adiccion
12 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
APEgraveNDIX
A1 DIAGRAMA DE GANTT DE LA PLANIFICACIOacute INICIAL
A1 Diagrama de Gantt corresponent a la planificacioacute inicial del projecte En aquest diagrama podem veure les diferents tasquesetapes de desenvolupament amb les setmanes que es va planificar destinar a cada una
A2 SECCIOacute DrsquoAPEgraveNDIX
A2 Diagrama de Gantt corresponent a la planificacioacute final del projecte Tal i com podem veure tenim alguns canvis en els temps respecte a la planificacioacute inicial es va acurtar la fase de desenvolupament ja que amb la situacioacute excepcional del paiacutes srsquoha disposat de molt meacutes
temps per al desenvolupament lo qual ha permegraves avanccedilar el pas a produccioacute i la documentacioacute del projecte
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 13
A3 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1
A3 Resultat Estudi 1 - Tasca 1 Com observem el 90 dels testers han completat lrsquoobjectiu de la tasca
A4 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1 (MAPA DE CALOR)
A4 Resultat estudi 1 ndash Tasca 1 (Mapa de Calor) Com podem observar la zona de tocs de dit del 70 dels tocs se centra en el botoacute correcte
14 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 3
Fig 1 Rapid prototyping
Aquesta metodologia eacutes molt uacutetil per a un projecte on
es tenen clars els objectius generals del software perograve no srsquoidentifiquen clarament els seus requisits (lrsquoestat inicial del nostre projecte) Tambeacute seragrave altament uacutetil per a provar que el joc eacutes addictiu ja que amb un constant contacte amb els usuaris hi hauragrave un feedback molt gran en tot moment Aquesta metodologia portaragrave com a objectiu final un software de qualitat gragravecies a la bona definicioacute de requi-sits que sersquon podragrave extreure i el descart de funcionalitats o aspectes no necessaris en el projecte que endarreririen les entregues
5 PLANIFICACIOacute
51 Planificacioacute de les tasques
La primera setmana del projecte es van dedicar iacutente-grament a la planificacioacute del projecte Tot i que pot sem-blar que soacuten massa dies per a aquesta tasca es va consi-derar fonamental que la planificacioacute inicial fos la meacutes encertada possible pel bon devenir del projecte
El projecte el podem dividir principalment en sis eta-
pes o tasques principals 1 Definicioacute del projecte consisteix en la definicioacute de
lrsquoabast del projecte i la planificacioacute de les tasques que srsquohan de realitzar per tal drsquoassolir els objectius
2 Estudi sobre lrsquoaddiccioacute aquest estudi consisteix a concertar una entrevista amb un psicograveleg expert en la mategraveria per a formular-li un seguit de preguntes extreurersquon les primeres conclusions i objectius en clau de requisits que necessitaragrave el projecte Tant les preguntes formulades com les respostes extre-tes es poden trobar al document adjunt ldquoEntrevis-ta amb un psicogravelegrdquo
3 Presa de requisits aquesta etapa es considera drsquoalta importagravencia per al desenvolupament del projecte i consisteix que a partir de lrsquoetapa anteri-or i una investigacioacute personal sobre el tema a trac-tar elabora un document complet de requisits Es considera drsquoalta importagravencia ja que amb un bon document i unes bones pautes se sabragrave en tot moment el que srsquoha de fer i com srsquoha de fer Els requisits complets es poden trobar al document
adjunt ldquoDesenvolupament del jocrdquo al CAPIacuteTOL 1 4 Disseny i Test aquesta etapa consisteix que a par-
tir del document de requisits extret elaborar un document de disseny del videojoc Aquest docu-ment conteacute tant tota la part artiacutestica (Guioacute histograveria controls personatges) com la part de disseny del software (Diagrama de classes targetes crc dia-grames de sequumlegravencia disseny de interfaccedil) I a partir dels primers esbossos de interfaccedil realit-zar tests de first-click-test per a saber si la interfaccedil era correcte i intuiumltiva El document complet de disseny es pot trobar a lrsquoarxiu adjunt ldquoDesenvolupament del jocrdquo al CAPIacuteTOL 2
5 Desenvolupament de lrsquoaplicacioacute implementacioacute i testeig del videojoc a partir dels apartats anteriors
6 Pas a produccioacute un cop desenvolupada i testejada lrsquoaplicacioacute es pujaragrave una versioacute estable a la plata-forma Play Store
7 Documentacioacute del projecte redaccioacute del dossier del projecte i preparacioacute de la presentacioacute
A la Taula 1 podem veure les tasques que acabem
drsquoexplicar amb les hores planificades per la seva resolucioacute i els rols que participen en cada una drsquoelles Pel nostre cas el Project Manager el dissenyador el programador i el tester soacuten la mateixa persona (lrsquoestudiant)
TAULA 1
ROLS PER TASCA
Tasca Temps(hores) Rols participants
Definicioacute 20 Project Manager
propietari de lrsquoapp
Estudi sobre lrsquoaddiccioacute 20 Dissenyador psicograve-
leg
Presa de requisits 40 Dissenyador
Disseny i test 30 Dissenyador usuaris
de test
Desenvolupament de
lrsquoaplicacioacute
150 Programador tester
propietari de lrsquoapp
Pas a produccioacute 10 Tester propietari de
lrsquoapp
Documentacioacute del
projecte
30 Project Manager
TOTAL 300
I per finalitzar veurem quin seria el cost aproximat que suposaria pel client aquets projecte A la Taula 2 mos-trem el cost dels sous dels treballadors segons el seu rol i a la Taula 3 el cagravelcul del cost final A lrsquohora de calcular el cost final afegim uns costos indirectes corresponents als desplaccedilaments per les reunions amb el client No tindrem en compte el cost drsquoadquisicioacute dels ordinadors utilitzats pels treballadors (suposarem que soacuten de pro-pietat) ni les llicegravencies dels programes de desenvolu-pament utilitzats (ja que tot eacutes software lliure o sense cap cost)
4 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
TAULA 2
COST MONETARI
Rol treballador Cost (euroh) Temps (h) Cost total
(euro)
Project
Manager
50 50 2500
Dissenyador 25 90 2250
Programador 20 150 3000
Tester 20 30 600
TOTAL 300 8350
Per tant el cost final del projecte despreacutes drsquoaplicar un
20 de benefici seria
TAULA 5
COST TOTAL
Tipus de cost Cost (euro)
Cost Directe 8350
Benefici +20
TOTAL 10020
Hem de tenir en compte que el cost final obtingut se-
gurament no seria tant elevat La planificacioacute de les hores srsquoha realitzat tenint en compte que no tinc gaire experiegraven-cia a lrsquohora de treballar en projectes de programacioacute drsquoaquest abast El meacutes probable es que a una empresa especialitzada en el desenvolupament software no li cal-guin tantes hores per a poder assolir els objectius esta-blerts
Al apegravendixs A1 i A2 trobem tota la informacioacute sobre la planificacioacute de les tasques En el primer trobem la planifi-cacioacute inicial que es va realitzar i en el A2 la planificacioacute final que ha sorgit amb les condicions en les que srsquoha treballat
52 Avaluacioacute de Riscos
Un altre aspecte fonamental de la planificacioacute drsquoun projecte eacutes lrsquoavaluacioacute dels possibles riscos que poden comprometre el correcte desenvolupament del projecte Estudiant amb anterioritat quines poden ser les principals amenaces es poden trobar possibles solucions o fins i tot arribar a evitar-los
bull Un dels possibles riscos principals que vagraverem tenir en compte era la falta drsquoexperiegravencia amb el motor gragravefic ja que no srsquohavia treballat dins del grau Per aixograve es va treballar des de un principi en estudiar-lo a partir de la documentacioacute [17] [20] [21] [24]
bull Un segon risc podia ser la lsquono addiccioacute de lrsquoaplicacioacutersquo que aquesta no arribeacutes a ser un entorn que cridi lrsquoatencioacute i caigueacutes en la monotonia i sim-plicitat Per aixograve es va treballar en la presa de re-quisits amb psicograveleg per a que el joc tingueacutes totes les eines drsquoun videojoc drsquoaquesta classe
bull Per acabar un aspecte de risc per a la finalitzacioacute del projecte i molt important que es va tenir en
compte era no aconseguir pujar lrsquoaplicacioacute a la Play Store Degut a la situacioacute actual amb el CO-VID-19 informen a la pagravegina que cada revisioacute pot portar un temps de 7 o meacutes dies degut a questa si-tuacioacute Aquest aspecte incontrolable podia deri-var a la no pujada de lrsquoapp o a no aconseguir pujar una versioacute sense errors importants Per aixograve com veiem a la planificacioacute final al annex A2 srsquoha avan-ccedilat el proceacutes de desenvolupament per a tenir meacutes temps en aquest aspecte
6 DESENVOLUPAMENT
Per a explicar el desenvolupament de lrsquoaplicacioacute amb la magravexima exactitud possible srsquoaniragrave referenciant al docu-ment adjunt ldquoDesenvolupament del Jocrdquo un document de meacutes de 70 pagravegines que conteacute tot tota la informacioacute relacionada amb el projecte de inici a final el qual srsquoha anat redactant paralmiddotlelament amb el transcurs drsquoaquest
61 Estudi sobre lrsquoaddiccioacute
El primer pas per a comenccedilar el projecte ha sigut assegu-rar-se que aquest conteacute els aspectes clau per a que com-pleixi els objectius plantejats Per aconseguir-ho es va formalitzar una reunioacute amb una psicograveloga experta en la mategraveria
La entrevista cal destacar-la com a molt satisfactograveria gragravecies a una bona recerca del tema [2][3] es van quumlestio-nar aspectes generals al psicograveleg com Que eacutes lrsquoaddiccioacute per a tu Consideres que hi ha diferents tipus drsquoaddiccioacute De les que es va extreure una gran perspectiva sobre el punt de vista de lrsquoentrevistat i per exemple es va aconse-guir que definiacutes la nostra aplicacioacute com a tipus drsquoaddiccioacute no destructiva un gran pas ja que era un dels objectius del treball que es classifiqueacutes com a addictiva
Amb altres quumlestions com Quins soacuten els elements clau per considerar un joc addictiu O Quines caracteriacutestiques ha drsquooferir a primera vista per a seguir explorant-lo Srsquoha aconseguit extreure una part emocional molt important de lrsquoaddiccioacute que inclou els sentiments Srsquoha vist que aquests soacuten molt important que es produeixin durant el joc tant si soacuten bons com dolents Gragravecies a aquesta part es van prendre conclusions com que el sistema de ragraven-quing de puntuacions del joc deixaria de ser local per a ser global i es va concloure desenvolupar un guioacute per al mode historia el qual inclou diagravelegs amb humor entre altres
Es poden trobar la totalitat de lrsquoentrevista al document adjunt ldquoEntrevista amb un Psicogravelegrdquo i el guioacute final al document adjunt Desenvolupament del Jocrdquo a lrsquoapartat 212 ldquoLlibret i guioacuterdquo
62 Resum del Joc
El funcionament principal del videojoc eacutes semblant al joc de Pong [25] perograve respectant certes distagravencies Tot i que el joc compta amb 10 escenaris amb les seves progravepies caracteriacutestiques si meacutes no la mecagravenica principal del joc
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 5
consta drsquouna pala de joc que lrsquousuari mouragrave horitzontal-ment per a evitar que una pilota caigui al terra Tambeacute compta amb tres murs als marges de la pantalla que a part de sumar punts quan siguin tocats amb la pilota canviaran de color segons els cops consecutius que han sigut golejats Si superen els 3 cops consecutius el mur en quumlestioacute desapareixeragrave fent impossible el seu contacte amb la pilota A meacutes diferents objectes apareixeran alea-tograveriament durant la partida per a oferir-nos efectes espe-cials que ens ajudaran o ens faran la partida meacutes compli-cada durant un cert temps
Al acabar cada partida obtindrem una puntuacioacute que es mostraragrave en un marcador de puntuacions per a compa-rar-la amb la dels nostres amics A part tota la informacioacute del joc es guardaragrave al dispositiu guardant el progreacutes en tot moment
Tot i que hem dit abans que el joc compta amb 10 es-cenaris diferents aquests es divideixen en dos modes de joc Historia i Lliure
El mode historia compta amb una petita trama que in-volucraragrave al jugador per a salvar el planeta on lrsquoobjectiu seragrave acabar amb els diferents enemics dels 5 nivells que amenaccedilaran al jugador
Lrsquoobjectiu del mode lliure seragrave en canvi aconseguir la magravexima puntuacioacute possible drsquoentre 5 modes de joc de mecagraveniques i dificultats diferents
Tot el progreacutes que aconseguim al joc es plasmaragrave en forma de monedes que podrem invertir per a personalit-zar amb diferents aspectes els objectes del joc
63 Presa de Requisits
Un cop fet lrsquoestudi per a elaborar el document de re-quisits srsquohan consultat moltes fonts drsquoinformacioacute [15] [16] historia dels videojocs [4] jocs semblants arquitectures de hardware que podria suportar el joc [5] estagravendards de desenvolupament documents de requisits[6] i documen-tacioacute[17] [18] [20] Vull tornar a destacar la importagravencia de lrsquoentrevista per a poder realitzar correctament aquest document oferint uns objectius clars Amb aquest treball fet vaig comenccedilar a redactar els requisits que es troben al ldquoCAPIacuteTOL 1rdquo del document adjunt ldquoDesenvolupament del jocrdquo Aquest conteacute molts apartats entre ells dos de clau
- Els requeriments del sistema On es parla sobre el propogravesit del sistema a desenvolupar el seu objec-tiu principal i les seves funcions Aquest apartat conteacute aspectes molt concrets del desenvolupa-ment com que el joc seragrave desenvolupat en castellagrave la connectivitat o requeriments de hardware miacute-nims per al funcionament del joc i conteacute un petit estudi sobre la restriccioacute drsquoedat del joc PEGI 3 Finalment conteacute una llista completa tant dels re-queriments funcionals del sistema com dels no funcionals on srsquoexplica detalladament cada funcioacute que podragrave oferir el joc com per exemple el mode historia
o Suportaragrave 5 escenaris diferents o Inclouragrave un tutorial interactiu amb
lrsquousuari o A cada escenari apareixeragrave un enemic di-
ferent amb habilitats moviments i IA propis
- Lrsquoanagravelisi del sistema En aquesta segona seccioacute clau del document a partir de la llista de requeri-ments esmentada en lrsquoapartat anterior es fa una anagravelisi preliminar del producte resumint totes les funcionalitats que contindragrave i els efectes que pro-duiragrave cada una en el transcurs de lrsquoaplicacioacute A partir drsquoaquesta primera anagravelisi srsquohan elaborat diferents diagrames de casos drsquouacutes on es poden veure molt visualment les interaccions que pot fer lrsquousuari amb el sistema
Fig 2 Diagrama de Navegar per la tenda
Com veiem a la Figura 2 drsquoexemple podem observar
totes les opcions drsquointeraccioacute que teacute lrsquousuari un cop estagrave dins la botiga Es poden trobar tots els casos drsquouacutes al do-cument adjunt ldquo Desenvolupament del Jocrdquo a lrsquoapartat 122 ldquoCasos drsquouacutesrdquo
Finalment a partir dels diagrames de casos drsquouacutes srsquoha elaborat una fitxa com la de la figura 3 de cada un on eacutes detalla les precondicions que srsquohan de complir pregravevia-ment per a que aquest es pugui dur a terme lrsquoiniciador que executa aquest cas drsquouacutes i el curs drsquoaccions que ocor-reran a partir drsquoaquest iniciador
Nom del Cas drsquoUacutes Comprar una textura per la pilota
Requeriment(s) Explorat(s) 681516
Precondicioacute(ns)
- Lrsquousuari ha seleccionat lrsquoopcioacute del menuacute ldquoTendardquo
Iniciador(s) Lrsquousuari ha polsat sobre el botoacute de tenda
Curs drsquoAccioacute Principal
1 Lrsquousuari selecciona la tenda de la pilota
2 Lrsquousuari fa scroll fins a seleccionar una textura que li agradi i
la polsa
3 Es comprova si ja teacute comprada aquesta textura (no la teacute)
4 Es comprova si teacute suficients monedes per adquirir la textura
(en teacute)
5 Lrsquousuari adquireix la textura srsquoelimina el seu preu per a in-
dicar-ho i es carrega la textura a la pilota de mostra de la ten-
da i a la que utilitzarem en qualsevol partida
Curs(os) Alternatiu drsquoAccioacute
3b Es comprova si ja teacute comprada aquesta textura (si la teacute)
4b Es carrega la textura a la pilota de mostra de la tenda i a la que
utilitzarem en qualsevol partida
4c Es comprova si teacute suficients monedes per adquirir la textura
(no en teacute)
5c Es mostra un aviacutes que lrsquousuari no teacute suficients monedes i no
es desbloqueja la textura
Fig 3 Descripcioacute Cas drsquouacutes ldquoComprar textura per la pilotardquo
6 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
64 Disseny i Test
Un cop redactats els requisits vaig passar a redactar el ldquoCAPIacuteTOL 2 DISSENY I CONSTRUCCIOacute DEL VIDEO-JOCrdquo que conteacute les seguumlents seccions clau
- Disseny Artiacutestic Conteacute tota la informacioacute per a en-tendre el concepte artiacutestic del videojoc Tota la his-toria en la que es desenvolupa aixiacute com un guioacute complet de tots els diagravelegs del mode historia entre altres Una seccioacute interessant que apareix eacutes la explicacioacute dels controls que hauragrave drsquoutilitzar lrsquousuari i perquegrave srsquohan fet aixiacute on es concreta que el joc nomeacutes con-tindragrave dos tipus de moviments el toc amb el dit i lrsquoscroll lateral Al simplificar el joc a dos tipus de moviments srsquoaconsegueix molta senzillesa que a nivell pragravectic es tradueix a un facilitat molt gran en lrsquoaprenentatge drsquouacutes Finalment conteacute una descripcioacute completa de tots els boosts(objectes aleatoris) que intervenen a les partides i els efectes que tindran
- Disseny del Software En aquesta seccioacute srsquoha desenvolupat un diagrama de classes i escenes a partir de tots els casos drsquouacutes Srsquoha optat per incloure les escenes (progravepies del motor Unity) dins drsquoaquest diagrama ja que proporcionen molta meacutes facilitat a lrsquohora drsquoentendre la relacioacute de les classes ja que algunes no intervenen entre siacute directament sinoacute a partir drsquouna escena especiacutefica
Fig 4 Diagrama de classes i escenes
Amb el diagrama definit es descriuen la funcionalitats de cada classe junt amb els seus atributs propis i les funcions que la formen
Definides les funcions de les classes srsquohan descrit els diagrames de sequumlegravencia molt importants per a observar el flux de les diverses accions directes que pot realitzar lrsquousuari amb la interfaccedil I en consequumlegravencia com reacciona el motor a partir de cada accioacute amb les escenes arxius de
guardat i els serveis de google Ha sigut molt uacutetil per a realitzar un desenvolupament correcte
Fig 5 Diagrama de Sequumlegravencia de la primera execucioacute del Joc
La seccioacute inclou un esboacutes de tota la interfaccedil que interactua amb lrsquousuari Per aconseguir un bon resultat drsquoaquesta es van preparar unes imatges que reconstruiumlen la interfaccedil i es va fer un first-click test [7] amb lrsquoeina web lsquoopti-malworkshoprsquo A causa de la versioacute gratuiumlta srsquohan realitzat 3 estudis dife-rents ja que lrsquoeina limitava la quantitat de preguntes per estudi [8] [9] [10] Gragravecies a aquesta eina amb cada estudi realitzat hem obtingut uns resultats molt visuals que ens han servit per conegraveixer realment si els menuacutes estaven ben estructurats El resultat com podem veure a les imatges de la seccioacute A2 i A3 del apegravendix ha sigut molt satisfactori i no srsquoha necessitat de realitzar cap canvi a la interfaccedil de lrsquousuari Podem dir que el plantejament drsquouna interfaccedil molt senzi-lla i intuiumltiva ha sigut correcte
- Implementacioacute del software Per acabar questa
seccioacute conteacute tots els elements artiacutestics que interve-nen en el joc (models 3D sprites) totes les escenes i la icona que es mostraragrave a la play store
65 Desenvolupament de LrsquoAplicacioacute
651 Implementacioacute del Menuacute Principal
Respecte a la implementacioacute del videojoc es va comenccedilar per elaborar el menuacute principal Per fer-ho es va iniciar el desenvolupament del script ldquoGameManagerrdquo Srsquoha de dir que tots els components visuals del joc srsquohan creat dins drsquouna estructura canvas [13] de Unity per a crear una interfaccedil responsive [12]
Script GameManager Per a crear aquest script encarregat de guardar totes les dades srsquoha utilitzat els PlayerPrefs [14] de unity Soacuten funcions del tipus clau-valor on amb un id pots guardar un valor a un espai de memograveria del dispositiu Aquest GameManager com srsquoexplica a la documentacioacute
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 7
del desenvolupament del joc srsquoencarrega tant de crear lrsquoarxiu de guardat quan srsquoinicialitza per primer com el joc com de carregar els valors drsquoaquests un cop ja srsquoha jugat meacutes drsquoun cop Amb el GameManager com a estructura principal srsquoha comenccedilat a desenvolupar lrsquoescena del Menuacute principal Escena lsquoMenuacutersquo ndash Menuacute principal Per aquest menuacute principal que veiem a la figura 6 es buscava una sensacioacute drsquoimmersioacute al joc que et fes sentir a lrsquoespai Per aixograve es va decidir dividir les 4 parts principals drsquoaquest menuacute Menuacute principal mode lliure mode histo-ria i botiga en diferents punts de lrsquoespai 3D formant una circumferegravencia Aixograve ha permegraves desenvolupar la seguumlent foacutermula per a la cagravemera de joc que ofereix una sensacioacute de flotar a lrsquoespai cameraTransformrotation = QuaternionSlerp (camera-TransformrotationcameraDesiredLookAtrotation CAMERA_TRANSITION_SPEED TimedeltaTime) Amb aquesta foacutermula estem assignant al valor de rotacioacute de la cagravemera del joc una nova rotacioacute entre la seva posi-cioacute actual (cameraTransformrotation) i la posicioacute destiacute (cameraDesiredLookAtrotation) Gragravecies a la funcioacute slerp() realitzaragrave un moviment molt lleuger seguint la velocitat que li indiquem Per a veure millor aquest efecte de cagravemera es pot consul-tar el viacutedeo adjunt ldquoDEMO_GRAVITY_PONGrdquo
Escena lsquoMenuacutersquo ndash Mode Lliure El seguumlent pas ja amb la cagravemera a punt ha sigut desenvo-lupar el llistat de nivells del mode lliure que trobem a la figura 7 Ha sigut una decisioacute difiacutecil i bastant creativa ja que es volia una llista de nivells molt visual i vaig decidir mostrar els nivells com a imatges Investigant vaig trobar que mitjanccedilant codi pots trobar i guardar a variables els sprites que estiguin dins de la carpeta que crea unity de ldquoResourcesrdquo Amb aquesta tegravecnica i un Scroll Rect [11] podem passar els nivells amb un scroll lateral Despreacutes srsquoha afegit la imatge i el text dels tiquets a la part inferior del nivell i el regravecord del nivell a sobre drsquoaquest Per finalitzar srsquoha creat el botoacute de tornar per a que la cagravemera torni a rotar fins la posicioacute del menuacute principal Escena lsquoMenuacutersquo ndash Botiga La botiga com observem ala figura 8 manteacute una estruc-tura semblant al llistat de nivells perograve amb diferegravencies notables En comptes de carregar varies imatges carrega una imat-ge sencera amb totes les textures i la divideix en textures de 256x256 per a una millor optimitzacioacute Teacute un indica-dor monedes del joc i teacute un botoacute extra per a canviar entre la tenda de textures de la pilota i de la lluna de joc
Fig 6 Menuacute Principal
Fig 7 Mode lliure
Escena lsquoMenuacutersquo ndash Mode Histograveria El llistat de nivells del mode histograveria no utilitza la tegravecnica de cagraverrega de imatges pels nivells sinoacute que srsquohan utilitzat uns models gratuiumlts de planetes 3D Cada planeta forma un nivell amb el seu nom i el seu regravecord de temps propi Un cop acabada tota la visual de lrsquoescena del menuacute srsquoha creat el script que el gestionaria anomenat ldquoMainMenurdquo
Fig 8 Botiga
Figura 9 Mode Histograveria
Script MainMenu Aquest script srsquoencarrega de carregar i gestionar els com-ponents de lrsquoescena del menuacute del llistat de nivells i la botiga Primer de tot carrega gragravecies als playerPrefs guardats tots els textos de regravecords de puntuacioacute de cada nivell els tiquets les monedes i les textures comprades de la pilota i lluna de joc que lrsquousuari havia obtingut Srsquoha creat un sistema tant per al llistat de nivells com a la botiga de bloqueig on al llistat de nivells es bloquegen tots els botons dels jocs menys del primer fins que en aquest no srsquohagi obtingut una puntuacioacute miacutenima de 5 i a la botiga es guarda una matriu de desbloquejos que indica quines textures srsquohan comprat i ja no apareixeragrave el seu preu i quines no Tambeacute srsquoencarrega de a la botiga mostrar com quedaria la textura comprada a la pilota o a la lluna de joc i apli-car-la per a quan juguem qualsevol partida Aquest script tambeacute carrega la muacutesica del menuacute
8 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
Script History_Levels Aquest script srsquoencarrega de la gestioacute del menuacute ldquoHISTO-RIArdquo Srsquoha creat un sistema de visualitzacioacute on el jugador can-via de nivell mitjanccedilant dues fletxes i un jugador no po-dragrave accedir a un nivell fins que hagi completat lrsquoanterior Junt amb aquest sistema de bloqueig segons el nivell on es situiuml el jugador es mostraragrave el millor temps en que lrsquoha acabat (si es que hi ha) i el nom del nivell Amb aquests components descrits fins ara ja tindriacuteem tot el menuacute principal acabat Un cop acabat el menuacute srsquoha passat a crear els nivells del mode lliure
652 Implementacioacute del Mode Lliure
El mode lliure consta de 5 nivells amb mecagraveniques de joc variants perograve compartint lrsquoestructura principal del joc Per a explicar com srsquoha desenvolupat aquest mode srsquoutilitzaragrave de referegravencia el mode de joc ldquoCLASSICrdquo el mode de joc original on primer srsquoexplicaran els compo-nents de lrsquoescena i despreacutes els scripts que la componen Una part molt important drsquoaquestes escenes eacutes el disseny seguint el esquema senzill i visual del joc srsquoha passat per diversos plantejaments murs reals una barra plana Finalment despreacutes drsquoun extens plantejament es va deci-dir aplicar el disseny que veiem a la figura 10 En aquest disseny podem observar que els murs soacuten llums LED Aquesta decisioacute srsquoha considerat la millor ja que oferia tota la informacioacute que necessita el jugador dels murs sense ser un objecte molt gran i amb molt detall Finalment srsquohan utilitzat imatges de la temagravetica espacial per a completar el fons de lrsquoescena Escena CLASSIC Lrsquoescena drsquoaquest mode de joc la componen directament la pilota la lluna de joc els murs de joc la puntuacioacute el menuacute de pausa i els tiquets disponibles Perograve realment hi ha molts meacutes components secundaris que no srsquoentraragrave en detall a explicar-los perograve que valia la pena mencionar-los com uns murs secundaris invisibles que srsquoutilitzen per detectar si el jugador perd quan ha destruiumlt un mur ob-jectes que solament es mostren quan srsquoagafa un boost llums que segueixen els objectes per crear un efecte pri-mer pla la interfaccedil del menuacute de pausa Presentats aixiacute els components de lrsquoescena eacutes meacutes interes-sant veure els scripts que afecten a aquests components Script ClassicBall Aquest script que controla la pilota eacutes el meacutes important de lrsquoescena ja que gestiona tot el que pot tenir contacte amb ella La funcioacute meacutes important drsquoaquest script eacutes sens dubte OnCollisionEnter() Aquest funcioacute nativa de Unity ser-veix per a gestionar quan lrsquoobjecte topa amb un altre objecte Quan la pilota topa amb un mur detecta quin eacutes
i segons el seu color actual li canviaragrave el seu color al que toqui i suma un punt Si la pilota topa amb la lluna de joc simplement augmen-taragrave la seva velocitat Si topa amb el forat negre de la part inferior o traspassa un mur destruiumlt srsquoencarrega de parar la partida i la muacutesica mostrar el menuacute de derrota afegir a les monedes totals del jugador les guanyades aquella partida i canviar el regravecord de puntuacioacute del nivell si srsquoha superat
Fig 10 Escena CLASSIC
Fig 11 Efecte de Boost de Gel
Script ClassicPad Aquest script simplement srsquoencarrega de la gestioacute del moviment de la lluna de joc Detecta si el jugador estagrave polsant a sobre drsquoella i es mou en consequumlegravencia Per al mode histograveria srsquoencarrega de si un projectil topa amb ella parar la partida i mostrar el menuacute de derrota Script Pause Menu Aquest script com el seu nom indica gestiona tot el me-nuacute de pausa Que quan es polsi a sobre del botoacute de pausa es pari el joc i es mostri la interfaccedil que quan polsem sobre lsquoreprendrersquo la partida actual segueixi on estava que es torni al menuacute o que es surti de la partida Script Boosts Aquest script srsquoencarrega drsquoinvocar un objecte aleatori que apareix cada x segons aleatograveriament per pantalla un cert temps Segons el boost es produeix un efecte diferent Per fer aixograve se li ha assignat el script a una imatge i srsquoha jugat amb el seu render (el component que fa que es mos-tri la imatge) Gragravecies a la funcioacute TimeTimeSinceLevelLoad que ens proporciona el temps que ha passat des de que srsquoha carregat el nivell sabem quan fer invisible o no lrsquoobjecte Aixiacute creat lrsquoalgoritme que mostra una imatge aleatograveriament drsquouna llista drsquoimatges sempre que no hi hagi un boost funcionant Ara amb un switch case segons la imatge que srsquoestagrave mos-trant crida a la funcioacute del boost que toca per a que realitzi lrsquoefecte adequat Un bon exemple eacutes el boost de gel que al collir-lo com veiem a la figura 11 mostra a tots els murs que no hagin sigut destruiumlts una imatge de neu que impedeix destruir-los
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 9
Es poden trobar tots els boosts i efectes a lrsquoapartat 215 del document adjunt ldquoDesenvolupament del Jocrdquo Amb tots aquests components ja es podria jugar una par-tida ldquoCLASSICrdquo del mode lliure Per a construir els altres nivells del mode lliure srsquoha jugat amb potenciar o extreure aquestes funcions descrites per proporcionar un altre tipus de joc
bull Escena Double Trouble Aquiacute srsquoha duplicat la pilota de joc i srsquoha adaptat lrsquoentorn per a que el nivell sigui jugable
bull Escena Faster Aquest mode es juga al doble de la velocitat normal de joc utilitzant la funcioacute Ti-meTimeScale = 2 que duplica el temps
bull Escena Insight Aquest mode es juga sense veure els components del joc el jugador nomeacutes veu una estela que indica el moviment de la pilota i la lluna de joc
bull Escena Relax En aquest mode on nomeacutes es perdragrave la partida si aquesta cau al forat negre inferior Els murs mai poden ser destruiumlts i no apareixen boosts
653 Implementacioacute del Mode Histograveria
Per a aquest mode srsquoha utilitzat com a base lrsquoestructura del nivell ldquoCLASSICrdquo del mode lliure Amb aquesta es-tructura srsquohan eliminat els boosts i el marcador de pun-tuacioacute Consta drsquoun objectiu totalment diferent al mode lliure no volem aconseguir la major puntuacioacute sinoacute que volem destruir la nau enemiga i si pot ser en el menor temps possible Script Dialog Primerament srsquoha creat un sistema de diagravelegs en el que seguint el guioacute descrit al document adjunt ldquoDesenvolu-pament del Jocrdquo apartat 212 dos personatges ens ense-nyen a jugar a lrsquohora que ens narren una divertida histograve-ria Dit aixograve srsquoha creat un sistema drsquoescriptura on segons unes frases donades srsquoescriu lletra per lletra aconseguint lrsquoefecte de narracioacute dels videojocs Quan comprovem que srsquoha mostrat tota la frase per pan-talla mostrem un botoacute per a continuar amb la conversa i un altre botoacute per a saltar el diagraveleg i comenccedilar a jugar Agafant la primera lletra de la frase amb la funcioacute subs-tring() sabrem si quin personatge parla i hem de mostrar Script History_Ball La pilota srsquoha hagut drsquoadaptar a tots els nous compo-nents A meacutes srsquoha creat un sistema per a mostrar en tot mo-ment el temps que ha passat des de lrsquoinici del nivell Per fer-ho srsquohan utilitzat 2 variables pels minuts i segons Aixograve ha permegraves visualitzar amb meacutes comoditat el format de temps ldquominuts segonsrdquo amb la funcioacute toString()
permetent realitzar les comparacions de temps correcta-ment Script Launcher Aquest script srsquoencarrega un model de miacutessil que li indi-quem i crear una instagravencia drsquoaquest davant la nau amb una certa velocitat dirigit cap a la part inferior de la pan-talla Per aconseguir-ho srsquoutilitza un objecte auxiliar a lrsquoescena lsquoFirePointrsquo que eacutes situat sempre davant la nau on srsquoinstanciaragrave el model del miacutessil amb un cert impuls Po-dem visualitzar aquest sistema a la figura 12 Script ProjectileCollision Aquest script srsquoencarrega solament de destruir el miacutessil quan topi amb un objecte que no sigui la lluna de joc Eacutes un script per a optimitzar el rendiment del joc Un cop descrits els scripts en comuacute per a tots els nivells passem als scripts que a cada nivell soacuten diferents perograve que srsquoutilitzen per a una mateixa causa la gestioacute de la nau enemiga
bull Capiacutetols 1 i 2 Els capiacutetols 1 i 2 comparteixen el ma-teix moviment de la nau Aquest script mou la nau seguint un moviment aleatori Lrsquoalgorisme consisteix en que srsquoescull un punt aleatori a arribar i quan srsquoarriba srsquoescull un altre
bull Capiacutetol 3 Al tercer capiacutetol eacutes on veiem per primer cop una intelmiddotligegravencia artificial en el moviment de la nau aquesta fugiragrave de la pilota Per fer-ho srsquoha divi-dit el nivell en dues zones dreta i esquerra quan la pilota estigui a la zona de la dreta la nau es mouragrave a lrsquoesquerra i a la inversa Per a que no sigui impossi-ble tocar-la srsquoha ajustat la velocitat del seu movi-ment adequadament
bull Capiacutetol 4 Al quart capiacutetol la nau ja consta drsquouna intelmiddotligegravencia artificial meacutes avanccedilada en la que es mou segons a on la pilota estigui situada Lrsquoalgorisme consisteix en tenir la posicioacute de la pilota en tot moment i srsquoha dividit lrsquoespai de la partida en 4 quadrats com podem veure a la figura 13 Si la pilota estagrave al quadrat 1 la nau es mouragrave al qua-drat contrari el 4 Si la pilota es situa al quadrat 2 la nau es mouragrave al quadrat 3 Per a que no fos impossi-ble topar amb la nau srsquoha drsquoajustat la velocitat del moviment
bull Capiacutetol 5 Al capiacutetol final lrsquoalgoritme consta del ma-teix moviment que al nivell anterior perograve afegint un extra que si la nau es troba en el mateix quadrat que la pilota en el mateix instant de temps la nau redui-ragrave el seu tamany complicant lrsquoobjectiu drsquoaconseguir destruir-la
10 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
Fig 12 Nau amb lrsquoobjecte lsquoFire-
Pointrsquo
Fig 13 Divisioacute de quadres nivells 4 i 5
Per a veure visualment com funcionen les funcions expli-cades en aquest apartat es pot consultar el viacutedeo adjunt ldquoDEMO_GRAVITY_PONGrdquo
66 Proves
Gragravecies a la metodologia de desenvolupament de Rapid Prototyping srsquoha pogut anar testejant cada mogravedul desen-volupat al moment aixiacute extraient tots els resultats de tests ragravepidament Srsquohan realitzat 4 tipus de proves diferents
bull A les proves drsquounitat srsquoha testejat que els diferents mograveduls del sistema funcionin correctament Com que si un miacutessil drsquouna nau enemiga glopeja la lluna de joc es mostra el menuacute correcte o si tenim les su-ficients monedes per a comprar una textura la po-dem comprar satisfactograveriament entre altres
bull A les proves drsquointegracioacute srsquoha testejat que les in-teraccions entre els diferents escenaris del sistema sigui correcte Srsquoha provat que es pugi accedir a tots els nivells del videojoc i que des de aquests es pu-gui tornar correctament al menuacute principal a traveacutes del menuacute de pausa
bull Les proves de validacioacute han servit per comprovar que hem complit amb els requisits del projecte Hem testejat el correcte log in amb google la visualitzacioacute dels marcadors i la visualitzacioacute dels objectius entre altres
bull Per acabar les proves de sistema han servit gragravecies a la developer console [24] comprovar que el joc srsquoha executat correctament variant els dispositius i versions drsquoAndroid
A lrsquoapartat 31 del document adjunt ldquoDesenvolupament del Jocrdquo es poden trobar la totalitat de les proves realitza-des de cada tipus amb els seus resultats corresponents
7 CONCLUSIONS
I ja per finalitzar aquest document explicareacute quines soacuten les conclusions que he extret sobre el projecte Primer de tot crec que la planificacioacute que vaig realitzar a
lrsquoinici ha sigut lrsquoencertada Les petites alteracions que srsquohan acabat realitzant (com podem veure en el diagrama de Gantt real de lrsquoapegravendix 2) han estat meacutes enfocades a avanccedilar lrsquoinici de les tasques que no pas a endarrerir-les a causa de la situacioacute excepcional que hem viscut
Respecte a la fase drsquoimplementacioacute considero que
srsquohan completat tots els objectius que es presentaven a lrsquoinici del projecte Srsquohan desenvolupat totes les funcions que es van proposar al document de requisits amb lrsquoajuda de la psicograveloga que havia de tenir el joc per a que es considereacutes addictiu i aixiacute ha sigut Per lo que podem concloure que hem desenvolupat un joc addictiu per a Android satisfactograveriament A meacutes srsquoha de dir que lrsquoaplicacioacute eacutes responsive [12] i molt fagravecilment escalable
I com a uacuteltim punt voldria comentar que mrsquohagueacutes
agradat disposar de meacutes temps i recursos per a millorar tot lrsquoaspecte visual de lrsquoaplicacioacute encara meacutes fins a arribar a apropar-se al nivell de mitjanes produccions aquest aspecte milloraria lrsquointeregraves per al joc
71 Futures Accions
A continuacioacute detallarem aquelles accions futures que he considerat que pot ser interessant desenvolupar en prograveximes ampliacions del joc per tal que lrsquoexperiegravencia drsquouacutes dels usuaris sigui la millor possible
bull Un tutorial molt meacutes visual que es mostri el primer cop que srsquoiniciiuml lrsquoaplicacioacute on no solament srsquoexpliqui sobre la mecagravenica del joc sinoacute que tambeacute es guiiuml a lrsquousuari a traveacutes dels menuacutes la interfaccedil i els diferents modes i nivells de joc
bull Una integracioacute drsquoalgun mode de joc online on es po-gueacutes competir contra un altre jugador en temps real oferiria molt drsquoatractiu i enriquiria molt lrsquoaplicacioacute
bull Per acabar com ja hem comentat una millora visual en la que no mrsquohe pogut centrar en especial durant el projecte on amb lrsquoajuda drsquoalgun professional en la mategraveria es crearien unes visuals progravepies per al joc
8 AGRAIumlMENTS
En primer lloc mrsquoagradaria agrair a la meva famiacutelia el suport incondicional que mrsquohan donat en tot moment durant els quatre anys que porto de carrera Sense ells res de tot aixograve hauria estat possible
Tambeacute mrsquoagradaria agrair la Gemma Saacutenchez la meva tutora del TFG pels consells i lrsquoajuda que mrsquoha ofert du-rant aquests mesos tant durs i especials de projecte insis-tint en quegrave treballes ben dur des del primer dia ha per-megraves que aquest treball hagi pogut tirar endavant amb meacutes facilitat
Finalment voldria agrair a les altres persones que han fet aquest treball possible des de la psicograveloga experta que ens va ajudar a definir molt beacute els requisis fins a tots els companys i amics que han treballat com a testers del joc trobant lsquobugsrsquo i fent propostes sobre possibles millores drsquoaquest
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 11
IacuteNDEX DE FIGURES
Fig 1 lsquoRapid Prototypingrsquo3
Fig 2 Diagrama de Classes lsquoNavegar per la Tendarsquo5
Fig 3 Descripcioacute Cas drsquouacutes ldquoComprar textura pilotardquo6
Fig 4 Diagrama de Classes i Escenes6
Fig 5 Diagrama de Sequumlegravencia 1a Execucioacute6
Fig 6 Escena Menuacute Principal7
Fig 7 Escena Mode Lliure7
Fig 8 Escena Botiga8
Fig 9 Escena Mode Histograveria8
Fig 10 Escena lsquoCLASSICrsquo8
Fig 11 Efecte Boost de Gel8
Fig 12 Nau amb objecte lsquofirepointrsquo10
Fig 13 Divisioacute de quadres nivells 4 i 510
REFEREgraveNCIES
[1] Desenvolupament lsquoRapid prototypingrsquo httpseswikipediaorgwikiModelo_de_prototipos
[2] Article de lrsquoaddiccioacute als videojocs httpspsicologiaymentecomclinicaadiccion-a-videojuegos
[3] Per quegrave enganxen els videojocs httpswwwlavanguardiacomestilos-de-vida2012062954317381414por-que-enganchan-los-videojuegoshtml
[4] Historia dels Videojocs httpswwwfibupceduretroinformaticahistoriavideojocshtml
[5] Requisits miacutenims Candy Crush Saga httpswwwmicrosoftcomes-espcandy-crush-sa-ga9nblggh18846activetab=pivotregionofsystemrequirementstab
[6] Document SRS drsquoexemple httpswwwdocsitycomesejemplo-de-documento-srs4930539
[7] El lsquoFirst clickrsquo test httpsusabilityhubcomguidesfirst-click-testing
[8] Quumlestionari lsquoFirst clickrsquo test I httpsowsiocm7v7lx3h4
[9] Quumlestionari lsquoFirst clickrsquo test II httpsowsiocmj6574121
[10] Quumlestionari lsquoFirst clickrsquo test III httpsowsiocm7df25ouc
[11] Scroll Rect de Unity httpsdocsunity3dcomes20184Manualscript-ScrollRecthtml
[12] Disseny Responsive httpswww40defiebrecomque-esdiseno-responsi-ve~text=El20disentildeo20web20responsive20o3B20ordenador2C20tablet2C20smartphonehellip
[13] Canvas de Unity httpsdocsunity3dcomescurrentManualUICanvashtml
[14] Playerprefs de Unity httpsdocsunity3dcomescurrentScriptReferencePlayerPrefshtml
[15] ldquoDisseny de Softwarerdquo Assignatura del grau que ha ser-
vit de font bagravesica dels coneixements aplicats tant a An-droid com als tests amb usuaris La seva guia docent la trobem disponible a httpsdocsunity3dcomManualUnityManualhtml
[16] ldquoTest i Qualitat del Softwarerdquo Assignatura del grau que ha servit de font bagravesica dels coneixements aplicats per als tests del codi La seva guia docent la trobem disponible a httpsguiesuabcatguies_docentspublicportalhtml2019assignatura102758ca
[17] ldquoDocumentacioacuten de Unityrdquo Documentacioacute completa del motor gragravefic lsquoUnityrsquo que srsquoha anat consultant en tot mo-ment del desenvolupament httpsdocsunity3dcomManualUnityManualhtml httpswwww3schoolscomcs
[18] ldquoStack Overflowrdquo Fograverum de preguntes i respostes rela-cionades amb el moacuten de la programacioacute i la informagravetica Srsquoha anat consultant durant la fase drsquoimplementacioacute Al-gunes de les pagravegines que voldria destacar
o Text borroacutes a Unity httpsstackoverflowcomquestions16506737unity3d-3d-text-always-displayed-blur16507861
o Sing-In Google httpsstackoverflowcomquestions59599895problems-with-google-sign-in-in-unity
[19] ldquoComo firmar tu apprdquo Documentacioacute per a desenvolupa-dors Android sobre com signar una aplicacioacute per a que totes les funcions de google funcionin correctament httpsdeveloperandroidcomstudiopublishapp-signinggoogle-play-app-signing
[20] ldquoUnity Ads Documentationrdquo Documentacioacute sobre el sis-tema de publicitat de unity utilitzat a lrsquoapp httpsdocsunity3dcomPackagescomunityads34manualindexhtml
[21] ldquoGoogle play games plugin for unityrdquo Plugin per a unity per a poder utilitzar totes les funcions de google play games httpsgithubcomplaygameservicesplay-games-plugin-for-unity
[22] ldquoFlaticonrdquo Web de recursos gratuiumlts drsquoon srsquohan descarre-gat els sprites que srsquoutilitzen al joc httpswwwflaticones
[23] ldquoUnity Asset Storerdquo Web de recursos gratuiumlts de unity drsquoon srsquohan descarregat els models dels planetes que srsquoutilitzen al joc entre altres httpsassetstoreunitycomgclid=CjwKCAjwlZf3BRABEiwA8Q0qq9NcH2nCMrUHDdQUrV0K7dNiZD6JMAy7G8x93NPLzD3wZKmhiK1MQBoCvR0QAvD_BwE
[24] ldquoAyuda de Play Consolerdquo Documentacioacute sobre al play console plataform on es puja lrsquoaplicacioacute per a que es vi-sualitzi a la play store que srsquoha consultat quan han sorgit problemes httpssupportgooglecomgoogleplayandroid-developerhl=estopic=3450769
[25] ldquoPongrdquo Primer videojoc de la histograveria httpseswikipediaorgwikiPong~text=Pong20(o20Tele-Pong)mesa20(o20ping20pong)
[26] ldquoFlappy Birdsrdquo httpseswikipediaorgwikiFlappy_Bird
[27] ldquoCandy Crushrdquo httpswwwxatakamovilcommovil-y-sociedadcandy-crush-saga-la-ciencia-detras-de-la-adiccion
12 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
APEgraveNDIX
A1 DIAGRAMA DE GANTT DE LA PLANIFICACIOacute INICIAL
A1 Diagrama de Gantt corresponent a la planificacioacute inicial del projecte En aquest diagrama podem veure les diferents tasquesetapes de desenvolupament amb les setmanes que es va planificar destinar a cada una
A2 SECCIOacute DrsquoAPEgraveNDIX
A2 Diagrama de Gantt corresponent a la planificacioacute final del projecte Tal i com podem veure tenim alguns canvis en els temps respecte a la planificacioacute inicial es va acurtar la fase de desenvolupament ja que amb la situacioacute excepcional del paiacutes srsquoha disposat de molt meacutes
temps per al desenvolupament lo qual ha permegraves avanccedilar el pas a produccioacute i la documentacioacute del projecte
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 13
A3 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1
A3 Resultat Estudi 1 - Tasca 1 Com observem el 90 dels testers han completat lrsquoobjectiu de la tasca
A4 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1 (MAPA DE CALOR)
A4 Resultat estudi 1 ndash Tasca 1 (Mapa de Calor) Com podem observar la zona de tocs de dit del 70 dels tocs se centra en el botoacute correcte
14 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
4 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
TAULA 2
COST MONETARI
Rol treballador Cost (euroh) Temps (h) Cost total
(euro)
Project
Manager
50 50 2500
Dissenyador 25 90 2250
Programador 20 150 3000
Tester 20 30 600
TOTAL 300 8350
Per tant el cost final del projecte despreacutes drsquoaplicar un
20 de benefici seria
TAULA 5
COST TOTAL
Tipus de cost Cost (euro)
Cost Directe 8350
Benefici +20
TOTAL 10020
Hem de tenir en compte que el cost final obtingut se-
gurament no seria tant elevat La planificacioacute de les hores srsquoha realitzat tenint en compte que no tinc gaire experiegraven-cia a lrsquohora de treballar en projectes de programacioacute drsquoaquest abast El meacutes probable es que a una empresa especialitzada en el desenvolupament software no li cal-guin tantes hores per a poder assolir els objectius esta-blerts
Al apegravendixs A1 i A2 trobem tota la informacioacute sobre la planificacioacute de les tasques En el primer trobem la planifi-cacioacute inicial que es va realitzar i en el A2 la planificacioacute final que ha sorgit amb les condicions en les que srsquoha treballat
52 Avaluacioacute de Riscos
Un altre aspecte fonamental de la planificacioacute drsquoun projecte eacutes lrsquoavaluacioacute dels possibles riscos que poden comprometre el correcte desenvolupament del projecte Estudiant amb anterioritat quines poden ser les principals amenaces es poden trobar possibles solucions o fins i tot arribar a evitar-los
bull Un dels possibles riscos principals que vagraverem tenir en compte era la falta drsquoexperiegravencia amb el motor gragravefic ja que no srsquohavia treballat dins del grau Per aixograve es va treballar des de un principi en estudiar-lo a partir de la documentacioacute [17] [20] [21] [24]
bull Un segon risc podia ser la lsquono addiccioacute de lrsquoaplicacioacutersquo que aquesta no arribeacutes a ser un entorn que cridi lrsquoatencioacute i caigueacutes en la monotonia i sim-plicitat Per aixograve es va treballar en la presa de re-quisits amb psicograveleg per a que el joc tingueacutes totes les eines drsquoun videojoc drsquoaquesta classe
bull Per acabar un aspecte de risc per a la finalitzacioacute del projecte i molt important que es va tenir en
compte era no aconseguir pujar lrsquoaplicacioacute a la Play Store Degut a la situacioacute actual amb el CO-VID-19 informen a la pagravegina que cada revisioacute pot portar un temps de 7 o meacutes dies degut a questa si-tuacioacute Aquest aspecte incontrolable podia deri-var a la no pujada de lrsquoapp o a no aconseguir pujar una versioacute sense errors importants Per aixograve com veiem a la planificacioacute final al annex A2 srsquoha avan-ccedilat el proceacutes de desenvolupament per a tenir meacutes temps en aquest aspecte
6 DESENVOLUPAMENT
Per a explicar el desenvolupament de lrsquoaplicacioacute amb la magravexima exactitud possible srsquoaniragrave referenciant al docu-ment adjunt ldquoDesenvolupament del Jocrdquo un document de meacutes de 70 pagravegines que conteacute tot tota la informacioacute relacionada amb el projecte de inici a final el qual srsquoha anat redactant paralmiddotlelament amb el transcurs drsquoaquest
61 Estudi sobre lrsquoaddiccioacute
El primer pas per a comenccedilar el projecte ha sigut assegu-rar-se que aquest conteacute els aspectes clau per a que com-pleixi els objectius plantejats Per aconseguir-ho es va formalitzar una reunioacute amb una psicograveloga experta en la mategraveria
La entrevista cal destacar-la com a molt satisfactograveria gragravecies a una bona recerca del tema [2][3] es van quumlestio-nar aspectes generals al psicograveleg com Que eacutes lrsquoaddiccioacute per a tu Consideres que hi ha diferents tipus drsquoaddiccioacute De les que es va extreure una gran perspectiva sobre el punt de vista de lrsquoentrevistat i per exemple es va aconse-guir que definiacutes la nostra aplicacioacute com a tipus drsquoaddiccioacute no destructiva un gran pas ja que era un dels objectius del treball que es classifiqueacutes com a addictiva
Amb altres quumlestions com Quins soacuten els elements clau per considerar un joc addictiu O Quines caracteriacutestiques ha drsquooferir a primera vista per a seguir explorant-lo Srsquoha aconseguit extreure una part emocional molt important de lrsquoaddiccioacute que inclou els sentiments Srsquoha vist que aquests soacuten molt important que es produeixin durant el joc tant si soacuten bons com dolents Gragravecies a aquesta part es van prendre conclusions com que el sistema de ragraven-quing de puntuacions del joc deixaria de ser local per a ser global i es va concloure desenvolupar un guioacute per al mode historia el qual inclou diagravelegs amb humor entre altres
Es poden trobar la totalitat de lrsquoentrevista al document adjunt ldquoEntrevista amb un Psicogravelegrdquo i el guioacute final al document adjunt Desenvolupament del Jocrdquo a lrsquoapartat 212 ldquoLlibret i guioacuterdquo
62 Resum del Joc
El funcionament principal del videojoc eacutes semblant al joc de Pong [25] perograve respectant certes distagravencies Tot i que el joc compta amb 10 escenaris amb les seves progravepies caracteriacutestiques si meacutes no la mecagravenica principal del joc
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 5
consta drsquouna pala de joc que lrsquousuari mouragrave horitzontal-ment per a evitar que una pilota caigui al terra Tambeacute compta amb tres murs als marges de la pantalla que a part de sumar punts quan siguin tocats amb la pilota canviaran de color segons els cops consecutius que han sigut golejats Si superen els 3 cops consecutius el mur en quumlestioacute desapareixeragrave fent impossible el seu contacte amb la pilota A meacutes diferents objectes apareixeran alea-tograveriament durant la partida per a oferir-nos efectes espe-cials que ens ajudaran o ens faran la partida meacutes compli-cada durant un cert temps
Al acabar cada partida obtindrem una puntuacioacute que es mostraragrave en un marcador de puntuacions per a compa-rar-la amb la dels nostres amics A part tota la informacioacute del joc es guardaragrave al dispositiu guardant el progreacutes en tot moment
Tot i que hem dit abans que el joc compta amb 10 es-cenaris diferents aquests es divideixen en dos modes de joc Historia i Lliure
El mode historia compta amb una petita trama que in-volucraragrave al jugador per a salvar el planeta on lrsquoobjectiu seragrave acabar amb els diferents enemics dels 5 nivells que amenaccedilaran al jugador
Lrsquoobjectiu del mode lliure seragrave en canvi aconseguir la magravexima puntuacioacute possible drsquoentre 5 modes de joc de mecagraveniques i dificultats diferents
Tot el progreacutes que aconseguim al joc es plasmaragrave en forma de monedes que podrem invertir per a personalit-zar amb diferents aspectes els objectes del joc
63 Presa de Requisits
Un cop fet lrsquoestudi per a elaborar el document de re-quisits srsquohan consultat moltes fonts drsquoinformacioacute [15] [16] historia dels videojocs [4] jocs semblants arquitectures de hardware que podria suportar el joc [5] estagravendards de desenvolupament documents de requisits[6] i documen-tacioacute[17] [18] [20] Vull tornar a destacar la importagravencia de lrsquoentrevista per a poder realitzar correctament aquest document oferint uns objectius clars Amb aquest treball fet vaig comenccedilar a redactar els requisits que es troben al ldquoCAPIacuteTOL 1rdquo del document adjunt ldquoDesenvolupament del jocrdquo Aquest conteacute molts apartats entre ells dos de clau
- Els requeriments del sistema On es parla sobre el propogravesit del sistema a desenvolupar el seu objec-tiu principal i les seves funcions Aquest apartat conteacute aspectes molt concrets del desenvolupa-ment com que el joc seragrave desenvolupat en castellagrave la connectivitat o requeriments de hardware miacute-nims per al funcionament del joc i conteacute un petit estudi sobre la restriccioacute drsquoedat del joc PEGI 3 Finalment conteacute una llista completa tant dels re-queriments funcionals del sistema com dels no funcionals on srsquoexplica detalladament cada funcioacute que podragrave oferir el joc com per exemple el mode historia
o Suportaragrave 5 escenaris diferents o Inclouragrave un tutorial interactiu amb
lrsquousuari o A cada escenari apareixeragrave un enemic di-
ferent amb habilitats moviments i IA propis
- Lrsquoanagravelisi del sistema En aquesta segona seccioacute clau del document a partir de la llista de requeri-ments esmentada en lrsquoapartat anterior es fa una anagravelisi preliminar del producte resumint totes les funcionalitats que contindragrave i els efectes que pro-duiragrave cada una en el transcurs de lrsquoaplicacioacute A partir drsquoaquesta primera anagravelisi srsquohan elaborat diferents diagrames de casos drsquouacutes on es poden veure molt visualment les interaccions que pot fer lrsquousuari amb el sistema
Fig 2 Diagrama de Navegar per la tenda
Com veiem a la Figura 2 drsquoexemple podem observar
totes les opcions drsquointeraccioacute que teacute lrsquousuari un cop estagrave dins la botiga Es poden trobar tots els casos drsquouacutes al do-cument adjunt ldquo Desenvolupament del Jocrdquo a lrsquoapartat 122 ldquoCasos drsquouacutesrdquo
Finalment a partir dels diagrames de casos drsquouacutes srsquoha elaborat una fitxa com la de la figura 3 de cada un on eacutes detalla les precondicions que srsquohan de complir pregravevia-ment per a que aquest es pugui dur a terme lrsquoiniciador que executa aquest cas drsquouacutes i el curs drsquoaccions que ocor-reran a partir drsquoaquest iniciador
Nom del Cas drsquoUacutes Comprar una textura per la pilota
Requeriment(s) Explorat(s) 681516
Precondicioacute(ns)
- Lrsquousuari ha seleccionat lrsquoopcioacute del menuacute ldquoTendardquo
Iniciador(s) Lrsquousuari ha polsat sobre el botoacute de tenda
Curs drsquoAccioacute Principal
1 Lrsquousuari selecciona la tenda de la pilota
2 Lrsquousuari fa scroll fins a seleccionar una textura que li agradi i
la polsa
3 Es comprova si ja teacute comprada aquesta textura (no la teacute)
4 Es comprova si teacute suficients monedes per adquirir la textura
(en teacute)
5 Lrsquousuari adquireix la textura srsquoelimina el seu preu per a in-
dicar-ho i es carrega la textura a la pilota de mostra de la ten-
da i a la que utilitzarem en qualsevol partida
Curs(os) Alternatiu drsquoAccioacute
3b Es comprova si ja teacute comprada aquesta textura (si la teacute)
4b Es carrega la textura a la pilota de mostra de la tenda i a la que
utilitzarem en qualsevol partida
4c Es comprova si teacute suficients monedes per adquirir la textura
(no en teacute)
5c Es mostra un aviacutes que lrsquousuari no teacute suficients monedes i no
es desbloqueja la textura
Fig 3 Descripcioacute Cas drsquouacutes ldquoComprar textura per la pilotardquo
6 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
64 Disseny i Test
Un cop redactats els requisits vaig passar a redactar el ldquoCAPIacuteTOL 2 DISSENY I CONSTRUCCIOacute DEL VIDEO-JOCrdquo que conteacute les seguumlents seccions clau
- Disseny Artiacutestic Conteacute tota la informacioacute per a en-tendre el concepte artiacutestic del videojoc Tota la his-toria en la que es desenvolupa aixiacute com un guioacute complet de tots els diagravelegs del mode historia entre altres Una seccioacute interessant que apareix eacutes la explicacioacute dels controls que hauragrave drsquoutilitzar lrsquousuari i perquegrave srsquohan fet aixiacute on es concreta que el joc nomeacutes con-tindragrave dos tipus de moviments el toc amb el dit i lrsquoscroll lateral Al simplificar el joc a dos tipus de moviments srsquoaconsegueix molta senzillesa que a nivell pragravectic es tradueix a un facilitat molt gran en lrsquoaprenentatge drsquouacutes Finalment conteacute una descripcioacute completa de tots els boosts(objectes aleatoris) que intervenen a les partides i els efectes que tindran
- Disseny del Software En aquesta seccioacute srsquoha desenvolupat un diagrama de classes i escenes a partir de tots els casos drsquouacutes Srsquoha optat per incloure les escenes (progravepies del motor Unity) dins drsquoaquest diagrama ja que proporcionen molta meacutes facilitat a lrsquohora drsquoentendre la relacioacute de les classes ja que algunes no intervenen entre siacute directament sinoacute a partir drsquouna escena especiacutefica
Fig 4 Diagrama de classes i escenes
Amb el diagrama definit es descriuen la funcionalitats de cada classe junt amb els seus atributs propis i les funcions que la formen
Definides les funcions de les classes srsquohan descrit els diagrames de sequumlegravencia molt importants per a observar el flux de les diverses accions directes que pot realitzar lrsquousuari amb la interfaccedil I en consequumlegravencia com reacciona el motor a partir de cada accioacute amb les escenes arxius de
guardat i els serveis de google Ha sigut molt uacutetil per a realitzar un desenvolupament correcte
Fig 5 Diagrama de Sequumlegravencia de la primera execucioacute del Joc
La seccioacute inclou un esboacutes de tota la interfaccedil que interactua amb lrsquousuari Per aconseguir un bon resultat drsquoaquesta es van preparar unes imatges que reconstruiumlen la interfaccedil i es va fer un first-click test [7] amb lrsquoeina web lsquoopti-malworkshoprsquo A causa de la versioacute gratuiumlta srsquohan realitzat 3 estudis dife-rents ja que lrsquoeina limitava la quantitat de preguntes per estudi [8] [9] [10] Gragravecies a aquesta eina amb cada estudi realitzat hem obtingut uns resultats molt visuals que ens han servit per conegraveixer realment si els menuacutes estaven ben estructurats El resultat com podem veure a les imatges de la seccioacute A2 i A3 del apegravendix ha sigut molt satisfactori i no srsquoha necessitat de realitzar cap canvi a la interfaccedil de lrsquousuari Podem dir que el plantejament drsquouna interfaccedil molt senzi-lla i intuiumltiva ha sigut correcte
- Implementacioacute del software Per acabar questa
seccioacute conteacute tots els elements artiacutestics que interve-nen en el joc (models 3D sprites) totes les escenes i la icona que es mostraragrave a la play store
65 Desenvolupament de LrsquoAplicacioacute
651 Implementacioacute del Menuacute Principal
Respecte a la implementacioacute del videojoc es va comenccedilar per elaborar el menuacute principal Per fer-ho es va iniciar el desenvolupament del script ldquoGameManagerrdquo Srsquoha de dir que tots els components visuals del joc srsquohan creat dins drsquouna estructura canvas [13] de Unity per a crear una interfaccedil responsive [12]
Script GameManager Per a crear aquest script encarregat de guardar totes les dades srsquoha utilitzat els PlayerPrefs [14] de unity Soacuten funcions del tipus clau-valor on amb un id pots guardar un valor a un espai de memograveria del dispositiu Aquest GameManager com srsquoexplica a la documentacioacute
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 7
del desenvolupament del joc srsquoencarrega tant de crear lrsquoarxiu de guardat quan srsquoinicialitza per primer com el joc com de carregar els valors drsquoaquests un cop ja srsquoha jugat meacutes drsquoun cop Amb el GameManager com a estructura principal srsquoha comenccedilat a desenvolupar lrsquoescena del Menuacute principal Escena lsquoMenuacutersquo ndash Menuacute principal Per aquest menuacute principal que veiem a la figura 6 es buscava una sensacioacute drsquoimmersioacute al joc que et fes sentir a lrsquoespai Per aixograve es va decidir dividir les 4 parts principals drsquoaquest menuacute Menuacute principal mode lliure mode histo-ria i botiga en diferents punts de lrsquoespai 3D formant una circumferegravencia Aixograve ha permegraves desenvolupar la seguumlent foacutermula per a la cagravemera de joc que ofereix una sensacioacute de flotar a lrsquoespai cameraTransformrotation = QuaternionSlerp (camera-TransformrotationcameraDesiredLookAtrotation CAMERA_TRANSITION_SPEED TimedeltaTime) Amb aquesta foacutermula estem assignant al valor de rotacioacute de la cagravemera del joc una nova rotacioacute entre la seva posi-cioacute actual (cameraTransformrotation) i la posicioacute destiacute (cameraDesiredLookAtrotation) Gragravecies a la funcioacute slerp() realitzaragrave un moviment molt lleuger seguint la velocitat que li indiquem Per a veure millor aquest efecte de cagravemera es pot consul-tar el viacutedeo adjunt ldquoDEMO_GRAVITY_PONGrdquo
Escena lsquoMenuacutersquo ndash Mode Lliure El seguumlent pas ja amb la cagravemera a punt ha sigut desenvo-lupar el llistat de nivells del mode lliure que trobem a la figura 7 Ha sigut una decisioacute difiacutecil i bastant creativa ja que es volia una llista de nivells molt visual i vaig decidir mostrar els nivells com a imatges Investigant vaig trobar que mitjanccedilant codi pots trobar i guardar a variables els sprites que estiguin dins de la carpeta que crea unity de ldquoResourcesrdquo Amb aquesta tegravecnica i un Scroll Rect [11] podem passar els nivells amb un scroll lateral Despreacutes srsquoha afegit la imatge i el text dels tiquets a la part inferior del nivell i el regravecord del nivell a sobre drsquoaquest Per finalitzar srsquoha creat el botoacute de tornar per a que la cagravemera torni a rotar fins la posicioacute del menuacute principal Escena lsquoMenuacutersquo ndash Botiga La botiga com observem ala figura 8 manteacute una estruc-tura semblant al llistat de nivells perograve amb diferegravencies notables En comptes de carregar varies imatges carrega una imat-ge sencera amb totes les textures i la divideix en textures de 256x256 per a una millor optimitzacioacute Teacute un indica-dor monedes del joc i teacute un botoacute extra per a canviar entre la tenda de textures de la pilota i de la lluna de joc
Fig 6 Menuacute Principal
Fig 7 Mode lliure
Escena lsquoMenuacutersquo ndash Mode Histograveria El llistat de nivells del mode histograveria no utilitza la tegravecnica de cagraverrega de imatges pels nivells sinoacute que srsquohan utilitzat uns models gratuiumlts de planetes 3D Cada planeta forma un nivell amb el seu nom i el seu regravecord de temps propi Un cop acabada tota la visual de lrsquoescena del menuacute srsquoha creat el script que el gestionaria anomenat ldquoMainMenurdquo
Fig 8 Botiga
Figura 9 Mode Histograveria
Script MainMenu Aquest script srsquoencarrega de carregar i gestionar els com-ponents de lrsquoescena del menuacute del llistat de nivells i la botiga Primer de tot carrega gragravecies als playerPrefs guardats tots els textos de regravecords de puntuacioacute de cada nivell els tiquets les monedes i les textures comprades de la pilota i lluna de joc que lrsquousuari havia obtingut Srsquoha creat un sistema tant per al llistat de nivells com a la botiga de bloqueig on al llistat de nivells es bloquegen tots els botons dels jocs menys del primer fins que en aquest no srsquohagi obtingut una puntuacioacute miacutenima de 5 i a la botiga es guarda una matriu de desbloquejos que indica quines textures srsquohan comprat i ja no apareixeragrave el seu preu i quines no Tambeacute srsquoencarrega de a la botiga mostrar com quedaria la textura comprada a la pilota o a la lluna de joc i apli-car-la per a quan juguem qualsevol partida Aquest script tambeacute carrega la muacutesica del menuacute
8 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
Script History_Levels Aquest script srsquoencarrega de la gestioacute del menuacute ldquoHISTO-RIArdquo Srsquoha creat un sistema de visualitzacioacute on el jugador can-via de nivell mitjanccedilant dues fletxes i un jugador no po-dragrave accedir a un nivell fins que hagi completat lrsquoanterior Junt amb aquest sistema de bloqueig segons el nivell on es situiuml el jugador es mostraragrave el millor temps en que lrsquoha acabat (si es que hi ha) i el nom del nivell Amb aquests components descrits fins ara ja tindriacuteem tot el menuacute principal acabat Un cop acabat el menuacute srsquoha passat a crear els nivells del mode lliure
652 Implementacioacute del Mode Lliure
El mode lliure consta de 5 nivells amb mecagraveniques de joc variants perograve compartint lrsquoestructura principal del joc Per a explicar com srsquoha desenvolupat aquest mode srsquoutilitzaragrave de referegravencia el mode de joc ldquoCLASSICrdquo el mode de joc original on primer srsquoexplicaran els compo-nents de lrsquoescena i despreacutes els scripts que la componen Una part molt important drsquoaquestes escenes eacutes el disseny seguint el esquema senzill i visual del joc srsquoha passat per diversos plantejaments murs reals una barra plana Finalment despreacutes drsquoun extens plantejament es va deci-dir aplicar el disseny que veiem a la figura 10 En aquest disseny podem observar que els murs soacuten llums LED Aquesta decisioacute srsquoha considerat la millor ja que oferia tota la informacioacute que necessita el jugador dels murs sense ser un objecte molt gran i amb molt detall Finalment srsquohan utilitzat imatges de la temagravetica espacial per a completar el fons de lrsquoescena Escena CLASSIC Lrsquoescena drsquoaquest mode de joc la componen directament la pilota la lluna de joc els murs de joc la puntuacioacute el menuacute de pausa i els tiquets disponibles Perograve realment hi ha molts meacutes components secundaris que no srsquoentraragrave en detall a explicar-los perograve que valia la pena mencionar-los com uns murs secundaris invisibles que srsquoutilitzen per detectar si el jugador perd quan ha destruiumlt un mur ob-jectes que solament es mostren quan srsquoagafa un boost llums que segueixen els objectes per crear un efecte pri-mer pla la interfaccedil del menuacute de pausa Presentats aixiacute els components de lrsquoescena eacutes meacutes interes-sant veure els scripts que afecten a aquests components Script ClassicBall Aquest script que controla la pilota eacutes el meacutes important de lrsquoescena ja que gestiona tot el que pot tenir contacte amb ella La funcioacute meacutes important drsquoaquest script eacutes sens dubte OnCollisionEnter() Aquest funcioacute nativa de Unity ser-veix per a gestionar quan lrsquoobjecte topa amb un altre objecte Quan la pilota topa amb un mur detecta quin eacutes
i segons el seu color actual li canviaragrave el seu color al que toqui i suma un punt Si la pilota topa amb la lluna de joc simplement augmen-taragrave la seva velocitat Si topa amb el forat negre de la part inferior o traspassa un mur destruiumlt srsquoencarrega de parar la partida i la muacutesica mostrar el menuacute de derrota afegir a les monedes totals del jugador les guanyades aquella partida i canviar el regravecord de puntuacioacute del nivell si srsquoha superat
Fig 10 Escena CLASSIC
Fig 11 Efecte de Boost de Gel
Script ClassicPad Aquest script simplement srsquoencarrega de la gestioacute del moviment de la lluna de joc Detecta si el jugador estagrave polsant a sobre drsquoella i es mou en consequumlegravencia Per al mode histograveria srsquoencarrega de si un projectil topa amb ella parar la partida i mostrar el menuacute de derrota Script Pause Menu Aquest script com el seu nom indica gestiona tot el me-nuacute de pausa Que quan es polsi a sobre del botoacute de pausa es pari el joc i es mostri la interfaccedil que quan polsem sobre lsquoreprendrersquo la partida actual segueixi on estava que es torni al menuacute o que es surti de la partida Script Boosts Aquest script srsquoencarrega drsquoinvocar un objecte aleatori que apareix cada x segons aleatograveriament per pantalla un cert temps Segons el boost es produeix un efecte diferent Per fer aixograve se li ha assignat el script a una imatge i srsquoha jugat amb el seu render (el component que fa que es mos-tri la imatge) Gragravecies a la funcioacute TimeTimeSinceLevelLoad que ens proporciona el temps que ha passat des de que srsquoha carregat el nivell sabem quan fer invisible o no lrsquoobjecte Aixiacute creat lrsquoalgoritme que mostra una imatge aleatograveriament drsquouna llista drsquoimatges sempre que no hi hagi un boost funcionant Ara amb un switch case segons la imatge que srsquoestagrave mos-trant crida a la funcioacute del boost que toca per a que realitzi lrsquoefecte adequat Un bon exemple eacutes el boost de gel que al collir-lo com veiem a la figura 11 mostra a tots els murs que no hagin sigut destruiumlts una imatge de neu que impedeix destruir-los
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 9
Es poden trobar tots els boosts i efectes a lrsquoapartat 215 del document adjunt ldquoDesenvolupament del Jocrdquo Amb tots aquests components ja es podria jugar una par-tida ldquoCLASSICrdquo del mode lliure Per a construir els altres nivells del mode lliure srsquoha jugat amb potenciar o extreure aquestes funcions descrites per proporcionar un altre tipus de joc
bull Escena Double Trouble Aquiacute srsquoha duplicat la pilota de joc i srsquoha adaptat lrsquoentorn per a que el nivell sigui jugable
bull Escena Faster Aquest mode es juga al doble de la velocitat normal de joc utilitzant la funcioacute Ti-meTimeScale = 2 que duplica el temps
bull Escena Insight Aquest mode es juga sense veure els components del joc el jugador nomeacutes veu una estela que indica el moviment de la pilota i la lluna de joc
bull Escena Relax En aquest mode on nomeacutes es perdragrave la partida si aquesta cau al forat negre inferior Els murs mai poden ser destruiumlts i no apareixen boosts
653 Implementacioacute del Mode Histograveria
Per a aquest mode srsquoha utilitzat com a base lrsquoestructura del nivell ldquoCLASSICrdquo del mode lliure Amb aquesta es-tructura srsquohan eliminat els boosts i el marcador de pun-tuacioacute Consta drsquoun objectiu totalment diferent al mode lliure no volem aconseguir la major puntuacioacute sinoacute que volem destruir la nau enemiga i si pot ser en el menor temps possible Script Dialog Primerament srsquoha creat un sistema de diagravelegs en el que seguint el guioacute descrit al document adjunt ldquoDesenvolu-pament del Jocrdquo apartat 212 dos personatges ens ense-nyen a jugar a lrsquohora que ens narren una divertida histograve-ria Dit aixograve srsquoha creat un sistema drsquoescriptura on segons unes frases donades srsquoescriu lletra per lletra aconseguint lrsquoefecte de narracioacute dels videojocs Quan comprovem que srsquoha mostrat tota la frase per pan-talla mostrem un botoacute per a continuar amb la conversa i un altre botoacute per a saltar el diagraveleg i comenccedilar a jugar Agafant la primera lletra de la frase amb la funcioacute subs-tring() sabrem si quin personatge parla i hem de mostrar Script History_Ball La pilota srsquoha hagut drsquoadaptar a tots els nous compo-nents A meacutes srsquoha creat un sistema per a mostrar en tot mo-ment el temps que ha passat des de lrsquoinici del nivell Per fer-ho srsquohan utilitzat 2 variables pels minuts i segons Aixograve ha permegraves visualitzar amb meacutes comoditat el format de temps ldquominuts segonsrdquo amb la funcioacute toString()
permetent realitzar les comparacions de temps correcta-ment Script Launcher Aquest script srsquoencarrega un model de miacutessil que li indi-quem i crear una instagravencia drsquoaquest davant la nau amb una certa velocitat dirigit cap a la part inferior de la pan-talla Per aconseguir-ho srsquoutilitza un objecte auxiliar a lrsquoescena lsquoFirePointrsquo que eacutes situat sempre davant la nau on srsquoinstanciaragrave el model del miacutessil amb un cert impuls Po-dem visualitzar aquest sistema a la figura 12 Script ProjectileCollision Aquest script srsquoencarrega solament de destruir el miacutessil quan topi amb un objecte que no sigui la lluna de joc Eacutes un script per a optimitzar el rendiment del joc Un cop descrits els scripts en comuacute per a tots els nivells passem als scripts que a cada nivell soacuten diferents perograve que srsquoutilitzen per a una mateixa causa la gestioacute de la nau enemiga
bull Capiacutetols 1 i 2 Els capiacutetols 1 i 2 comparteixen el ma-teix moviment de la nau Aquest script mou la nau seguint un moviment aleatori Lrsquoalgorisme consisteix en que srsquoescull un punt aleatori a arribar i quan srsquoarriba srsquoescull un altre
bull Capiacutetol 3 Al tercer capiacutetol eacutes on veiem per primer cop una intelmiddotligegravencia artificial en el moviment de la nau aquesta fugiragrave de la pilota Per fer-ho srsquoha divi-dit el nivell en dues zones dreta i esquerra quan la pilota estigui a la zona de la dreta la nau es mouragrave a lrsquoesquerra i a la inversa Per a que no sigui impossi-ble tocar-la srsquoha ajustat la velocitat del seu movi-ment adequadament
bull Capiacutetol 4 Al quart capiacutetol la nau ja consta drsquouna intelmiddotligegravencia artificial meacutes avanccedilada en la que es mou segons a on la pilota estigui situada Lrsquoalgorisme consisteix en tenir la posicioacute de la pilota en tot moment i srsquoha dividit lrsquoespai de la partida en 4 quadrats com podem veure a la figura 13 Si la pilota estagrave al quadrat 1 la nau es mouragrave al qua-drat contrari el 4 Si la pilota es situa al quadrat 2 la nau es mouragrave al quadrat 3 Per a que no fos impossi-ble topar amb la nau srsquoha drsquoajustat la velocitat del moviment
bull Capiacutetol 5 Al capiacutetol final lrsquoalgoritme consta del ma-teix moviment que al nivell anterior perograve afegint un extra que si la nau es troba en el mateix quadrat que la pilota en el mateix instant de temps la nau redui-ragrave el seu tamany complicant lrsquoobjectiu drsquoaconseguir destruir-la
10 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
Fig 12 Nau amb lrsquoobjecte lsquoFire-
Pointrsquo
Fig 13 Divisioacute de quadres nivells 4 i 5
Per a veure visualment com funcionen les funcions expli-cades en aquest apartat es pot consultar el viacutedeo adjunt ldquoDEMO_GRAVITY_PONGrdquo
66 Proves
Gragravecies a la metodologia de desenvolupament de Rapid Prototyping srsquoha pogut anar testejant cada mogravedul desen-volupat al moment aixiacute extraient tots els resultats de tests ragravepidament Srsquohan realitzat 4 tipus de proves diferents
bull A les proves drsquounitat srsquoha testejat que els diferents mograveduls del sistema funcionin correctament Com que si un miacutessil drsquouna nau enemiga glopeja la lluna de joc es mostra el menuacute correcte o si tenim les su-ficients monedes per a comprar una textura la po-dem comprar satisfactograveriament entre altres
bull A les proves drsquointegracioacute srsquoha testejat que les in-teraccions entre els diferents escenaris del sistema sigui correcte Srsquoha provat que es pugi accedir a tots els nivells del videojoc i que des de aquests es pu-gui tornar correctament al menuacute principal a traveacutes del menuacute de pausa
bull Les proves de validacioacute han servit per comprovar que hem complit amb els requisits del projecte Hem testejat el correcte log in amb google la visualitzacioacute dels marcadors i la visualitzacioacute dels objectius entre altres
bull Per acabar les proves de sistema han servit gragravecies a la developer console [24] comprovar que el joc srsquoha executat correctament variant els dispositius i versions drsquoAndroid
A lrsquoapartat 31 del document adjunt ldquoDesenvolupament del Jocrdquo es poden trobar la totalitat de les proves realitza-des de cada tipus amb els seus resultats corresponents
7 CONCLUSIONS
I ja per finalitzar aquest document explicareacute quines soacuten les conclusions que he extret sobre el projecte Primer de tot crec que la planificacioacute que vaig realitzar a
lrsquoinici ha sigut lrsquoencertada Les petites alteracions que srsquohan acabat realitzant (com podem veure en el diagrama de Gantt real de lrsquoapegravendix 2) han estat meacutes enfocades a avanccedilar lrsquoinici de les tasques que no pas a endarrerir-les a causa de la situacioacute excepcional que hem viscut
Respecte a la fase drsquoimplementacioacute considero que
srsquohan completat tots els objectius que es presentaven a lrsquoinici del projecte Srsquohan desenvolupat totes les funcions que es van proposar al document de requisits amb lrsquoajuda de la psicograveloga que havia de tenir el joc per a que es considereacutes addictiu i aixiacute ha sigut Per lo que podem concloure que hem desenvolupat un joc addictiu per a Android satisfactograveriament A meacutes srsquoha de dir que lrsquoaplicacioacute eacutes responsive [12] i molt fagravecilment escalable
I com a uacuteltim punt voldria comentar que mrsquohagueacutes
agradat disposar de meacutes temps i recursos per a millorar tot lrsquoaspecte visual de lrsquoaplicacioacute encara meacutes fins a arribar a apropar-se al nivell de mitjanes produccions aquest aspecte milloraria lrsquointeregraves per al joc
71 Futures Accions
A continuacioacute detallarem aquelles accions futures que he considerat que pot ser interessant desenvolupar en prograveximes ampliacions del joc per tal que lrsquoexperiegravencia drsquouacutes dels usuaris sigui la millor possible
bull Un tutorial molt meacutes visual que es mostri el primer cop que srsquoiniciiuml lrsquoaplicacioacute on no solament srsquoexpliqui sobre la mecagravenica del joc sinoacute que tambeacute es guiiuml a lrsquousuari a traveacutes dels menuacutes la interfaccedil i els diferents modes i nivells de joc
bull Una integracioacute drsquoalgun mode de joc online on es po-gueacutes competir contra un altre jugador en temps real oferiria molt drsquoatractiu i enriquiria molt lrsquoaplicacioacute
bull Per acabar com ja hem comentat una millora visual en la que no mrsquohe pogut centrar en especial durant el projecte on amb lrsquoajuda drsquoalgun professional en la mategraveria es crearien unes visuals progravepies per al joc
8 AGRAIumlMENTS
En primer lloc mrsquoagradaria agrair a la meva famiacutelia el suport incondicional que mrsquohan donat en tot moment durant els quatre anys que porto de carrera Sense ells res de tot aixograve hauria estat possible
Tambeacute mrsquoagradaria agrair la Gemma Saacutenchez la meva tutora del TFG pels consells i lrsquoajuda que mrsquoha ofert du-rant aquests mesos tant durs i especials de projecte insis-tint en quegrave treballes ben dur des del primer dia ha per-megraves que aquest treball hagi pogut tirar endavant amb meacutes facilitat
Finalment voldria agrair a les altres persones que han fet aquest treball possible des de la psicograveloga experta que ens va ajudar a definir molt beacute els requisis fins a tots els companys i amics que han treballat com a testers del joc trobant lsquobugsrsquo i fent propostes sobre possibles millores drsquoaquest
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 11
IacuteNDEX DE FIGURES
Fig 1 lsquoRapid Prototypingrsquo3
Fig 2 Diagrama de Classes lsquoNavegar per la Tendarsquo5
Fig 3 Descripcioacute Cas drsquouacutes ldquoComprar textura pilotardquo6
Fig 4 Diagrama de Classes i Escenes6
Fig 5 Diagrama de Sequumlegravencia 1a Execucioacute6
Fig 6 Escena Menuacute Principal7
Fig 7 Escena Mode Lliure7
Fig 8 Escena Botiga8
Fig 9 Escena Mode Histograveria8
Fig 10 Escena lsquoCLASSICrsquo8
Fig 11 Efecte Boost de Gel8
Fig 12 Nau amb objecte lsquofirepointrsquo10
Fig 13 Divisioacute de quadres nivells 4 i 510
REFEREgraveNCIES
[1] Desenvolupament lsquoRapid prototypingrsquo httpseswikipediaorgwikiModelo_de_prototipos
[2] Article de lrsquoaddiccioacute als videojocs httpspsicologiaymentecomclinicaadiccion-a-videojuegos
[3] Per quegrave enganxen els videojocs httpswwwlavanguardiacomestilos-de-vida2012062954317381414por-que-enganchan-los-videojuegoshtml
[4] Historia dels Videojocs httpswwwfibupceduretroinformaticahistoriavideojocshtml
[5] Requisits miacutenims Candy Crush Saga httpswwwmicrosoftcomes-espcandy-crush-sa-ga9nblggh18846activetab=pivotregionofsystemrequirementstab
[6] Document SRS drsquoexemple httpswwwdocsitycomesejemplo-de-documento-srs4930539
[7] El lsquoFirst clickrsquo test httpsusabilityhubcomguidesfirst-click-testing
[8] Quumlestionari lsquoFirst clickrsquo test I httpsowsiocm7v7lx3h4
[9] Quumlestionari lsquoFirst clickrsquo test II httpsowsiocmj6574121
[10] Quumlestionari lsquoFirst clickrsquo test III httpsowsiocm7df25ouc
[11] Scroll Rect de Unity httpsdocsunity3dcomes20184Manualscript-ScrollRecthtml
[12] Disseny Responsive httpswww40defiebrecomque-esdiseno-responsi-ve~text=El20disentildeo20web20responsive20o3B20ordenador2C20tablet2C20smartphonehellip
[13] Canvas de Unity httpsdocsunity3dcomescurrentManualUICanvashtml
[14] Playerprefs de Unity httpsdocsunity3dcomescurrentScriptReferencePlayerPrefshtml
[15] ldquoDisseny de Softwarerdquo Assignatura del grau que ha ser-
vit de font bagravesica dels coneixements aplicats tant a An-droid com als tests amb usuaris La seva guia docent la trobem disponible a httpsdocsunity3dcomManualUnityManualhtml
[16] ldquoTest i Qualitat del Softwarerdquo Assignatura del grau que ha servit de font bagravesica dels coneixements aplicats per als tests del codi La seva guia docent la trobem disponible a httpsguiesuabcatguies_docentspublicportalhtml2019assignatura102758ca
[17] ldquoDocumentacioacuten de Unityrdquo Documentacioacute completa del motor gragravefic lsquoUnityrsquo que srsquoha anat consultant en tot mo-ment del desenvolupament httpsdocsunity3dcomManualUnityManualhtml httpswwww3schoolscomcs
[18] ldquoStack Overflowrdquo Fograverum de preguntes i respostes rela-cionades amb el moacuten de la programacioacute i la informagravetica Srsquoha anat consultant durant la fase drsquoimplementacioacute Al-gunes de les pagravegines que voldria destacar
o Text borroacutes a Unity httpsstackoverflowcomquestions16506737unity3d-3d-text-always-displayed-blur16507861
o Sing-In Google httpsstackoverflowcomquestions59599895problems-with-google-sign-in-in-unity
[19] ldquoComo firmar tu apprdquo Documentacioacute per a desenvolupa-dors Android sobre com signar una aplicacioacute per a que totes les funcions de google funcionin correctament httpsdeveloperandroidcomstudiopublishapp-signinggoogle-play-app-signing
[20] ldquoUnity Ads Documentationrdquo Documentacioacute sobre el sis-tema de publicitat de unity utilitzat a lrsquoapp httpsdocsunity3dcomPackagescomunityads34manualindexhtml
[21] ldquoGoogle play games plugin for unityrdquo Plugin per a unity per a poder utilitzar totes les funcions de google play games httpsgithubcomplaygameservicesplay-games-plugin-for-unity
[22] ldquoFlaticonrdquo Web de recursos gratuiumlts drsquoon srsquohan descarre-gat els sprites que srsquoutilitzen al joc httpswwwflaticones
[23] ldquoUnity Asset Storerdquo Web de recursos gratuiumlts de unity drsquoon srsquohan descarregat els models dels planetes que srsquoutilitzen al joc entre altres httpsassetstoreunitycomgclid=CjwKCAjwlZf3BRABEiwA8Q0qq9NcH2nCMrUHDdQUrV0K7dNiZD6JMAy7G8x93NPLzD3wZKmhiK1MQBoCvR0QAvD_BwE
[24] ldquoAyuda de Play Consolerdquo Documentacioacute sobre al play console plataform on es puja lrsquoaplicacioacute per a que es vi-sualitzi a la play store que srsquoha consultat quan han sorgit problemes httpssupportgooglecomgoogleplayandroid-developerhl=estopic=3450769
[25] ldquoPongrdquo Primer videojoc de la histograveria httpseswikipediaorgwikiPong~text=Pong20(o20Tele-Pong)mesa20(o20ping20pong)
[26] ldquoFlappy Birdsrdquo httpseswikipediaorgwikiFlappy_Bird
[27] ldquoCandy Crushrdquo httpswwwxatakamovilcommovil-y-sociedadcandy-crush-saga-la-ciencia-detras-de-la-adiccion
12 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
APEgraveNDIX
A1 DIAGRAMA DE GANTT DE LA PLANIFICACIOacute INICIAL
A1 Diagrama de Gantt corresponent a la planificacioacute inicial del projecte En aquest diagrama podem veure les diferents tasquesetapes de desenvolupament amb les setmanes que es va planificar destinar a cada una
A2 SECCIOacute DrsquoAPEgraveNDIX
A2 Diagrama de Gantt corresponent a la planificacioacute final del projecte Tal i com podem veure tenim alguns canvis en els temps respecte a la planificacioacute inicial es va acurtar la fase de desenvolupament ja que amb la situacioacute excepcional del paiacutes srsquoha disposat de molt meacutes
temps per al desenvolupament lo qual ha permegraves avanccedilar el pas a produccioacute i la documentacioacute del projecte
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 13
A3 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1
A3 Resultat Estudi 1 - Tasca 1 Com observem el 90 dels testers han completat lrsquoobjectiu de la tasca
A4 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1 (MAPA DE CALOR)
A4 Resultat estudi 1 ndash Tasca 1 (Mapa de Calor) Com podem observar la zona de tocs de dit del 70 dels tocs se centra en el botoacute correcte
14 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 5
consta drsquouna pala de joc que lrsquousuari mouragrave horitzontal-ment per a evitar que una pilota caigui al terra Tambeacute compta amb tres murs als marges de la pantalla que a part de sumar punts quan siguin tocats amb la pilota canviaran de color segons els cops consecutius que han sigut golejats Si superen els 3 cops consecutius el mur en quumlestioacute desapareixeragrave fent impossible el seu contacte amb la pilota A meacutes diferents objectes apareixeran alea-tograveriament durant la partida per a oferir-nos efectes espe-cials que ens ajudaran o ens faran la partida meacutes compli-cada durant un cert temps
Al acabar cada partida obtindrem una puntuacioacute que es mostraragrave en un marcador de puntuacions per a compa-rar-la amb la dels nostres amics A part tota la informacioacute del joc es guardaragrave al dispositiu guardant el progreacutes en tot moment
Tot i que hem dit abans que el joc compta amb 10 es-cenaris diferents aquests es divideixen en dos modes de joc Historia i Lliure
El mode historia compta amb una petita trama que in-volucraragrave al jugador per a salvar el planeta on lrsquoobjectiu seragrave acabar amb els diferents enemics dels 5 nivells que amenaccedilaran al jugador
Lrsquoobjectiu del mode lliure seragrave en canvi aconseguir la magravexima puntuacioacute possible drsquoentre 5 modes de joc de mecagraveniques i dificultats diferents
Tot el progreacutes que aconseguim al joc es plasmaragrave en forma de monedes que podrem invertir per a personalit-zar amb diferents aspectes els objectes del joc
63 Presa de Requisits
Un cop fet lrsquoestudi per a elaborar el document de re-quisits srsquohan consultat moltes fonts drsquoinformacioacute [15] [16] historia dels videojocs [4] jocs semblants arquitectures de hardware que podria suportar el joc [5] estagravendards de desenvolupament documents de requisits[6] i documen-tacioacute[17] [18] [20] Vull tornar a destacar la importagravencia de lrsquoentrevista per a poder realitzar correctament aquest document oferint uns objectius clars Amb aquest treball fet vaig comenccedilar a redactar els requisits que es troben al ldquoCAPIacuteTOL 1rdquo del document adjunt ldquoDesenvolupament del jocrdquo Aquest conteacute molts apartats entre ells dos de clau
- Els requeriments del sistema On es parla sobre el propogravesit del sistema a desenvolupar el seu objec-tiu principal i les seves funcions Aquest apartat conteacute aspectes molt concrets del desenvolupa-ment com que el joc seragrave desenvolupat en castellagrave la connectivitat o requeriments de hardware miacute-nims per al funcionament del joc i conteacute un petit estudi sobre la restriccioacute drsquoedat del joc PEGI 3 Finalment conteacute una llista completa tant dels re-queriments funcionals del sistema com dels no funcionals on srsquoexplica detalladament cada funcioacute que podragrave oferir el joc com per exemple el mode historia
o Suportaragrave 5 escenaris diferents o Inclouragrave un tutorial interactiu amb
lrsquousuari o A cada escenari apareixeragrave un enemic di-
ferent amb habilitats moviments i IA propis
- Lrsquoanagravelisi del sistema En aquesta segona seccioacute clau del document a partir de la llista de requeri-ments esmentada en lrsquoapartat anterior es fa una anagravelisi preliminar del producte resumint totes les funcionalitats que contindragrave i els efectes que pro-duiragrave cada una en el transcurs de lrsquoaplicacioacute A partir drsquoaquesta primera anagravelisi srsquohan elaborat diferents diagrames de casos drsquouacutes on es poden veure molt visualment les interaccions que pot fer lrsquousuari amb el sistema
Fig 2 Diagrama de Navegar per la tenda
Com veiem a la Figura 2 drsquoexemple podem observar
totes les opcions drsquointeraccioacute que teacute lrsquousuari un cop estagrave dins la botiga Es poden trobar tots els casos drsquouacutes al do-cument adjunt ldquo Desenvolupament del Jocrdquo a lrsquoapartat 122 ldquoCasos drsquouacutesrdquo
Finalment a partir dels diagrames de casos drsquouacutes srsquoha elaborat una fitxa com la de la figura 3 de cada un on eacutes detalla les precondicions que srsquohan de complir pregravevia-ment per a que aquest es pugui dur a terme lrsquoiniciador que executa aquest cas drsquouacutes i el curs drsquoaccions que ocor-reran a partir drsquoaquest iniciador
Nom del Cas drsquoUacutes Comprar una textura per la pilota
Requeriment(s) Explorat(s) 681516
Precondicioacute(ns)
- Lrsquousuari ha seleccionat lrsquoopcioacute del menuacute ldquoTendardquo
Iniciador(s) Lrsquousuari ha polsat sobre el botoacute de tenda
Curs drsquoAccioacute Principal
1 Lrsquousuari selecciona la tenda de la pilota
2 Lrsquousuari fa scroll fins a seleccionar una textura que li agradi i
la polsa
3 Es comprova si ja teacute comprada aquesta textura (no la teacute)
4 Es comprova si teacute suficients monedes per adquirir la textura
(en teacute)
5 Lrsquousuari adquireix la textura srsquoelimina el seu preu per a in-
dicar-ho i es carrega la textura a la pilota de mostra de la ten-
da i a la que utilitzarem en qualsevol partida
Curs(os) Alternatiu drsquoAccioacute
3b Es comprova si ja teacute comprada aquesta textura (si la teacute)
4b Es carrega la textura a la pilota de mostra de la tenda i a la que
utilitzarem en qualsevol partida
4c Es comprova si teacute suficients monedes per adquirir la textura
(no en teacute)
5c Es mostra un aviacutes que lrsquousuari no teacute suficients monedes i no
es desbloqueja la textura
Fig 3 Descripcioacute Cas drsquouacutes ldquoComprar textura per la pilotardquo
6 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
64 Disseny i Test
Un cop redactats els requisits vaig passar a redactar el ldquoCAPIacuteTOL 2 DISSENY I CONSTRUCCIOacute DEL VIDEO-JOCrdquo que conteacute les seguumlents seccions clau
- Disseny Artiacutestic Conteacute tota la informacioacute per a en-tendre el concepte artiacutestic del videojoc Tota la his-toria en la que es desenvolupa aixiacute com un guioacute complet de tots els diagravelegs del mode historia entre altres Una seccioacute interessant que apareix eacutes la explicacioacute dels controls que hauragrave drsquoutilitzar lrsquousuari i perquegrave srsquohan fet aixiacute on es concreta que el joc nomeacutes con-tindragrave dos tipus de moviments el toc amb el dit i lrsquoscroll lateral Al simplificar el joc a dos tipus de moviments srsquoaconsegueix molta senzillesa que a nivell pragravectic es tradueix a un facilitat molt gran en lrsquoaprenentatge drsquouacutes Finalment conteacute una descripcioacute completa de tots els boosts(objectes aleatoris) que intervenen a les partides i els efectes que tindran
- Disseny del Software En aquesta seccioacute srsquoha desenvolupat un diagrama de classes i escenes a partir de tots els casos drsquouacutes Srsquoha optat per incloure les escenes (progravepies del motor Unity) dins drsquoaquest diagrama ja que proporcionen molta meacutes facilitat a lrsquohora drsquoentendre la relacioacute de les classes ja que algunes no intervenen entre siacute directament sinoacute a partir drsquouna escena especiacutefica
Fig 4 Diagrama de classes i escenes
Amb el diagrama definit es descriuen la funcionalitats de cada classe junt amb els seus atributs propis i les funcions que la formen
Definides les funcions de les classes srsquohan descrit els diagrames de sequumlegravencia molt importants per a observar el flux de les diverses accions directes que pot realitzar lrsquousuari amb la interfaccedil I en consequumlegravencia com reacciona el motor a partir de cada accioacute amb les escenes arxius de
guardat i els serveis de google Ha sigut molt uacutetil per a realitzar un desenvolupament correcte
Fig 5 Diagrama de Sequumlegravencia de la primera execucioacute del Joc
La seccioacute inclou un esboacutes de tota la interfaccedil que interactua amb lrsquousuari Per aconseguir un bon resultat drsquoaquesta es van preparar unes imatges que reconstruiumlen la interfaccedil i es va fer un first-click test [7] amb lrsquoeina web lsquoopti-malworkshoprsquo A causa de la versioacute gratuiumlta srsquohan realitzat 3 estudis dife-rents ja que lrsquoeina limitava la quantitat de preguntes per estudi [8] [9] [10] Gragravecies a aquesta eina amb cada estudi realitzat hem obtingut uns resultats molt visuals que ens han servit per conegraveixer realment si els menuacutes estaven ben estructurats El resultat com podem veure a les imatges de la seccioacute A2 i A3 del apegravendix ha sigut molt satisfactori i no srsquoha necessitat de realitzar cap canvi a la interfaccedil de lrsquousuari Podem dir que el plantejament drsquouna interfaccedil molt senzi-lla i intuiumltiva ha sigut correcte
- Implementacioacute del software Per acabar questa
seccioacute conteacute tots els elements artiacutestics que interve-nen en el joc (models 3D sprites) totes les escenes i la icona que es mostraragrave a la play store
65 Desenvolupament de LrsquoAplicacioacute
651 Implementacioacute del Menuacute Principal
Respecte a la implementacioacute del videojoc es va comenccedilar per elaborar el menuacute principal Per fer-ho es va iniciar el desenvolupament del script ldquoGameManagerrdquo Srsquoha de dir que tots els components visuals del joc srsquohan creat dins drsquouna estructura canvas [13] de Unity per a crear una interfaccedil responsive [12]
Script GameManager Per a crear aquest script encarregat de guardar totes les dades srsquoha utilitzat els PlayerPrefs [14] de unity Soacuten funcions del tipus clau-valor on amb un id pots guardar un valor a un espai de memograveria del dispositiu Aquest GameManager com srsquoexplica a la documentacioacute
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 7
del desenvolupament del joc srsquoencarrega tant de crear lrsquoarxiu de guardat quan srsquoinicialitza per primer com el joc com de carregar els valors drsquoaquests un cop ja srsquoha jugat meacutes drsquoun cop Amb el GameManager com a estructura principal srsquoha comenccedilat a desenvolupar lrsquoescena del Menuacute principal Escena lsquoMenuacutersquo ndash Menuacute principal Per aquest menuacute principal que veiem a la figura 6 es buscava una sensacioacute drsquoimmersioacute al joc que et fes sentir a lrsquoespai Per aixograve es va decidir dividir les 4 parts principals drsquoaquest menuacute Menuacute principal mode lliure mode histo-ria i botiga en diferents punts de lrsquoespai 3D formant una circumferegravencia Aixograve ha permegraves desenvolupar la seguumlent foacutermula per a la cagravemera de joc que ofereix una sensacioacute de flotar a lrsquoespai cameraTransformrotation = QuaternionSlerp (camera-TransformrotationcameraDesiredLookAtrotation CAMERA_TRANSITION_SPEED TimedeltaTime) Amb aquesta foacutermula estem assignant al valor de rotacioacute de la cagravemera del joc una nova rotacioacute entre la seva posi-cioacute actual (cameraTransformrotation) i la posicioacute destiacute (cameraDesiredLookAtrotation) Gragravecies a la funcioacute slerp() realitzaragrave un moviment molt lleuger seguint la velocitat que li indiquem Per a veure millor aquest efecte de cagravemera es pot consul-tar el viacutedeo adjunt ldquoDEMO_GRAVITY_PONGrdquo
Escena lsquoMenuacutersquo ndash Mode Lliure El seguumlent pas ja amb la cagravemera a punt ha sigut desenvo-lupar el llistat de nivells del mode lliure que trobem a la figura 7 Ha sigut una decisioacute difiacutecil i bastant creativa ja que es volia una llista de nivells molt visual i vaig decidir mostrar els nivells com a imatges Investigant vaig trobar que mitjanccedilant codi pots trobar i guardar a variables els sprites que estiguin dins de la carpeta que crea unity de ldquoResourcesrdquo Amb aquesta tegravecnica i un Scroll Rect [11] podem passar els nivells amb un scroll lateral Despreacutes srsquoha afegit la imatge i el text dels tiquets a la part inferior del nivell i el regravecord del nivell a sobre drsquoaquest Per finalitzar srsquoha creat el botoacute de tornar per a que la cagravemera torni a rotar fins la posicioacute del menuacute principal Escena lsquoMenuacutersquo ndash Botiga La botiga com observem ala figura 8 manteacute una estruc-tura semblant al llistat de nivells perograve amb diferegravencies notables En comptes de carregar varies imatges carrega una imat-ge sencera amb totes les textures i la divideix en textures de 256x256 per a una millor optimitzacioacute Teacute un indica-dor monedes del joc i teacute un botoacute extra per a canviar entre la tenda de textures de la pilota i de la lluna de joc
Fig 6 Menuacute Principal
Fig 7 Mode lliure
Escena lsquoMenuacutersquo ndash Mode Histograveria El llistat de nivells del mode histograveria no utilitza la tegravecnica de cagraverrega de imatges pels nivells sinoacute que srsquohan utilitzat uns models gratuiumlts de planetes 3D Cada planeta forma un nivell amb el seu nom i el seu regravecord de temps propi Un cop acabada tota la visual de lrsquoescena del menuacute srsquoha creat el script que el gestionaria anomenat ldquoMainMenurdquo
Fig 8 Botiga
Figura 9 Mode Histograveria
Script MainMenu Aquest script srsquoencarrega de carregar i gestionar els com-ponents de lrsquoescena del menuacute del llistat de nivells i la botiga Primer de tot carrega gragravecies als playerPrefs guardats tots els textos de regravecords de puntuacioacute de cada nivell els tiquets les monedes i les textures comprades de la pilota i lluna de joc que lrsquousuari havia obtingut Srsquoha creat un sistema tant per al llistat de nivells com a la botiga de bloqueig on al llistat de nivells es bloquegen tots els botons dels jocs menys del primer fins que en aquest no srsquohagi obtingut una puntuacioacute miacutenima de 5 i a la botiga es guarda una matriu de desbloquejos que indica quines textures srsquohan comprat i ja no apareixeragrave el seu preu i quines no Tambeacute srsquoencarrega de a la botiga mostrar com quedaria la textura comprada a la pilota o a la lluna de joc i apli-car-la per a quan juguem qualsevol partida Aquest script tambeacute carrega la muacutesica del menuacute
8 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
Script History_Levels Aquest script srsquoencarrega de la gestioacute del menuacute ldquoHISTO-RIArdquo Srsquoha creat un sistema de visualitzacioacute on el jugador can-via de nivell mitjanccedilant dues fletxes i un jugador no po-dragrave accedir a un nivell fins que hagi completat lrsquoanterior Junt amb aquest sistema de bloqueig segons el nivell on es situiuml el jugador es mostraragrave el millor temps en que lrsquoha acabat (si es que hi ha) i el nom del nivell Amb aquests components descrits fins ara ja tindriacuteem tot el menuacute principal acabat Un cop acabat el menuacute srsquoha passat a crear els nivells del mode lliure
652 Implementacioacute del Mode Lliure
El mode lliure consta de 5 nivells amb mecagraveniques de joc variants perograve compartint lrsquoestructura principal del joc Per a explicar com srsquoha desenvolupat aquest mode srsquoutilitzaragrave de referegravencia el mode de joc ldquoCLASSICrdquo el mode de joc original on primer srsquoexplicaran els compo-nents de lrsquoescena i despreacutes els scripts que la componen Una part molt important drsquoaquestes escenes eacutes el disseny seguint el esquema senzill i visual del joc srsquoha passat per diversos plantejaments murs reals una barra plana Finalment despreacutes drsquoun extens plantejament es va deci-dir aplicar el disseny que veiem a la figura 10 En aquest disseny podem observar que els murs soacuten llums LED Aquesta decisioacute srsquoha considerat la millor ja que oferia tota la informacioacute que necessita el jugador dels murs sense ser un objecte molt gran i amb molt detall Finalment srsquohan utilitzat imatges de la temagravetica espacial per a completar el fons de lrsquoescena Escena CLASSIC Lrsquoescena drsquoaquest mode de joc la componen directament la pilota la lluna de joc els murs de joc la puntuacioacute el menuacute de pausa i els tiquets disponibles Perograve realment hi ha molts meacutes components secundaris que no srsquoentraragrave en detall a explicar-los perograve que valia la pena mencionar-los com uns murs secundaris invisibles que srsquoutilitzen per detectar si el jugador perd quan ha destruiumlt un mur ob-jectes que solament es mostren quan srsquoagafa un boost llums que segueixen els objectes per crear un efecte pri-mer pla la interfaccedil del menuacute de pausa Presentats aixiacute els components de lrsquoescena eacutes meacutes interes-sant veure els scripts que afecten a aquests components Script ClassicBall Aquest script que controla la pilota eacutes el meacutes important de lrsquoescena ja que gestiona tot el que pot tenir contacte amb ella La funcioacute meacutes important drsquoaquest script eacutes sens dubte OnCollisionEnter() Aquest funcioacute nativa de Unity ser-veix per a gestionar quan lrsquoobjecte topa amb un altre objecte Quan la pilota topa amb un mur detecta quin eacutes
i segons el seu color actual li canviaragrave el seu color al que toqui i suma un punt Si la pilota topa amb la lluna de joc simplement augmen-taragrave la seva velocitat Si topa amb el forat negre de la part inferior o traspassa un mur destruiumlt srsquoencarrega de parar la partida i la muacutesica mostrar el menuacute de derrota afegir a les monedes totals del jugador les guanyades aquella partida i canviar el regravecord de puntuacioacute del nivell si srsquoha superat
Fig 10 Escena CLASSIC
Fig 11 Efecte de Boost de Gel
Script ClassicPad Aquest script simplement srsquoencarrega de la gestioacute del moviment de la lluna de joc Detecta si el jugador estagrave polsant a sobre drsquoella i es mou en consequumlegravencia Per al mode histograveria srsquoencarrega de si un projectil topa amb ella parar la partida i mostrar el menuacute de derrota Script Pause Menu Aquest script com el seu nom indica gestiona tot el me-nuacute de pausa Que quan es polsi a sobre del botoacute de pausa es pari el joc i es mostri la interfaccedil que quan polsem sobre lsquoreprendrersquo la partida actual segueixi on estava que es torni al menuacute o que es surti de la partida Script Boosts Aquest script srsquoencarrega drsquoinvocar un objecte aleatori que apareix cada x segons aleatograveriament per pantalla un cert temps Segons el boost es produeix un efecte diferent Per fer aixograve se li ha assignat el script a una imatge i srsquoha jugat amb el seu render (el component que fa que es mos-tri la imatge) Gragravecies a la funcioacute TimeTimeSinceLevelLoad que ens proporciona el temps que ha passat des de que srsquoha carregat el nivell sabem quan fer invisible o no lrsquoobjecte Aixiacute creat lrsquoalgoritme que mostra una imatge aleatograveriament drsquouna llista drsquoimatges sempre que no hi hagi un boost funcionant Ara amb un switch case segons la imatge que srsquoestagrave mos-trant crida a la funcioacute del boost que toca per a que realitzi lrsquoefecte adequat Un bon exemple eacutes el boost de gel que al collir-lo com veiem a la figura 11 mostra a tots els murs que no hagin sigut destruiumlts una imatge de neu que impedeix destruir-los
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 9
Es poden trobar tots els boosts i efectes a lrsquoapartat 215 del document adjunt ldquoDesenvolupament del Jocrdquo Amb tots aquests components ja es podria jugar una par-tida ldquoCLASSICrdquo del mode lliure Per a construir els altres nivells del mode lliure srsquoha jugat amb potenciar o extreure aquestes funcions descrites per proporcionar un altre tipus de joc
bull Escena Double Trouble Aquiacute srsquoha duplicat la pilota de joc i srsquoha adaptat lrsquoentorn per a que el nivell sigui jugable
bull Escena Faster Aquest mode es juga al doble de la velocitat normal de joc utilitzant la funcioacute Ti-meTimeScale = 2 que duplica el temps
bull Escena Insight Aquest mode es juga sense veure els components del joc el jugador nomeacutes veu una estela que indica el moviment de la pilota i la lluna de joc
bull Escena Relax En aquest mode on nomeacutes es perdragrave la partida si aquesta cau al forat negre inferior Els murs mai poden ser destruiumlts i no apareixen boosts
653 Implementacioacute del Mode Histograveria
Per a aquest mode srsquoha utilitzat com a base lrsquoestructura del nivell ldquoCLASSICrdquo del mode lliure Amb aquesta es-tructura srsquohan eliminat els boosts i el marcador de pun-tuacioacute Consta drsquoun objectiu totalment diferent al mode lliure no volem aconseguir la major puntuacioacute sinoacute que volem destruir la nau enemiga i si pot ser en el menor temps possible Script Dialog Primerament srsquoha creat un sistema de diagravelegs en el que seguint el guioacute descrit al document adjunt ldquoDesenvolu-pament del Jocrdquo apartat 212 dos personatges ens ense-nyen a jugar a lrsquohora que ens narren una divertida histograve-ria Dit aixograve srsquoha creat un sistema drsquoescriptura on segons unes frases donades srsquoescriu lletra per lletra aconseguint lrsquoefecte de narracioacute dels videojocs Quan comprovem que srsquoha mostrat tota la frase per pan-talla mostrem un botoacute per a continuar amb la conversa i un altre botoacute per a saltar el diagraveleg i comenccedilar a jugar Agafant la primera lletra de la frase amb la funcioacute subs-tring() sabrem si quin personatge parla i hem de mostrar Script History_Ball La pilota srsquoha hagut drsquoadaptar a tots els nous compo-nents A meacutes srsquoha creat un sistema per a mostrar en tot mo-ment el temps que ha passat des de lrsquoinici del nivell Per fer-ho srsquohan utilitzat 2 variables pels minuts i segons Aixograve ha permegraves visualitzar amb meacutes comoditat el format de temps ldquominuts segonsrdquo amb la funcioacute toString()
permetent realitzar les comparacions de temps correcta-ment Script Launcher Aquest script srsquoencarrega un model de miacutessil que li indi-quem i crear una instagravencia drsquoaquest davant la nau amb una certa velocitat dirigit cap a la part inferior de la pan-talla Per aconseguir-ho srsquoutilitza un objecte auxiliar a lrsquoescena lsquoFirePointrsquo que eacutes situat sempre davant la nau on srsquoinstanciaragrave el model del miacutessil amb un cert impuls Po-dem visualitzar aquest sistema a la figura 12 Script ProjectileCollision Aquest script srsquoencarrega solament de destruir el miacutessil quan topi amb un objecte que no sigui la lluna de joc Eacutes un script per a optimitzar el rendiment del joc Un cop descrits els scripts en comuacute per a tots els nivells passem als scripts que a cada nivell soacuten diferents perograve que srsquoutilitzen per a una mateixa causa la gestioacute de la nau enemiga
bull Capiacutetols 1 i 2 Els capiacutetols 1 i 2 comparteixen el ma-teix moviment de la nau Aquest script mou la nau seguint un moviment aleatori Lrsquoalgorisme consisteix en que srsquoescull un punt aleatori a arribar i quan srsquoarriba srsquoescull un altre
bull Capiacutetol 3 Al tercer capiacutetol eacutes on veiem per primer cop una intelmiddotligegravencia artificial en el moviment de la nau aquesta fugiragrave de la pilota Per fer-ho srsquoha divi-dit el nivell en dues zones dreta i esquerra quan la pilota estigui a la zona de la dreta la nau es mouragrave a lrsquoesquerra i a la inversa Per a que no sigui impossi-ble tocar-la srsquoha ajustat la velocitat del seu movi-ment adequadament
bull Capiacutetol 4 Al quart capiacutetol la nau ja consta drsquouna intelmiddotligegravencia artificial meacutes avanccedilada en la que es mou segons a on la pilota estigui situada Lrsquoalgorisme consisteix en tenir la posicioacute de la pilota en tot moment i srsquoha dividit lrsquoespai de la partida en 4 quadrats com podem veure a la figura 13 Si la pilota estagrave al quadrat 1 la nau es mouragrave al qua-drat contrari el 4 Si la pilota es situa al quadrat 2 la nau es mouragrave al quadrat 3 Per a que no fos impossi-ble topar amb la nau srsquoha drsquoajustat la velocitat del moviment
bull Capiacutetol 5 Al capiacutetol final lrsquoalgoritme consta del ma-teix moviment que al nivell anterior perograve afegint un extra que si la nau es troba en el mateix quadrat que la pilota en el mateix instant de temps la nau redui-ragrave el seu tamany complicant lrsquoobjectiu drsquoaconseguir destruir-la
10 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
Fig 12 Nau amb lrsquoobjecte lsquoFire-
Pointrsquo
Fig 13 Divisioacute de quadres nivells 4 i 5
Per a veure visualment com funcionen les funcions expli-cades en aquest apartat es pot consultar el viacutedeo adjunt ldquoDEMO_GRAVITY_PONGrdquo
66 Proves
Gragravecies a la metodologia de desenvolupament de Rapid Prototyping srsquoha pogut anar testejant cada mogravedul desen-volupat al moment aixiacute extraient tots els resultats de tests ragravepidament Srsquohan realitzat 4 tipus de proves diferents
bull A les proves drsquounitat srsquoha testejat que els diferents mograveduls del sistema funcionin correctament Com que si un miacutessil drsquouna nau enemiga glopeja la lluna de joc es mostra el menuacute correcte o si tenim les su-ficients monedes per a comprar una textura la po-dem comprar satisfactograveriament entre altres
bull A les proves drsquointegracioacute srsquoha testejat que les in-teraccions entre els diferents escenaris del sistema sigui correcte Srsquoha provat que es pugi accedir a tots els nivells del videojoc i que des de aquests es pu-gui tornar correctament al menuacute principal a traveacutes del menuacute de pausa
bull Les proves de validacioacute han servit per comprovar que hem complit amb els requisits del projecte Hem testejat el correcte log in amb google la visualitzacioacute dels marcadors i la visualitzacioacute dels objectius entre altres
bull Per acabar les proves de sistema han servit gragravecies a la developer console [24] comprovar que el joc srsquoha executat correctament variant els dispositius i versions drsquoAndroid
A lrsquoapartat 31 del document adjunt ldquoDesenvolupament del Jocrdquo es poden trobar la totalitat de les proves realitza-des de cada tipus amb els seus resultats corresponents
7 CONCLUSIONS
I ja per finalitzar aquest document explicareacute quines soacuten les conclusions que he extret sobre el projecte Primer de tot crec que la planificacioacute que vaig realitzar a
lrsquoinici ha sigut lrsquoencertada Les petites alteracions que srsquohan acabat realitzant (com podem veure en el diagrama de Gantt real de lrsquoapegravendix 2) han estat meacutes enfocades a avanccedilar lrsquoinici de les tasques que no pas a endarrerir-les a causa de la situacioacute excepcional que hem viscut
Respecte a la fase drsquoimplementacioacute considero que
srsquohan completat tots els objectius que es presentaven a lrsquoinici del projecte Srsquohan desenvolupat totes les funcions que es van proposar al document de requisits amb lrsquoajuda de la psicograveloga que havia de tenir el joc per a que es considereacutes addictiu i aixiacute ha sigut Per lo que podem concloure que hem desenvolupat un joc addictiu per a Android satisfactograveriament A meacutes srsquoha de dir que lrsquoaplicacioacute eacutes responsive [12] i molt fagravecilment escalable
I com a uacuteltim punt voldria comentar que mrsquohagueacutes
agradat disposar de meacutes temps i recursos per a millorar tot lrsquoaspecte visual de lrsquoaplicacioacute encara meacutes fins a arribar a apropar-se al nivell de mitjanes produccions aquest aspecte milloraria lrsquointeregraves per al joc
71 Futures Accions
A continuacioacute detallarem aquelles accions futures que he considerat que pot ser interessant desenvolupar en prograveximes ampliacions del joc per tal que lrsquoexperiegravencia drsquouacutes dels usuaris sigui la millor possible
bull Un tutorial molt meacutes visual que es mostri el primer cop que srsquoiniciiuml lrsquoaplicacioacute on no solament srsquoexpliqui sobre la mecagravenica del joc sinoacute que tambeacute es guiiuml a lrsquousuari a traveacutes dels menuacutes la interfaccedil i els diferents modes i nivells de joc
bull Una integracioacute drsquoalgun mode de joc online on es po-gueacutes competir contra un altre jugador en temps real oferiria molt drsquoatractiu i enriquiria molt lrsquoaplicacioacute
bull Per acabar com ja hem comentat una millora visual en la que no mrsquohe pogut centrar en especial durant el projecte on amb lrsquoajuda drsquoalgun professional en la mategraveria es crearien unes visuals progravepies per al joc
8 AGRAIumlMENTS
En primer lloc mrsquoagradaria agrair a la meva famiacutelia el suport incondicional que mrsquohan donat en tot moment durant els quatre anys que porto de carrera Sense ells res de tot aixograve hauria estat possible
Tambeacute mrsquoagradaria agrair la Gemma Saacutenchez la meva tutora del TFG pels consells i lrsquoajuda que mrsquoha ofert du-rant aquests mesos tant durs i especials de projecte insis-tint en quegrave treballes ben dur des del primer dia ha per-megraves que aquest treball hagi pogut tirar endavant amb meacutes facilitat
Finalment voldria agrair a les altres persones que han fet aquest treball possible des de la psicograveloga experta que ens va ajudar a definir molt beacute els requisis fins a tots els companys i amics que han treballat com a testers del joc trobant lsquobugsrsquo i fent propostes sobre possibles millores drsquoaquest
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 11
IacuteNDEX DE FIGURES
Fig 1 lsquoRapid Prototypingrsquo3
Fig 2 Diagrama de Classes lsquoNavegar per la Tendarsquo5
Fig 3 Descripcioacute Cas drsquouacutes ldquoComprar textura pilotardquo6
Fig 4 Diagrama de Classes i Escenes6
Fig 5 Diagrama de Sequumlegravencia 1a Execucioacute6
Fig 6 Escena Menuacute Principal7
Fig 7 Escena Mode Lliure7
Fig 8 Escena Botiga8
Fig 9 Escena Mode Histograveria8
Fig 10 Escena lsquoCLASSICrsquo8
Fig 11 Efecte Boost de Gel8
Fig 12 Nau amb objecte lsquofirepointrsquo10
Fig 13 Divisioacute de quadres nivells 4 i 510
REFEREgraveNCIES
[1] Desenvolupament lsquoRapid prototypingrsquo httpseswikipediaorgwikiModelo_de_prototipos
[2] Article de lrsquoaddiccioacute als videojocs httpspsicologiaymentecomclinicaadiccion-a-videojuegos
[3] Per quegrave enganxen els videojocs httpswwwlavanguardiacomestilos-de-vida2012062954317381414por-que-enganchan-los-videojuegoshtml
[4] Historia dels Videojocs httpswwwfibupceduretroinformaticahistoriavideojocshtml
[5] Requisits miacutenims Candy Crush Saga httpswwwmicrosoftcomes-espcandy-crush-sa-ga9nblggh18846activetab=pivotregionofsystemrequirementstab
[6] Document SRS drsquoexemple httpswwwdocsitycomesejemplo-de-documento-srs4930539
[7] El lsquoFirst clickrsquo test httpsusabilityhubcomguidesfirst-click-testing
[8] Quumlestionari lsquoFirst clickrsquo test I httpsowsiocm7v7lx3h4
[9] Quumlestionari lsquoFirst clickrsquo test II httpsowsiocmj6574121
[10] Quumlestionari lsquoFirst clickrsquo test III httpsowsiocm7df25ouc
[11] Scroll Rect de Unity httpsdocsunity3dcomes20184Manualscript-ScrollRecthtml
[12] Disseny Responsive httpswww40defiebrecomque-esdiseno-responsi-ve~text=El20disentildeo20web20responsive20o3B20ordenador2C20tablet2C20smartphonehellip
[13] Canvas de Unity httpsdocsunity3dcomescurrentManualUICanvashtml
[14] Playerprefs de Unity httpsdocsunity3dcomescurrentScriptReferencePlayerPrefshtml
[15] ldquoDisseny de Softwarerdquo Assignatura del grau que ha ser-
vit de font bagravesica dels coneixements aplicats tant a An-droid com als tests amb usuaris La seva guia docent la trobem disponible a httpsdocsunity3dcomManualUnityManualhtml
[16] ldquoTest i Qualitat del Softwarerdquo Assignatura del grau que ha servit de font bagravesica dels coneixements aplicats per als tests del codi La seva guia docent la trobem disponible a httpsguiesuabcatguies_docentspublicportalhtml2019assignatura102758ca
[17] ldquoDocumentacioacuten de Unityrdquo Documentacioacute completa del motor gragravefic lsquoUnityrsquo que srsquoha anat consultant en tot mo-ment del desenvolupament httpsdocsunity3dcomManualUnityManualhtml httpswwww3schoolscomcs
[18] ldquoStack Overflowrdquo Fograverum de preguntes i respostes rela-cionades amb el moacuten de la programacioacute i la informagravetica Srsquoha anat consultant durant la fase drsquoimplementacioacute Al-gunes de les pagravegines que voldria destacar
o Text borroacutes a Unity httpsstackoverflowcomquestions16506737unity3d-3d-text-always-displayed-blur16507861
o Sing-In Google httpsstackoverflowcomquestions59599895problems-with-google-sign-in-in-unity
[19] ldquoComo firmar tu apprdquo Documentacioacute per a desenvolupa-dors Android sobre com signar una aplicacioacute per a que totes les funcions de google funcionin correctament httpsdeveloperandroidcomstudiopublishapp-signinggoogle-play-app-signing
[20] ldquoUnity Ads Documentationrdquo Documentacioacute sobre el sis-tema de publicitat de unity utilitzat a lrsquoapp httpsdocsunity3dcomPackagescomunityads34manualindexhtml
[21] ldquoGoogle play games plugin for unityrdquo Plugin per a unity per a poder utilitzar totes les funcions de google play games httpsgithubcomplaygameservicesplay-games-plugin-for-unity
[22] ldquoFlaticonrdquo Web de recursos gratuiumlts drsquoon srsquohan descarre-gat els sprites que srsquoutilitzen al joc httpswwwflaticones
[23] ldquoUnity Asset Storerdquo Web de recursos gratuiumlts de unity drsquoon srsquohan descarregat els models dels planetes que srsquoutilitzen al joc entre altres httpsassetstoreunitycomgclid=CjwKCAjwlZf3BRABEiwA8Q0qq9NcH2nCMrUHDdQUrV0K7dNiZD6JMAy7G8x93NPLzD3wZKmhiK1MQBoCvR0QAvD_BwE
[24] ldquoAyuda de Play Consolerdquo Documentacioacute sobre al play console plataform on es puja lrsquoaplicacioacute per a que es vi-sualitzi a la play store que srsquoha consultat quan han sorgit problemes httpssupportgooglecomgoogleplayandroid-developerhl=estopic=3450769
[25] ldquoPongrdquo Primer videojoc de la histograveria httpseswikipediaorgwikiPong~text=Pong20(o20Tele-Pong)mesa20(o20ping20pong)
[26] ldquoFlappy Birdsrdquo httpseswikipediaorgwikiFlappy_Bird
[27] ldquoCandy Crushrdquo httpswwwxatakamovilcommovil-y-sociedadcandy-crush-saga-la-ciencia-detras-de-la-adiccion
12 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
APEgraveNDIX
A1 DIAGRAMA DE GANTT DE LA PLANIFICACIOacute INICIAL
A1 Diagrama de Gantt corresponent a la planificacioacute inicial del projecte En aquest diagrama podem veure les diferents tasquesetapes de desenvolupament amb les setmanes que es va planificar destinar a cada una
A2 SECCIOacute DrsquoAPEgraveNDIX
A2 Diagrama de Gantt corresponent a la planificacioacute final del projecte Tal i com podem veure tenim alguns canvis en els temps respecte a la planificacioacute inicial es va acurtar la fase de desenvolupament ja que amb la situacioacute excepcional del paiacutes srsquoha disposat de molt meacutes
temps per al desenvolupament lo qual ha permegraves avanccedilar el pas a produccioacute i la documentacioacute del projecte
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 13
A3 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1
A3 Resultat Estudi 1 - Tasca 1 Com observem el 90 dels testers han completat lrsquoobjectiu de la tasca
A4 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1 (MAPA DE CALOR)
A4 Resultat estudi 1 ndash Tasca 1 (Mapa de Calor) Com podem observar la zona de tocs de dit del 70 dels tocs se centra en el botoacute correcte
14 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
6 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
64 Disseny i Test
Un cop redactats els requisits vaig passar a redactar el ldquoCAPIacuteTOL 2 DISSENY I CONSTRUCCIOacute DEL VIDEO-JOCrdquo que conteacute les seguumlents seccions clau
- Disseny Artiacutestic Conteacute tota la informacioacute per a en-tendre el concepte artiacutestic del videojoc Tota la his-toria en la que es desenvolupa aixiacute com un guioacute complet de tots els diagravelegs del mode historia entre altres Una seccioacute interessant que apareix eacutes la explicacioacute dels controls que hauragrave drsquoutilitzar lrsquousuari i perquegrave srsquohan fet aixiacute on es concreta que el joc nomeacutes con-tindragrave dos tipus de moviments el toc amb el dit i lrsquoscroll lateral Al simplificar el joc a dos tipus de moviments srsquoaconsegueix molta senzillesa que a nivell pragravectic es tradueix a un facilitat molt gran en lrsquoaprenentatge drsquouacutes Finalment conteacute una descripcioacute completa de tots els boosts(objectes aleatoris) que intervenen a les partides i els efectes que tindran
- Disseny del Software En aquesta seccioacute srsquoha desenvolupat un diagrama de classes i escenes a partir de tots els casos drsquouacutes Srsquoha optat per incloure les escenes (progravepies del motor Unity) dins drsquoaquest diagrama ja que proporcionen molta meacutes facilitat a lrsquohora drsquoentendre la relacioacute de les classes ja que algunes no intervenen entre siacute directament sinoacute a partir drsquouna escena especiacutefica
Fig 4 Diagrama de classes i escenes
Amb el diagrama definit es descriuen la funcionalitats de cada classe junt amb els seus atributs propis i les funcions que la formen
Definides les funcions de les classes srsquohan descrit els diagrames de sequumlegravencia molt importants per a observar el flux de les diverses accions directes que pot realitzar lrsquousuari amb la interfaccedil I en consequumlegravencia com reacciona el motor a partir de cada accioacute amb les escenes arxius de
guardat i els serveis de google Ha sigut molt uacutetil per a realitzar un desenvolupament correcte
Fig 5 Diagrama de Sequumlegravencia de la primera execucioacute del Joc
La seccioacute inclou un esboacutes de tota la interfaccedil que interactua amb lrsquousuari Per aconseguir un bon resultat drsquoaquesta es van preparar unes imatges que reconstruiumlen la interfaccedil i es va fer un first-click test [7] amb lrsquoeina web lsquoopti-malworkshoprsquo A causa de la versioacute gratuiumlta srsquohan realitzat 3 estudis dife-rents ja que lrsquoeina limitava la quantitat de preguntes per estudi [8] [9] [10] Gragravecies a aquesta eina amb cada estudi realitzat hem obtingut uns resultats molt visuals que ens han servit per conegraveixer realment si els menuacutes estaven ben estructurats El resultat com podem veure a les imatges de la seccioacute A2 i A3 del apegravendix ha sigut molt satisfactori i no srsquoha necessitat de realitzar cap canvi a la interfaccedil de lrsquousuari Podem dir que el plantejament drsquouna interfaccedil molt senzi-lla i intuiumltiva ha sigut correcte
- Implementacioacute del software Per acabar questa
seccioacute conteacute tots els elements artiacutestics que interve-nen en el joc (models 3D sprites) totes les escenes i la icona que es mostraragrave a la play store
65 Desenvolupament de LrsquoAplicacioacute
651 Implementacioacute del Menuacute Principal
Respecte a la implementacioacute del videojoc es va comenccedilar per elaborar el menuacute principal Per fer-ho es va iniciar el desenvolupament del script ldquoGameManagerrdquo Srsquoha de dir que tots els components visuals del joc srsquohan creat dins drsquouna estructura canvas [13] de Unity per a crear una interfaccedil responsive [12]
Script GameManager Per a crear aquest script encarregat de guardar totes les dades srsquoha utilitzat els PlayerPrefs [14] de unity Soacuten funcions del tipus clau-valor on amb un id pots guardar un valor a un espai de memograveria del dispositiu Aquest GameManager com srsquoexplica a la documentacioacute
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 7
del desenvolupament del joc srsquoencarrega tant de crear lrsquoarxiu de guardat quan srsquoinicialitza per primer com el joc com de carregar els valors drsquoaquests un cop ja srsquoha jugat meacutes drsquoun cop Amb el GameManager com a estructura principal srsquoha comenccedilat a desenvolupar lrsquoescena del Menuacute principal Escena lsquoMenuacutersquo ndash Menuacute principal Per aquest menuacute principal que veiem a la figura 6 es buscava una sensacioacute drsquoimmersioacute al joc que et fes sentir a lrsquoespai Per aixograve es va decidir dividir les 4 parts principals drsquoaquest menuacute Menuacute principal mode lliure mode histo-ria i botiga en diferents punts de lrsquoespai 3D formant una circumferegravencia Aixograve ha permegraves desenvolupar la seguumlent foacutermula per a la cagravemera de joc que ofereix una sensacioacute de flotar a lrsquoespai cameraTransformrotation = QuaternionSlerp (camera-TransformrotationcameraDesiredLookAtrotation CAMERA_TRANSITION_SPEED TimedeltaTime) Amb aquesta foacutermula estem assignant al valor de rotacioacute de la cagravemera del joc una nova rotacioacute entre la seva posi-cioacute actual (cameraTransformrotation) i la posicioacute destiacute (cameraDesiredLookAtrotation) Gragravecies a la funcioacute slerp() realitzaragrave un moviment molt lleuger seguint la velocitat que li indiquem Per a veure millor aquest efecte de cagravemera es pot consul-tar el viacutedeo adjunt ldquoDEMO_GRAVITY_PONGrdquo
Escena lsquoMenuacutersquo ndash Mode Lliure El seguumlent pas ja amb la cagravemera a punt ha sigut desenvo-lupar el llistat de nivells del mode lliure que trobem a la figura 7 Ha sigut una decisioacute difiacutecil i bastant creativa ja que es volia una llista de nivells molt visual i vaig decidir mostrar els nivells com a imatges Investigant vaig trobar que mitjanccedilant codi pots trobar i guardar a variables els sprites que estiguin dins de la carpeta que crea unity de ldquoResourcesrdquo Amb aquesta tegravecnica i un Scroll Rect [11] podem passar els nivells amb un scroll lateral Despreacutes srsquoha afegit la imatge i el text dels tiquets a la part inferior del nivell i el regravecord del nivell a sobre drsquoaquest Per finalitzar srsquoha creat el botoacute de tornar per a que la cagravemera torni a rotar fins la posicioacute del menuacute principal Escena lsquoMenuacutersquo ndash Botiga La botiga com observem ala figura 8 manteacute una estruc-tura semblant al llistat de nivells perograve amb diferegravencies notables En comptes de carregar varies imatges carrega una imat-ge sencera amb totes les textures i la divideix en textures de 256x256 per a una millor optimitzacioacute Teacute un indica-dor monedes del joc i teacute un botoacute extra per a canviar entre la tenda de textures de la pilota i de la lluna de joc
Fig 6 Menuacute Principal
Fig 7 Mode lliure
Escena lsquoMenuacutersquo ndash Mode Histograveria El llistat de nivells del mode histograveria no utilitza la tegravecnica de cagraverrega de imatges pels nivells sinoacute que srsquohan utilitzat uns models gratuiumlts de planetes 3D Cada planeta forma un nivell amb el seu nom i el seu regravecord de temps propi Un cop acabada tota la visual de lrsquoescena del menuacute srsquoha creat el script que el gestionaria anomenat ldquoMainMenurdquo
Fig 8 Botiga
Figura 9 Mode Histograveria
Script MainMenu Aquest script srsquoencarrega de carregar i gestionar els com-ponents de lrsquoescena del menuacute del llistat de nivells i la botiga Primer de tot carrega gragravecies als playerPrefs guardats tots els textos de regravecords de puntuacioacute de cada nivell els tiquets les monedes i les textures comprades de la pilota i lluna de joc que lrsquousuari havia obtingut Srsquoha creat un sistema tant per al llistat de nivells com a la botiga de bloqueig on al llistat de nivells es bloquegen tots els botons dels jocs menys del primer fins que en aquest no srsquohagi obtingut una puntuacioacute miacutenima de 5 i a la botiga es guarda una matriu de desbloquejos que indica quines textures srsquohan comprat i ja no apareixeragrave el seu preu i quines no Tambeacute srsquoencarrega de a la botiga mostrar com quedaria la textura comprada a la pilota o a la lluna de joc i apli-car-la per a quan juguem qualsevol partida Aquest script tambeacute carrega la muacutesica del menuacute
8 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
Script History_Levels Aquest script srsquoencarrega de la gestioacute del menuacute ldquoHISTO-RIArdquo Srsquoha creat un sistema de visualitzacioacute on el jugador can-via de nivell mitjanccedilant dues fletxes i un jugador no po-dragrave accedir a un nivell fins que hagi completat lrsquoanterior Junt amb aquest sistema de bloqueig segons el nivell on es situiuml el jugador es mostraragrave el millor temps en que lrsquoha acabat (si es que hi ha) i el nom del nivell Amb aquests components descrits fins ara ja tindriacuteem tot el menuacute principal acabat Un cop acabat el menuacute srsquoha passat a crear els nivells del mode lliure
652 Implementacioacute del Mode Lliure
El mode lliure consta de 5 nivells amb mecagraveniques de joc variants perograve compartint lrsquoestructura principal del joc Per a explicar com srsquoha desenvolupat aquest mode srsquoutilitzaragrave de referegravencia el mode de joc ldquoCLASSICrdquo el mode de joc original on primer srsquoexplicaran els compo-nents de lrsquoescena i despreacutes els scripts que la componen Una part molt important drsquoaquestes escenes eacutes el disseny seguint el esquema senzill i visual del joc srsquoha passat per diversos plantejaments murs reals una barra plana Finalment despreacutes drsquoun extens plantejament es va deci-dir aplicar el disseny que veiem a la figura 10 En aquest disseny podem observar que els murs soacuten llums LED Aquesta decisioacute srsquoha considerat la millor ja que oferia tota la informacioacute que necessita el jugador dels murs sense ser un objecte molt gran i amb molt detall Finalment srsquohan utilitzat imatges de la temagravetica espacial per a completar el fons de lrsquoescena Escena CLASSIC Lrsquoescena drsquoaquest mode de joc la componen directament la pilota la lluna de joc els murs de joc la puntuacioacute el menuacute de pausa i els tiquets disponibles Perograve realment hi ha molts meacutes components secundaris que no srsquoentraragrave en detall a explicar-los perograve que valia la pena mencionar-los com uns murs secundaris invisibles que srsquoutilitzen per detectar si el jugador perd quan ha destruiumlt un mur ob-jectes que solament es mostren quan srsquoagafa un boost llums que segueixen els objectes per crear un efecte pri-mer pla la interfaccedil del menuacute de pausa Presentats aixiacute els components de lrsquoescena eacutes meacutes interes-sant veure els scripts que afecten a aquests components Script ClassicBall Aquest script que controla la pilota eacutes el meacutes important de lrsquoescena ja que gestiona tot el que pot tenir contacte amb ella La funcioacute meacutes important drsquoaquest script eacutes sens dubte OnCollisionEnter() Aquest funcioacute nativa de Unity ser-veix per a gestionar quan lrsquoobjecte topa amb un altre objecte Quan la pilota topa amb un mur detecta quin eacutes
i segons el seu color actual li canviaragrave el seu color al que toqui i suma un punt Si la pilota topa amb la lluna de joc simplement augmen-taragrave la seva velocitat Si topa amb el forat negre de la part inferior o traspassa un mur destruiumlt srsquoencarrega de parar la partida i la muacutesica mostrar el menuacute de derrota afegir a les monedes totals del jugador les guanyades aquella partida i canviar el regravecord de puntuacioacute del nivell si srsquoha superat
Fig 10 Escena CLASSIC
Fig 11 Efecte de Boost de Gel
Script ClassicPad Aquest script simplement srsquoencarrega de la gestioacute del moviment de la lluna de joc Detecta si el jugador estagrave polsant a sobre drsquoella i es mou en consequumlegravencia Per al mode histograveria srsquoencarrega de si un projectil topa amb ella parar la partida i mostrar el menuacute de derrota Script Pause Menu Aquest script com el seu nom indica gestiona tot el me-nuacute de pausa Que quan es polsi a sobre del botoacute de pausa es pari el joc i es mostri la interfaccedil que quan polsem sobre lsquoreprendrersquo la partida actual segueixi on estava que es torni al menuacute o que es surti de la partida Script Boosts Aquest script srsquoencarrega drsquoinvocar un objecte aleatori que apareix cada x segons aleatograveriament per pantalla un cert temps Segons el boost es produeix un efecte diferent Per fer aixograve se li ha assignat el script a una imatge i srsquoha jugat amb el seu render (el component que fa que es mos-tri la imatge) Gragravecies a la funcioacute TimeTimeSinceLevelLoad que ens proporciona el temps que ha passat des de que srsquoha carregat el nivell sabem quan fer invisible o no lrsquoobjecte Aixiacute creat lrsquoalgoritme que mostra una imatge aleatograveriament drsquouna llista drsquoimatges sempre que no hi hagi un boost funcionant Ara amb un switch case segons la imatge que srsquoestagrave mos-trant crida a la funcioacute del boost que toca per a que realitzi lrsquoefecte adequat Un bon exemple eacutes el boost de gel que al collir-lo com veiem a la figura 11 mostra a tots els murs que no hagin sigut destruiumlts una imatge de neu que impedeix destruir-los
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 9
Es poden trobar tots els boosts i efectes a lrsquoapartat 215 del document adjunt ldquoDesenvolupament del Jocrdquo Amb tots aquests components ja es podria jugar una par-tida ldquoCLASSICrdquo del mode lliure Per a construir els altres nivells del mode lliure srsquoha jugat amb potenciar o extreure aquestes funcions descrites per proporcionar un altre tipus de joc
bull Escena Double Trouble Aquiacute srsquoha duplicat la pilota de joc i srsquoha adaptat lrsquoentorn per a que el nivell sigui jugable
bull Escena Faster Aquest mode es juga al doble de la velocitat normal de joc utilitzant la funcioacute Ti-meTimeScale = 2 que duplica el temps
bull Escena Insight Aquest mode es juga sense veure els components del joc el jugador nomeacutes veu una estela que indica el moviment de la pilota i la lluna de joc
bull Escena Relax En aquest mode on nomeacutes es perdragrave la partida si aquesta cau al forat negre inferior Els murs mai poden ser destruiumlts i no apareixen boosts
653 Implementacioacute del Mode Histograveria
Per a aquest mode srsquoha utilitzat com a base lrsquoestructura del nivell ldquoCLASSICrdquo del mode lliure Amb aquesta es-tructura srsquohan eliminat els boosts i el marcador de pun-tuacioacute Consta drsquoun objectiu totalment diferent al mode lliure no volem aconseguir la major puntuacioacute sinoacute que volem destruir la nau enemiga i si pot ser en el menor temps possible Script Dialog Primerament srsquoha creat un sistema de diagravelegs en el que seguint el guioacute descrit al document adjunt ldquoDesenvolu-pament del Jocrdquo apartat 212 dos personatges ens ense-nyen a jugar a lrsquohora que ens narren una divertida histograve-ria Dit aixograve srsquoha creat un sistema drsquoescriptura on segons unes frases donades srsquoescriu lletra per lletra aconseguint lrsquoefecte de narracioacute dels videojocs Quan comprovem que srsquoha mostrat tota la frase per pan-talla mostrem un botoacute per a continuar amb la conversa i un altre botoacute per a saltar el diagraveleg i comenccedilar a jugar Agafant la primera lletra de la frase amb la funcioacute subs-tring() sabrem si quin personatge parla i hem de mostrar Script History_Ball La pilota srsquoha hagut drsquoadaptar a tots els nous compo-nents A meacutes srsquoha creat un sistema per a mostrar en tot mo-ment el temps que ha passat des de lrsquoinici del nivell Per fer-ho srsquohan utilitzat 2 variables pels minuts i segons Aixograve ha permegraves visualitzar amb meacutes comoditat el format de temps ldquominuts segonsrdquo amb la funcioacute toString()
permetent realitzar les comparacions de temps correcta-ment Script Launcher Aquest script srsquoencarrega un model de miacutessil que li indi-quem i crear una instagravencia drsquoaquest davant la nau amb una certa velocitat dirigit cap a la part inferior de la pan-talla Per aconseguir-ho srsquoutilitza un objecte auxiliar a lrsquoescena lsquoFirePointrsquo que eacutes situat sempre davant la nau on srsquoinstanciaragrave el model del miacutessil amb un cert impuls Po-dem visualitzar aquest sistema a la figura 12 Script ProjectileCollision Aquest script srsquoencarrega solament de destruir el miacutessil quan topi amb un objecte que no sigui la lluna de joc Eacutes un script per a optimitzar el rendiment del joc Un cop descrits els scripts en comuacute per a tots els nivells passem als scripts que a cada nivell soacuten diferents perograve que srsquoutilitzen per a una mateixa causa la gestioacute de la nau enemiga
bull Capiacutetols 1 i 2 Els capiacutetols 1 i 2 comparteixen el ma-teix moviment de la nau Aquest script mou la nau seguint un moviment aleatori Lrsquoalgorisme consisteix en que srsquoescull un punt aleatori a arribar i quan srsquoarriba srsquoescull un altre
bull Capiacutetol 3 Al tercer capiacutetol eacutes on veiem per primer cop una intelmiddotligegravencia artificial en el moviment de la nau aquesta fugiragrave de la pilota Per fer-ho srsquoha divi-dit el nivell en dues zones dreta i esquerra quan la pilota estigui a la zona de la dreta la nau es mouragrave a lrsquoesquerra i a la inversa Per a que no sigui impossi-ble tocar-la srsquoha ajustat la velocitat del seu movi-ment adequadament
bull Capiacutetol 4 Al quart capiacutetol la nau ja consta drsquouna intelmiddotligegravencia artificial meacutes avanccedilada en la que es mou segons a on la pilota estigui situada Lrsquoalgorisme consisteix en tenir la posicioacute de la pilota en tot moment i srsquoha dividit lrsquoespai de la partida en 4 quadrats com podem veure a la figura 13 Si la pilota estagrave al quadrat 1 la nau es mouragrave al qua-drat contrari el 4 Si la pilota es situa al quadrat 2 la nau es mouragrave al quadrat 3 Per a que no fos impossi-ble topar amb la nau srsquoha drsquoajustat la velocitat del moviment
bull Capiacutetol 5 Al capiacutetol final lrsquoalgoritme consta del ma-teix moviment que al nivell anterior perograve afegint un extra que si la nau es troba en el mateix quadrat que la pilota en el mateix instant de temps la nau redui-ragrave el seu tamany complicant lrsquoobjectiu drsquoaconseguir destruir-la
10 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
Fig 12 Nau amb lrsquoobjecte lsquoFire-
Pointrsquo
Fig 13 Divisioacute de quadres nivells 4 i 5
Per a veure visualment com funcionen les funcions expli-cades en aquest apartat es pot consultar el viacutedeo adjunt ldquoDEMO_GRAVITY_PONGrdquo
66 Proves
Gragravecies a la metodologia de desenvolupament de Rapid Prototyping srsquoha pogut anar testejant cada mogravedul desen-volupat al moment aixiacute extraient tots els resultats de tests ragravepidament Srsquohan realitzat 4 tipus de proves diferents
bull A les proves drsquounitat srsquoha testejat que els diferents mograveduls del sistema funcionin correctament Com que si un miacutessil drsquouna nau enemiga glopeja la lluna de joc es mostra el menuacute correcte o si tenim les su-ficients monedes per a comprar una textura la po-dem comprar satisfactograveriament entre altres
bull A les proves drsquointegracioacute srsquoha testejat que les in-teraccions entre els diferents escenaris del sistema sigui correcte Srsquoha provat que es pugi accedir a tots els nivells del videojoc i que des de aquests es pu-gui tornar correctament al menuacute principal a traveacutes del menuacute de pausa
bull Les proves de validacioacute han servit per comprovar que hem complit amb els requisits del projecte Hem testejat el correcte log in amb google la visualitzacioacute dels marcadors i la visualitzacioacute dels objectius entre altres
bull Per acabar les proves de sistema han servit gragravecies a la developer console [24] comprovar que el joc srsquoha executat correctament variant els dispositius i versions drsquoAndroid
A lrsquoapartat 31 del document adjunt ldquoDesenvolupament del Jocrdquo es poden trobar la totalitat de les proves realitza-des de cada tipus amb els seus resultats corresponents
7 CONCLUSIONS
I ja per finalitzar aquest document explicareacute quines soacuten les conclusions que he extret sobre el projecte Primer de tot crec que la planificacioacute que vaig realitzar a
lrsquoinici ha sigut lrsquoencertada Les petites alteracions que srsquohan acabat realitzant (com podem veure en el diagrama de Gantt real de lrsquoapegravendix 2) han estat meacutes enfocades a avanccedilar lrsquoinici de les tasques que no pas a endarrerir-les a causa de la situacioacute excepcional que hem viscut
Respecte a la fase drsquoimplementacioacute considero que
srsquohan completat tots els objectius que es presentaven a lrsquoinici del projecte Srsquohan desenvolupat totes les funcions que es van proposar al document de requisits amb lrsquoajuda de la psicograveloga que havia de tenir el joc per a que es considereacutes addictiu i aixiacute ha sigut Per lo que podem concloure que hem desenvolupat un joc addictiu per a Android satisfactograveriament A meacutes srsquoha de dir que lrsquoaplicacioacute eacutes responsive [12] i molt fagravecilment escalable
I com a uacuteltim punt voldria comentar que mrsquohagueacutes
agradat disposar de meacutes temps i recursos per a millorar tot lrsquoaspecte visual de lrsquoaplicacioacute encara meacutes fins a arribar a apropar-se al nivell de mitjanes produccions aquest aspecte milloraria lrsquointeregraves per al joc
71 Futures Accions
A continuacioacute detallarem aquelles accions futures que he considerat que pot ser interessant desenvolupar en prograveximes ampliacions del joc per tal que lrsquoexperiegravencia drsquouacutes dels usuaris sigui la millor possible
bull Un tutorial molt meacutes visual que es mostri el primer cop que srsquoiniciiuml lrsquoaplicacioacute on no solament srsquoexpliqui sobre la mecagravenica del joc sinoacute que tambeacute es guiiuml a lrsquousuari a traveacutes dels menuacutes la interfaccedil i els diferents modes i nivells de joc
bull Una integracioacute drsquoalgun mode de joc online on es po-gueacutes competir contra un altre jugador en temps real oferiria molt drsquoatractiu i enriquiria molt lrsquoaplicacioacute
bull Per acabar com ja hem comentat una millora visual en la que no mrsquohe pogut centrar en especial durant el projecte on amb lrsquoajuda drsquoalgun professional en la mategraveria es crearien unes visuals progravepies per al joc
8 AGRAIumlMENTS
En primer lloc mrsquoagradaria agrair a la meva famiacutelia el suport incondicional que mrsquohan donat en tot moment durant els quatre anys que porto de carrera Sense ells res de tot aixograve hauria estat possible
Tambeacute mrsquoagradaria agrair la Gemma Saacutenchez la meva tutora del TFG pels consells i lrsquoajuda que mrsquoha ofert du-rant aquests mesos tant durs i especials de projecte insis-tint en quegrave treballes ben dur des del primer dia ha per-megraves que aquest treball hagi pogut tirar endavant amb meacutes facilitat
Finalment voldria agrair a les altres persones que han fet aquest treball possible des de la psicograveloga experta que ens va ajudar a definir molt beacute els requisis fins a tots els companys i amics que han treballat com a testers del joc trobant lsquobugsrsquo i fent propostes sobre possibles millores drsquoaquest
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 11
IacuteNDEX DE FIGURES
Fig 1 lsquoRapid Prototypingrsquo3
Fig 2 Diagrama de Classes lsquoNavegar per la Tendarsquo5
Fig 3 Descripcioacute Cas drsquouacutes ldquoComprar textura pilotardquo6
Fig 4 Diagrama de Classes i Escenes6
Fig 5 Diagrama de Sequumlegravencia 1a Execucioacute6
Fig 6 Escena Menuacute Principal7
Fig 7 Escena Mode Lliure7
Fig 8 Escena Botiga8
Fig 9 Escena Mode Histograveria8
Fig 10 Escena lsquoCLASSICrsquo8
Fig 11 Efecte Boost de Gel8
Fig 12 Nau amb objecte lsquofirepointrsquo10
Fig 13 Divisioacute de quadres nivells 4 i 510
REFEREgraveNCIES
[1] Desenvolupament lsquoRapid prototypingrsquo httpseswikipediaorgwikiModelo_de_prototipos
[2] Article de lrsquoaddiccioacute als videojocs httpspsicologiaymentecomclinicaadiccion-a-videojuegos
[3] Per quegrave enganxen els videojocs httpswwwlavanguardiacomestilos-de-vida2012062954317381414por-que-enganchan-los-videojuegoshtml
[4] Historia dels Videojocs httpswwwfibupceduretroinformaticahistoriavideojocshtml
[5] Requisits miacutenims Candy Crush Saga httpswwwmicrosoftcomes-espcandy-crush-sa-ga9nblggh18846activetab=pivotregionofsystemrequirementstab
[6] Document SRS drsquoexemple httpswwwdocsitycomesejemplo-de-documento-srs4930539
[7] El lsquoFirst clickrsquo test httpsusabilityhubcomguidesfirst-click-testing
[8] Quumlestionari lsquoFirst clickrsquo test I httpsowsiocm7v7lx3h4
[9] Quumlestionari lsquoFirst clickrsquo test II httpsowsiocmj6574121
[10] Quumlestionari lsquoFirst clickrsquo test III httpsowsiocm7df25ouc
[11] Scroll Rect de Unity httpsdocsunity3dcomes20184Manualscript-ScrollRecthtml
[12] Disseny Responsive httpswww40defiebrecomque-esdiseno-responsi-ve~text=El20disentildeo20web20responsive20o3B20ordenador2C20tablet2C20smartphonehellip
[13] Canvas de Unity httpsdocsunity3dcomescurrentManualUICanvashtml
[14] Playerprefs de Unity httpsdocsunity3dcomescurrentScriptReferencePlayerPrefshtml
[15] ldquoDisseny de Softwarerdquo Assignatura del grau que ha ser-
vit de font bagravesica dels coneixements aplicats tant a An-droid com als tests amb usuaris La seva guia docent la trobem disponible a httpsdocsunity3dcomManualUnityManualhtml
[16] ldquoTest i Qualitat del Softwarerdquo Assignatura del grau que ha servit de font bagravesica dels coneixements aplicats per als tests del codi La seva guia docent la trobem disponible a httpsguiesuabcatguies_docentspublicportalhtml2019assignatura102758ca
[17] ldquoDocumentacioacuten de Unityrdquo Documentacioacute completa del motor gragravefic lsquoUnityrsquo que srsquoha anat consultant en tot mo-ment del desenvolupament httpsdocsunity3dcomManualUnityManualhtml httpswwww3schoolscomcs
[18] ldquoStack Overflowrdquo Fograverum de preguntes i respostes rela-cionades amb el moacuten de la programacioacute i la informagravetica Srsquoha anat consultant durant la fase drsquoimplementacioacute Al-gunes de les pagravegines que voldria destacar
o Text borroacutes a Unity httpsstackoverflowcomquestions16506737unity3d-3d-text-always-displayed-blur16507861
o Sing-In Google httpsstackoverflowcomquestions59599895problems-with-google-sign-in-in-unity
[19] ldquoComo firmar tu apprdquo Documentacioacute per a desenvolupa-dors Android sobre com signar una aplicacioacute per a que totes les funcions de google funcionin correctament httpsdeveloperandroidcomstudiopublishapp-signinggoogle-play-app-signing
[20] ldquoUnity Ads Documentationrdquo Documentacioacute sobre el sis-tema de publicitat de unity utilitzat a lrsquoapp httpsdocsunity3dcomPackagescomunityads34manualindexhtml
[21] ldquoGoogle play games plugin for unityrdquo Plugin per a unity per a poder utilitzar totes les funcions de google play games httpsgithubcomplaygameservicesplay-games-plugin-for-unity
[22] ldquoFlaticonrdquo Web de recursos gratuiumlts drsquoon srsquohan descarre-gat els sprites que srsquoutilitzen al joc httpswwwflaticones
[23] ldquoUnity Asset Storerdquo Web de recursos gratuiumlts de unity drsquoon srsquohan descarregat els models dels planetes que srsquoutilitzen al joc entre altres httpsassetstoreunitycomgclid=CjwKCAjwlZf3BRABEiwA8Q0qq9NcH2nCMrUHDdQUrV0K7dNiZD6JMAy7G8x93NPLzD3wZKmhiK1MQBoCvR0QAvD_BwE
[24] ldquoAyuda de Play Consolerdquo Documentacioacute sobre al play console plataform on es puja lrsquoaplicacioacute per a que es vi-sualitzi a la play store que srsquoha consultat quan han sorgit problemes httpssupportgooglecomgoogleplayandroid-developerhl=estopic=3450769
[25] ldquoPongrdquo Primer videojoc de la histograveria httpseswikipediaorgwikiPong~text=Pong20(o20Tele-Pong)mesa20(o20ping20pong)
[26] ldquoFlappy Birdsrdquo httpseswikipediaorgwikiFlappy_Bird
[27] ldquoCandy Crushrdquo httpswwwxatakamovilcommovil-y-sociedadcandy-crush-saga-la-ciencia-detras-de-la-adiccion
12 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
APEgraveNDIX
A1 DIAGRAMA DE GANTT DE LA PLANIFICACIOacute INICIAL
A1 Diagrama de Gantt corresponent a la planificacioacute inicial del projecte En aquest diagrama podem veure les diferents tasquesetapes de desenvolupament amb les setmanes que es va planificar destinar a cada una
A2 SECCIOacute DrsquoAPEgraveNDIX
A2 Diagrama de Gantt corresponent a la planificacioacute final del projecte Tal i com podem veure tenim alguns canvis en els temps respecte a la planificacioacute inicial es va acurtar la fase de desenvolupament ja que amb la situacioacute excepcional del paiacutes srsquoha disposat de molt meacutes
temps per al desenvolupament lo qual ha permegraves avanccedilar el pas a produccioacute i la documentacioacute del projecte
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 13
A3 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1
A3 Resultat Estudi 1 - Tasca 1 Com observem el 90 dels testers han completat lrsquoobjectiu de la tasca
A4 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1 (MAPA DE CALOR)
A4 Resultat estudi 1 ndash Tasca 1 (Mapa de Calor) Com podem observar la zona de tocs de dit del 70 dels tocs se centra en el botoacute correcte
14 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 7
del desenvolupament del joc srsquoencarrega tant de crear lrsquoarxiu de guardat quan srsquoinicialitza per primer com el joc com de carregar els valors drsquoaquests un cop ja srsquoha jugat meacutes drsquoun cop Amb el GameManager com a estructura principal srsquoha comenccedilat a desenvolupar lrsquoescena del Menuacute principal Escena lsquoMenuacutersquo ndash Menuacute principal Per aquest menuacute principal que veiem a la figura 6 es buscava una sensacioacute drsquoimmersioacute al joc que et fes sentir a lrsquoespai Per aixograve es va decidir dividir les 4 parts principals drsquoaquest menuacute Menuacute principal mode lliure mode histo-ria i botiga en diferents punts de lrsquoespai 3D formant una circumferegravencia Aixograve ha permegraves desenvolupar la seguumlent foacutermula per a la cagravemera de joc que ofereix una sensacioacute de flotar a lrsquoespai cameraTransformrotation = QuaternionSlerp (camera-TransformrotationcameraDesiredLookAtrotation CAMERA_TRANSITION_SPEED TimedeltaTime) Amb aquesta foacutermula estem assignant al valor de rotacioacute de la cagravemera del joc una nova rotacioacute entre la seva posi-cioacute actual (cameraTransformrotation) i la posicioacute destiacute (cameraDesiredLookAtrotation) Gragravecies a la funcioacute slerp() realitzaragrave un moviment molt lleuger seguint la velocitat que li indiquem Per a veure millor aquest efecte de cagravemera es pot consul-tar el viacutedeo adjunt ldquoDEMO_GRAVITY_PONGrdquo
Escena lsquoMenuacutersquo ndash Mode Lliure El seguumlent pas ja amb la cagravemera a punt ha sigut desenvo-lupar el llistat de nivells del mode lliure que trobem a la figura 7 Ha sigut una decisioacute difiacutecil i bastant creativa ja que es volia una llista de nivells molt visual i vaig decidir mostrar els nivells com a imatges Investigant vaig trobar que mitjanccedilant codi pots trobar i guardar a variables els sprites que estiguin dins de la carpeta que crea unity de ldquoResourcesrdquo Amb aquesta tegravecnica i un Scroll Rect [11] podem passar els nivells amb un scroll lateral Despreacutes srsquoha afegit la imatge i el text dels tiquets a la part inferior del nivell i el regravecord del nivell a sobre drsquoaquest Per finalitzar srsquoha creat el botoacute de tornar per a que la cagravemera torni a rotar fins la posicioacute del menuacute principal Escena lsquoMenuacutersquo ndash Botiga La botiga com observem ala figura 8 manteacute una estruc-tura semblant al llistat de nivells perograve amb diferegravencies notables En comptes de carregar varies imatges carrega una imat-ge sencera amb totes les textures i la divideix en textures de 256x256 per a una millor optimitzacioacute Teacute un indica-dor monedes del joc i teacute un botoacute extra per a canviar entre la tenda de textures de la pilota i de la lluna de joc
Fig 6 Menuacute Principal
Fig 7 Mode lliure
Escena lsquoMenuacutersquo ndash Mode Histograveria El llistat de nivells del mode histograveria no utilitza la tegravecnica de cagraverrega de imatges pels nivells sinoacute que srsquohan utilitzat uns models gratuiumlts de planetes 3D Cada planeta forma un nivell amb el seu nom i el seu regravecord de temps propi Un cop acabada tota la visual de lrsquoescena del menuacute srsquoha creat el script que el gestionaria anomenat ldquoMainMenurdquo
Fig 8 Botiga
Figura 9 Mode Histograveria
Script MainMenu Aquest script srsquoencarrega de carregar i gestionar els com-ponents de lrsquoescena del menuacute del llistat de nivells i la botiga Primer de tot carrega gragravecies als playerPrefs guardats tots els textos de regravecords de puntuacioacute de cada nivell els tiquets les monedes i les textures comprades de la pilota i lluna de joc que lrsquousuari havia obtingut Srsquoha creat un sistema tant per al llistat de nivells com a la botiga de bloqueig on al llistat de nivells es bloquegen tots els botons dels jocs menys del primer fins que en aquest no srsquohagi obtingut una puntuacioacute miacutenima de 5 i a la botiga es guarda una matriu de desbloquejos que indica quines textures srsquohan comprat i ja no apareixeragrave el seu preu i quines no Tambeacute srsquoencarrega de a la botiga mostrar com quedaria la textura comprada a la pilota o a la lluna de joc i apli-car-la per a quan juguem qualsevol partida Aquest script tambeacute carrega la muacutesica del menuacute
8 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
Script History_Levels Aquest script srsquoencarrega de la gestioacute del menuacute ldquoHISTO-RIArdquo Srsquoha creat un sistema de visualitzacioacute on el jugador can-via de nivell mitjanccedilant dues fletxes i un jugador no po-dragrave accedir a un nivell fins que hagi completat lrsquoanterior Junt amb aquest sistema de bloqueig segons el nivell on es situiuml el jugador es mostraragrave el millor temps en que lrsquoha acabat (si es que hi ha) i el nom del nivell Amb aquests components descrits fins ara ja tindriacuteem tot el menuacute principal acabat Un cop acabat el menuacute srsquoha passat a crear els nivells del mode lliure
652 Implementacioacute del Mode Lliure
El mode lliure consta de 5 nivells amb mecagraveniques de joc variants perograve compartint lrsquoestructura principal del joc Per a explicar com srsquoha desenvolupat aquest mode srsquoutilitzaragrave de referegravencia el mode de joc ldquoCLASSICrdquo el mode de joc original on primer srsquoexplicaran els compo-nents de lrsquoescena i despreacutes els scripts que la componen Una part molt important drsquoaquestes escenes eacutes el disseny seguint el esquema senzill i visual del joc srsquoha passat per diversos plantejaments murs reals una barra plana Finalment despreacutes drsquoun extens plantejament es va deci-dir aplicar el disseny que veiem a la figura 10 En aquest disseny podem observar que els murs soacuten llums LED Aquesta decisioacute srsquoha considerat la millor ja que oferia tota la informacioacute que necessita el jugador dels murs sense ser un objecte molt gran i amb molt detall Finalment srsquohan utilitzat imatges de la temagravetica espacial per a completar el fons de lrsquoescena Escena CLASSIC Lrsquoescena drsquoaquest mode de joc la componen directament la pilota la lluna de joc els murs de joc la puntuacioacute el menuacute de pausa i els tiquets disponibles Perograve realment hi ha molts meacutes components secundaris que no srsquoentraragrave en detall a explicar-los perograve que valia la pena mencionar-los com uns murs secundaris invisibles que srsquoutilitzen per detectar si el jugador perd quan ha destruiumlt un mur ob-jectes que solament es mostren quan srsquoagafa un boost llums que segueixen els objectes per crear un efecte pri-mer pla la interfaccedil del menuacute de pausa Presentats aixiacute els components de lrsquoescena eacutes meacutes interes-sant veure els scripts que afecten a aquests components Script ClassicBall Aquest script que controla la pilota eacutes el meacutes important de lrsquoescena ja que gestiona tot el que pot tenir contacte amb ella La funcioacute meacutes important drsquoaquest script eacutes sens dubte OnCollisionEnter() Aquest funcioacute nativa de Unity ser-veix per a gestionar quan lrsquoobjecte topa amb un altre objecte Quan la pilota topa amb un mur detecta quin eacutes
i segons el seu color actual li canviaragrave el seu color al que toqui i suma un punt Si la pilota topa amb la lluna de joc simplement augmen-taragrave la seva velocitat Si topa amb el forat negre de la part inferior o traspassa un mur destruiumlt srsquoencarrega de parar la partida i la muacutesica mostrar el menuacute de derrota afegir a les monedes totals del jugador les guanyades aquella partida i canviar el regravecord de puntuacioacute del nivell si srsquoha superat
Fig 10 Escena CLASSIC
Fig 11 Efecte de Boost de Gel
Script ClassicPad Aquest script simplement srsquoencarrega de la gestioacute del moviment de la lluna de joc Detecta si el jugador estagrave polsant a sobre drsquoella i es mou en consequumlegravencia Per al mode histograveria srsquoencarrega de si un projectil topa amb ella parar la partida i mostrar el menuacute de derrota Script Pause Menu Aquest script com el seu nom indica gestiona tot el me-nuacute de pausa Que quan es polsi a sobre del botoacute de pausa es pari el joc i es mostri la interfaccedil que quan polsem sobre lsquoreprendrersquo la partida actual segueixi on estava que es torni al menuacute o que es surti de la partida Script Boosts Aquest script srsquoencarrega drsquoinvocar un objecte aleatori que apareix cada x segons aleatograveriament per pantalla un cert temps Segons el boost es produeix un efecte diferent Per fer aixograve se li ha assignat el script a una imatge i srsquoha jugat amb el seu render (el component que fa que es mos-tri la imatge) Gragravecies a la funcioacute TimeTimeSinceLevelLoad que ens proporciona el temps que ha passat des de que srsquoha carregat el nivell sabem quan fer invisible o no lrsquoobjecte Aixiacute creat lrsquoalgoritme que mostra una imatge aleatograveriament drsquouna llista drsquoimatges sempre que no hi hagi un boost funcionant Ara amb un switch case segons la imatge que srsquoestagrave mos-trant crida a la funcioacute del boost que toca per a que realitzi lrsquoefecte adequat Un bon exemple eacutes el boost de gel que al collir-lo com veiem a la figura 11 mostra a tots els murs que no hagin sigut destruiumlts una imatge de neu que impedeix destruir-los
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 9
Es poden trobar tots els boosts i efectes a lrsquoapartat 215 del document adjunt ldquoDesenvolupament del Jocrdquo Amb tots aquests components ja es podria jugar una par-tida ldquoCLASSICrdquo del mode lliure Per a construir els altres nivells del mode lliure srsquoha jugat amb potenciar o extreure aquestes funcions descrites per proporcionar un altre tipus de joc
bull Escena Double Trouble Aquiacute srsquoha duplicat la pilota de joc i srsquoha adaptat lrsquoentorn per a que el nivell sigui jugable
bull Escena Faster Aquest mode es juga al doble de la velocitat normal de joc utilitzant la funcioacute Ti-meTimeScale = 2 que duplica el temps
bull Escena Insight Aquest mode es juga sense veure els components del joc el jugador nomeacutes veu una estela que indica el moviment de la pilota i la lluna de joc
bull Escena Relax En aquest mode on nomeacutes es perdragrave la partida si aquesta cau al forat negre inferior Els murs mai poden ser destruiumlts i no apareixen boosts
653 Implementacioacute del Mode Histograveria
Per a aquest mode srsquoha utilitzat com a base lrsquoestructura del nivell ldquoCLASSICrdquo del mode lliure Amb aquesta es-tructura srsquohan eliminat els boosts i el marcador de pun-tuacioacute Consta drsquoun objectiu totalment diferent al mode lliure no volem aconseguir la major puntuacioacute sinoacute que volem destruir la nau enemiga i si pot ser en el menor temps possible Script Dialog Primerament srsquoha creat un sistema de diagravelegs en el que seguint el guioacute descrit al document adjunt ldquoDesenvolu-pament del Jocrdquo apartat 212 dos personatges ens ense-nyen a jugar a lrsquohora que ens narren una divertida histograve-ria Dit aixograve srsquoha creat un sistema drsquoescriptura on segons unes frases donades srsquoescriu lletra per lletra aconseguint lrsquoefecte de narracioacute dels videojocs Quan comprovem que srsquoha mostrat tota la frase per pan-talla mostrem un botoacute per a continuar amb la conversa i un altre botoacute per a saltar el diagraveleg i comenccedilar a jugar Agafant la primera lletra de la frase amb la funcioacute subs-tring() sabrem si quin personatge parla i hem de mostrar Script History_Ball La pilota srsquoha hagut drsquoadaptar a tots els nous compo-nents A meacutes srsquoha creat un sistema per a mostrar en tot mo-ment el temps que ha passat des de lrsquoinici del nivell Per fer-ho srsquohan utilitzat 2 variables pels minuts i segons Aixograve ha permegraves visualitzar amb meacutes comoditat el format de temps ldquominuts segonsrdquo amb la funcioacute toString()
permetent realitzar les comparacions de temps correcta-ment Script Launcher Aquest script srsquoencarrega un model de miacutessil que li indi-quem i crear una instagravencia drsquoaquest davant la nau amb una certa velocitat dirigit cap a la part inferior de la pan-talla Per aconseguir-ho srsquoutilitza un objecte auxiliar a lrsquoescena lsquoFirePointrsquo que eacutes situat sempre davant la nau on srsquoinstanciaragrave el model del miacutessil amb un cert impuls Po-dem visualitzar aquest sistema a la figura 12 Script ProjectileCollision Aquest script srsquoencarrega solament de destruir el miacutessil quan topi amb un objecte que no sigui la lluna de joc Eacutes un script per a optimitzar el rendiment del joc Un cop descrits els scripts en comuacute per a tots els nivells passem als scripts que a cada nivell soacuten diferents perograve que srsquoutilitzen per a una mateixa causa la gestioacute de la nau enemiga
bull Capiacutetols 1 i 2 Els capiacutetols 1 i 2 comparteixen el ma-teix moviment de la nau Aquest script mou la nau seguint un moviment aleatori Lrsquoalgorisme consisteix en que srsquoescull un punt aleatori a arribar i quan srsquoarriba srsquoescull un altre
bull Capiacutetol 3 Al tercer capiacutetol eacutes on veiem per primer cop una intelmiddotligegravencia artificial en el moviment de la nau aquesta fugiragrave de la pilota Per fer-ho srsquoha divi-dit el nivell en dues zones dreta i esquerra quan la pilota estigui a la zona de la dreta la nau es mouragrave a lrsquoesquerra i a la inversa Per a que no sigui impossi-ble tocar-la srsquoha ajustat la velocitat del seu movi-ment adequadament
bull Capiacutetol 4 Al quart capiacutetol la nau ja consta drsquouna intelmiddotligegravencia artificial meacutes avanccedilada en la que es mou segons a on la pilota estigui situada Lrsquoalgorisme consisteix en tenir la posicioacute de la pilota en tot moment i srsquoha dividit lrsquoespai de la partida en 4 quadrats com podem veure a la figura 13 Si la pilota estagrave al quadrat 1 la nau es mouragrave al qua-drat contrari el 4 Si la pilota es situa al quadrat 2 la nau es mouragrave al quadrat 3 Per a que no fos impossi-ble topar amb la nau srsquoha drsquoajustat la velocitat del moviment
bull Capiacutetol 5 Al capiacutetol final lrsquoalgoritme consta del ma-teix moviment que al nivell anterior perograve afegint un extra que si la nau es troba en el mateix quadrat que la pilota en el mateix instant de temps la nau redui-ragrave el seu tamany complicant lrsquoobjectiu drsquoaconseguir destruir-la
10 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
Fig 12 Nau amb lrsquoobjecte lsquoFire-
Pointrsquo
Fig 13 Divisioacute de quadres nivells 4 i 5
Per a veure visualment com funcionen les funcions expli-cades en aquest apartat es pot consultar el viacutedeo adjunt ldquoDEMO_GRAVITY_PONGrdquo
66 Proves
Gragravecies a la metodologia de desenvolupament de Rapid Prototyping srsquoha pogut anar testejant cada mogravedul desen-volupat al moment aixiacute extraient tots els resultats de tests ragravepidament Srsquohan realitzat 4 tipus de proves diferents
bull A les proves drsquounitat srsquoha testejat que els diferents mograveduls del sistema funcionin correctament Com que si un miacutessil drsquouna nau enemiga glopeja la lluna de joc es mostra el menuacute correcte o si tenim les su-ficients monedes per a comprar una textura la po-dem comprar satisfactograveriament entre altres
bull A les proves drsquointegracioacute srsquoha testejat que les in-teraccions entre els diferents escenaris del sistema sigui correcte Srsquoha provat que es pugi accedir a tots els nivells del videojoc i que des de aquests es pu-gui tornar correctament al menuacute principal a traveacutes del menuacute de pausa
bull Les proves de validacioacute han servit per comprovar que hem complit amb els requisits del projecte Hem testejat el correcte log in amb google la visualitzacioacute dels marcadors i la visualitzacioacute dels objectius entre altres
bull Per acabar les proves de sistema han servit gragravecies a la developer console [24] comprovar que el joc srsquoha executat correctament variant els dispositius i versions drsquoAndroid
A lrsquoapartat 31 del document adjunt ldquoDesenvolupament del Jocrdquo es poden trobar la totalitat de les proves realitza-des de cada tipus amb els seus resultats corresponents
7 CONCLUSIONS
I ja per finalitzar aquest document explicareacute quines soacuten les conclusions que he extret sobre el projecte Primer de tot crec que la planificacioacute que vaig realitzar a
lrsquoinici ha sigut lrsquoencertada Les petites alteracions que srsquohan acabat realitzant (com podem veure en el diagrama de Gantt real de lrsquoapegravendix 2) han estat meacutes enfocades a avanccedilar lrsquoinici de les tasques que no pas a endarrerir-les a causa de la situacioacute excepcional que hem viscut
Respecte a la fase drsquoimplementacioacute considero que
srsquohan completat tots els objectius que es presentaven a lrsquoinici del projecte Srsquohan desenvolupat totes les funcions que es van proposar al document de requisits amb lrsquoajuda de la psicograveloga que havia de tenir el joc per a que es considereacutes addictiu i aixiacute ha sigut Per lo que podem concloure que hem desenvolupat un joc addictiu per a Android satisfactograveriament A meacutes srsquoha de dir que lrsquoaplicacioacute eacutes responsive [12] i molt fagravecilment escalable
I com a uacuteltim punt voldria comentar que mrsquohagueacutes
agradat disposar de meacutes temps i recursos per a millorar tot lrsquoaspecte visual de lrsquoaplicacioacute encara meacutes fins a arribar a apropar-se al nivell de mitjanes produccions aquest aspecte milloraria lrsquointeregraves per al joc
71 Futures Accions
A continuacioacute detallarem aquelles accions futures que he considerat que pot ser interessant desenvolupar en prograveximes ampliacions del joc per tal que lrsquoexperiegravencia drsquouacutes dels usuaris sigui la millor possible
bull Un tutorial molt meacutes visual que es mostri el primer cop que srsquoiniciiuml lrsquoaplicacioacute on no solament srsquoexpliqui sobre la mecagravenica del joc sinoacute que tambeacute es guiiuml a lrsquousuari a traveacutes dels menuacutes la interfaccedil i els diferents modes i nivells de joc
bull Una integracioacute drsquoalgun mode de joc online on es po-gueacutes competir contra un altre jugador en temps real oferiria molt drsquoatractiu i enriquiria molt lrsquoaplicacioacute
bull Per acabar com ja hem comentat una millora visual en la que no mrsquohe pogut centrar en especial durant el projecte on amb lrsquoajuda drsquoalgun professional en la mategraveria es crearien unes visuals progravepies per al joc
8 AGRAIumlMENTS
En primer lloc mrsquoagradaria agrair a la meva famiacutelia el suport incondicional que mrsquohan donat en tot moment durant els quatre anys que porto de carrera Sense ells res de tot aixograve hauria estat possible
Tambeacute mrsquoagradaria agrair la Gemma Saacutenchez la meva tutora del TFG pels consells i lrsquoajuda que mrsquoha ofert du-rant aquests mesos tant durs i especials de projecte insis-tint en quegrave treballes ben dur des del primer dia ha per-megraves que aquest treball hagi pogut tirar endavant amb meacutes facilitat
Finalment voldria agrair a les altres persones que han fet aquest treball possible des de la psicograveloga experta que ens va ajudar a definir molt beacute els requisis fins a tots els companys i amics que han treballat com a testers del joc trobant lsquobugsrsquo i fent propostes sobre possibles millores drsquoaquest
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 11
IacuteNDEX DE FIGURES
Fig 1 lsquoRapid Prototypingrsquo3
Fig 2 Diagrama de Classes lsquoNavegar per la Tendarsquo5
Fig 3 Descripcioacute Cas drsquouacutes ldquoComprar textura pilotardquo6
Fig 4 Diagrama de Classes i Escenes6
Fig 5 Diagrama de Sequumlegravencia 1a Execucioacute6
Fig 6 Escena Menuacute Principal7
Fig 7 Escena Mode Lliure7
Fig 8 Escena Botiga8
Fig 9 Escena Mode Histograveria8
Fig 10 Escena lsquoCLASSICrsquo8
Fig 11 Efecte Boost de Gel8
Fig 12 Nau amb objecte lsquofirepointrsquo10
Fig 13 Divisioacute de quadres nivells 4 i 510
REFEREgraveNCIES
[1] Desenvolupament lsquoRapid prototypingrsquo httpseswikipediaorgwikiModelo_de_prototipos
[2] Article de lrsquoaddiccioacute als videojocs httpspsicologiaymentecomclinicaadiccion-a-videojuegos
[3] Per quegrave enganxen els videojocs httpswwwlavanguardiacomestilos-de-vida2012062954317381414por-que-enganchan-los-videojuegoshtml
[4] Historia dels Videojocs httpswwwfibupceduretroinformaticahistoriavideojocshtml
[5] Requisits miacutenims Candy Crush Saga httpswwwmicrosoftcomes-espcandy-crush-sa-ga9nblggh18846activetab=pivotregionofsystemrequirementstab
[6] Document SRS drsquoexemple httpswwwdocsitycomesejemplo-de-documento-srs4930539
[7] El lsquoFirst clickrsquo test httpsusabilityhubcomguidesfirst-click-testing
[8] Quumlestionari lsquoFirst clickrsquo test I httpsowsiocm7v7lx3h4
[9] Quumlestionari lsquoFirst clickrsquo test II httpsowsiocmj6574121
[10] Quumlestionari lsquoFirst clickrsquo test III httpsowsiocm7df25ouc
[11] Scroll Rect de Unity httpsdocsunity3dcomes20184Manualscript-ScrollRecthtml
[12] Disseny Responsive httpswww40defiebrecomque-esdiseno-responsi-ve~text=El20disentildeo20web20responsive20o3B20ordenador2C20tablet2C20smartphonehellip
[13] Canvas de Unity httpsdocsunity3dcomescurrentManualUICanvashtml
[14] Playerprefs de Unity httpsdocsunity3dcomescurrentScriptReferencePlayerPrefshtml
[15] ldquoDisseny de Softwarerdquo Assignatura del grau que ha ser-
vit de font bagravesica dels coneixements aplicats tant a An-droid com als tests amb usuaris La seva guia docent la trobem disponible a httpsdocsunity3dcomManualUnityManualhtml
[16] ldquoTest i Qualitat del Softwarerdquo Assignatura del grau que ha servit de font bagravesica dels coneixements aplicats per als tests del codi La seva guia docent la trobem disponible a httpsguiesuabcatguies_docentspublicportalhtml2019assignatura102758ca
[17] ldquoDocumentacioacuten de Unityrdquo Documentacioacute completa del motor gragravefic lsquoUnityrsquo que srsquoha anat consultant en tot mo-ment del desenvolupament httpsdocsunity3dcomManualUnityManualhtml httpswwww3schoolscomcs
[18] ldquoStack Overflowrdquo Fograverum de preguntes i respostes rela-cionades amb el moacuten de la programacioacute i la informagravetica Srsquoha anat consultant durant la fase drsquoimplementacioacute Al-gunes de les pagravegines que voldria destacar
o Text borroacutes a Unity httpsstackoverflowcomquestions16506737unity3d-3d-text-always-displayed-blur16507861
o Sing-In Google httpsstackoverflowcomquestions59599895problems-with-google-sign-in-in-unity
[19] ldquoComo firmar tu apprdquo Documentacioacute per a desenvolupa-dors Android sobre com signar una aplicacioacute per a que totes les funcions de google funcionin correctament httpsdeveloperandroidcomstudiopublishapp-signinggoogle-play-app-signing
[20] ldquoUnity Ads Documentationrdquo Documentacioacute sobre el sis-tema de publicitat de unity utilitzat a lrsquoapp httpsdocsunity3dcomPackagescomunityads34manualindexhtml
[21] ldquoGoogle play games plugin for unityrdquo Plugin per a unity per a poder utilitzar totes les funcions de google play games httpsgithubcomplaygameservicesplay-games-plugin-for-unity
[22] ldquoFlaticonrdquo Web de recursos gratuiumlts drsquoon srsquohan descarre-gat els sprites que srsquoutilitzen al joc httpswwwflaticones
[23] ldquoUnity Asset Storerdquo Web de recursos gratuiumlts de unity drsquoon srsquohan descarregat els models dels planetes que srsquoutilitzen al joc entre altres httpsassetstoreunitycomgclid=CjwKCAjwlZf3BRABEiwA8Q0qq9NcH2nCMrUHDdQUrV0K7dNiZD6JMAy7G8x93NPLzD3wZKmhiK1MQBoCvR0QAvD_BwE
[24] ldquoAyuda de Play Consolerdquo Documentacioacute sobre al play console plataform on es puja lrsquoaplicacioacute per a que es vi-sualitzi a la play store que srsquoha consultat quan han sorgit problemes httpssupportgooglecomgoogleplayandroid-developerhl=estopic=3450769
[25] ldquoPongrdquo Primer videojoc de la histograveria httpseswikipediaorgwikiPong~text=Pong20(o20Tele-Pong)mesa20(o20ping20pong)
[26] ldquoFlappy Birdsrdquo httpseswikipediaorgwikiFlappy_Bird
[27] ldquoCandy Crushrdquo httpswwwxatakamovilcommovil-y-sociedadcandy-crush-saga-la-ciencia-detras-de-la-adiccion
12 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
APEgraveNDIX
A1 DIAGRAMA DE GANTT DE LA PLANIFICACIOacute INICIAL
A1 Diagrama de Gantt corresponent a la planificacioacute inicial del projecte En aquest diagrama podem veure les diferents tasquesetapes de desenvolupament amb les setmanes que es va planificar destinar a cada una
A2 SECCIOacute DrsquoAPEgraveNDIX
A2 Diagrama de Gantt corresponent a la planificacioacute final del projecte Tal i com podem veure tenim alguns canvis en els temps respecte a la planificacioacute inicial es va acurtar la fase de desenvolupament ja que amb la situacioacute excepcional del paiacutes srsquoha disposat de molt meacutes
temps per al desenvolupament lo qual ha permegraves avanccedilar el pas a produccioacute i la documentacioacute del projecte
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 13
A3 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1
A3 Resultat Estudi 1 - Tasca 1 Com observem el 90 dels testers han completat lrsquoobjectiu de la tasca
A4 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1 (MAPA DE CALOR)
A4 Resultat estudi 1 ndash Tasca 1 (Mapa de Calor) Com podem observar la zona de tocs de dit del 70 dels tocs se centra en el botoacute correcte
14 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
8 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
Script History_Levels Aquest script srsquoencarrega de la gestioacute del menuacute ldquoHISTO-RIArdquo Srsquoha creat un sistema de visualitzacioacute on el jugador can-via de nivell mitjanccedilant dues fletxes i un jugador no po-dragrave accedir a un nivell fins que hagi completat lrsquoanterior Junt amb aquest sistema de bloqueig segons el nivell on es situiuml el jugador es mostraragrave el millor temps en que lrsquoha acabat (si es que hi ha) i el nom del nivell Amb aquests components descrits fins ara ja tindriacuteem tot el menuacute principal acabat Un cop acabat el menuacute srsquoha passat a crear els nivells del mode lliure
652 Implementacioacute del Mode Lliure
El mode lliure consta de 5 nivells amb mecagraveniques de joc variants perograve compartint lrsquoestructura principal del joc Per a explicar com srsquoha desenvolupat aquest mode srsquoutilitzaragrave de referegravencia el mode de joc ldquoCLASSICrdquo el mode de joc original on primer srsquoexplicaran els compo-nents de lrsquoescena i despreacutes els scripts que la componen Una part molt important drsquoaquestes escenes eacutes el disseny seguint el esquema senzill i visual del joc srsquoha passat per diversos plantejaments murs reals una barra plana Finalment despreacutes drsquoun extens plantejament es va deci-dir aplicar el disseny que veiem a la figura 10 En aquest disseny podem observar que els murs soacuten llums LED Aquesta decisioacute srsquoha considerat la millor ja que oferia tota la informacioacute que necessita el jugador dels murs sense ser un objecte molt gran i amb molt detall Finalment srsquohan utilitzat imatges de la temagravetica espacial per a completar el fons de lrsquoescena Escena CLASSIC Lrsquoescena drsquoaquest mode de joc la componen directament la pilota la lluna de joc els murs de joc la puntuacioacute el menuacute de pausa i els tiquets disponibles Perograve realment hi ha molts meacutes components secundaris que no srsquoentraragrave en detall a explicar-los perograve que valia la pena mencionar-los com uns murs secundaris invisibles que srsquoutilitzen per detectar si el jugador perd quan ha destruiumlt un mur ob-jectes que solament es mostren quan srsquoagafa un boost llums que segueixen els objectes per crear un efecte pri-mer pla la interfaccedil del menuacute de pausa Presentats aixiacute els components de lrsquoescena eacutes meacutes interes-sant veure els scripts que afecten a aquests components Script ClassicBall Aquest script que controla la pilota eacutes el meacutes important de lrsquoescena ja que gestiona tot el que pot tenir contacte amb ella La funcioacute meacutes important drsquoaquest script eacutes sens dubte OnCollisionEnter() Aquest funcioacute nativa de Unity ser-veix per a gestionar quan lrsquoobjecte topa amb un altre objecte Quan la pilota topa amb un mur detecta quin eacutes
i segons el seu color actual li canviaragrave el seu color al que toqui i suma un punt Si la pilota topa amb la lluna de joc simplement augmen-taragrave la seva velocitat Si topa amb el forat negre de la part inferior o traspassa un mur destruiumlt srsquoencarrega de parar la partida i la muacutesica mostrar el menuacute de derrota afegir a les monedes totals del jugador les guanyades aquella partida i canviar el regravecord de puntuacioacute del nivell si srsquoha superat
Fig 10 Escena CLASSIC
Fig 11 Efecte de Boost de Gel
Script ClassicPad Aquest script simplement srsquoencarrega de la gestioacute del moviment de la lluna de joc Detecta si el jugador estagrave polsant a sobre drsquoella i es mou en consequumlegravencia Per al mode histograveria srsquoencarrega de si un projectil topa amb ella parar la partida i mostrar el menuacute de derrota Script Pause Menu Aquest script com el seu nom indica gestiona tot el me-nuacute de pausa Que quan es polsi a sobre del botoacute de pausa es pari el joc i es mostri la interfaccedil que quan polsem sobre lsquoreprendrersquo la partida actual segueixi on estava que es torni al menuacute o que es surti de la partida Script Boosts Aquest script srsquoencarrega drsquoinvocar un objecte aleatori que apareix cada x segons aleatograveriament per pantalla un cert temps Segons el boost es produeix un efecte diferent Per fer aixograve se li ha assignat el script a una imatge i srsquoha jugat amb el seu render (el component que fa que es mos-tri la imatge) Gragravecies a la funcioacute TimeTimeSinceLevelLoad que ens proporciona el temps que ha passat des de que srsquoha carregat el nivell sabem quan fer invisible o no lrsquoobjecte Aixiacute creat lrsquoalgoritme que mostra una imatge aleatograveriament drsquouna llista drsquoimatges sempre que no hi hagi un boost funcionant Ara amb un switch case segons la imatge que srsquoestagrave mos-trant crida a la funcioacute del boost que toca per a que realitzi lrsquoefecte adequat Un bon exemple eacutes el boost de gel que al collir-lo com veiem a la figura 11 mostra a tots els murs que no hagin sigut destruiumlts una imatge de neu que impedeix destruir-los
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 9
Es poden trobar tots els boosts i efectes a lrsquoapartat 215 del document adjunt ldquoDesenvolupament del Jocrdquo Amb tots aquests components ja es podria jugar una par-tida ldquoCLASSICrdquo del mode lliure Per a construir els altres nivells del mode lliure srsquoha jugat amb potenciar o extreure aquestes funcions descrites per proporcionar un altre tipus de joc
bull Escena Double Trouble Aquiacute srsquoha duplicat la pilota de joc i srsquoha adaptat lrsquoentorn per a que el nivell sigui jugable
bull Escena Faster Aquest mode es juga al doble de la velocitat normal de joc utilitzant la funcioacute Ti-meTimeScale = 2 que duplica el temps
bull Escena Insight Aquest mode es juga sense veure els components del joc el jugador nomeacutes veu una estela que indica el moviment de la pilota i la lluna de joc
bull Escena Relax En aquest mode on nomeacutes es perdragrave la partida si aquesta cau al forat negre inferior Els murs mai poden ser destruiumlts i no apareixen boosts
653 Implementacioacute del Mode Histograveria
Per a aquest mode srsquoha utilitzat com a base lrsquoestructura del nivell ldquoCLASSICrdquo del mode lliure Amb aquesta es-tructura srsquohan eliminat els boosts i el marcador de pun-tuacioacute Consta drsquoun objectiu totalment diferent al mode lliure no volem aconseguir la major puntuacioacute sinoacute que volem destruir la nau enemiga i si pot ser en el menor temps possible Script Dialog Primerament srsquoha creat un sistema de diagravelegs en el que seguint el guioacute descrit al document adjunt ldquoDesenvolu-pament del Jocrdquo apartat 212 dos personatges ens ense-nyen a jugar a lrsquohora que ens narren una divertida histograve-ria Dit aixograve srsquoha creat un sistema drsquoescriptura on segons unes frases donades srsquoescriu lletra per lletra aconseguint lrsquoefecte de narracioacute dels videojocs Quan comprovem que srsquoha mostrat tota la frase per pan-talla mostrem un botoacute per a continuar amb la conversa i un altre botoacute per a saltar el diagraveleg i comenccedilar a jugar Agafant la primera lletra de la frase amb la funcioacute subs-tring() sabrem si quin personatge parla i hem de mostrar Script History_Ball La pilota srsquoha hagut drsquoadaptar a tots els nous compo-nents A meacutes srsquoha creat un sistema per a mostrar en tot mo-ment el temps que ha passat des de lrsquoinici del nivell Per fer-ho srsquohan utilitzat 2 variables pels minuts i segons Aixograve ha permegraves visualitzar amb meacutes comoditat el format de temps ldquominuts segonsrdquo amb la funcioacute toString()
permetent realitzar les comparacions de temps correcta-ment Script Launcher Aquest script srsquoencarrega un model de miacutessil que li indi-quem i crear una instagravencia drsquoaquest davant la nau amb una certa velocitat dirigit cap a la part inferior de la pan-talla Per aconseguir-ho srsquoutilitza un objecte auxiliar a lrsquoescena lsquoFirePointrsquo que eacutes situat sempre davant la nau on srsquoinstanciaragrave el model del miacutessil amb un cert impuls Po-dem visualitzar aquest sistema a la figura 12 Script ProjectileCollision Aquest script srsquoencarrega solament de destruir el miacutessil quan topi amb un objecte que no sigui la lluna de joc Eacutes un script per a optimitzar el rendiment del joc Un cop descrits els scripts en comuacute per a tots els nivells passem als scripts que a cada nivell soacuten diferents perograve que srsquoutilitzen per a una mateixa causa la gestioacute de la nau enemiga
bull Capiacutetols 1 i 2 Els capiacutetols 1 i 2 comparteixen el ma-teix moviment de la nau Aquest script mou la nau seguint un moviment aleatori Lrsquoalgorisme consisteix en que srsquoescull un punt aleatori a arribar i quan srsquoarriba srsquoescull un altre
bull Capiacutetol 3 Al tercer capiacutetol eacutes on veiem per primer cop una intelmiddotligegravencia artificial en el moviment de la nau aquesta fugiragrave de la pilota Per fer-ho srsquoha divi-dit el nivell en dues zones dreta i esquerra quan la pilota estigui a la zona de la dreta la nau es mouragrave a lrsquoesquerra i a la inversa Per a que no sigui impossi-ble tocar-la srsquoha ajustat la velocitat del seu movi-ment adequadament
bull Capiacutetol 4 Al quart capiacutetol la nau ja consta drsquouna intelmiddotligegravencia artificial meacutes avanccedilada en la que es mou segons a on la pilota estigui situada Lrsquoalgorisme consisteix en tenir la posicioacute de la pilota en tot moment i srsquoha dividit lrsquoespai de la partida en 4 quadrats com podem veure a la figura 13 Si la pilota estagrave al quadrat 1 la nau es mouragrave al qua-drat contrari el 4 Si la pilota es situa al quadrat 2 la nau es mouragrave al quadrat 3 Per a que no fos impossi-ble topar amb la nau srsquoha drsquoajustat la velocitat del moviment
bull Capiacutetol 5 Al capiacutetol final lrsquoalgoritme consta del ma-teix moviment que al nivell anterior perograve afegint un extra que si la nau es troba en el mateix quadrat que la pilota en el mateix instant de temps la nau redui-ragrave el seu tamany complicant lrsquoobjectiu drsquoaconseguir destruir-la
10 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
Fig 12 Nau amb lrsquoobjecte lsquoFire-
Pointrsquo
Fig 13 Divisioacute de quadres nivells 4 i 5
Per a veure visualment com funcionen les funcions expli-cades en aquest apartat es pot consultar el viacutedeo adjunt ldquoDEMO_GRAVITY_PONGrdquo
66 Proves
Gragravecies a la metodologia de desenvolupament de Rapid Prototyping srsquoha pogut anar testejant cada mogravedul desen-volupat al moment aixiacute extraient tots els resultats de tests ragravepidament Srsquohan realitzat 4 tipus de proves diferents
bull A les proves drsquounitat srsquoha testejat que els diferents mograveduls del sistema funcionin correctament Com que si un miacutessil drsquouna nau enemiga glopeja la lluna de joc es mostra el menuacute correcte o si tenim les su-ficients monedes per a comprar una textura la po-dem comprar satisfactograveriament entre altres
bull A les proves drsquointegracioacute srsquoha testejat que les in-teraccions entre els diferents escenaris del sistema sigui correcte Srsquoha provat que es pugi accedir a tots els nivells del videojoc i que des de aquests es pu-gui tornar correctament al menuacute principal a traveacutes del menuacute de pausa
bull Les proves de validacioacute han servit per comprovar que hem complit amb els requisits del projecte Hem testejat el correcte log in amb google la visualitzacioacute dels marcadors i la visualitzacioacute dels objectius entre altres
bull Per acabar les proves de sistema han servit gragravecies a la developer console [24] comprovar que el joc srsquoha executat correctament variant els dispositius i versions drsquoAndroid
A lrsquoapartat 31 del document adjunt ldquoDesenvolupament del Jocrdquo es poden trobar la totalitat de les proves realitza-des de cada tipus amb els seus resultats corresponents
7 CONCLUSIONS
I ja per finalitzar aquest document explicareacute quines soacuten les conclusions que he extret sobre el projecte Primer de tot crec que la planificacioacute que vaig realitzar a
lrsquoinici ha sigut lrsquoencertada Les petites alteracions que srsquohan acabat realitzant (com podem veure en el diagrama de Gantt real de lrsquoapegravendix 2) han estat meacutes enfocades a avanccedilar lrsquoinici de les tasques que no pas a endarrerir-les a causa de la situacioacute excepcional que hem viscut
Respecte a la fase drsquoimplementacioacute considero que
srsquohan completat tots els objectius que es presentaven a lrsquoinici del projecte Srsquohan desenvolupat totes les funcions que es van proposar al document de requisits amb lrsquoajuda de la psicograveloga que havia de tenir el joc per a que es considereacutes addictiu i aixiacute ha sigut Per lo que podem concloure que hem desenvolupat un joc addictiu per a Android satisfactograveriament A meacutes srsquoha de dir que lrsquoaplicacioacute eacutes responsive [12] i molt fagravecilment escalable
I com a uacuteltim punt voldria comentar que mrsquohagueacutes
agradat disposar de meacutes temps i recursos per a millorar tot lrsquoaspecte visual de lrsquoaplicacioacute encara meacutes fins a arribar a apropar-se al nivell de mitjanes produccions aquest aspecte milloraria lrsquointeregraves per al joc
71 Futures Accions
A continuacioacute detallarem aquelles accions futures que he considerat que pot ser interessant desenvolupar en prograveximes ampliacions del joc per tal que lrsquoexperiegravencia drsquouacutes dels usuaris sigui la millor possible
bull Un tutorial molt meacutes visual que es mostri el primer cop que srsquoiniciiuml lrsquoaplicacioacute on no solament srsquoexpliqui sobre la mecagravenica del joc sinoacute que tambeacute es guiiuml a lrsquousuari a traveacutes dels menuacutes la interfaccedil i els diferents modes i nivells de joc
bull Una integracioacute drsquoalgun mode de joc online on es po-gueacutes competir contra un altre jugador en temps real oferiria molt drsquoatractiu i enriquiria molt lrsquoaplicacioacute
bull Per acabar com ja hem comentat una millora visual en la que no mrsquohe pogut centrar en especial durant el projecte on amb lrsquoajuda drsquoalgun professional en la mategraveria es crearien unes visuals progravepies per al joc
8 AGRAIumlMENTS
En primer lloc mrsquoagradaria agrair a la meva famiacutelia el suport incondicional que mrsquohan donat en tot moment durant els quatre anys que porto de carrera Sense ells res de tot aixograve hauria estat possible
Tambeacute mrsquoagradaria agrair la Gemma Saacutenchez la meva tutora del TFG pels consells i lrsquoajuda que mrsquoha ofert du-rant aquests mesos tant durs i especials de projecte insis-tint en quegrave treballes ben dur des del primer dia ha per-megraves que aquest treball hagi pogut tirar endavant amb meacutes facilitat
Finalment voldria agrair a les altres persones que han fet aquest treball possible des de la psicograveloga experta que ens va ajudar a definir molt beacute els requisis fins a tots els companys i amics que han treballat com a testers del joc trobant lsquobugsrsquo i fent propostes sobre possibles millores drsquoaquest
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 11
IacuteNDEX DE FIGURES
Fig 1 lsquoRapid Prototypingrsquo3
Fig 2 Diagrama de Classes lsquoNavegar per la Tendarsquo5
Fig 3 Descripcioacute Cas drsquouacutes ldquoComprar textura pilotardquo6
Fig 4 Diagrama de Classes i Escenes6
Fig 5 Diagrama de Sequumlegravencia 1a Execucioacute6
Fig 6 Escena Menuacute Principal7
Fig 7 Escena Mode Lliure7
Fig 8 Escena Botiga8
Fig 9 Escena Mode Histograveria8
Fig 10 Escena lsquoCLASSICrsquo8
Fig 11 Efecte Boost de Gel8
Fig 12 Nau amb objecte lsquofirepointrsquo10
Fig 13 Divisioacute de quadres nivells 4 i 510
REFEREgraveNCIES
[1] Desenvolupament lsquoRapid prototypingrsquo httpseswikipediaorgwikiModelo_de_prototipos
[2] Article de lrsquoaddiccioacute als videojocs httpspsicologiaymentecomclinicaadiccion-a-videojuegos
[3] Per quegrave enganxen els videojocs httpswwwlavanguardiacomestilos-de-vida2012062954317381414por-que-enganchan-los-videojuegoshtml
[4] Historia dels Videojocs httpswwwfibupceduretroinformaticahistoriavideojocshtml
[5] Requisits miacutenims Candy Crush Saga httpswwwmicrosoftcomes-espcandy-crush-sa-ga9nblggh18846activetab=pivotregionofsystemrequirementstab
[6] Document SRS drsquoexemple httpswwwdocsitycomesejemplo-de-documento-srs4930539
[7] El lsquoFirst clickrsquo test httpsusabilityhubcomguidesfirst-click-testing
[8] Quumlestionari lsquoFirst clickrsquo test I httpsowsiocm7v7lx3h4
[9] Quumlestionari lsquoFirst clickrsquo test II httpsowsiocmj6574121
[10] Quumlestionari lsquoFirst clickrsquo test III httpsowsiocm7df25ouc
[11] Scroll Rect de Unity httpsdocsunity3dcomes20184Manualscript-ScrollRecthtml
[12] Disseny Responsive httpswww40defiebrecomque-esdiseno-responsi-ve~text=El20disentildeo20web20responsive20o3B20ordenador2C20tablet2C20smartphonehellip
[13] Canvas de Unity httpsdocsunity3dcomescurrentManualUICanvashtml
[14] Playerprefs de Unity httpsdocsunity3dcomescurrentScriptReferencePlayerPrefshtml
[15] ldquoDisseny de Softwarerdquo Assignatura del grau que ha ser-
vit de font bagravesica dels coneixements aplicats tant a An-droid com als tests amb usuaris La seva guia docent la trobem disponible a httpsdocsunity3dcomManualUnityManualhtml
[16] ldquoTest i Qualitat del Softwarerdquo Assignatura del grau que ha servit de font bagravesica dels coneixements aplicats per als tests del codi La seva guia docent la trobem disponible a httpsguiesuabcatguies_docentspublicportalhtml2019assignatura102758ca
[17] ldquoDocumentacioacuten de Unityrdquo Documentacioacute completa del motor gragravefic lsquoUnityrsquo que srsquoha anat consultant en tot mo-ment del desenvolupament httpsdocsunity3dcomManualUnityManualhtml httpswwww3schoolscomcs
[18] ldquoStack Overflowrdquo Fograverum de preguntes i respostes rela-cionades amb el moacuten de la programacioacute i la informagravetica Srsquoha anat consultant durant la fase drsquoimplementacioacute Al-gunes de les pagravegines que voldria destacar
o Text borroacutes a Unity httpsstackoverflowcomquestions16506737unity3d-3d-text-always-displayed-blur16507861
o Sing-In Google httpsstackoverflowcomquestions59599895problems-with-google-sign-in-in-unity
[19] ldquoComo firmar tu apprdquo Documentacioacute per a desenvolupa-dors Android sobre com signar una aplicacioacute per a que totes les funcions de google funcionin correctament httpsdeveloperandroidcomstudiopublishapp-signinggoogle-play-app-signing
[20] ldquoUnity Ads Documentationrdquo Documentacioacute sobre el sis-tema de publicitat de unity utilitzat a lrsquoapp httpsdocsunity3dcomPackagescomunityads34manualindexhtml
[21] ldquoGoogle play games plugin for unityrdquo Plugin per a unity per a poder utilitzar totes les funcions de google play games httpsgithubcomplaygameservicesplay-games-plugin-for-unity
[22] ldquoFlaticonrdquo Web de recursos gratuiumlts drsquoon srsquohan descarre-gat els sprites que srsquoutilitzen al joc httpswwwflaticones
[23] ldquoUnity Asset Storerdquo Web de recursos gratuiumlts de unity drsquoon srsquohan descarregat els models dels planetes que srsquoutilitzen al joc entre altres httpsassetstoreunitycomgclid=CjwKCAjwlZf3BRABEiwA8Q0qq9NcH2nCMrUHDdQUrV0K7dNiZD6JMAy7G8x93NPLzD3wZKmhiK1MQBoCvR0QAvD_BwE
[24] ldquoAyuda de Play Consolerdquo Documentacioacute sobre al play console plataform on es puja lrsquoaplicacioacute per a que es vi-sualitzi a la play store que srsquoha consultat quan han sorgit problemes httpssupportgooglecomgoogleplayandroid-developerhl=estopic=3450769
[25] ldquoPongrdquo Primer videojoc de la histograveria httpseswikipediaorgwikiPong~text=Pong20(o20Tele-Pong)mesa20(o20ping20pong)
[26] ldquoFlappy Birdsrdquo httpseswikipediaorgwikiFlappy_Bird
[27] ldquoCandy Crushrdquo httpswwwxatakamovilcommovil-y-sociedadcandy-crush-saga-la-ciencia-detras-de-la-adiccion
12 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
APEgraveNDIX
A1 DIAGRAMA DE GANTT DE LA PLANIFICACIOacute INICIAL
A1 Diagrama de Gantt corresponent a la planificacioacute inicial del projecte En aquest diagrama podem veure les diferents tasquesetapes de desenvolupament amb les setmanes que es va planificar destinar a cada una
A2 SECCIOacute DrsquoAPEgraveNDIX
A2 Diagrama de Gantt corresponent a la planificacioacute final del projecte Tal i com podem veure tenim alguns canvis en els temps respecte a la planificacioacute inicial es va acurtar la fase de desenvolupament ja que amb la situacioacute excepcional del paiacutes srsquoha disposat de molt meacutes
temps per al desenvolupament lo qual ha permegraves avanccedilar el pas a produccioacute i la documentacioacute del projecte
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 13
A3 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1
A3 Resultat Estudi 1 - Tasca 1 Com observem el 90 dels testers han completat lrsquoobjectiu de la tasca
A4 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1 (MAPA DE CALOR)
A4 Resultat estudi 1 ndash Tasca 1 (Mapa de Calor) Com podem observar la zona de tocs de dit del 70 dels tocs se centra en el botoacute correcte
14 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 9
Es poden trobar tots els boosts i efectes a lrsquoapartat 215 del document adjunt ldquoDesenvolupament del Jocrdquo Amb tots aquests components ja es podria jugar una par-tida ldquoCLASSICrdquo del mode lliure Per a construir els altres nivells del mode lliure srsquoha jugat amb potenciar o extreure aquestes funcions descrites per proporcionar un altre tipus de joc
bull Escena Double Trouble Aquiacute srsquoha duplicat la pilota de joc i srsquoha adaptat lrsquoentorn per a que el nivell sigui jugable
bull Escena Faster Aquest mode es juga al doble de la velocitat normal de joc utilitzant la funcioacute Ti-meTimeScale = 2 que duplica el temps
bull Escena Insight Aquest mode es juga sense veure els components del joc el jugador nomeacutes veu una estela que indica el moviment de la pilota i la lluna de joc
bull Escena Relax En aquest mode on nomeacutes es perdragrave la partida si aquesta cau al forat negre inferior Els murs mai poden ser destruiumlts i no apareixen boosts
653 Implementacioacute del Mode Histograveria
Per a aquest mode srsquoha utilitzat com a base lrsquoestructura del nivell ldquoCLASSICrdquo del mode lliure Amb aquesta es-tructura srsquohan eliminat els boosts i el marcador de pun-tuacioacute Consta drsquoun objectiu totalment diferent al mode lliure no volem aconseguir la major puntuacioacute sinoacute que volem destruir la nau enemiga i si pot ser en el menor temps possible Script Dialog Primerament srsquoha creat un sistema de diagravelegs en el que seguint el guioacute descrit al document adjunt ldquoDesenvolu-pament del Jocrdquo apartat 212 dos personatges ens ense-nyen a jugar a lrsquohora que ens narren una divertida histograve-ria Dit aixograve srsquoha creat un sistema drsquoescriptura on segons unes frases donades srsquoescriu lletra per lletra aconseguint lrsquoefecte de narracioacute dels videojocs Quan comprovem que srsquoha mostrat tota la frase per pan-talla mostrem un botoacute per a continuar amb la conversa i un altre botoacute per a saltar el diagraveleg i comenccedilar a jugar Agafant la primera lletra de la frase amb la funcioacute subs-tring() sabrem si quin personatge parla i hem de mostrar Script History_Ball La pilota srsquoha hagut drsquoadaptar a tots els nous compo-nents A meacutes srsquoha creat un sistema per a mostrar en tot mo-ment el temps que ha passat des de lrsquoinici del nivell Per fer-ho srsquohan utilitzat 2 variables pels minuts i segons Aixograve ha permegraves visualitzar amb meacutes comoditat el format de temps ldquominuts segonsrdquo amb la funcioacute toString()
permetent realitzar les comparacions de temps correcta-ment Script Launcher Aquest script srsquoencarrega un model de miacutessil que li indi-quem i crear una instagravencia drsquoaquest davant la nau amb una certa velocitat dirigit cap a la part inferior de la pan-talla Per aconseguir-ho srsquoutilitza un objecte auxiliar a lrsquoescena lsquoFirePointrsquo que eacutes situat sempre davant la nau on srsquoinstanciaragrave el model del miacutessil amb un cert impuls Po-dem visualitzar aquest sistema a la figura 12 Script ProjectileCollision Aquest script srsquoencarrega solament de destruir el miacutessil quan topi amb un objecte que no sigui la lluna de joc Eacutes un script per a optimitzar el rendiment del joc Un cop descrits els scripts en comuacute per a tots els nivells passem als scripts que a cada nivell soacuten diferents perograve que srsquoutilitzen per a una mateixa causa la gestioacute de la nau enemiga
bull Capiacutetols 1 i 2 Els capiacutetols 1 i 2 comparteixen el ma-teix moviment de la nau Aquest script mou la nau seguint un moviment aleatori Lrsquoalgorisme consisteix en que srsquoescull un punt aleatori a arribar i quan srsquoarriba srsquoescull un altre
bull Capiacutetol 3 Al tercer capiacutetol eacutes on veiem per primer cop una intelmiddotligegravencia artificial en el moviment de la nau aquesta fugiragrave de la pilota Per fer-ho srsquoha divi-dit el nivell en dues zones dreta i esquerra quan la pilota estigui a la zona de la dreta la nau es mouragrave a lrsquoesquerra i a la inversa Per a que no sigui impossi-ble tocar-la srsquoha ajustat la velocitat del seu movi-ment adequadament
bull Capiacutetol 4 Al quart capiacutetol la nau ja consta drsquouna intelmiddotligegravencia artificial meacutes avanccedilada en la que es mou segons a on la pilota estigui situada Lrsquoalgorisme consisteix en tenir la posicioacute de la pilota en tot moment i srsquoha dividit lrsquoespai de la partida en 4 quadrats com podem veure a la figura 13 Si la pilota estagrave al quadrat 1 la nau es mouragrave al qua-drat contrari el 4 Si la pilota es situa al quadrat 2 la nau es mouragrave al quadrat 3 Per a que no fos impossi-ble topar amb la nau srsquoha drsquoajustat la velocitat del moviment
bull Capiacutetol 5 Al capiacutetol final lrsquoalgoritme consta del ma-teix moviment que al nivell anterior perograve afegint un extra que si la nau es troba en el mateix quadrat que la pilota en el mateix instant de temps la nau redui-ragrave el seu tamany complicant lrsquoobjectiu drsquoaconseguir destruir-la
10 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
Fig 12 Nau amb lrsquoobjecte lsquoFire-
Pointrsquo
Fig 13 Divisioacute de quadres nivells 4 i 5
Per a veure visualment com funcionen les funcions expli-cades en aquest apartat es pot consultar el viacutedeo adjunt ldquoDEMO_GRAVITY_PONGrdquo
66 Proves
Gragravecies a la metodologia de desenvolupament de Rapid Prototyping srsquoha pogut anar testejant cada mogravedul desen-volupat al moment aixiacute extraient tots els resultats de tests ragravepidament Srsquohan realitzat 4 tipus de proves diferents
bull A les proves drsquounitat srsquoha testejat que els diferents mograveduls del sistema funcionin correctament Com que si un miacutessil drsquouna nau enemiga glopeja la lluna de joc es mostra el menuacute correcte o si tenim les su-ficients monedes per a comprar una textura la po-dem comprar satisfactograveriament entre altres
bull A les proves drsquointegracioacute srsquoha testejat que les in-teraccions entre els diferents escenaris del sistema sigui correcte Srsquoha provat que es pugi accedir a tots els nivells del videojoc i que des de aquests es pu-gui tornar correctament al menuacute principal a traveacutes del menuacute de pausa
bull Les proves de validacioacute han servit per comprovar que hem complit amb els requisits del projecte Hem testejat el correcte log in amb google la visualitzacioacute dels marcadors i la visualitzacioacute dels objectius entre altres
bull Per acabar les proves de sistema han servit gragravecies a la developer console [24] comprovar que el joc srsquoha executat correctament variant els dispositius i versions drsquoAndroid
A lrsquoapartat 31 del document adjunt ldquoDesenvolupament del Jocrdquo es poden trobar la totalitat de les proves realitza-des de cada tipus amb els seus resultats corresponents
7 CONCLUSIONS
I ja per finalitzar aquest document explicareacute quines soacuten les conclusions que he extret sobre el projecte Primer de tot crec que la planificacioacute que vaig realitzar a
lrsquoinici ha sigut lrsquoencertada Les petites alteracions que srsquohan acabat realitzant (com podem veure en el diagrama de Gantt real de lrsquoapegravendix 2) han estat meacutes enfocades a avanccedilar lrsquoinici de les tasques que no pas a endarrerir-les a causa de la situacioacute excepcional que hem viscut
Respecte a la fase drsquoimplementacioacute considero que
srsquohan completat tots els objectius que es presentaven a lrsquoinici del projecte Srsquohan desenvolupat totes les funcions que es van proposar al document de requisits amb lrsquoajuda de la psicograveloga que havia de tenir el joc per a que es considereacutes addictiu i aixiacute ha sigut Per lo que podem concloure que hem desenvolupat un joc addictiu per a Android satisfactograveriament A meacutes srsquoha de dir que lrsquoaplicacioacute eacutes responsive [12] i molt fagravecilment escalable
I com a uacuteltim punt voldria comentar que mrsquohagueacutes
agradat disposar de meacutes temps i recursos per a millorar tot lrsquoaspecte visual de lrsquoaplicacioacute encara meacutes fins a arribar a apropar-se al nivell de mitjanes produccions aquest aspecte milloraria lrsquointeregraves per al joc
71 Futures Accions
A continuacioacute detallarem aquelles accions futures que he considerat que pot ser interessant desenvolupar en prograveximes ampliacions del joc per tal que lrsquoexperiegravencia drsquouacutes dels usuaris sigui la millor possible
bull Un tutorial molt meacutes visual que es mostri el primer cop que srsquoiniciiuml lrsquoaplicacioacute on no solament srsquoexpliqui sobre la mecagravenica del joc sinoacute que tambeacute es guiiuml a lrsquousuari a traveacutes dels menuacutes la interfaccedil i els diferents modes i nivells de joc
bull Una integracioacute drsquoalgun mode de joc online on es po-gueacutes competir contra un altre jugador en temps real oferiria molt drsquoatractiu i enriquiria molt lrsquoaplicacioacute
bull Per acabar com ja hem comentat una millora visual en la que no mrsquohe pogut centrar en especial durant el projecte on amb lrsquoajuda drsquoalgun professional en la mategraveria es crearien unes visuals progravepies per al joc
8 AGRAIumlMENTS
En primer lloc mrsquoagradaria agrair a la meva famiacutelia el suport incondicional que mrsquohan donat en tot moment durant els quatre anys que porto de carrera Sense ells res de tot aixograve hauria estat possible
Tambeacute mrsquoagradaria agrair la Gemma Saacutenchez la meva tutora del TFG pels consells i lrsquoajuda que mrsquoha ofert du-rant aquests mesos tant durs i especials de projecte insis-tint en quegrave treballes ben dur des del primer dia ha per-megraves que aquest treball hagi pogut tirar endavant amb meacutes facilitat
Finalment voldria agrair a les altres persones que han fet aquest treball possible des de la psicograveloga experta que ens va ajudar a definir molt beacute els requisis fins a tots els companys i amics que han treballat com a testers del joc trobant lsquobugsrsquo i fent propostes sobre possibles millores drsquoaquest
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 11
IacuteNDEX DE FIGURES
Fig 1 lsquoRapid Prototypingrsquo3
Fig 2 Diagrama de Classes lsquoNavegar per la Tendarsquo5
Fig 3 Descripcioacute Cas drsquouacutes ldquoComprar textura pilotardquo6
Fig 4 Diagrama de Classes i Escenes6
Fig 5 Diagrama de Sequumlegravencia 1a Execucioacute6
Fig 6 Escena Menuacute Principal7
Fig 7 Escena Mode Lliure7
Fig 8 Escena Botiga8
Fig 9 Escena Mode Histograveria8
Fig 10 Escena lsquoCLASSICrsquo8
Fig 11 Efecte Boost de Gel8
Fig 12 Nau amb objecte lsquofirepointrsquo10
Fig 13 Divisioacute de quadres nivells 4 i 510
REFEREgraveNCIES
[1] Desenvolupament lsquoRapid prototypingrsquo httpseswikipediaorgwikiModelo_de_prototipos
[2] Article de lrsquoaddiccioacute als videojocs httpspsicologiaymentecomclinicaadiccion-a-videojuegos
[3] Per quegrave enganxen els videojocs httpswwwlavanguardiacomestilos-de-vida2012062954317381414por-que-enganchan-los-videojuegoshtml
[4] Historia dels Videojocs httpswwwfibupceduretroinformaticahistoriavideojocshtml
[5] Requisits miacutenims Candy Crush Saga httpswwwmicrosoftcomes-espcandy-crush-sa-ga9nblggh18846activetab=pivotregionofsystemrequirementstab
[6] Document SRS drsquoexemple httpswwwdocsitycomesejemplo-de-documento-srs4930539
[7] El lsquoFirst clickrsquo test httpsusabilityhubcomguidesfirst-click-testing
[8] Quumlestionari lsquoFirst clickrsquo test I httpsowsiocm7v7lx3h4
[9] Quumlestionari lsquoFirst clickrsquo test II httpsowsiocmj6574121
[10] Quumlestionari lsquoFirst clickrsquo test III httpsowsiocm7df25ouc
[11] Scroll Rect de Unity httpsdocsunity3dcomes20184Manualscript-ScrollRecthtml
[12] Disseny Responsive httpswww40defiebrecomque-esdiseno-responsi-ve~text=El20disentildeo20web20responsive20o3B20ordenador2C20tablet2C20smartphonehellip
[13] Canvas de Unity httpsdocsunity3dcomescurrentManualUICanvashtml
[14] Playerprefs de Unity httpsdocsunity3dcomescurrentScriptReferencePlayerPrefshtml
[15] ldquoDisseny de Softwarerdquo Assignatura del grau que ha ser-
vit de font bagravesica dels coneixements aplicats tant a An-droid com als tests amb usuaris La seva guia docent la trobem disponible a httpsdocsunity3dcomManualUnityManualhtml
[16] ldquoTest i Qualitat del Softwarerdquo Assignatura del grau que ha servit de font bagravesica dels coneixements aplicats per als tests del codi La seva guia docent la trobem disponible a httpsguiesuabcatguies_docentspublicportalhtml2019assignatura102758ca
[17] ldquoDocumentacioacuten de Unityrdquo Documentacioacute completa del motor gragravefic lsquoUnityrsquo que srsquoha anat consultant en tot mo-ment del desenvolupament httpsdocsunity3dcomManualUnityManualhtml httpswwww3schoolscomcs
[18] ldquoStack Overflowrdquo Fograverum de preguntes i respostes rela-cionades amb el moacuten de la programacioacute i la informagravetica Srsquoha anat consultant durant la fase drsquoimplementacioacute Al-gunes de les pagravegines que voldria destacar
o Text borroacutes a Unity httpsstackoverflowcomquestions16506737unity3d-3d-text-always-displayed-blur16507861
o Sing-In Google httpsstackoverflowcomquestions59599895problems-with-google-sign-in-in-unity
[19] ldquoComo firmar tu apprdquo Documentacioacute per a desenvolupa-dors Android sobre com signar una aplicacioacute per a que totes les funcions de google funcionin correctament httpsdeveloperandroidcomstudiopublishapp-signinggoogle-play-app-signing
[20] ldquoUnity Ads Documentationrdquo Documentacioacute sobre el sis-tema de publicitat de unity utilitzat a lrsquoapp httpsdocsunity3dcomPackagescomunityads34manualindexhtml
[21] ldquoGoogle play games plugin for unityrdquo Plugin per a unity per a poder utilitzar totes les funcions de google play games httpsgithubcomplaygameservicesplay-games-plugin-for-unity
[22] ldquoFlaticonrdquo Web de recursos gratuiumlts drsquoon srsquohan descarre-gat els sprites que srsquoutilitzen al joc httpswwwflaticones
[23] ldquoUnity Asset Storerdquo Web de recursos gratuiumlts de unity drsquoon srsquohan descarregat els models dels planetes que srsquoutilitzen al joc entre altres httpsassetstoreunitycomgclid=CjwKCAjwlZf3BRABEiwA8Q0qq9NcH2nCMrUHDdQUrV0K7dNiZD6JMAy7G8x93NPLzD3wZKmhiK1MQBoCvR0QAvD_BwE
[24] ldquoAyuda de Play Consolerdquo Documentacioacute sobre al play console plataform on es puja lrsquoaplicacioacute per a que es vi-sualitzi a la play store que srsquoha consultat quan han sorgit problemes httpssupportgooglecomgoogleplayandroid-developerhl=estopic=3450769
[25] ldquoPongrdquo Primer videojoc de la histograveria httpseswikipediaorgwikiPong~text=Pong20(o20Tele-Pong)mesa20(o20ping20pong)
[26] ldquoFlappy Birdsrdquo httpseswikipediaorgwikiFlappy_Bird
[27] ldquoCandy Crushrdquo httpswwwxatakamovilcommovil-y-sociedadcandy-crush-saga-la-ciencia-detras-de-la-adiccion
12 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
APEgraveNDIX
A1 DIAGRAMA DE GANTT DE LA PLANIFICACIOacute INICIAL
A1 Diagrama de Gantt corresponent a la planificacioacute inicial del projecte En aquest diagrama podem veure les diferents tasquesetapes de desenvolupament amb les setmanes que es va planificar destinar a cada una
A2 SECCIOacute DrsquoAPEgraveNDIX
A2 Diagrama de Gantt corresponent a la planificacioacute final del projecte Tal i com podem veure tenim alguns canvis en els temps respecte a la planificacioacute inicial es va acurtar la fase de desenvolupament ja que amb la situacioacute excepcional del paiacutes srsquoha disposat de molt meacutes
temps per al desenvolupament lo qual ha permegraves avanccedilar el pas a produccioacute i la documentacioacute del projecte
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 13
A3 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1
A3 Resultat Estudi 1 - Tasca 1 Com observem el 90 dels testers han completat lrsquoobjectiu de la tasca
A4 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1 (MAPA DE CALOR)
A4 Resultat estudi 1 ndash Tasca 1 (Mapa de Calor) Com podem observar la zona de tocs de dit del 70 dels tocs se centra en el botoacute correcte
14 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
10 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
Fig 12 Nau amb lrsquoobjecte lsquoFire-
Pointrsquo
Fig 13 Divisioacute de quadres nivells 4 i 5
Per a veure visualment com funcionen les funcions expli-cades en aquest apartat es pot consultar el viacutedeo adjunt ldquoDEMO_GRAVITY_PONGrdquo
66 Proves
Gragravecies a la metodologia de desenvolupament de Rapid Prototyping srsquoha pogut anar testejant cada mogravedul desen-volupat al moment aixiacute extraient tots els resultats de tests ragravepidament Srsquohan realitzat 4 tipus de proves diferents
bull A les proves drsquounitat srsquoha testejat que els diferents mograveduls del sistema funcionin correctament Com que si un miacutessil drsquouna nau enemiga glopeja la lluna de joc es mostra el menuacute correcte o si tenim les su-ficients monedes per a comprar una textura la po-dem comprar satisfactograveriament entre altres
bull A les proves drsquointegracioacute srsquoha testejat que les in-teraccions entre els diferents escenaris del sistema sigui correcte Srsquoha provat que es pugi accedir a tots els nivells del videojoc i que des de aquests es pu-gui tornar correctament al menuacute principal a traveacutes del menuacute de pausa
bull Les proves de validacioacute han servit per comprovar que hem complit amb els requisits del projecte Hem testejat el correcte log in amb google la visualitzacioacute dels marcadors i la visualitzacioacute dels objectius entre altres
bull Per acabar les proves de sistema han servit gragravecies a la developer console [24] comprovar que el joc srsquoha executat correctament variant els dispositius i versions drsquoAndroid
A lrsquoapartat 31 del document adjunt ldquoDesenvolupament del Jocrdquo es poden trobar la totalitat de les proves realitza-des de cada tipus amb els seus resultats corresponents
7 CONCLUSIONS
I ja per finalitzar aquest document explicareacute quines soacuten les conclusions que he extret sobre el projecte Primer de tot crec que la planificacioacute que vaig realitzar a
lrsquoinici ha sigut lrsquoencertada Les petites alteracions que srsquohan acabat realitzant (com podem veure en el diagrama de Gantt real de lrsquoapegravendix 2) han estat meacutes enfocades a avanccedilar lrsquoinici de les tasques que no pas a endarrerir-les a causa de la situacioacute excepcional que hem viscut
Respecte a la fase drsquoimplementacioacute considero que
srsquohan completat tots els objectius que es presentaven a lrsquoinici del projecte Srsquohan desenvolupat totes les funcions que es van proposar al document de requisits amb lrsquoajuda de la psicograveloga que havia de tenir el joc per a que es considereacutes addictiu i aixiacute ha sigut Per lo que podem concloure que hem desenvolupat un joc addictiu per a Android satisfactograveriament A meacutes srsquoha de dir que lrsquoaplicacioacute eacutes responsive [12] i molt fagravecilment escalable
I com a uacuteltim punt voldria comentar que mrsquohagueacutes
agradat disposar de meacutes temps i recursos per a millorar tot lrsquoaspecte visual de lrsquoaplicacioacute encara meacutes fins a arribar a apropar-se al nivell de mitjanes produccions aquest aspecte milloraria lrsquointeregraves per al joc
71 Futures Accions
A continuacioacute detallarem aquelles accions futures que he considerat que pot ser interessant desenvolupar en prograveximes ampliacions del joc per tal que lrsquoexperiegravencia drsquouacutes dels usuaris sigui la millor possible
bull Un tutorial molt meacutes visual que es mostri el primer cop que srsquoiniciiuml lrsquoaplicacioacute on no solament srsquoexpliqui sobre la mecagravenica del joc sinoacute que tambeacute es guiiuml a lrsquousuari a traveacutes dels menuacutes la interfaccedil i els diferents modes i nivells de joc
bull Una integracioacute drsquoalgun mode de joc online on es po-gueacutes competir contra un altre jugador en temps real oferiria molt drsquoatractiu i enriquiria molt lrsquoaplicacioacute
bull Per acabar com ja hem comentat una millora visual en la que no mrsquohe pogut centrar en especial durant el projecte on amb lrsquoajuda drsquoalgun professional en la mategraveria es crearien unes visuals progravepies per al joc
8 AGRAIumlMENTS
En primer lloc mrsquoagradaria agrair a la meva famiacutelia el suport incondicional que mrsquohan donat en tot moment durant els quatre anys que porto de carrera Sense ells res de tot aixograve hauria estat possible
Tambeacute mrsquoagradaria agrair la Gemma Saacutenchez la meva tutora del TFG pels consells i lrsquoajuda que mrsquoha ofert du-rant aquests mesos tant durs i especials de projecte insis-tint en quegrave treballes ben dur des del primer dia ha per-megraves que aquest treball hagi pogut tirar endavant amb meacutes facilitat
Finalment voldria agrair a les altres persones que han fet aquest treball possible des de la psicograveloga experta que ens va ajudar a definir molt beacute els requisis fins a tots els companys i amics que han treballat com a testers del joc trobant lsquobugsrsquo i fent propostes sobre possibles millores drsquoaquest
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 11
IacuteNDEX DE FIGURES
Fig 1 lsquoRapid Prototypingrsquo3
Fig 2 Diagrama de Classes lsquoNavegar per la Tendarsquo5
Fig 3 Descripcioacute Cas drsquouacutes ldquoComprar textura pilotardquo6
Fig 4 Diagrama de Classes i Escenes6
Fig 5 Diagrama de Sequumlegravencia 1a Execucioacute6
Fig 6 Escena Menuacute Principal7
Fig 7 Escena Mode Lliure7
Fig 8 Escena Botiga8
Fig 9 Escena Mode Histograveria8
Fig 10 Escena lsquoCLASSICrsquo8
Fig 11 Efecte Boost de Gel8
Fig 12 Nau amb objecte lsquofirepointrsquo10
Fig 13 Divisioacute de quadres nivells 4 i 510
REFEREgraveNCIES
[1] Desenvolupament lsquoRapid prototypingrsquo httpseswikipediaorgwikiModelo_de_prototipos
[2] Article de lrsquoaddiccioacute als videojocs httpspsicologiaymentecomclinicaadiccion-a-videojuegos
[3] Per quegrave enganxen els videojocs httpswwwlavanguardiacomestilos-de-vida2012062954317381414por-que-enganchan-los-videojuegoshtml
[4] Historia dels Videojocs httpswwwfibupceduretroinformaticahistoriavideojocshtml
[5] Requisits miacutenims Candy Crush Saga httpswwwmicrosoftcomes-espcandy-crush-sa-ga9nblggh18846activetab=pivotregionofsystemrequirementstab
[6] Document SRS drsquoexemple httpswwwdocsitycomesejemplo-de-documento-srs4930539
[7] El lsquoFirst clickrsquo test httpsusabilityhubcomguidesfirst-click-testing
[8] Quumlestionari lsquoFirst clickrsquo test I httpsowsiocm7v7lx3h4
[9] Quumlestionari lsquoFirst clickrsquo test II httpsowsiocmj6574121
[10] Quumlestionari lsquoFirst clickrsquo test III httpsowsiocm7df25ouc
[11] Scroll Rect de Unity httpsdocsunity3dcomes20184Manualscript-ScrollRecthtml
[12] Disseny Responsive httpswww40defiebrecomque-esdiseno-responsi-ve~text=El20disentildeo20web20responsive20o3B20ordenador2C20tablet2C20smartphonehellip
[13] Canvas de Unity httpsdocsunity3dcomescurrentManualUICanvashtml
[14] Playerprefs de Unity httpsdocsunity3dcomescurrentScriptReferencePlayerPrefshtml
[15] ldquoDisseny de Softwarerdquo Assignatura del grau que ha ser-
vit de font bagravesica dels coneixements aplicats tant a An-droid com als tests amb usuaris La seva guia docent la trobem disponible a httpsdocsunity3dcomManualUnityManualhtml
[16] ldquoTest i Qualitat del Softwarerdquo Assignatura del grau que ha servit de font bagravesica dels coneixements aplicats per als tests del codi La seva guia docent la trobem disponible a httpsguiesuabcatguies_docentspublicportalhtml2019assignatura102758ca
[17] ldquoDocumentacioacuten de Unityrdquo Documentacioacute completa del motor gragravefic lsquoUnityrsquo que srsquoha anat consultant en tot mo-ment del desenvolupament httpsdocsunity3dcomManualUnityManualhtml httpswwww3schoolscomcs
[18] ldquoStack Overflowrdquo Fograverum de preguntes i respostes rela-cionades amb el moacuten de la programacioacute i la informagravetica Srsquoha anat consultant durant la fase drsquoimplementacioacute Al-gunes de les pagravegines que voldria destacar
o Text borroacutes a Unity httpsstackoverflowcomquestions16506737unity3d-3d-text-always-displayed-blur16507861
o Sing-In Google httpsstackoverflowcomquestions59599895problems-with-google-sign-in-in-unity
[19] ldquoComo firmar tu apprdquo Documentacioacute per a desenvolupa-dors Android sobre com signar una aplicacioacute per a que totes les funcions de google funcionin correctament httpsdeveloperandroidcomstudiopublishapp-signinggoogle-play-app-signing
[20] ldquoUnity Ads Documentationrdquo Documentacioacute sobre el sis-tema de publicitat de unity utilitzat a lrsquoapp httpsdocsunity3dcomPackagescomunityads34manualindexhtml
[21] ldquoGoogle play games plugin for unityrdquo Plugin per a unity per a poder utilitzar totes les funcions de google play games httpsgithubcomplaygameservicesplay-games-plugin-for-unity
[22] ldquoFlaticonrdquo Web de recursos gratuiumlts drsquoon srsquohan descarre-gat els sprites que srsquoutilitzen al joc httpswwwflaticones
[23] ldquoUnity Asset Storerdquo Web de recursos gratuiumlts de unity drsquoon srsquohan descarregat els models dels planetes que srsquoutilitzen al joc entre altres httpsassetstoreunitycomgclid=CjwKCAjwlZf3BRABEiwA8Q0qq9NcH2nCMrUHDdQUrV0K7dNiZD6JMAy7G8x93NPLzD3wZKmhiK1MQBoCvR0QAvD_BwE
[24] ldquoAyuda de Play Consolerdquo Documentacioacute sobre al play console plataform on es puja lrsquoaplicacioacute per a que es vi-sualitzi a la play store que srsquoha consultat quan han sorgit problemes httpssupportgooglecomgoogleplayandroid-developerhl=estopic=3450769
[25] ldquoPongrdquo Primer videojoc de la histograveria httpseswikipediaorgwikiPong~text=Pong20(o20Tele-Pong)mesa20(o20ping20pong)
[26] ldquoFlappy Birdsrdquo httpseswikipediaorgwikiFlappy_Bird
[27] ldquoCandy Crushrdquo httpswwwxatakamovilcommovil-y-sociedadcandy-crush-saga-la-ciencia-detras-de-la-adiccion
12 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
APEgraveNDIX
A1 DIAGRAMA DE GANTT DE LA PLANIFICACIOacute INICIAL
A1 Diagrama de Gantt corresponent a la planificacioacute inicial del projecte En aquest diagrama podem veure les diferents tasquesetapes de desenvolupament amb les setmanes que es va planificar destinar a cada una
A2 SECCIOacute DrsquoAPEgraveNDIX
A2 Diagrama de Gantt corresponent a la planificacioacute final del projecte Tal i com podem veure tenim alguns canvis en els temps respecte a la planificacioacute inicial es va acurtar la fase de desenvolupament ja que amb la situacioacute excepcional del paiacutes srsquoha disposat de molt meacutes
temps per al desenvolupament lo qual ha permegraves avanccedilar el pas a produccioacute i la documentacioacute del projecte
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 13
A3 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1
A3 Resultat Estudi 1 - Tasca 1 Com observem el 90 dels testers han completat lrsquoobjectiu de la tasca
A4 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1 (MAPA DE CALOR)
A4 Resultat estudi 1 ndash Tasca 1 (Mapa de Calor) Com podem observar la zona de tocs de dit del 70 dels tocs se centra en el botoacute correcte
14 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 11
IacuteNDEX DE FIGURES
Fig 1 lsquoRapid Prototypingrsquo3
Fig 2 Diagrama de Classes lsquoNavegar per la Tendarsquo5
Fig 3 Descripcioacute Cas drsquouacutes ldquoComprar textura pilotardquo6
Fig 4 Diagrama de Classes i Escenes6
Fig 5 Diagrama de Sequumlegravencia 1a Execucioacute6
Fig 6 Escena Menuacute Principal7
Fig 7 Escena Mode Lliure7
Fig 8 Escena Botiga8
Fig 9 Escena Mode Histograveria8
Fig 10 Escena lsquoCLASSICrsquo8
Fig 11 Efecte Boost de Gel8
Fig 12 Nau amb objecte lsquofirepointrsquo10
Fig 13 Divisioacute de quadres nivells 4 i 510
REFEREgraveNCIES
[1] Desenvolupament lsquoRapid prototypingrsquo httpseswikipediaorgwikiModelo_de_prototipos
[2] Article de lrsquoaddiccioacute als videojocs httpspsicologiaymentecomclinicaadiccion-a-videojuegos
[3] Per quegrave enganxen els videojocs httpswwwlavanguardiacomestilos-de-vida2012062954317381414por-que-enganchan-los-videojuegoshtml
[4] Historia dels Videojocs httpswwwfibupceduretroinformaticahistoriavideojocshtml
[5] Requisits miacutenims Candy Crush Saga httpswwwmicrosoftcomes-espcandy-crush-sa-ga9nblggh18846activetab=pivotregionofsystemrequirementstab
[6] Document SRS drsquoexemple httpswwwdocsitycomesejemplo-de-documento-srs4930539
[7] El lsquoFirst clickrsquo test httpsusabilityhubcomguidesfirst-click-testing
[8] Quumlestionari lsquoFirst clickrsquo test I httpsowsiocm7v7lx3h4
[9] Quumlestionari lsquoFirst clickrsquo test II httpsowsiocmj6574121
[10] Quumlestionari lsquoFirst clickrsquo test III httpsowsiocm7df25ouc
[11] Scroll Rect de Unity httpsdocsunity3dcomes20184Manualscript-ScrollRecthtml
[12] Disseny Responsive httpswww40defiebrecomque-esdiseno-responsi-ve~text=El20disentildeo20web20responsive20o3B20ordenador2C20tablet2C20smartphonehellip
[13] Canvas de Unity httpsdocsunity3dcomescurrentManualUICanvashtml
[14] Playerprefs de Unity httpsdocsunity3dcomescurrentScriptReferencePlayerPrefshtml
[15] ldquoDisseny de Softwarerdquo Assignatura del grau que ha ser-
vit de font bagravesica dels coneixements aplicats tant a An-droid com als tests amb usuaris La seva guia docent la trobem disponible a httpsdocsunity3dcomManualUnityManualhtml
[16] ldquoTest i Qualitat del Softwarerdquo Assignatura del grau que ha servit de font bagravesica dels coneixements aplicats per als tests del codi La seva guia docent la trobem disponible a httpsguiesuabcatguies_docentspublicportalhtml2019assignatura102758ca
[17] ldquoDocumentacioacuten de Unityrdquo Documentacioacute completa del motor gragravefic lsquoUnityrsquo que srsquoha anat consultant en tot mo-ment del desenvolupament httpsdocsunity3dcomManualUnityManualhtml httpswwww3schoolscomcs
[18] ldquoStack Overflowrdquo Fograverum de preguntes i respostes rela-cionades amb el moacuten de la programacioacute i la informagravetica Srsquoha anat consultant durant la fase drsquoimplementacioacute Al-gunes de les pagravegines que voldria destacar
o Text borroacutes a Unity httpsstackoverflowcomquestions16506737unity3d-3d-text-always-displayed-blur16507861
o Sing-In Google httpsstackoverflowcomquestions59599895problems-with-google-sign-in-in-unity
[19] ldquoComo firmar tu apprdquo Documentacioacute per a desenvolupa-dors Android sobre com signar una aplicacioacute per a que totes les funcions de google funcionin correctament httpsdeveloperandroidcomstudiopublishapp-signinggoogle-play-app-signing
[20] ldquoUnity Ads Documentationrdquo Documentacioacute sobre el sis-tema de publicitat de unity utilitzat a lrsquoapp httpsdocsunity3dcomPackagescomunityads34manualindexhtml
[21] ldquoGoogle play games plugin for unityrdquo Plugin per a unity per a poder utilitzar totes les funcions de google play games httpsgithubcomplaygameservicesplay-games-plugin-for-unity
[22] ldquoFlaticonrdquo Web de recursos gratuiumlts drsquoon srsquohan descarre-gat els sprites que srsquoutilitzen al joc httpswwwflaticones
[23] ldquoUnity Asset Storerdquo Web de recursos gratuiumlts de unity drsquoon srsquohan descarregat els models dels planetes que srsquoutilitzen al joc entre altres httpsassetstoreunitycomgclid=CjwKCAjwlZf3BRABEiwA8Q0qq9NcH2nCMrUHDdQUrV0K7dNiZD6JMAy7G8x93NPLzD3wZKmhiK1MQBoCvR0QAvD_BwE
[24] ldquoAyuda de Play Consolerdquo Documentacioacute sobre al play console plataform on es puja lrsquoaplicacioacute per a que es vi-sualitzi a la play store que srsquoha consultat quan han sorgit problemes httpssupportgooglecomgoogleplayandroid-developerhl=estopic=3450769
[25] ldquoPongrdquo Primer videojoc de la histograveria httpseswikipediaorgwikiPong~text=Pong20(o20Tele-Pong)mesa20(o20ping20pong)
[26] ldquoFlappy Birdsrdquo httpseswikipediaorgwikiFlappy_Bird
[27] ldquoCandy Crushrdquo httpswwwxatakamovilcommovil-y-sociedadcandy-crush-saga-la-ciencia-detras-de-la-adiccion
12 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
APEgraveNDIX
A1 DIAGRAMA DE GANTT DE LA PLANIFICACIOacute INICIAL
A1 Diagrama de Gantt corresponent a la planificacioacute inicial del projecte En aquest diagrama podem veure les diferents tasquesetapes de desenvolupament amb les setmanes que es va planificar destinar a cada una
A2 SECCIOacute DrsquoAPEgraveNDIX
A2 Diagrama de Gantt corresponent a la planificacioacute final del projecte Tal i com podem veure tenim alguns canvis en els temps respecte a la planificacioacute inicial es va acurtar la fase de desenvolupament ja que amb la situacioacute excepcional del paiacutes srsquoha disposat de molt meacutes
temps per al desenvolupament lo qual ha permegraves avanccedilar el pas a produccioacute i la documentacioacute del projecte
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 13
A3 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1
A3 Resultat Estudi 1 - Tasca 1 Com observem el 90 dels testers han completat lrsquoobjectiu de la tasca
A4 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1 (MAPA DE CALOR)
A4 Resultat estudi 1 ndash Tasca 1 (Mapa de Calor) Com podem observar la zona de tocs de dit del 70 dels tocs se centra en el botoacute correcte
14 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
12 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
APEgraveNDIX
A1 DIAGRAMA DE GANTT DE LA PLANIFICACIOacute INICIAL
A1 Diagrama de Gantt corresponent a la planificacioacute inicial del projecte En aquest diagrama podem veure les diferents tasquesetapes de desenvolupament amb les setmanes que es va planificar destinar a cada una
A2 SECCIOacute DrsquoAPEgraveNDIX
A2 Diagrama de Gantt corresponent a la planificacioacute final del projecte Tal i com podem veure tenim alguns canvis en els temps respecte a la planificacioacute inicial es va acurtar la fase de desenvolupament ja que amb la situacioacute excepcional del paiacutes srsquoha disposat de molt meacutes
temps per al desenvolupament lo qual ha permegraves avanccedilar el pas a produccioacute i la documentacioacute del projecte
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 13
A3 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1
A3 Resultat Estudi 1 - Tasca 1 Com observem el 90 dels testers han completat lrsquoobjectiu de la tasca
A4 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1 (MAPA DE CALOR)
A4 Resultat estudi 1 ndash Tasca 1 (Mapa de Calor) Com podem observar la zona de tocs de dit del 70 dels tocs se centra en el botoacute correcte
14 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
NIL PASCUAL FERNAacuteNDEZ CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU 13
A3 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1
A3 Resultat Estudi 1 - Tasca 1 Com observem el 90 dels testers han completat lrsquoobjectiu de la tasca
A4 RESULTAT DEL ESTUDI DE DISSENY ndash TASCA 1 (MAPA DE CALOR)
A4 Resultat estudi 1 ndash Tasca 1 (Mapa de Calor) Com podem observar la zona de tocs de dit del 70 dels tocs se centra en el botoacute correcte
14 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU
14 EEUAB TFG INFORMAgraveTICA CREACIOacute DrsquoUN VIDEOJOC MOgraveBIL ADDICTIU