universitat oberta de catalunya uoc ingeniería técnica en

101
Universitat Oberta de Catalunya UOC Universitat Oberta de Catalunya UOC Ingeniería técnica en informática de sistemas Ingeniería técnica en informática de sistemas Proyecto fin de carrera - Desarrollo de aplicaciones para Proyecto fin de carrera - Desarrollo de aplicaciones para dispositivos móviles (Android) dispositivos móviles (Android) Xavier Figuera Alberich Xavier Figuera Alberich 31 de Diciembre de 2013 31 de Diciembre de 2013

Upload: others

Post on 16-Oct-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Universitat Oberta de Catalunya UOC Ingeniería técnica en

Universitat Oberta de Catalunya UOCUniversitat Oberta de Catalunya UOC

Ingenieriacutea teacutecnica en informaacutetica de sistemasIngenieriacutea teacutecnica en informaacutetica de sistemas

Proyecto fin de carrera - Desarrollo de aplicaciones paraProyecto fin de carrera - Desarrollo de aplicaciones paradispositivos moacuteviles (Android)dispositivos moacuteviles (Android)

Xavier Figuera AlberichXavier Figuera Alberich

31 de Diciembre de 2013 31 de Diciembre de 2013

Universitat Oberta de Catalunya UOCUniversitat Oberta de Catalunya UOC

Ingenieriacutea teacutecnica en informaacutetica de sistemasIngenieriacutea teacutecnica en informaacutetica de sistemas

Proyecto fin de carrera - Desarrollo deProyecto fin de carrera - Desarrollo deaplicaciones para dispositivos moacuteviles (Android)aplicaciones para dispositivos moacuteviles (Android)

Desarrollo de videojuegos para Android conDesarrollo de videojuegos para Android conlibGDXlibGDX

(Casual games)(Casual games)Fling the sheepFling the sheep

httpprojects3cometcomhttpprojects3cometcom

Consultores Marc Domingo PrietoConsultores Marc Domingo Prieto Jordi Almirall Loacutepez Jordi Almirall Loacutepez

Autor Xavier Figuera AlberichAutor Xavier Figuera Alberich Correo xfiguerauocedu Correo xfiguerauocedu

Sabadell 31 de Diciembre de 2013Sabadell 31 de Diciembre de 2013

A mi pareja Remei Soleacute por su paciencia y apoyo durante estosuacuteltimos meses y siempre sin ella no hubiera sido posible llegarhoy a escribir estas lineas te quiero

A la vida por haberme brindado la posibilidad de poder hacer loque realmente siento dentro de mi

Licencia This document Fling the sheep casual game for Andorid with libGDX (c) 2013 by Xavier Figuera Alberich

This document Fling the sheep casual game for Andorid with libGDX is licensed under aCreative Commons Attribution-NonCommercial-ShareAlike 40 International License

You should have received a copy of the license along with thiswork If not see lthttpcreativecommonsorglicensesby-nc-sa40gt

Resumen

Android es un sistema operativo con nuacutecleo monoliacutetico basado en el kernel de Linux version 26que fue lanzado al mercado el 23 de septiembre de 2008 Disentildeado principalmente paradispositivos moacuteviles con pantalla taacutectil como pueden ser Smartphones o tabletas Esta disponiblegratuitamente para un uso comercial o no comercial El nuacutecleo esta escrito en C algunas de laslibreriacuteas de terceros estaacuten escritas en C++ y su interfaz de usuario esta escrita en Java Soportadistintas estructuras de procesador entre ellas ARM x86 MIPS y IBM POWER no obstante laarquitectura utilizada mayoritariamente son los procesadores ARM Esta publicado bajo la licenciaApache 20 y GNU GPL2 En el momento de escribir este documento su versioacuten actual es la Android 43 Jelly Bean(Gominola) y se encuentra en permanente desarrollo El primer moacutevil con Android fue el HTCDream que se comercializo por primera vez en Octubre de 2008

Android fue desarrollado inicialmente por la compantildeiacutea Android Inc esta estuvo financiada porGoogle durante un tiempo hasta que la compantildeiacutea fue adquirida por la multinacionalestadounidense en julio de 2005 Google queriacutea tener presencia en el mercado de los dispositivosmoacuteviles Android fue presentado en 2007 conjuntamente con la fundacioacuten Open Handset AllianceEsta entidad actualmente es un consorcio de 78 compantildeiacuteas de hardware software ytelecomunicaciones dedicadas al desarrollo de estaacutendares abiertos para dispositivos moacutevilesliderada por Google La multinacional estadounidense es el principal desarrollador de Android yaporta el ecosistema necesario para el crecimiento de este No obstante todos los miembros delconsorcio contribuyen de distintas maneras al desarrollo

En el antildeo 2008 salio a la luz la versioacuten 10 de Android En el momento de su aparicioacuten tubo queenfrentarse a las distintas plataformas ya existentes en aquel momento iPhone OS queactualmente es conocido como iOS BlackBerry OS y Windows Phone 7 El crecimiento deAndroid a sido espectacular en estos uacuteltimos antildeos a nivel mundial alcanzoacute una cuota de mercadodel 509 durante el uacuteltimo trimestre de 2011 esto represento maacutes del doble que el sistemaoperativo iOS de Apple Actualmente su cuota de mercado se situacutea en el 744 seguacuten un estudiorealizado por la empresa Gartner Ver la siguiente tabla

El hecho de que Android sea de coacutedigo abierto permite a los fabricantes comercializardispositivos de distintas gamas y precios adaptando ellos mismos el sistema operativo seguacuten lasnecesidades de cada modelo De esta forma se consigue un alcance mayor a distintos niveles depublico esto seria uno de los motivos que ha causado en estos uacuteltimos antildeos el crecimientoespectacular de cuota de mercado llegando casi al 75 actualmente a nivel mundial

Android a sufrido numerosas actualizaciones desde su liberacioacuten cada versioacuten liberada se le ha

dado un nombre de postres en ingles por orden alfabeacutetico

En la siguiente tabla se enumeran las distintas versiones salidas a la luz desde su lanzamientoinicial en el antildeo 2008

Letra Nombre del Postre - Versioacuten

A Apple Pie (v10) Tarta de manzana

B Banana Bread (v11) Pan de plaacutetano

C Cupcake (v15) Panque

D Donut (v16) Rosquilla

E Eacuteclair (v20v21) Pastel franceacutes

F Froyo (v22) (Abreviatura de laquofrozen yogurtraquo) Yogur helado

G Gingerbread (v23) Pan de jengibre

H Honeycomb (v30v31v32) Panal de miel

I Ice Cream Sandwich (v40) Saacutendwich de helado

J Jelly BeanGummy Bear (v41v42v43) Gominola (versioacuten actual)

K KitKat (v44) Kit Kat (versioacuten en desarrollo)

Iacutendice de contenidos1Introduccioacuten1

11 Justificacioacuten y contexto del proyecto112 Descripcioacuten del Proyecto113 Objetivos2

131 Definicioacuten del videojuego 214 Planificacioacuten4

141 Ciclo de vida4142 Planificacioacuten detallada del proyecto4

1411 Anaacutelisis previo planificacioacuten41412 Anaacutelisis de requisitos51413 Disentildeo51414 Implementacioacuten y pruebas61415 Finalizacioacuten6

143 Temporalizacioacuten del proyecto 715 Herramientas y tecnologiacuteas utilizadas916 Riesgos del proyecto10

2 Anaacutelisis funcional1121 Requisitos funcionales casos de uso11

211 Diagrama casos de uso actor ldquoJugadorrdquo11212 Tabla resumen casos de uso12213 Descripcioacuten textual de los casos de uso12

2131 VJ01 Inicio videojuego 122132 VJ02 Jugar 132133 VJ03 Acceder puntuaciones maacuteximas locales 132134 VJ31 Consultar puntuaciones locales 142135 VJ32 Salir puntuaciones locales 142136 VJ04 Acceder a las opciones 152137 VJ41 Activar o desactivar muacutesica o efectos 152138 VJ42 Acceder a la pantalla de creacuteditos 162139 VJ421 Salir de la pantalla de creacuteditos 1621310 VJ05 Acceder a las instrucciones 1721311 VJ51 Salir de las instrucciones 1721312 VJ06 Salir del videojuego 18

214 Diagrama casos de uso actor ldquoIArdquo192141 Diagrama casos de uso IA personaje principal (oveja)19

21411 Tabla resumen casos de uso2021412 Descripcioacuten textual de los casos de uso20

214121 IA03 Salida ovejas al escenario 20214122 IA031 Posicionamiento en pantalla de las oveja 20214123 IA032 Movimiento oveja 21214124 IA033 Oveja pastando21214125 IA034 Lanzamiento oveja22214126 IA035 Rebotes de la oveja 22214127 IA036 La oveja entra en el establo 23214128 IA037 Parar oveja 23

2142 Diagrama casos de uso IA enemigos (lobo)2421421 Tabla resumen casos de uso2421422 Descripcioacuten textual de los casos de uso25

214221 IA02 Salida lobo al escenario 25

i

214222 IA021 Ojos por la derecha o por la izquierda25214223 IA022 Escoge el tipo de lobo26214224 IA023 Lobo por la derecha o por la izquierda26214225 IA024 Salta a escena27214226 IA025 Movimiento lobo27

22 Disentildeo inicial diagrama de clases28221 Diagrama de clases inicial ldquoFling the sheeprdquo 28

2211 Resumen clases videojuego28222 Diagrama de clases inicial de pantallas30

2221 Resumen clases pantallas3023 Definicioacuten de maacutequinas de estado finitas31

231 Maacutequina de estados del videojuego 31232 Maacutequina de estados comportamiento oveja32233 Maacutequina de estados comportamiento lobo33234 Maacutequina de estados tutorial in game34

3 Disentildeo3531 Estudio comparativo35

311 Sheep amp Wolf36312 Sheep Up 37313 Temple Run38314 Attack of the Spooklings39

32 Perfiles de usuarios identificados4033 Contextos de uso42

331 iquest Doacutende 42332 iquest Cuaacutendo 42333 iquest En que entorno 42

4Disentildeo y ldquoConcept Artrdquo4241 Elementos presentes en la interfaz de la aplicacioacuten4242 Flujos de interaccioacuten4343 Prototipaje44

431 Sketches44432 Transiciones definidas entre pantallas47433 Prototipo horizontal de alta fidelidad 48

4331 Pantalla inicial484332 Pantalla menuacute principal del juego484333 Pantalla de opciones494334 Pantalla de creacuteditos494335 Pantalla tabla de puntuaciones504336 Pantalla de juego READY 504337 Pantalla de juego514338 Pantalla de pausa botones RESUME y QUIT524339 Pantalla GAME OVER5243310 Pantalla de instrucciones de juego HOW TO PLAY5343311 Pantalla de instrucciones in game 53

5Implementacioacuten5551 Arquitectura global55

511 Arquitectura del framework libGDX55512 Visioacuten de los moacutedulos de libGDX55

52 Arquitectura de un videojuego56521 Programa vs Aplicacioacuten56

ii

522 Estructura baacutesica de un videojuego5653 Esquema de la estructura baacutesica de un videojuego5854 Patrones de disentildeo59

541 Introduccioacuten59542 Patrones de creacioacuten59543 Singleton59

55 Diagramas de clases definitivos6156 Diagramas nuacutecleo videojuego 6157 Diagrama de clases objetos videojuego6458 Diagrama de clases pantallas videojuego6759 Configurar el entorno de desarrollo69

591 Instalacioacuten 69510 Traspaso del disentildeo a texturas 71511 Implementacioacuten de las maacutequinas de estado 73

6Conclusiones757Recursos utilizados 75

71 Portada documento 7572 Recursos utilizados para el disentildeo del videojuego 75

721 Fotografiacutea pantalla intro videojuego y usuarios 76722 Iconos y botones76

7221 Altavoz767222 Nota Musical767223 Flecha salida767224 Icono de pausa767225 Icono interrogante (help)767226 Botones (Play Score Options)77

723 Recursos graacuteficos 2D componentes escenario777231 Ojos lobos777232 Ovejas y lobos777233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY777234 Escenario77

724 Fuentes777241 Thinckhead777242 Misfortune777243 Tabaquera777244 Press Start Font77

725 Otros78726 Audio y efectos de sonido78

7261 Menu 787262 Game Over787263 Game Play787264 Creacutedits787265 Ready787266 Pause_Resume787267 Quit787268 Sheep78

8Lineas abiertas del proyecto799Bibliografiacutea utilizada 7910Otros proyectos realizados80

101 Remake Gradius Konami80

iii

102 Tales of Nimria mini RPG80102 Motocalipsis Bar 66 RTS80

Creative Commons 40 license by-nc-sa81

Iacutendice de ilustracionesilustracioacuten 1 Ciclo de vida en cascada4ilustracioacuten 11 Calendario proyecto7ilustracioacuten 2 Diagrama de gantt8ilustracioacuten 3 Diagrama de casos de usos actor jugador11ilustracioacuten 4 Diagrama de casos de usos personaje principal19ilustracioacuten 5 Diagrama de casos de usos enemigos24ilustracioacuten 6 Diagrama de clases videojuego28ilustracioacuten 7 Diagrama de clases de pantallas30ilustracioacuten 8 Maacutequina de estados del videojuego 31ilustracioacuten 9 Maacutequina de estados comportamiento oveja 32ilustracioacuten 10 Maacutequina de estados comportamiento lobo 33ilustracioacuten 11 Maacutequina de estados tutorial in game 34ilustraciones 12 y 13 pantallas juego Sheep amp Wolf 36ilustraciones 14 y 15 pantallas juego Sheep Up 37ilustraciones 16 y 17 pantallas juego Temple run38ilustraciones 18 y 19 pantallas juego Attack of the Spooklings39ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitas41ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintas pantallas43ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada44ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada45ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada46ilustracioacuten 241 Transiciones definidas entre pantallas47ilustracioacuten 242 Disentildeo pantallas con Gimp54ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en un videojuego55ilustracioacuten 26 Estructura baacutesica de un videojuego 58ilustracioacuten 27 Singleton59ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego 63ilustracioacuten 29 Diagrama de clases Assets 64ilustracioacuten 30 Diagrama de clases objetos 66ilustracioacuten 31 Diagrama de clases pantallas 68ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse69ilustracioacuten 33 Creacioacuten proyecto libGDX70ilustracioacuten 34 Creacioacuten proyecto libGDX70ilustracioacuten 35 Capas separadas por imaacutegenes71Ilustracioacuten 36 Texture packer 72ilustracioacuten 37 Posicioacuten texturas 73

iv

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

1Introduccioacuten

11 Justificacioacuten y contexto del proyecto

Este trabajo de fin de carrera en adelante TFC se centra en el desarrollo de aplicaciones paradispositivos moacuteviles con sistema operativo Android Actualmente existen multitud de aplicacionesNo obstante este TFC se quiere centrar en un subconjunto de aplicaciones focalizadas alentretenimiento conocidas por todo el mundo como videojuegos

Un videojuego es un software creado para el entretenimiento en general y basado en lainteraccioacuten entre una o varias personas y un aparato electroacutenico que ejecuta dicho videojuego Asiacutepues un videojuego es considerado un software cuyo fin directo es el entretenimiento

En estos uacuteltimos antildeos los smartphones y tabletas se han convertido en las nuevas plataformasmoacuteviles para juegos que compiten con los sistemas portaacutetiles claacutesicos que generalmente tienden aser maacutes cerrados

Los videojuegos se pueden clasificar en distintos geacuteneros estos son una forma de clasificacioacutenque designan un conjunto de videojuegos que poseen una serie de elementos comunes A lo largode la historia de los videojuegos aquellos elementos que han compartido varios de los mismos hanservido para clasificar como un geacutenero a aquellos que les han seguido en estilo y forma de lamisma manera que ha pasado con la muacutesica o el cine Como ejemplo se enumeran algunos de losgeacuteneros maacutes populares Lucha Disparos conocidos como Shooters Sigilo Plataformas ArcadeDeporte etc

Durante mucho tiempo los videojuegos estuvieron reservados para un tipo de usuario muyconcreto con un perfil muy especiacutefico la gran mayoriacutea eran hombres entre 15 y 25 antildeos Saliendode este perfil si se buscaban mujeres o personas mayores de 25 antildeos el nuacutemero de usuarioscaiacutea en picado y es que los videojuegos eran percibidos como el hobby de los adolescentesmasculinos No obstante en los uacuteltimos antildeos se ha visto coacutemo todo esto ha ido cambiando con unaumento tanto del puacuteblico femenino como la aparicioacuten en escena de usuarios con edades maacutesavanzadas

Este cambio ha venido motivado por diferentes motivos evolutivos dentro de la industria delvideojuego Uno de los motivos que ha provocado esto es la aparicioacuten de los teleacutefonos moacutevilesinteligentes tabletas y juegos online junto con gran cantidad de videojuegos de tipo casual Otroclaro motivo es que la mayoriacutea de los que jugaacutebamos hace 25 antildeos pues hoy seguimos jugandoya que hemos crecido con esta cultura y claro esta que a diacutea de hoy ya no tenemos la edad deentonces

12 Descripcioacuten del Proyecto Este proyecto se quiere centrar en el desarrollo de un videojuego de tipo casual para moacutevilesAndroid Estos son un tipo de videojuegos dirigidos a un puacuteblico de jugadores casuales Losvideojuegos casuales pueden tener cualquier tipo de mecaacutenica de juego y ser clasificados dentrode cualquier otro geacutenero Son diferenciados por sus reglas simples y de no requerir un excesivocompromiso en contraste con la mayoriacutea de juegos maacutes complejos No requieren una dedicacioacutende tiempo a largo plazo o habilidades especiales para jugar

Paacutegina 1 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Durante la realizacioacuten del proyecto se realizara el disentildeo del juego por disentildeo se entienderealizar un documento que defina el juego de forma generalizada mecaacutenicas personajes etceste documento es conocido como el ldquogame designrdquo el disentildeo de arte conocido como ldquoConcepartrdquo engloba todo lo relacionado con el aspecto graacutefico del juego estilos de personajes estilos degraacuteficos etc Finalmente se realizara el anaacutelisis disentildeo e implementacioacuten de laaplicacioacuten(videojuego) con las tecnologiacuteas escogidas para este proyecto

13 Objetivos

El objetivo principal de este TFC es adquirir experiencia en el desarrollo de videojuegos paraAndroid Sin embargo yendo maacutes allaacute de la plataforma tambieacuten existe un intereacutes por ampliarconocimientos en cuanto a programacioacuten y disentildeo de videojuegos en general

En cuanto al disentildeo y desarrollo del videojuego se pretende realizar un casual game con lassiguientes caracteriacutesticas

El juego consistiraacute en conducir unas ovejas descarriadas a su corral eacutestas con nuestra ayudadeberaacuten sortear los peligros que iraacuten apareciendo durante el camino hacia el deseado corral Elprincipal peligro que amenaza las ovejas son unos lobos malvados que quieren comeacuterselas Elvideojuego soacutelo dispondraacute de una uacutenica modalidad de juego para un uacutenico jugador Al tratarse deun juego casual el publico objetivo es muy amplio Se pretende conseguir un ldquolook amp feelrdquo conesteacutetica tipo cartoon en clave de humor El juego sera desarrollado en 2D con perspectiva cenital

131 Definicioacuten del videojuego

El nivel se describe como una pantalla estaacutetica con vista cenital en posicioacuten vertical Con estaacuteticase entiende que no hay ninguacuten tipo de scroll que haga desplazar la pantalla Siempre veremos lomismo

En la parte de arriba del todo apareceraacute un corral con una puerta la puerta se iraacute abriendo ycerrando de forma aleatoria Por los extremos de la pantalla habraacute arbustos que representaran loslimites del bosque De estos limites iraacuten saliendo lobos a la escena que se querraacuten comer a laspobres ovejas Estas ovejas permaneceraacuten en la parte de abajo de la pantalla e iraacuten saliendo a laescena ellas solas sin saber demasiado donde van(son ovejas descarriadas) nuestra misioacutenconsistiraacute en tirarlas hacia el corral para salvarlas de los malvados lobos metiendolas por lapuerta en los momentos que este abierta para lanzarlas tendremos que deslizar el dedo encimade ellas para darles impulso hacia el corral si no acertamos en meter la oveja en la puerta estarebotara como si de un pelota se tratase Los lobos iraacuten saliendo para sacarnos los lobos deencima deberemos deslizar nuestro dedo encima de ellos o tocarlos para ahuyentarlos De lobos habraacute de diferentes colores marrones grises y azulados Cada lobo loahuyentaremos de manera distinta

bull Marrones 1 pulsacioacuten o deslizar 1 vez el dedo sobre el lobobull Grises 2 pulsaciones o deslizar 2 veces el dedo sobre el lobobull Azulados 3 pulsaciones o deslizar 3 veces el dedo sobre el lobo

A parte de impedir que se coman las ovejas que estaacuten en camino hacia el corral tambieacutentendremos que evitar que los lobos lleguen a la parte de abajo donde estaacute el grupo de ovejas yaque esto nos haraacute perder vidas el juego inicialmente empezara con 3 vidas pudiendo alcanzar unmaacuteximo de 6 vidas en total cada 10000 puntos obtendremos un vida extra

Paacutegina 2 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Conforme el juego se va desarrollando eacuteste iraacute acumulando

bull Puntosbull Tiempo jugadobull Numero de lobos ahuyentadosbull Ovejas colocadas en el corral

Se tratara pues de ir mejorando nuestro propio reacutecord partida tras partida El juego iraacuteaumentando de dificultad durante el transcurso de la partida

Como apunte final el juego recibe el nombre de ldquoFling the sheeprdquo que traducido al espantildeolvendriacutea a ser algo como ldquolanzar las ovejasrdquo

Paacutegina 3 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

14 Planificacioacuten

141 Ciclo de vida

Un videojuego no deja de ser un proyecto de software por tanto para la realizacioacuten de esteproyecto se ha tomado como base el ciclo de vida claacutesico de cualquier proyecto de softwaremodificado ligeramente a las necesidades del proyecto Este ciclo de vida que tambieacuten sedenomina ciclo de vida en cascada se compone de las siguientes etapas

ilustracioacuten 1 Ciclo de vida en cascada

142 Planificacioacuten detallada del proyecto

En los siguientes apartados se recogen por cada etapa que compone el ciclo de vida las principales actividades realizadas con el objetivo de alcanzar el producto deseado dentro delos plazos definidos

1411 Anaacutelisis previo planificacioacuten

En este punto se ha abordado la visioacuten global del proyecto comprendida en establecer lospuntos iniciales necesarios para crear una planificacioacuten de tareas en funcioacuten de las actividades arealizar

Actividad Descripcioacuten

Disentildeo conceptual del videojuego Mecaacutenicas del videojuego

Definicioacuten de las tecnologiacuteas Tecnologiacuteas que se utilizaran en el desarrollo delvideojuego

Anaacutelisis de riesgos Posibles riesgos del proyecto

Planificacioacuten del proyecto Crear una planificacioacuten adaptada a los plazos de entregade este TFC

Paacutegina 4 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Redaccioacuten del documento Generacioacuten del plan de trabajo

Entrega de la PEC1 Entrega del documento

1412 Anaacutelisis de requisitos

En esta fase se ha detallado que necesidades debe cubrir el videojuego tanto desde un puntode vista funcional como desde un punto de vista arquitectoacutenico de la aplicacioacuten a disentildear se hadisentildeado un modelo troncal de clases para posteriormente desarrollar en base a estas todo elvideojuego No obstante en ninguacuten caso se ha entrado en detalle en las tecnologiacuteas a utilizar yadefinidas previamente

Actividad Descripcioacuten

Especificacioacuten de requisitos funcionales Definicioacuten de casos de usos

Disentildeo baacutesico estructura aplicacioacuten Diagrama baacutesico de clases

Especificacioacuten de requisitos funcionales Definicioacuten de maacutequinas de estado

1413 Disentildeo

En este apartado teniendo en cuenta que en este proyecto se va a desarrollar un videojuego seha realizado la recopilacioacuten conceptual de arte conjuntamente con el disentildeo de todas laspantallas que intervienen en el Conjuntamente con la seleccioacuten de los tipos de fuente que seutilizaran para el videojuego seleccioacuten de personajes y enemigos

Actividad Descripcioacuten

Definicioacuten de usuarios y contexto de uso delvideojuego

Conocer las caracteriacutesticas de los usuarios susnecesidades y objetivos asiacute como los contextosde uso

Disentildeo conceptual Un escenario de uso describe desde el puntode vista del usuario como seraacute utilizado unproducto determinado (es este caso unvideojuego) en un escenario determinado

Seleccioacuten de arte Seleccioacuten de arte ya hecho con licencias libresya que no se disponen de conocimientos dearte para abordar el disentildeo

Seleccioacuten de fuentes Seleccioacuten de los tipos de fuente adecuadospara el disentildeo del videojuego

Seleccioacuten de personajes y enemigos Seleccioacuten de personajes y enemigosdisponibles en la red con licencias libres ya queno se disponen de conocimientos de arte paraabordar el disentildeo

Disentildeo de pantallas que intervienen(prototipo) Con todo el arte fuentes y personajes serealizara el disentildeo de todas las pantallas queintervienen en el juego Realizacioacuten de unboceto a mano alzada Sketches y prototipo dealta fidelidad

Redaccioacuten del documento Generacioacuten del documento de disentildeo

Paacutegina 5 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Entrega de la PEC2 Entrega del documento

1414 Implementacioacuten y pruebas

En este punto se ha desarrollado la implementacioacuten del videojuego partiendo de todas lasdefiniciones de los apartados anteriores y las verificaciones oportunas para asegurar el correctofuncionamiento del videojuego

Actividad Descripcioacuten

Implementacioacuten de navegables y contenidos Implementacioacuten de la estructura de todas lapantallas del video juego y la navegabilidadentre ellas y las funciones principales de cadauna de ellas

Implementacioacuten del gameplay Implementacioacuten de la logica de juego

Implementacioacuten de sonido y efectos Implementacioacuten de los efectos de sonido y lamusica

Version alpha del videojuego En este punto se dispone de un videojuegofuncional listo para ser revisado y refinado

Pruebas y refinamiento de la implementacioacuten Pruebas y correcioacutenes de posibles errores

Preparacioacuten del paquete entregable y laredaccioacuten del documento

Testeo final y preparacioacuten del apk a entregarmas la redaccioacuten del documento estrutural delaplicacioacuten

Entrega de la PEC3 Entrega del documento

1415 Finalizacioacuten

En un proyecto de software esta parte quedariacutea focalizada en la fase de implantacioacuten y puesta enmarcha Sin embargo al tratarse de un videojuego esta fase quedariacutea focalizada en la fase delanzamiento del producto No obstante en este caso se ha utilizado para documentar todo eltrabajo realizado a lo largo de este TFC

Actividad Descripcioacuten

Redaccioacuten memoria final proyecto Redaccioacuten memoria final

Montaje presentacioacuten diapositivas Montaje presentacioacuten diapositivas

Montaje del video final presentacioacuten proyecto Montaje del video final presentacioacuten proyecto

Entrega final Entega final

Paacutegina 6 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria143 Temporalizacioacuten del proyecto

La siguiente ilustracioacuten muestra el calendario definido para el proyecto

ilustracioacuten 11 Calendario proyecto

Paacutegina 7 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

En la siguiente pagina se muestra una ilustracioacuten del diagrama de gantt correspondiente alcalendario mostrado en la ilustracioacuten 1

ilustracioacuten 2 Diagrama de gantt

Paacutegina 8 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

15 Herramientas y tecnologiacuteas utilizadas

Actualmente existen varios frameworks para desarrollar videojuegos sobre plataformas moacutevilesSe ha hecho un anaacutelisis comparativo preliminar entre Cocos2D-android1 Cocos2D-x y libGDXaunque existen otros estos tres son los maacutes nombrados y utilizados

Cocos2d-android1 Es un framework en Java basado en la versioacuten de cocos2d-android queesta basado en la versioacuten de cocos2d para iphone Este framework permite el desarrollo devideojuegos en 2D y se programa en Java en lugar de objective-c Para la versioacuten Cocos2d deiphone Actualmente este framework no parece tener mucha continuidad por parte de lacomunidad de desarrolladores aunque no estaacute discontinuado del todo

Cocos2D-x Es un framework en C++ multi-plataforma permite desarrollar para diferentesplataformas a la vez con el mismo coacutedigo Android iOS Bada Marmalade Windows Linux etcSin embargo aunque es un framework con una comunidad muy activa su documentacioacuten esbastante mejorable Se programa en C++ y es posible trabajar con distintos entornos de desarrollocomo Visual Studio o Eclipse El proceso de depuracioacuten con eclipse es algo complejo con C++JNIcon varios pasos a seguir para poder depurar A la vez su configuracioacuten en el entorno Eclipse noes trivial Finalmente tiene relativamente todaviacutea poco tiempo de vida

LibGDX Es un framework escrito en Java sobre C++ ya que las partes criacuteticas estaacuten escritascon coacutedigo nativo para conseguir el mejor rendimiento posible Tiene una comunidad dedesarrolladores muy activa y una documentacioacuten muy extensa Se programa con Java y permite ladepuracioacuten ejecutando la aplicacioacuten en el escritorio de la maacutequina sin tener que pasar por undispositivo real o uno virtual En caso de que se quiera probar en un dispositivo real es posiblehacerlo sin ninguacuten cambio sobre el coacutedigo Este hecho hace que el desarrollo sea maacutes fluidoTiene un rendimiento bastante alto ante cocos2d-x y otros frameworks existentes para eldesarrollo de videojuegos

Todo lo expuesto anteriormente provoca una inclinacioacuten definitiva a utilizar libGDX paraimplementar el videojuego Asiacute pues el videojuego seraacute escrito en Java utilizando el IDE Eclipseque es el soportado oficialmente para Android utilizando el framework libGDX

Para la realizacioacuten de este proyecto se han utilizado las siguientes herramientas

bull Planificacioacuten proyecto

Microsoft Project Professional 2010

bull Disentildeo

Gimp 28 Inkscape 048 TexturePacker 320 Microsoft Visio Professional 2010

bull Programacioacuten

Entorno de desarrollo Eclipse 421 Juno Android develompment tools ADT Android SDK

Paacutegina 9 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Framework libGDX 098 ObjectAid herramienta de visualizacioacuten de coacutedigo en UML para Eclipse Control de versiones Git utilizando como plataforma GitHub

bull Edicioacuten de audio

Audacity 203 GoldWave 569

bull Redaccioacuten de documentos

OpenOffice 401

bull Edicioacuten de viacutedeo

Adobe Premiere Pro CS55

16 Riesgos del proyecto

Se parte de una experiencia previa en desarrollo de videojuegos ver apartado 9 otros proyectosrealizados al final de este documento Aunque no se dispone de experiencia con la libreriacuteaescogida ni tampoco con programacioacuten sobre Android A nivel teacutecnico no se preveacute que puedansurgir muchos riesgos en liacuteneas generales No obstante existe la posibilidad de gastar maacutestiempo del previsto consultando documentacioacuten para lograr los objetivos establecidos

Existe un riesgo maacutes alto a nivel artiacutestico ya que no se dispone de ninguacuten conocimiento de artede ninguacuten tipo Por lo tanto muy probablemente a nivel artiacutestico el juego sea un poco justo Es poreste motivo que durante la realizacioacuten de este proyecto no se va a profundizar en temas de disentildeoartiacutestico en su lugar se utilizaran recursos de arte existentes en la red con licencias libres tipocreative commons o dominio puacuteblico Al final de este documento en el apartado 6 se puede ver unlistado de los recursos utilizados juntamente con un link a la obra y el nombre del autor si esteesta disponible Se haraacute una seleccioacuten de distintos tipos de recursos graacuteficos para posteriormentehacer el montaje de toda la parte graacutefica del videojuego En cuanto a la parte de audio la situacioacuten es exactamente la misma no se dispone de ninguacutenconocimiento para componer muacutesica ni efectos Por lo tanto se buscaraacuten sonidos y temasmusicales con licencias libres Intentando que estos queden integrados de la mejor maneraposible al videojuego

Finalmente existe el riesgo de que el gameplay definido en el disentildeo conceptual del videojuegouna vez puesto en praacutectica no sea del todo funcional o necesite de un balanceo para conseguirun juego equilibrado y jugable

Paacutegina 10 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2 Anaacutelisis funcional Basaacutendonos en el aparatado ldquo131 Definicioacuten del videojuegordquo se han definido los requisitosfuncionales necesarios para este con la definicioacuten de casos de uso Posteriormente se ha definidoun diagrama de clases inicial el cual ha servido como punto de partida para el desarrollo completodel videojuego A su vez se definen las maacutequinas de estado finitas utilizadas para el desarrollo

21 Requisitos funcionales casos de uso

En este apartado se presentan tres diagramas de casos de uso El primer diagrama engloba lavista generalizada del actor ldquojugadorrdquo y los casos de uso que describen los requisitos funcionalesdel sistema En los dos diagramas restantes se describen la vista generalizada del actor ldquoIArdquo porIA se entiende la inteligencia artificial del videojuego Los diagramas muestran los requisitosfuncionales de la IA para el personaje principal y los enemigos La IA interactuacutea con el sistema ypor tanto seraacute susceptible de analizar su uso de la aplicacioacuten

211 Diagrama casos de uso actor ldquoJugadorrdquo

ilustracioacuten 3 Diagrama de casos de usos actor jugador

Paacutegina 11 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Como se puede observar en la ilustracioacuten 3 el sistema solo dispone de un uacutenico actor Que eneste caso es el jugador del videojuego es decir representa todos los posibles usuarios quepueden jugar al videojuego

En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 3estos seraacuten desarrollados en la seccioacuten posterior

212 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

VJ01 Inicio videojuego Jugador

VJ02 Jugar Jugador

VJ03 Acceder puntuaciones maacuteximas Jugador

VJ31 Consultar puntuacione locales Jugador

VJ32 Salir puntuacione locales Jugador

VJ04 Acceder a las opciones Jugador

VJ41 Activar o desactivar muacutesica o efectos Jugador

VJ42 Acceder a la pantalla de creacuteditos Jugador

VJ421 Salir de la pantalla de creacuteditos Jugador

VJ43 Salir de las opciones Jugador

VJ05 Acceder a las instrucciones Jugador

VJ51 Salir de las intrucciones Jugador

VJ06 Salir del videojuego Jugador

213 Descripcioacuten textual de los casos de uso

2131 VJ01 Inicio videojuego

Identificador VJ01

Nombre Inicio videojuego

Autor Xavier Figuera

Resumen El usuario inicia el videojuego

Actor(es) Jugador

Precondiciones Ninguna el videojuego no habiacutea sido iniciado auacuten

Postcondiciones El usuario a iniciado el videojuego a visualizado la pantalla de introdurante un segundo y se encuentra en la pantalla del menuacute principal

Flujo normal 1 El usuario accede a la lista de aplicaciones de su dispositivo 2 Busca el acceso al videojuego3 Ejecuta el programa4 Se carga la aplicacioacuten5 El videojuego muestra la pantalla de intro

Paacutegina 12 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6 Se muestra el menuacute principal al jugador

Flujos alternativos Se podriacutea dar el caso que el usuario accediera al videojuego desde algunacceso directo en alguno de los escritorios del dispositivo

Inclusiones Ninguna

Extensiones Ninguna

2132 VJ02 Jugar

Identificador VJ02

Nombre Jugar

Autor Xavier Figuera

Resumen Jugar al videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario empieza a jugar

Flujo normal 1 El usuario pulsa el botoacuten play del menuacute principal 2 El usuario juega3 El usuario puede volver a jugar una vez finalizada la partida 4 El usuario puede salir del juego en cualquier momento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2133 VJ03 Acceder puntuaciones maacuteximas locales

Identificador VJ03

Nombre Acceder puntuaciones maacuteximas locales

Autor Xavier Figuera

Resumen Acceder a la pantalla de puntuaciones maacuteximas locales de las partidasrealizadas en el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla con la tabla de las 10 puntuacionesmaacuteximas

Flujo normal 1 El usuario pulsa el botoacuten Scores del menuacute principal 2 Al usuario le aparece la pantalla de puntuacioacuten

Paacutegina 13 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ31 Consultar puntuaciones localesVJ32 Salir de la puntuaciones locales

2134 VJ31 Consultar puntuaciones locales

Identificador VJ31

Nombre Consultar puntuaciones locales

Autor Xavier Figuera

Resumen Consulta de las puntuaciones maacuteximas locales de las partidas realizadasen el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Scores delmenuacute principal

Postcondiciones El usuario visualiza la tabla de las 10 puntuaciones maacuteximas

Flujo normal 1 El usuario visualiza una tabla con las 10 puntuaciones maacuteximas

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2135 VJ32 Salir puntuaciones locales

Identificador VJ32

Nombre Salir puntuaciones locales

Autor Xavier Figuera

Resumen Salir de las puntuaciones maacuteximas locales

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulso el botoacuten Scores

Postcondiciones El usuario sale de la tabla de puntuaciones

Flujo normal 1 El usuario pulsa el botoacuten salir en la pantalla tabla de puntuaciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 14 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2136 VJ04 Acceder a las opciones

Identificador VJ04

Nombre Acceder a la pantalla de opciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de opciones del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla de opciones

Flujo normal 1 El usuario pulsa el botoacuten Options del menuacute principal 2 Al usuario le aparece la pantalla de opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ41 Activar o desactivar muacutesica o efectos VJ42 Acceder a la pantalla de creacuteditosVJ43 Salir de las opciones

2137 VJ41 Activar o desactivar muacutesica o efectos

Identificador VJ041

Nombre Activar o desactivar muacutesica o efectos

Autor Xavier Figuera

Resumen Activar o desactivar muacutesica o efectos de audio del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal

Postcondiciones El usuario activa o desactiva la muacutesica o efectos del videojuego

Flujo normal 1 El usuario pulsa el botoacuten altavoz para activar o desactivar la muacutesica delvideojuego 2 El usuario pulsa el botoacuten notas musicales para activar o desactivar losefectos de audio del videojuego

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 15 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2138 VJ42 Acceder a la pantalla de creacuteditos

Identificador VJ42

Nombre Acceder a la pantalla de creacuteditos

Autor Xavier Figuera

Resumen Acceder a la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario se encuentra en la pantalla de opciones

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten credits para acceder a los creacuteditos2 El usuario puede desplazar el texto de los creacuteditos deslizando el dedosobre el texto hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ421 Salir de la pantalla de creacuteditos

2139 VJ421 Salir de la pantalla de creacuteditos

Identificador VJ421

Nombre Salir de la pantalla de creditos

Autor Xavier Figuera

Resumen Salir de la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal y ha accedido a la pantalla creacuteditos

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten salir para abandonar la pantalla para accedera los creacuteditos2 El usuario se encuentra de nuevo en la pantalla opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 16 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21310 VJ05 Acceder a las instrucciones

Identificador VJ05

Nombre Acceder a la pantalla de instrucciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten del menuacuteprincipal

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a las instrucciones2 El usuario puede desplazar el texto de las instrucciones deslizando eldedo sobre el hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ51 Salir de las instrucciones

21311 VJ51 Salir de las instrucciones

Identificador VJ51

Nombre Salir de las intrucciones

Autor Xavier Figuera

Resumen Salir de la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten en el menuacuteprincipal y ha accedido a la pantalla de instrucciones

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a la pantalla de instrucciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 17 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21312 VJ06 Salir del videojuego

Identificador VJ06

Nombre Salir del videojuego

Autor Xavier Figuera

Resumen Salir del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego

Postcondiciones El usuario abandona el videojuego

Flujo normal 1 El usuario pulsa el botoacuten exit de la aplicacioacuten para salir del videojuego oel botoacuten salir del dispositivo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 18 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214 Diagrama casos de uso actor ldquoIArdquo

Por IA se entiende inteligencia artificial es un elemento fundamental para dotar de realismo a unvideojuego Uno de los retos principales que se plantean a la hora de integrar comportamientosinteligentes es alcanzar un equilibrio entre la sensacioacuten de inteligencia y el tiempo de coacutemputoempleado por este subsistema Este equilibrio es de gran importancia en el caso de losvideojuegos Este planteamiento gira generalmente en torno a la generacioacuten de soluciones quesin ser oacuteptimas proporcionen una cierta sensacioacuten de inteligencia En concreto dichas solucionesdeberiacutean tener como meta que el jugador se enfrente a un reto que sea factible de manera quesuponga un estiacutemulo emocional y que consiga engancharlo al videojuego

En estos uacuteltimos antildeos la IA ha pasado de ser un componente secundario en el proceso dedesarrollo de videojuegos a convertirse en uno de los aspectos maacutes importantes Actualmentelograr un alto nivel de IA en un juego sigue siendo uno de los retos maacutes emocionantes y complejosy en ocasiones sirve para diferenciar un juego normal de uno realmente espectacular

Dentro de este proyecto de ha definido una IA baacutesica para dotar del realismo necesario alvideojuego propuesto En los siguientes diagramas se define esta IA en forma de casos de usospara su posterior implementacioacuten

2141 Diagrama casos de uso IA personaje principal (oveja)

ilustracioacuten 4 Diagrama de casos de usos personaje principal

Paacutegina 19 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 4estos seraacuten desarrollados en la seccioacuten posterior

21411 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA03 Salida oveja al escenario IA

IA031 Posicionamiento en pantalla de la oveja IA

IA032 Movimiento oveja IA

IA033 Oveja pastando IA

IA034 Lanzamiento oveja IA

IA035 Rebotes de la oveja IA

IA036 La oveja entra en el establo IA

IA037 Parar oveja IA

21412 Descripcioacuten textual de los casos de uso

214121 IA03 Salida ovejas al escenario

Identificador IA03

Nombre Salida oveja al escenario

Autor Xavier Figuera

Resumen Salida oveja al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones La oveja es instanciada de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Las ovejas se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA031 Posicionamiento en pantalla de las oveja

214122 IA031 Posicionamiento en pantalla de las oveja

Identificador IA031

Nombre Posicionamiento en pantalla de las oveja

Paacutegina 20 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Autor Xavier Figuera

Resumen Asignacioacuten inicial posicioacuten de las ovejas en pantalla siempre es la mismaposicioacuten esta queda fuera del rango visual de la pantalla

Actor(es) IA

Precondiciones La partida esta iniciada y la oveja instanciada

Postcondiciones La oveja queda posicionada en unas coordenadas fuera de la pantalla

Flujo normal 1 Se instancia la oveja2 La oveja queda posicionada en unas coordenadas uacutenicas fuera delrango visual de pantalla

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214123 IA032 Movimiento oveja

Identificador IA032

Nombre Movimiento oveja

Autor Xavier Figuera

Resumen Movimiento de las ovejas hacia el escenario

Actor(es) IA

Precondiciones La partida esta iniciada la oveja instanciada y posicionada

Postcondiciones La oveja se mueve hacia el escenario empieza a pastar

Flujo normal 1 La oveja se mueve hacia el escenario

Flujos alternativos Ninguno

Inclusiones IA034

Extensiones IA033 Oveja PastandoIA037 Parar oveja

214124 IA033 Oveja pastando

Identificador IA033

Nombre Oveja pastando

Autor Xavier Figuera

Resumen La ovejas permanecen en un espacio determinado de coordenadas depantalla mientras no sean lanzadas al escenario por el usuario

Actor(es) IA

Paacutegina 21 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Precondiciones La oveja ha salido al escenario

Postcondiciones La oveja se mueve dentro de un espacio determinado de forma indefinida

Flujo normal 1 La oveja se mueve de forma indefinida hasta que sea lanzada por elusuario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA034 Lanzamiento oveja

214125 IA034 Lanzamiento oveja

Identificador IA034

Nombre Lanzamiento oveja

Autor Xavier Figuera

Resumen La oveja es lanzada por el usuario y se acelera en funcioacuten de la fuerza delanzamiento

Actor(es) IA

Precondiciones La oveja se mueve

Postcondiciones La oveja ha sido lanzada

Flujo normal 1 La oveja se mueve de forma indefinida2 La oveja es lanzada3 La oveja acelera en funcioacuten de la fuerza de lanzamiento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214126 IA035 Rebotes de la oveja

Identificador IA035

Nombre Rebotes de la oveja

Autor Xavier Figuera

Resumen La oveja ha sido lanzada y rebota por el escenario

Actor(es) IA

Precondiciones La oveja ha sido lanzada

Postcondiciones La oveja rebota por el escenario

Flujo normal 1 La oveja ha sido lanzada y rebota por el escenario 2 La oveja entra en el establo si colisiona con la puerta y esta abierta

Paacutegina 22 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA036 La oveja entra en el establo

214127 IA036 La oveja entra en el establo

Identificador IA036

Nombre La oveja entra en el establo

Autor Xavier Figuera

Resumen La oveja entra en el establo

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario y la puerta del establo estaabierta

Postcondiciones La oveja entra en el establo

Flujo normal 1 La oveja entra en el establo si colisiona con la puerta y esta abierta

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214128 IA037 Parar oveja

Identificador IA037

Nombre Parar oveja

Autor Xavier Figuera

Resumen La oveja para si se hacen dos pulsaciones encima de ella

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario

Postcondiciones La oveja se para

Flujo normal 1 La oveja esta rebotando2 El usuario pulsa dos veces encima de ella3 La oveja se para

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 23 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2142 Diagrama casos de uso IA enemigos (lobo)

ilustracioacuten 5 Diagrama de casos de usos enemigos

21421 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA02 Salida lobo al escenario IA

IA021 Ojos por la derecha o por la izquierda IA

IA022 Escoje el tipo de lobo IA

IA023 Lobo por la derecha o por la izquierda IA

IA024 Salta a escena IA

IA025 Movimento lobo IA

Paacutegina 24 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21422 Descripcioacuten textual de los casos de uso

214221 IA02 Salida lobo al escenario

Identificador IA02

Nombre Salida lobo al escenario

Autor Xavier Figuera

Resumen Salida lobo al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones El lobo es instanciado de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Los lobos se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA02 IA021 IA022 IA023 IA024

214222 IA021 Ojos por la derecha o por la izquierda

Identificador IA021

Nombre Ojos por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Salida de ojos al escenario paso previo a que salte el lobo

Actor(es) IA

Precondiciones El lobo ha sido instanciado

Postcondiciones Aparecen unos ojos que se cierra y se abren por la derecha o izquierda dela pantalla de forma aleatoria

Flujo normal 1 El lobo ha sido instanciado2 Aparecen unos ojos que se cierran y se abren 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 25 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214223 IA022 Escoge el tipo de lobo

Identificador IA022

Nombre Escoge el tipo de lobo

Autor Xavier Figuera

Resumen Escoge el tipo de lobo de forma aleatoria de los tres definidos

Actor(es) IA

Precondiciones Han aparecido los ojos

Postcondiciones Ha escogido el tipo de lobo que saltara al escenario

Flujo normal 1 Han aparecido los ojos2 Ha escogido el tipo de lobo que saltara al escenario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214224 IA023 Lobo por la derecha o por la izquierda

Identificador IA023

Nombre Lobo por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Escoge de forma aleatoria el lado por donde debe aparecer el lobo

Actor(es) IA

Precondiciones Se ha seleccionado el tipo de lobo

Postcondiciones Se ha escogido el lado por donde apareceraacute

Flujo normal 1 Se ha escogido el lado por donde apareceraacute

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 26 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214225 IA024 Salta a escena

Identificador IA024

Nombre Salta a escena

Autor Xavier Figuera

Resumen El lobo salta a escena

Actor(es) IA

Precondiciones Se ha seleccionado el lado por donde debe aparecer y salta

Postcondiciones El lobo esta en escena

Flujo normal 1 Se ha seleccionado el lado por donde debe aparecer y salta2 El lobo esta en escena

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones A025

214226 IA025 Movimiento lobo

Identificador IA025

Nombre Movimiento lobo

Autor Xavier Figuera

Resumen El lobo esta en escena y se mueve

Actor(es) IA

Precondiciones El lobo ha saltado a la escena

Postcondiciones El lobo se mueve

Flujo normal 1 El lobo ha saltado a la escena2 El lobo se mueve

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 27 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

22 Disentildeo inicial diagrama de clases

221 Diagrama de clases inicial ldquoFling the sheeprdquo

ilustracioacuten 6 Diagrama de clases videojuego

En este apartado se define la estructura inicial de la aplicacioacuten a traveacutes del diagrama de clasesmostrado en la ilustracioacuten 6 Esto serviraacute como punto de partida para el completo disentildeo de laaplicacioacuten para su posterior implementacioacuten A continuacioacuten se pasan a detallar a modo resumidoque funcionalidad tiene cada una de las clases definidas en este diagrama

2211 Resumen clases videojuego

FlingTheSheepMain Clase principal desde donde se inicializaraacute la aplicacioacuten

Assets Esta clase contendraacute todos los recursos necesarios del juego texturas sonidos etcEstos seraacuten inicializados en el momento de iniciar el juego Existe una dependencia entre la claseFlingTheSheepMain y Assets ya que la instanciacioacuten de Assets esta condicionada por lainstanciacioacuten de la clase principal FlingTheSheepMain cuando se pone en marcha el videojuego

Paacutegina 28 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaWorldGameController Esta clase contendraacute la loacutegica del videojuego

AudioManager Clase destinada para controlar la reproduccioacuten de efectos de sonido y audio delvideojuego

Charcater Es la superclase que describe los comportamientos comunes de los personajes deella se extienden los personajes principales y los enemigos

Sheep Clase que representa el personaje principal

Wolf Clase que representa a los enemigos

AbstractGameObject Esta superclase recoge todos los comportamientos comunes de losobjetos del juego por objetos se entiende todos los componentes que forman el escenario delvideojuego De esta clase se extienden todos los objetos del videojuego

Grass Hierba que apareceraacute en el escenario

Flower Flores que apareceraacuten en el escenario

ThePen Establo donde hay que hacer llegar las ovejas

DoorPen Puerta del establo esta se abriraacute y se cerrara aleatoriamente

Hole Agujeros en el escenario

WoodFenceForest Valla de madera que apareceraacute en el escenario

Como se ha comentado este diagrama de clases es un diagrama inicial por tanto lo maacutesprobable es que durante el desarrollo del videojuego se antildeadan maacutes clases al disentildeo inicialmostrado en la ilustracioacuten 6 En el apartado 55 de este documento se muestran los diagramas declases definitivos

Paacutegina 29 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria222 Diagrama de clases inicial de pantallas

ilustracioacuten 7 Diagrama de clases de pantallas

Este diagrama recoge en forma de clases las pantallas iniciales definidas del videojuego Separte de una superclase llamada AbstractGameScreen que recogeraacute las operaciones comunes detodas ellas y de esta se extienden las pantallas concretas este diagrama solo muestra laspantallas maacutes baacutesicas definidas inicialmente estas serviraacuten como base para desarrollar elconjunto de pantallas total necesarias para este proyecto y que quedan recogidas en su totalidaden el apartado 4 ldquoDisentildeordquo de esta documento

A continuacioacuten se pasan a detallar a modo resumido cada una de ellas

2221 Resumen clases pantallas

IntroScreen Clase para la pantalla de intro

MenuScreen Clase que contiene el menuacute principal del videojuego GameScreen La clase game screen es la que contiene la pantalla donde se desarrolla todo elvideojuego

Paacutegina 30 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

23 Definicioacuten de maacutequinas de estado finitas

Como ya se ha introducido en el punto 212 la IA aplicada a los videojuegos dota a estos derealismo Existen distintas teacutecnicas para la implementacioacuten de esta Una de las maacutes consolidadases el uso de maacutequinas de estados finitas ya que tienen un coste computacional casi inexistenteya que no tienen ninguacuten coste de procesamiento asignado Las maacutequinas de estados permiten deforma faacutecil definir comportamientos Es por este motivo que han sido utilizadas no solamente para definir los comportamientos de laIA del videojuego sino tambieacuten para definir los distintos estados en que se puede encontrar elvideojuego durante su tiempo de vida A continuacioacuten se detallan los distintos diagramas de lasmaacutequinas de estados utilizadas para este proyecto conjuntamente con una explicacioacuten de cadauna de ellas

231 Maacutequina de estados del videojuego

ilustracioacuten 8 Maacutequina de estados del videojuego

La ilustracioacuten 8 nos muestra los estados que puede tomar el videojuego durante su tiempo devida

Este diagrama define los estados que puede tomar el videojuego una vez iniciado inicialmente eljuego se encuentra en el estado READY de este estado existe una transicioacuten al estado GAMEcuando el tiempo de READY finaliza READY lt=0 El estado game sera el estado en donde se

Paacutegina 31 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriadesarrollara todo el juego Des de este estado podemos pasar al estado PAUSE si pulsamos elbotoacuten de pausa del juego y desde el estado PUASE volvemos al estado GAME si volvemos apulsar el botoacuten pause Finalmente desde el estado GAME haremos la transicioacuten al estado GAMEOVER si nos arrebatan todas las vidas durante la partida Desde el estado GAME OVERpodremos volver a READY si decidimos hacer una nueva partida

232 Maacutequina de estados comportamiento oveja

ilustracioacuten 9 Maacutequina de estados comportamiento oveja La ilustracioacuten 9 muestra el comportamiento del personaje principal del videojuego que en estecaso es la oveja Se define el ciclo de vida de la oveja a traveacutes de sus comportamientos

APPEAR SHEEP La oveja aparece fuera del rango visual de la pantalla y empieza a moversepara que suceda la transicioacuten hacia el siguiente estado FOREST START la coordenada x debeser menor que 220

FOREST START La oveja seguiraacute movieacutendose en un espacio determinado de la pantalla hastaque sea lanzada en unas determinadas direcciones la direccioacuten queda determinada por lasvariables velocityX velocityY estas tomaran valores positivos o negativos determinando ladireccioacuten de lanzamiento esto queda reflejado en la condicioacuten de transicioacuten del estado FORESTSTART a FOREST DEEP Si realizamos el lanzamiento en esas determinadas direccionesharemos la transicioacuten al un nuevo estado FOREST DEEP

FOREST DEEP La oveja rebota por el escenario si colisiona con la puerta del corral y estaabierta hacemos la transicioacuten al estado ON THE PEN

Paacutegina 32 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ON THE PEN Finaliza el ciclo de vida de la oveja dentro del juego esta es devuelta al corral seincrementan puntos en el marcador de puntuacioacuten y se incrementa una unidad en el contador deovejas salvadas

233 Maacutequina de estados comportamiento lobo

ilustracioacuten 10 Maacutequina de estados comportamiento lobo La ilustracioacuten 10 muestra el comportamiento de los enemigos del videojuego que en este casoson los lobos Se define el ciclo de vida del lobo a traveacutes de sus comportamientos

APPEAR EYES Antes de aparecer los lobos a escena apareceraacuten sus ojos entre los matorralesdel bosque Cuando acaba el tiempo pasa al siguiente estado tiempo ojos lt= 0

APPEAR WOLF En este estado se seleccionara el tipo de lobo (habraacute 3 tipos distintos) el ladode la pantalla por donde apareceraacute posicioacuten y velocidad de salto como tambieacuten el tiempo ensegundos que tardara a saltar al escenario Una vez seleccionados todos estos paraacutemetros haraacutela transicioacuten al estado WHEN JUMP

WHEN JUMP Este estado simplemente esperara que pase el tiempo para que el lobo salte alescenario Un vez pase el tiempo el lobo apareceraacute en el escenario pasando a la transicioacuten JUMPON SCENE

JUMP ON SCENE En este estado se efectuara el salto a escena del lobo este saltara desde los

Paacutegina 33 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriamatorrales laterales de la pantallahacia el escenario dibujando un arco convexo Para realizar elsalto nos apoyaremos en la representacioacuten del calculo de la funcioacuten trigonomeacutetrica cosenosolamente en sus valores positivos por tanto cuando cosy lt 0 haremos la transicioacuten al estadoMOVE ya que el salto habraacute finalizado

MOVE En este estado los lobos se moveraacuten y podraacuten ser ahuyentados pulsando repetidas vecesencima de ellos las veces a pulsar queda sujeta al tipo de lobo que sea Des de este estadopodremos hacer a dos estado distintos dependiendo de lo que suceda Si conseguimos ahuyentaral lobo pasaremos al estado WOLF SCARED Si por el contrario el lobo atrapa a la ovejaharemos la transicioacuten al estado SHEEP TRAPPED en ambos estados finalizara el ciclo de vidadel lobo

WOLF SCARED Se habraacute ahuyentado el lobo se incrementa en uno el contador de lobosahuyentados y se suman puntos a la puntuacioacuten total En este estado finaliza el ciclo de vida dellobo

SHEEP TRAPPED El lobo habraacute atrapado una oveja se nos restara una vida En este estadofinaliza el ciclo de vida del lobo

234 Maacutequina de estados tutorial in game

ilustracioacuten 11 Maacutequina de estados tutorial in game La ilustracioacuten 11 muestra los distintos estados que toma el mini tutorial in game que apareceraacute laprimera vez que se juega En este las transiciones entre estados suceden de forma automaacutetica

Paacutegina 34 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriacada 5 segundos desde que se ha activado el primer estado Cada estado corresponderaacute a unacaja de texto mostrada en pantalla

3 Disentildeo

31 Estudio comparativo

Un estudio realizado en 2011 por la empresa Newzoo httpwwwnewzoocom empresainternacional dedicada a los estudios de mercado y enfocada por completo a la industria de losvideojuegos Ha realizado la primera encuesta a jugadores espantildeoles y una de las cosas que dicees La suma del volumen de negocio de juegos online (redes sociales juegos casualesjuegos para moacuteviles juegos MMO) superaraacute al del consumo en juegos para consolas en2011 Se puede ver un resumen del estudio en liacutenea en

httpwwweurogameresarticles2011-10-26-espana-gastara-1-600-millones-de-euros-en-videojuegos-en-2011

Con esta informacioacuten se puede ver que hacer un videojuego casual para una plataforma moacutevilcomo Android puede ser muy viable

Para este proyecto se realizaraacute un estudio comparativo (benchmarking) En la industria de losvideojuegos es habitual sacar tiacutetulos fijaacutendose en otros tiacutetulos que han conseguido gran eacutexito enel mercado La operativa consiste en mejorarlos dentro de otro contexto o hacer un videojuegocompletamente diferente pero basaacutendose en ocasiones en mecaacutenicas de alguacuten otro tiacutetulo que haconseguido un gran eacutexito

Existen en Google Play gran cantidad de juegos casuales que pueden servir como inspiracioacuten ycomo punto de inicio para hacer un planteamiento general de coacutemo disentildear el producto que sequiere desarrollar partiendo de los requisitos definidos en el apartado 131 de este documento Setomaraacuten como referencia algunos tiacutetulos para identificar patrones para ver coacutemo otros hansolucionado ciertas situaciones como pueden ser problemas de disentildeo o interaccioacuten entre otrosEn ninguacuten caso deberaacuten ser exactamente de la misma temaacutetica pero si que se miraraacute que seandel mismo tipo es decir casual games

El primer paso para realizar este estudio a sido ir a Google play y verificar si hay alguacuten juego conel mismo nombre que el que se pretende desarrollar ldquoFling the sheeprdquo No existe ninguacuten juego adiacutea de hoy con este nombre

El segundo paso a sido buscar tambieacuten en Google play videojuegos en los que aparezcanovejas solo poniendo en el buscador la palabra sheep nos aparecen muchiacutesimos juegos quetienen una temaacutetica donde aparecen ovejas Se ha verificado tambieacuten poniendo combinaciones depalabras relacionadas con el juego que se quiere implementar palabras como sheep wolves o sheep farm etc los resultados obtenidos son bastante elevados

Por la cantidad de juegos encontrados y los recursos de que se dispone como por ejemplo eltiempo no es posible analizarlos todos Si que se tomaran algunos juegos despueacutes de hacer unrepaso de los maacutes destacados Hay que decir que despueacutes de haber instalado algunos alguno deellos no ha acabado de funcionar correctamente en el dispositivo moacutevil

Tras estos pasos se escogeraacuten dos videojuegos de temaacutetica similar y dos videojuegos detemaacutetica diferente Los videojuegos escogidos para realizar el anaacutelisis comparativo son

Paacutegina 35 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria311 Sheep amp Wolf

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 12 y 13 pantallas juego Sheep amp Wolf Link httpsplaygooglecomstoreappsdetailsid=jscompanygamesSheepAndWolf_enter3

El juego consta de una mecaacutenica muy simple disponemos de un boomerang y un corazoacuten laperspectiva del juego es elevada y vemos coacutemo van bajando ovejas y lobos de forma aleatoria setrata de forma taacutectil dibujar la trayectoria del boomerang para eliminar los lobos sin tocar lasovejas y con el corazoacuten dibujar una trayectoria de forma taacutectil para tocar las ovejas y no los lobosconforme vamos tocando los lobos y las ovejas con el correspondiente objeto iremos sumandopuntos

Tiene cierta similitud con el que se quiere implementar ya que salen tambieacuten lobosovejas ytambieacuten que lo que se pretende implementar funcionara de forma taacutectil para lanzar las ovejas alcorral y ahuyentar a los lobos que amenazan a las ovejas

Tiene una perspectiva de caacutemara igual a la que se quiere implementar Tiene una mecaacutenica dejuego muy sencilla las opciones que ofrece son muy definidas y claras 3 botones al inicio deljuego grandes que nos indican las posibles opciones que tenemos dentro del juego Game StartGame Record Exit Un punto interesante de este juego es que las puntuaciones no se guardan anivel local de la aplicacioacuten sino que son compartidas en una pagina web asiacute se pueden ver laspuntuaciones a nivel mundial La navegacioacuten por las diferentes pantallas es correcta

Quizaacute un aspecto negativo del juego seriacutea que visualmente esta muy poco cuidado Aunque aveces si el juego produce mucha adiccioacuten el aspecto visual puede quedar en segundo teacutermino enjuegos para dispositivos moacuteviles En otros tipos de plataformas como consolas o PC el aspectovisual es un punto muy importante y que se debe trabajar mucho maacutes a fondo no obstante estono significa que en un dispositivo moacutevil no deba estarlo

Paacutegina 36 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez adictivo puntuaciones a nivel mundial Navegacioacuten correctaPuntos Negativos Poco cuidado visualmente no tiene pausaObservaciones No tiene un final definido a medida que avanzamos la dificultad aumenta

312 Sheep Up

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 14 y 15 pantallas juego Sheep Up Linkhttpsplaygooglecomstoreappsdetailsid=compgpublishandroidsheepuplive

A diferencia del anterior este visualmente esta mucho maacutes cuidado Es un juego en 3D dondeuna oveja de juguete esta guardada dentro de una caja de cartoacuten Va botando y tiene que irrecogiendo botones e ir subiendo por diferentes niveles para poder salir de la caja es un juego deplataformas tambieacuten con una mecaacutenica bastante sencilla

Este dispone de una pantalla que dura unos segundos y seguidamente sale el menuacute de opcionesdel juego a diferencia de lo visto anteriormente donde directamente saliacutea el menuacute de opcionesde juego El menuacute de opciones de juego tambieacuten es muy directo y claro Aparte del botoacuten playpara iniciar el juego el botoacuten opciones para configurar el audio del juego los efectos el idioma yver los creacuteditos Tiene el botoacuten store donde este juego tiene implementada la modalidad freemiumpara ir comprando diferentes objetos dentro de el que nos daraacuten ciertas ventajas dentro delgameplay La compra se podraacute realizar con monedas virtuales (los botones) que los habremos idorecogiendo durante los diferentes niveles jugados o tambieacuten podemos comprar cantidadesdeterminadas de botones a cambio de dinero de verdad Dispone de vinculacioacuten a redes socialescomo Twitter y Facebook

Puntos Positivos Sencillez adictivo vinculado a Twitter y el Facebook el juego se puede pararNavegacioacuten correctaPuntos Negativos La pantalla inicial tarda demasiado en desaparecer y no da ninguacuten tipo de

Paacutegina 37 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriainformacioacuten al usuario puede llegar a parecer que se a colgado debido al largo tiempo que tardaal menos con el dispositivo que se ha verificado

313 Temple Run

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 16 y 17 pantallas juego Temple runLinkhttpsplaygooglecomstoreappsdetailsid=comimangitemplerun Es un juego que no tiene final donde un explorador tiene que evitar la muerte superandodiferentes obstaacuteculos a traveacutes de diferentes pasillos tendremos que dibujar diferentes trazos deforma taacutectil para que el personaje gire salte o se deslice por el suelo al mismo tiempo tendremosque inclinar el teleacutefono para que el personaje vaya recogiendo monedas que podremos utilizarpara adquirir objetos y mejoras en la partida A medida que vamos recorriendo maacutes y maacutes metrosla dificultad aumenta y nos obligara a realizar maacutes acciones en un espacio de tiempo maacutes cortoasiacute pues los reflejos juegan un papel importante

Tambieacuten dispone de una pantalla que dura unos segundos seguida de un menuacute de opciones muyclaro y definido Este igual que el anterior dispone de una tienda donde se pueden comprarmejoras (potenciadores) con dinero virtual o real Los botones de inicio son muy similares al delanterior juego visto Dispone de vinculacioacuten a redes sociales como Twitter

Puntos Positivos Sencillez Adictivo vinculado a Twitter el juego se puede parar NavegacioacutencorrectaPuntos Negativos -

Paacutegina 38 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria314 Attack of the Spooklings

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 18 y 19 pantallas juego Attack of the SpooklingsLinkhttpsplaygooglecomstoreappsdetailsid=compicarogamesspooklings_free

Finalmente nos centramos en este casual con aspecto visual retro Otro juego que no disponede final y donde la dificultad va aumentando conforme el tiempo de juego aumenta El objetivo deljuego es matar a todos los Spooklings que quieren atacar nuestro poblado La forma de matar alos Spooklings es con el dedo deslizaacutendolo sobre la pantalla soacutelo que un Spookling llegue anuestro poblado en la parte inferior de la pantalla la partida finaliza Debemos evitar de todas lasformas posibles que lleguen a la parte inferior de la pantalla

Tambieacuten dispone de una pantalla de inicio y un menuacute inicial de juego claro y directo no disponede ninguna vinculacioacuten a redes sociales El juego no se puede parar La navegacioacuten por todas laspantallas es correcta teniendo pantalla de puntuaciones maacutes altas pantalla con mini tutorial decoacutemo jugar y unas opciones para configurar el audio y ver los creacuteditos del juego Sin embargo adiferencia de los otros tiene algunas fallas de disentildeo a nivel de transiciones entre pantallas yfuncionalidades baacutesicas que aparentemente no tienen mucho sentido Fuera de la pantalla dejuego no es posible abandonar la aplicacioacuten de ninguna de las maneras no hay botoacuten de salida yla tecla de ir hacia atraacutes no funciona la uacutenica manera de salir es matando el proceso Por otrolado durante la partida con el botoacuten de ir atraacutes conseguimos hacer pausa del juego pero de unaforma que no estaacute anunciada al usuario de ninguna manera con alguacuten icono visual que informa alusuario de la funcionalidad Una vez parado el juego con una tecla que no estaacute indicada enninguna parte como tal nos da dos opciones RESTART y QUIT con QUIT salimos de la aplicacioacutenalgo que no se puede hacer en ninguacuten otro punto de la aplicacioacuten Con RESTART vuelve aempezar la partida y se pierde la que teniacuteamos empezada En resumen si pulsamos este botoacuten noestaacute anunciado en ninguna parte por accidente durante una partida perdemos la partida ya que notenemos la opcioacuten de continuar puesto que o volvemos a empezar o salimos de la aplicacioacuten

Paacutegina 39 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez Muy adictivoPuntos Negativos Errores en el disentildeo de menuacutes y transiciones entre pantallas no tienevinculacioacuten a redes sociales no tiene pausa

Todo lo que se ha visto en este estudio comparativo nos da una idea de que el disentildeo que selleve a cabo debe cumplir las siguientes metas tener una mecaacutenica de juego adictiva y sencillaque la disposicioacuten de opciones e iconos han ser claras y dejar claro al usuario de forma visual queacutefuncionalidad tienen las transiciones y operativas baacutesicas deben estar bien indicadas eimplementadas El disentildeo visual debe ser lo mas cuidado posible aunque a veces en juegos paraeste tipo de dispositivos no es el que maacutes domina sobre todo si el juego tiene una mecaacutenica muyadictiva aunque si se consiguen las dos cosas mucho mejor Otro punto importante es tener unamecaacutenica freemium implementada dentro del juego con una tienda para comprar mejorasaplicables a la mecaacutenica de juego Otro punto importante es la vinculacioacuten del juego a redessociales y que recoja puntuaciones a nivel mundial y no locales del dispositivo todos estosingredientes le pueden dar al juego un plus que haga que el usuario vea el juego maacutes atractivo

Debido a temas de tiempo inicialmente se descarta para este proyecto la implementacioacuten de lassiguientes funcionalidades dentro del videojuego las puntuaciones a nivel mundial estas demomento quedaraacuten sujetas a nivel local del dispositivo tambieacuten se descarta la vinculacioacuten a redessociales y mecaacutenicas freemium

El resto de puntos comentados como las mecaacutenicas sencillas y adictivas aspecto visual lo maacutescuidado posible dentro de los recursos de que se dispone y la navegacioacuten entre pantallas ymenuacutes claros y sencillos seraacute lo que se transportaraacute al disentildeo y la posterior implementacioacuten delproyecto Es posible que durante la implementacioacuten del disentildeo mostrado en este documento semodifiquen algunos puntos por temas de balanceo y equilibrio del producto final

32 Perfiles de usuarios identificados

Los juegos casuales son juegos con mecaacutenicas simples Este hecho hace que esteacuten al alcancede cualquier usuario aunque eacuteste no sea un jugador experimentado acostumbrado a utilizar juegoscon mecaacutenicas maacutes complicadas que requieren de cierta experiencia previa Al mismo tiempo sonjuegos que pueden ser jugados en cortos espacios de tiempo Por tanto el tipo de usuario deestos juegos sera muy variado Podemos encontrar el perfil de usuario experimentado tanto enlas tecnologiacuteas como en los videojuegos y que tiene intereacutes por cualquier tipo de juego Y por otrolado encontramos el usuario poco experimentado pero que gracias a los smarphones y lasencillez de las mecaacutenicas de juego provoca que tambieacuten juegue

Todos tendraacuten un objetivo comuacuten pasar un rato jugando al juego Para mejorar su uacuteltimo reacutecordAunque en este tipo de juegos el usuario tambieacuten puede jugar sin buscar ninguacuten tipo de metaconcreta simplemente pasar un rato divertido sin necesidad de alcanzar ninguacuten tipo de reacutecord niobjetivo concreto Tambieacuten es importante mencionar que aunque los perfiles de usuarios son muyvariados existe una fuerte tendencia a que los jugadores de este tipo de juegos tiendan a sermaacutes grandes que los jugadores de otros tipos de videojuegos y suelen tener un intereacutes y tiempolimitado tanto para jugar como los videojuegos en general siendo normalmente del sexofemenino

Se detectan dos grandes grupos de perfiles de usuario los experimentados en jugar avideojuegos y los no experimentados en jugar videojuegos edades diferentes profesionesvariadas educacioacuten variada sexo variado Los usuarios de Android en general suelen pagarmucho menos por aplicaciones que otros grupos de usuarios como los de iphone por ejemplo

Paacutegina 40 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Los haacutebitos de consumo en los estados unidos ya no de los usuarios de juegos casuales sinode los usuarios de Android en general se definen de la siguiente manera soacutelo un 4 de estospaga por descargar una aplicacioacuten contra un 23 y un 31 de los usuarios de la App Store paraiPhone y iPad respectivamente tal y como muestra un estudio realizado por la empresa Statistacon las 100 aplicaciones maacutes descargadas

ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitasSe puede ver en linea en el link httpwwwstatistacomtopics983mobile-app-monetizationchart1400paid-apps-don-t-stand-a-chance-on-google-play

Se puede ver otro articulo similar en el siguiente link

httpwwwwayerlesscom201307usuarios-de-android-pagan-menos-por-apps-que-los-de-ios

La mayoriacutea de aplicaciones gratuitas utilizan la modalidad freemium que no es maacutes que ofrecerun producto baacutesico de forma gratuita y cobrar a los usuarios por opciones maacutes avanzadas oespeciales dentro de la misma aplicacioacuten No obstante tambieacuten es posible encontrar aplicacionescompletamente gratuitas sin la modalidad freemium

Como ya se ha dicho se han detectado inicialmente dos grandes grupos dentro de la masa deusuarios que son consumidores potenciales de juegos casuales Estos son los usuarios asiduos ajugar videojuegos de todo tipo y con experiencia en el uso de tecnologiacuteas en general es decirusuarios experimentados Por otro lado encontramos los que no tienen costumbre de jugar muchoy normalmente tampoco tienen una gran experiencia en el uso de tecnologiacuteas en general pero

Paacutegina 41 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debido a la simpleza de los videojuegos casuales eacutestos tambieacuten se convierten en jugadores yen muchas ocasiones se convierten en los usuarios que consumen maacutes este tipo de juegos Asiacutepues encontramos dos grandes grupos seguacuten unas caracteriacutesticas comunes experiencia previa osin experiencia ante los videojuegos y las tecnologiacuteas

33 Contextos de uso

331 iquest Doacutende

Al tratarse de un casual game para un dispositivo moacutevil el espacio de utilizacioacuten seraacute muyvariado Por tanto los usuarios podraacuten encontrarse en muchos lugares distintos como puedenser en casa en el tren en el metro en el autobuacutes al aire libre etc En definitiva el usuario podraacuteencontrarse en cualquier lugar

332 iquest Cuaacutendo

El tipo de juegos casuales tienden a ser juegos donde los usuarios realizan partidas cortas peroal mismo tiempo la naturaleza adictiva de estos hace que los usuarios puedan quedar atrapadosdurante varias horas repartidas en ratos diferentes o continuados dependiendo de la situacioacuten decada usuario Por tanto el cuaacutendo de este tipo de juegos puede ser muy variado casi en cualquiermomento que el usuario pueda dedicarle unos minutos o ratos maacutes largos durante su tiempolibre mientras se desplaza ya sea en tren en metro o en alguacuten otro medio de transporte que nonecesite estar pendiente del vehiacuteculo cuando esta en la cama etc

333 iquest En que entorno

Los entornos de utilizacioacuten pueden tambieacuten ser muy variados promovidos por doacutende y el cuaacutendoPor lo tanto el entorno tecnoloacutegico podraacute tambieacuten ser variado puede existir o no conexioacuten a lared en un entorno social muy diferente que podraacute ser maacutes privado o maacutes puacuteblico yconsecuentemente se dibujaraacute un entorno ambiental variado seguacuten el momento

4Disentildeo y ldquoConcept Artrdquo

41 Elementos presentes en la interfaz de la aplicacioacuten

Con todo lo que se ha visto en el apartado 31 estudio comparativo queda patente que la interfazde usuario debe ser clara y sencilla Seraacute necesario que contenga las siguientes pantallas

bull Pantalla de intro inicial que apareceraacute durante un segundobull Pantalla menuacute inicial del juego con las opciones Play Scores Options () How to play bull Pantalla de nivel donde se desarrolla el videojuegobull Pantalla high scores que mostrara la tabla de reacutecords con las 10 puntuaciones maacutes altasbull Pantalla how to play instrucciones de como jugar tambieacuten se integraran dentro del

videojuego y apareceraacuten durante la primera partida que se jueguebull Pantalla opciones podremos activar y desactivar el sonido y los efectos de audio A su vez

desde esta pantalla podremos acceder a la pantalla de creacuteditosbull Pantalla de creacuteditos pantalla doacutende se mostraran lo creacuteditos del videojuego bull Pantalla Ready pantalla de juego con el mensaje sobre impreso antes de empezar a

jugar apareceraacute durante 3 segundosbull Pantalla con los botones resume quit sobreimpresos en la pantalla de juego se accederaacute

Paacutegina 42 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaa ella con el botoacuten de pausa pausando el juego Desde ella podremos reanudar el juego oabandonar el juego

bull Pantalla game over con el resumen de los reacutecords conseguidos durante la partidapuntostiempo jugado numero de lobos ahuyentados y ovejas colocadas en el corralDesde esta pantalla tendremos dos botones Play again y Exit uno nos permitiraacute volver ajugar y el otro nos permitiraacute abandonar el juego tal y como su nombre indica

42 Flujos de interaccioacuten

En la siguiente ilustracioacuten se muestran los flujos de interaccioacuten definidos con las pantallasenumeradas en el apartado anterior Los flujos muestran la navegacioacuten que debe existir entre laspantallas del videojuego

ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintaspantallas

Paacutegina 43 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

43 Prototipaje

431 Sketches

En este apartado se muestran los primeros esbozos realizados a mano alzada estos intentanplasmar el disentildeo del juego en su totalidad Estos esbozos serviraacuten como punto de partida en unasegunda fase para realizar el prototipaje de todas las pantallas que intervienen en el videojuegoutilizando todo el material recopilado en la red

Tal y como ya se ha dicho en este mismo documento anteriormente no se dispone deconocimientos de disentildeo suficientes como para abordar un disentildeo de arte desde cero Por lo tantose han utilizado recursos ya disponibles en la red para el montaje de todos los graacuteficos delvideojuego Todos los recursos utilizados estaacuten bajo licencias creative commons o dominio puacuteblico A continuacioacuten se muestran los bocetos

ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 44 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 45 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada

En la siguiente paacutegina se muestran las transiciones definidas entre pantallas con los sketchesrealizados ilustracioacuten 241 Las transiciones toman como base el diagrama de flujos deinteraccioacuten definido en el apartado 42 de este documento ver ilustracioacuten 21

Paacutegina 46 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria432 Transiciones definidas entre pantallas

ilustracioacuten 241 Transiciones definidas entre pantallas

Paacutegina 47 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria433 Prototipo horizontal de alta fidelidad

4331 Pantalla inicial

Pantalla de inicio al ejecutar el juego apareceraacute esta pantalladurante un segundo

4332 Pantalla menuacute principal del juego

Pantalla de menuacute principal del juego desde esta pantallapodremos empezar a jugar (botoacuten Play) consultar la tabla depuntuaciones (botoacuten Scores) e ir a la pantalla de opciones deljuego (botoacuten Options) El interrogante de la parte inferiorderecha nos serviraacute para ir a la pantalla de instruccionesHOW TO PLAY para saber coacutemo se juega

Paacutegina 48 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4333 Pantalla de opciones

La pantalla de opciones nos permitiraacute deshabilitar la muacutesicadel juego y los efectos sonoros pasando el dedo sobre losiconos del altavoz y las notas musicales con el altavozdeshabilitaremos la muacutesica y con las notas musicalesdesactivaremos los efectos de audio La flecha naranja nosconduciraacute de nuevo a la pantalla de inicio del juego el botoacutencreacuteditos nos llevara a la pantalla de creacuteditos

4334 Pantalla de creacuteditos

Pantalla de creacuteditos en ella se muestran los nombres dequienes han disentildeado y programado el juego con la flechanaranja inferior volvemos a la pantalla de opcionesDeslizando el dedo sobre el texto se podraacute desplazar haciaarriba y hacia abajo

Paacutegina 49 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4335 Pantalla tabla de puntuaciones

Pantalla tabla de puntuaciones nos mostrara una tabla conlas 10 puntuaciones maacutes altas de todas las partidas jugadasEsta tabla se guardara de forma local en el dispositivo

4336 Pantalla de juego READY

Pantalla de juego READY Apareceraacute durante unossegundos una vez iniciada la partida Despueacutes de 3segundos pasara a la pantalla de juego que se muestra en elsiguiente apartado

Paacutegina 50 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4337 Pantalla de juego

La pantalla de la izquierda es donde se desarrollaraacute todo el gameplay en la parte superiorizquierda de la pantalla se muestran los puntos conseguidos y las vidas En la parte superiorderecha hay un botoacuten que permitiraacute pausar el juego una vez pausado mostraraacute la pantalla depausa con los botones RESUME y QUIT la pantalla se muestra en el apartado siguiente En laparte derecha se muestra otra pantalla ideacutentica a la de la izquierda donde se puede ver elgameplay baacutesico representado con flechas los lobos saldraacuten de los extremos de la pantalla yendohacia las ovejas las ovejas al mismo tiempo saldraacuten de la derecha de la pantalla y las tendremosque lanzarlas deslizando el dedo sobre ellas y lanzandolas hacia el establo La puerta se iraacuteabriendo y cerrando aleatoriamente los lobos una vez puestos en escena los podremos ahuyentardeslizando el dedo sobre ellos un nuacutemero de veces determinado en funcioacuten del color del lobocomo esta indicado en el apartado 131 de este documento

Paacutegina 51 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4338 Pantalla de pausa botones RESUME y QUIT

Pantalla de pausa que apareceraacute cuando se pause el juegoCon la opcioacuten RESUME continuaremos jugando con laopcioacuten QUIT se saldraacute de la partida y pasaraacute a la pantalla delmenuacute principal del juego descrita en el punto 322

4339 Pantalla GAME OVER

Pantalla GAME OVER apareceraacute cuando se hayanagotado todas las vidas Mostraraacute un resumen de los puntosconseguidos en la partida actual tiempo invertido en lapartida lobos ahuyentados y ovejas salvadas Con losbotones de la parte inferior podremos volver a jugar (botoacutenplay again) o salir del juego con el botoacuten exit este botoacuten nosconduciraacute a la pantalla de inicio de juego descrita en elapartado 322

Paacutegina 52 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria43310 Pantalla de instrucciones de juego HOW TO PLAY

Pantalla de instrucciones del juego nos haraacute una breveexplicacioacuten de coacutemo jugar Deslizando el dedo sobre el textose podraacute desplazar hacia arriba y hacia abajo El juegodispondraacute de unas mini instrucciones in game queapareceraacuten en la primera partida que se juegue en forma decajas de texto esta pantalla se muestra en el siguienteapartado

43311 Pantalla de instrucciones in game

Esta pantalla muestra el modo como quedaraacuten integradaslas instrucciones de juego dentro del gameplay Estasinstrucciones apareceraacuten solamente la primera vez que sejuegue

Paacutegina 53 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Todo el disentildeo mostrado en este apartado ha sido realizado con todos los recursos encontradosen la red todos ellos quedan recogidos en el apartado 6 Con el programa Gimp se ha montadotodo el disentildeo de alta fidelidad mostrado en este apartado Se ha trabajado con capas paradisponer de flexibilidad en la construccioacuten del disentildeo A su vez el hecho de tener los disentildeos porcapas nos permitiraacute poderlo exportar a la implementacioacuten del videojuego de una manera coacutemoday raacutepida en el apartado 5 implementacioacuten se hace referencia a como convertir el disentildeo realizadoen capas a recursos graacuteficos del videojuego

En la siguiente ilustracioacuten se muestra una captura del disentildeo de la pantalla de juego descrita enel apartado 4337 realizado con Gimp

ilustracioacuten 242 Disentildeo pantallas con Gimp

Paacutegina 54 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

5Implementacioacuten

51 Arquitectura global

511 Arquitectura del framework libGDX

LibGDX es un framework multiplataforma que actualmente soporta WindowsLinuxMac OS XAndroid iOS y HTML5 Esto permite escribir el coacutedigo una sola vez y desplegarlo en las distintasplataformas comentadas sin tener que modificar el coacutedigo LibGDX permite bajar a maacutes bajonivel si se desea ya que da acceso directo al sistema de ficheros dispositivos de entrada desonido y a OpenGL a traveacutes de la interfaz unificada OpenGL ES11 y 20

LibGDX ofrece a su vez un conjunto de APIs que ayudan en las tareas comunes de desarrollode videojuegos como son la presentacioacuten de sprites texto la creacioacuten de interfaces de usuario lareproduccioacuten de efectos de sonido y secuencias musicales y los distintos tipos de caacutelculosnecesarios en la programacioacuten de videojuegos

En algunas ocasiones LibGDX deja de lado el lenguaje Java y recurre a coacutedigo nativo paraconseguir un mejor rendimiento No obstante todas estas funciones quedan ocultas detraacutes de lasAPIs de Java De manera que en el momento de desarrollar un videojuego no hay quepreocuparse de realizar una compilacioacuten cruzada entre Java y C++

LibGDX es un framework maacutes que un motor de videojuegos que ayuda al desarrollo de estosgracias a las abstracciones de gran alcance que ofrece y deja en manos del programador elegircomo escribir su videojuego o aplicacioacuten

512 Visioacuten de los moacutedulos de libGDX

LibGDX comprende varios moacutedulos que proporcionan los servicios necesarios para crear laarquitectura tiacutepica de un videojuego

ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en unvideojuego

Paacutegina 55 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaA continuacioacuten de describen los moacutedulos mostrados en la ilustracioacuten 25

Input Proporciona un modelo de entrada unificado para todas las plataformas Soporta tecladopantalla taacutectil aceleroacutemetro y ratoacuten si esta disponible

Graphics Permite el dibujo de las imaacutegenes en pantalla usando el hardware proporcionado por laimplementacioacuten de Open GL ES las versiones soportadas son GL versioacuten 10 11 20

Files Proporciona los meacutetodos necesarios para las operaciones de lectura escritura totalmenteindependientes a los medios de comunicacioacuten existente

Audio Proporciona las herramientas necesarias para la reproduccioacuten de sonido para todas lasplataformas

Math Moacutedulo que proporciona los caacutelculos matemaacuteticos necesarios orientados al desarrollo devideojuegos

Physics LibGDX proporciona un wrapper completo al motor de fiacutesicas en 2D open sourcedesarrollado en C++ llamado Box2D

52 Arquitectura de un videojuego

521 Programa vs Aplicacioacuten

Una aplicacioacuten convencional sigue una secuencia loacutegica lineal reacciona cuando sucede alguacutenevento es decir responde a eventos como por ejemplo cuando se pulsa una tecla Por el contrarioun videojuego es maacutes complejo hace caacutelculos y dibuja en pantalla constantemente aunque no seproduzca ninguacuten evento

522 Estructura baacutesica de un videojuego

Programar videojuegos es una forma completamente diferente de programar software Ladiferencia principal entre una aplicacioacuten convencional y un videojuego radica en la gestioacuten deeventos tal y como se ha indicado anteriormente un programa ofrece respuestas a eventos y unavez son servidos permanece a la espera de una nueva orden en cambio un videojuego es unprograma que debe actuar en tiempo real tiene que estar haciendo caacutelculos y dibujando enpantalla constantemente No se puede esperar a que suceda un evento para poder actuaraunque el jugador no haga nada no presione una sola tecla no mueva el ratoacuten el juego tiene quecalcular el tiempo que lleva jugando en ese nivel si le va a atacar alguacuten enemigo si estaacute cargandoenergiacutea y por supuesto dibujar en pantalla todo lo que va sucediendo

La mayoriacutea de videojuegos estaacuten construidos bajo la misma estructura baacutesica sobre la cual correel programa Esta estructura puede tener variaciones pero de forma general se presenta de lasiguiente manera

Inicializacioacuten En esta primera etapa el juego se situacutea en su estado inicial Se realizan lasinicializaciones por lo que respecta a las libreriacuteas o motores que vayan a utilizarse de variables yestructuras de datos referentes a los atributos de las entidades o personajes escenariosconfiguraciones etc y de los diferentes recursos fiacutesicos que vayan a emplearse tales comograacuteficos o sonidos

Paacutegina 56 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Ciclo de juego En esta parte esta toda la accioacuten este ciclo se repite de manera indefinida hastaque el jugador pierda gane o salga del juego Este punto se puede dividir en tres partes quepodemos llamarlas entrada proceso y salida

Como entrada se entiende el punto donde se captura todo lo que hace el jugador comopresionar los botones de control mover el ratoacuten presionar las flechas del teclado tocar la pantallataacutectil y el resto de informacioacuten que recibe el juego

En la parte de proceso es donde se procesa toda la informacioacuten que se recibioacute en la entrada ytiene lugar la loacutegica del videojuego Por tanto es donde se realizan los caacutelculos de fiacutesicas si eljuego los requiere asiacute como tambieacuten los caacutelculos de la inteligencia artificial de esteconjuntamente con el tratamiento graacutefico

La salida es la encargada de enviar al jugador toda la informacioacuten que se ha procesado en laetapa anterior proceso Se muestra al jugador el resultado de lo que hizo con la visualizacioacuten enpantalla del estado actual del videojuego Tambieacuten es en este punto donde se hace sonar lamuacutesica y efectos de sonido

Por uacuteltimo y fuera del ciclo de juego esta la parte de finalizacioacuten esta parte es la encargada deliberar todos los recursos y memoria utilizada durante el transcurso del videojuego

Es importante diferenciar estas tres etapas del ciclo del videojuego y ver queacute tarea se delega encada una de ellas en la entrada tan soacutelo nos ocupamos de captar los posibles eventos el procesose encarga en primer lugar de procesar la entrada y maacutes adelante de la loacutegica del videojuego ypor uacuteltimo la capa de salida se encarga de visualizar y reproducir la muacutesica

Con estos puntos claros se puede mostrar la estructura principal de un videojuego En elsiguiente apartado se muestra esta estructura baacutesica a modo de esquema

Paacutegina 57 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

53 Esquema de la estructura baacutesica de un videojuego

Inicializacioacuten Creacioacuten de estructuras dedatos carga de recursos graacuteficos y sonidos

Entrada Gestioacuten de pantalla taacutectiljoystick teclado

Proceso Lanzamos una oveja al corralrebota la oveja salta un lobo al escenarioetc

Salida Mostrar graacuteficos y reproducirsonidos

ilustracioacuten 26 Estructura baacutesica de unvideojuego

Finalizacioacuten Liberar recursos

Paacutegina 58 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

54 Patrones de disentildeo

541 Introduccioacuten

En el disentildeo de cualquier aplicacioacuten como por ejemplo un videojuegono es posible abordarlo porcompleto El proceso de disentildeo de una aplicacioacuten suele ser iterativo y se realiza en diferentesetapas de forma que se vaya refinando con el tiempo Conseguir un disentildeo perfecto a la primeraes muy difiacutecil de conseguir El disentildeo de aplicaciones es complejo y la maacutes importante y que maacutesimpacto tiene no soacutelo sobre el producto final sino tambieacuten sobre su vida futura Ya que es en eldisentildeo en donde se definen las estructuras y entidades que se van a encargar de resolver elproblema planteado Como de bien se definan estas estructuras y entidades influiraacute en granmedida en el eacutexito o fracaso del proyecto y en la viabilidad de su mantenimiento

Los patrones de disentildeo son formas reconocidas y probadas de resolver problemas de disentildeo queson recurrentes en el tiempo No es maacutes que basarse en experiencias anteriores en problemassimilares aplicado soluciones probadas anteriormente en determinados contextos para alcanzarun mejor disentildeo maacutes raacutepidamente

Existen distintos patrones para distintos problemas de disentildeo No obstante en este documentosoacutelo se haraacute hincapieacute en los patrones utilizados para este proyecto Quedando fuera del alcancede este documento los demaacutes patrones existentes

542 Patrones de creacioacuten

Estos patrones nos proporcionan una solucioacuten relacionada con la construccioacuten de clases objetosy otras estructuras de datos Algunos ejemplos de patrones pueden ser Abstract Factory BuilderSingleton estos ofrecen mecanismos de creacioacuten de instancias de objetos y estructurasescalables dependiendo de las necesidades

543 Singleton

Para este proyecto se ha utilizado este patroacuten ya que era necesario tener una uacutenica instancia dealgunas determinadas clases En java cuando se utiliza el operador new es posible crear unainstancia de un objeto No obstante a veces es necesario tener una uacutenica instancia de un objetopor ejemplo para poder acceder a ella des de cualquier punto de la aplicacioacuten Seria un ejemplolapelota de un juego de pinball en donde podriacutea ser conveniente mantener una uacutenica instancia deeste objeto

La solucioacuten para garantizar que solo existe una instancia de un objeto se consigue impidiendoque ninguna otra clase pueda acceder al constructor por este motivo de declara el constructorcomo miacutenimo de forma protegida o privada y se proporciona un uacutenico punto (controlado) en dondese proporciona la uacutenica instancia En la siguiente ilustracioacuten se muestra el diagrama de clases delpatroacuten Singleton

ilustracioacuten 27 Singleton

Paacutegina 59 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria A continuacioacuten en el listado 543 se muestra una implementacioacuten baacutesica del patroacuten Singletonutilizada en el proyecto para la clase que maneja el audio del videojuego

Listado 543

1 package comthreecometflingthesheeputil23 import combadlogicgdxaudioMusic 4 import combadlogicgdxaudioSound56 public class AudioManager 7 8 public static final AudioManager instance = new AudioManager()910 private Music playingMusic11 private Sound playingSound1213 Singleton14 private AudioManager() 15 1617 1819 public void ResunmeMusic()20 21 if(playingMusic = null) playingMusicplay()22 2324 public void PlayMusic(Music musicfloat volumeboolean loop) 25 26 if(GamePreferencesinstancemusic) return27 playingMusic = music28 musicsetLooping(loop)29 musicsetVolume(volume)30 musicplay()31 3233 public void StopMusic()34 35 if(playingMusic = null) playingMusicstop()36 3738 public void PauseMusic()39 40 if(playingMusic = null) 41 if(playingMusicisPlaying()) 42 playingMusicpause()43 44 45 4647 public void PlaySound(Sound soundfloat volume) 48 49 if(GamePreferencesinstancesound) return50 playingSound = sound51 soundplay(volume)52 5354 public void PlaySound(Sound soundfloat volumefloat pitchfloat pan) 55 56 if(GamePreferencesinstancesound) return57 playingSound = sound58 soundplay(volume pitch pan)59 60

Esta clase maneja el audio del videojuego tanto efectos de sonido como la muacutesica es una clase

Paacutegina 60 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debe estar accesible des de cualquier punto de la aplicacioacuten y no tiene ninguacuten sentido que seinstancie repetidas veces soacutelo sera necesaria una instancia de dicha clase para poder manejar losaudios y muacutesicas Como se puede ver en la linea 14 del listado 543 se declara el constructorprivado y en la linea 8 se proporciona el punto donde se proporciona la uacutenica instancia de dichaclase a traveacutes de la variable instance declarada de forma publica para que se accesible desdecualquier otra clase y a su vez declarada de forma static y final Con final le decimos que estavariable ya no puede ser modificada una vez declarada es decir sera una constante Con static leindicamos que podremos utilizar la variable instance sin la necesidad de hacer ninguna instanciacon el operador new de la clase AudioManager

Existen varias clases en el videojuego que son singleton A continuacioacuten se nombran todas ellasAudioManager Assets WorldGameController CounterTime GamePreferences

55 Diagramas de clases definitivos

Se ha dividido en varios diagramas para facilitar su lectura se pueden ver los diagramas en lossiguientes apartados de este documento A continuacioacuten se pasan a comentar las clases descritasen ellos

56 Diagramas nuacutecleo videojuego

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep-android encontramoslas siguientes clases

MainActivity Hereda de AndroidAplication que a su vez hereda de Activity es donde se crea laaplicacioacuten crea una instancia de FlingTheSheepMain

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep encontramos laclase FlingTheSheepMain donde se instancia la pantalla de intro del juego dentro del meacutetodocreate

Siguiendo el esquema estructural de un videojuego descrito en el punto 53 de este documentola ilustracioacuten 28 detalla el diagrama de clases que engloba la inicializacioacuten del juego y el ciclo devida

La Inicializacioacuten queda recogida en la clase Assets esta clase es un singleton que instanciaotras clases que a su vez guardan todos los recursos del videojuego por recursos se entiendetexturas para los graacuteficos archivos de audio ficheros con informacioacuten necesaria para el juegoUna vez inicializado el hecho de ser un singleton nos permite acceder a estas clases a traveacutes dela clase assets des de cualquier punto de la aplicacioacuten En la ilustracioacuten 29 se detallan todas estasclases que engloba la clase assets Esta clase se encuentra el el paquetecomthreecometflingthesheepgame A continuacioacuten se comenta cada una de ellas con una brevedescripcioacuten

LevelDecoration Enumera todas las texturas de los objetos de decoracioacuten del videojuego floreshierba etc Son objetos que no tienen ninguna interaccioacuten con el juego simplemente decoran

AssetFontsScene2D Engloba los tipos distintos de fuente que se utilizan en el videojuego tipode letra medida y color

AssetSound Enumera todos los efectos de sonido del juego

Paacutegina 61 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAssetMusic Contiene todas las muacutesicas del juego

FileHandleHighScores Inicializa la tabla de puntuaciones local y la actualiza cada vez que serealiza una partida de juego

LevelObjects Engloba todos los objetos que tienen interaccioacuten con el videojuego por interaccioacutense entiende objetos que pueden colisionar con otros o que tienen alguacuten papel importante dentrode videojuego no son solo objetos de decoracioacuten

Character Contiene el protagonista del juego el personaje que lleva el jugador en esta caso lasovejas

NPCs En esta clase quedan englobadas las texturas de los enemigos en esta caso los lobos

GUI En esta clase se engloban todas las texturas utilizadas para la creacioacuten de la interfaz deusuario botones imaacutegenes

La clase Constants es una clase que declara varias constates estaacuteticas que son accesibles desde cualquier punto de la aplicacioacuten y se utilizan tanto en la inicializacioacuten como en el ciclo de vidadel videojuego La podemos encontrar en el paquete comthreecometflingthesheeputil

El ciclo de vida del videojuego entrada proceso y salida queda repartido en las siguientes clases

Entrada Gestioacuten pantalla taacutectil se realiza en la clase WorldGameController en el meacutetodollamado handleInput a su vez cada personaje(character) y enemigo(NPC) gestiona su propiaentrada de eventos a traveacutes de los meacutetodos sobre escritos touchDown fling y tap Ver ilustracioacuten30 clases Sheep y Wolf

Proceso Este apartado realiza la loacutegica del videojuego y es responsable de esto el meacutetodoupdate de la clase WorldGameController Dentro de este meacutetodo existe implementada lamaquina de estados descrita en el apartado 231 con todos los estados posibles que el juegopuede tener durante su ciclo de vida los estados son READYGAMEPAUSEGAME OVER Cadapersonaje y enemigo lleva implementado su propia loacutegica y maquina de estados dentro de susclases correspondientes Ver ilustracioacuten 30 clases Sheep y Wolf estas maacutequinas de estados sonlas descritas en los apartados 232 y 233 respectivamente

Salida La salida descrita en el apartado 53 queda recogida en la clase GameScreen Verilustracioacuten 31

Finalizacioacuten La finalizacioacuten liberacioacuten de recursos queda a cargo del meacutetodo sobre escrito hiderepartido por las distintas clases de la aplicacioacuten

Otras clases que intervienen en el ciclo de juego recogidas en la ilustracioacuten 28 sonCounterTime GamePreferences AudioManager a continuacioacuten se detalla la funcionalidad decada una de ellas

CounterTime Esta clase engloba el calculo de tiempo transcurrido desde que empieza el juegohasta que termina hace la funcioacuten de contador de tiempo interno

GamePreferences Esta clase hace persistente la configuracioacuten escogida por el usuario en lasopciones Es posible configurar el juego con o sin sonido al igual que los efectos de audio estaclase es la encargada de guardar esta configuracioacuten aunque abandonemos la aplicacioacuten

Paacutegina 62 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

AudioManager Clase que se encarga tanto de la reproduccioacuten de audio como los efectos desonido es su responsabilidad interrogar la configuracioacuten actual del sonido y efectos paradeterminar si tiene que realizar la reproduccioacuten de audio o efectos asiacute como tambieacuten determinarel volumen del sonido o si un audio hay que reproducirlo de forma ciacuteclica En el listado 543 deeste documento se puede ver el coacutedigo de esta clase como ejemplo de singleton

ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego

Paacutegina 63 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 29 Diagrama de clases Assets

57 Diagrama de clases objetos videojuego

En la ilustracioacuten 30 de este documento se detalla el diagrama de clases referente a los objetosdel videojuego Por objetos se entiende personaje principal enemigos juntamente con todos loselementos que forman el conjunto del escenario del videojuego

En primer lugar cabe destacar la existencia de la clase abstracta AbstractGameObject Estaclase abstracta define los meacutetodos comunes de todos los objetos del juego Por las necesidadesde implementacioacuten no se han definido meacutetodos abstractos no obstante la clase se define comoabstracta ya que va a ser la superclase de todos los objetos del videojuego y por tanto no se van arealizar instancias de esta A continuacioacuten se enumeran las clases que se extienden de esta y querecogen todos los objetos del juego ya sean con o sin interaccioacuten en el

Paacutegina 64 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaGrass Hole Flower Flowers Stump ForestLeft ForestRight ThePen WoodFenceForestWoodFencePen DoorPen BorderGrassLeft BorderGrassRight PotionPurple AubergineRedPuddle Tree GrassField

Estas clases corresponden a los objetos que constituyen el escenario del videojuego Las clasesSheep y Wolf corresponden al personaje del videojuego y a los enemigos respectivamente estasclases no solamente contienen el meacutetodo para ser dibujadas en pantalla igual que las anterioressino que tambieacuten poseen toda la loacutegica para el comportamiento de cada una de ellas este puntocorresponderiacutea a la fase de proceso de la estructura baacutesica de un videojuego detallada en elpunto 53 de este documento Existe para cada personaje y enemigo una maquina de estadosimplementada que indica en que estado se encuentra en cada momento aplicando la loacutegicacorrespondiente para ese estado Ver las enumeraciones SHEEP_STATE y WOLF_STATE de lailustracioacuten 30 estas corresponden a las maacutequinas de estado definidas en los apartados 232 y233 respectivamente

Finalmente en la ilustracioacuten 30 aparecen las clases GameScreen y WorldGameController

La clase GameScreen como se vera en el apartado 58 es la clase que engloba todo lorelacionado con la pantalla del juego o nivel En ella se instancian todos los objetos descritosanteriormente para la creacioacuten del nivel asiacute como tambieacuten la creacioacuten de la GUI del videojuegobotones textos sobreimpresos y cajas de textos Es por este motivo que en la clase GameScreenexisten dependencias u asociaciones hacia todos los objetos dependiendo del tipo de declaracioacutende estos

La clase WorldGameController contiene la implementacioacuten de gran parte de la loacutegica delvideojuego esta clase formariacutea parte de la etapa de proceso dentro de la estructura baacutesica de unvideojuego descrita en el apartado 53 de este documento

Existe tambieacuten en esta clase una asociacioacuten hacia la clase GameScreen ya que des de la claseWorldGameController que es donde se encuentra gran parte de la loacutegica es necesario accedera la instancia de GameScreen para interactuar con varios elementos visuales que manipulan laloacutegica del videjuego

En la siguiente hoja se muestra la ilustracioacuten 30 correspondiente a todo los descrito en esteapartado

Paacutegina 65 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 30 Diagrama de clases objetos

Paacutegina 66 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

58 Diagrama de clases pantallas videojuego

En la ilustracioacuten 31 quedan recogidas todas las clases que intervienen en la creacioacuten depantallas del videjuego por pantallas se entine la pantalla de intro la del menuacute principal la deopciones etc Estas clases engloban todo lo necesario para la construccioacuten y visualizacioacuten deestas A continuacioacuten se detallan cada una de las clases

AbstractGameScreen Esta clase abstracta recoge todos los meacutetodos abstractos que sonimplementados en cada una de las clases que a continuacioacuten se detallan(pantallas) con la loacutegicanecesaria seguacuten las necesidades de cada pantalla No se crea ninguna instancia de esta clase

IntroScreen Corresponde a la pantalla de intro del videojuego descrita en el apartado 4331

MenuScreen Corresponde a la pantalla del menuacute inicial del juego des de aquiacute podemos escogersi jugar consultar la tabla de puntuaciones local ir a las opciones o a la pantalla de ayuda delvideojuego descrita en el apartado 4332 OptionsScreenPantalla de opciones descrita en el apartado 4333

CreditsScreen Pantalla de creacuteditosdescrita en el apartado 4334

HighScoresScreen Pantalla en donde se recoge la puntuacioacuten local del videojuegodescrita en elapartado 4335

GameScreen Pantalla general esta clase engloba toda la loacutegica del nivel del juego a su vezengloba la pantalla inicial de nivel READY la pantalla de pausa del juego y la de game overdescritas en los apartados 4336 4337 4338 4339

HowToPlayScreen El videojuego dispone de un tutorial in game que solo aparece la primera vezque jugamos a el y en las siguientes partidas ya no vuelve aparecer maacutes descrita en el apartado43311 No obstante existe una pantalla en donde podemos ver este tutorial fuera del juego estaclase esta destinada a contener los datos de esta pantalla descrita en el apartado 43310

TextGUI Esta clase contiene todos los textos sobreimpresos que existen en el videojuego En ellaesta la loacutegica de cada uno de estos textos para que sean posicionados y visualizados desde lasdistintas partes del videojuego

TUTORIAL_INGAME_STATE Esta enumeracioacuten enumera los estados de la maquina de estadosutilizada para mostrar el tutorial in game dentro del videojuego la primera vez que jugamos lamaacutequina de estados esta implementada dentro de la clase TextGUI la maacutequina corresponde a ladescrita en el apartado 234

En la siguiente hoja se muestra la ilustracioacuten correspondiente a todo los descrito en esteapartado

Paacutegina 67 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 31 Diagrama de clases pantallas

Paacutegina 68 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

59 Configurar el entorno de desarrollo

Antes de empezar a desarrollar juegos con libGDX es necesario instalar y configurar el entornode desarrollo Para ello se utilizaraacute Eclipse como entorno de desarrollo integrado IDE A su vez secreara un proyecto que nos serviraacute como base para el desarrollo de este

Es posible desarrollar con otros entornos distintos a Eclipse pero el hecho que Eclipse sea elentrono de desarrollo soportado oficialmente ha sido motivo suficiente para escogerlo para esteproyecto como entorno de desarrollo

591 Instalacioacuten

Para poder instalar el entorno de desarrollo nos haraacute falta primero instalar el Java DevelopmentKit(JDK) para posteriormente poder instalar eclipse

Una vez instalados seraacute necesario bajar el framework libGDX del siguiente enlace

httplibgdxbadlogicgamescomdownloadhtml

Tambieacuten sera necesario instalar el Android SDK seguidamente tendremos que ejecutar eclipse yinstalar los plugins necesarios para poder desarrollar con Android El plugin necesario paradesarrollar con Eclipse sobre Android de llama ADT (Android Developer Tools) Para instalar esteplugin debemos dirigirnos a Help--gtInstall new software tal y como muestra la siguiente ilustracioacuten

ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse

Paacutegina 69 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez el entorno de desarrollo preparado seraacute el momento de descomprimir el frameworklibGDX se recomienda descomprimirlo en la raiacutez ClibGDX en esta caso ya que trabajamos bajoWindows

Una vez descomprimido dentro de la la carpeta encontramos una aplicacioacuten llamada gdx-setup-uijar Esta aplicacioacuten nos ayuda a crear un proyecto ya configurado con las libreriacuteas necesariaslisto para ser importado a Eclipse y empezar a desarrollar con libGDX para Android O paracualquier otra de las plataformas soportadas por el framework En este caso se configura elproyecto para Android y para Escritorio de esta manera podremos verificar durante el desarrollodel proyecto los avances sin necesidad de instalarlo en un dispositivo Android ya sea fiacutesico ovirtual

Las siguientes ilustraciones muestran la configuracioacuten a realizar

ilustracioacuten 33 Creacioacuten proyecto libGDX Habraacute que pulsar en el botoacuten Create y con ello accederemos a la siguiente ilustracioacuten

ilustracioacuten 34 Creacioacuten proyecto libGDX

Paacutegina 70 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez configuradas todas las opciones le daremos al paso 4 Open the generation screen ygeneraremos el proyecto Esto proyecto sera importable a eclipse desde la opcioacuten Import delpropio IDE La configuracioacuten del proyecto tambieacuten es posible hacerla a mano no obstante esta aplicacioacutennos ahorra tiempo y posibles errores en el momento de configurarlo dentro del entorno ya quepara hacerlo a mano existen distintos pasos a seguir para conseguir lo mismo que se consiguecon esta aplicacioacuten con escasos clicks de ratoacuten

510 Traspaso del disentildeo a texturas

Todo el disentildeo realizado en el apartado 4 seraacute necesario pasarlo a texturas para posteriormenteutilizarlo en la implementacioacuten del juego como recursos graacuteficos

Una textura es una imagen digital cualquiera en cualquiera de los formatos habituales jpg pnggif tga etc Para poderla cargar dentro de un videojuego y manipularla haraacute falta una libreriacuteaespecializada para ello esto se podria programar para para el caso de este proyecto utilizamos elpropio framework libGDX para realizar esta tarea que a su vez envuelve el uso de OpenGL

Las texturas en OpenGL deben ser siempre potencias de 2163264128256 etc del contrarionos daraacute problemas y no funcionaraacute

El primer paso sera desmontar todas las capas pieza por pieza por decirlo de alguna manera ycrear ficheros de cada una de las capas de forma separada para guardarlas todas en una carpetacon un nombre identificativo Ver la siguiente ilustracioacuten

ilustracioacuten 35 Capas separadas por imaacutegenes

Paacutegina 71 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez realizado este paso deberemos juntarlas todas de nuevo en una uacutenica textura que seapotencia de 2 Trataacutendose de un juego para moacutevil las texturas no deberiacutean ser mayores de1024x1024 y no se podraacuten cargar muchas de ellas en memoria por razones obvias de recursosdel tipo de dispositivo

Para juntarlas utilizaremos una aplicacioacuten llamada Texture Packer esta nos juntara las texturasde repartieacutendola de forma que quepan en una tamantildeo de textura definido que en este caso serade 1024x1024 en caso de caber en una uacutenica textura el programa generara 2 texturas siempreoptimizadas a potencias de 2 La siguiente ilustracioacuten muestra el programa Texture packer

Ilustracioacuten 36 Texture packer El formato de salida de las textura sera png ya que necesitamos mantener el canal alpha deestas activado para los objetos sean correctamente dibujados en la escena del videojuego

Conjuntamente con la textura la aplicacioacuten nos generara un archivo de texto que contendraacute elnombre de la textura y la posicioacuten donde se encuentra dentro de la textura generada de1024x1024 Ver la siguiente ilustracioacuten en la siguiente paacutegina

Paacutegina 72 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 37 Posicioacuten texturas De esta manera podremos cargar las texturas en la fase inicializacioacuten en la clase Assets descritaen la ilustracioacuten 29 en forma de diagrama de clases

511 Implementacioacuten de las maacutequinas de estado

La implementacioacuten de las maacutequinas de estado se realiza con una estructura enumconjuntamente con una estructura switch case El siguiente listado muestra la declaracioacuten del laestructura enum implementada en la clase WorldGameController la implementacioacuten de todas lasmaacutequinas se realiza del mismo modo por tanto se toma esta como ejemplo en representacioacuten detodas las implementadas en el videojuego

Listado 5111

1 private enum GAME_STATE READYGAMEPAUSEGAME_OVER2 private GAME_STATE gameState34 gameState = GAME_STATEREADY

Paacutegina 73 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLa siguiente tabla muestra un trozo de la estructura switch case implementada en el meacutetodoupdate de la clase WorldGameController

Listado 5112

1 public void update(float deltaTime)2 3 switch(gameState)4 5 case READY6 if(audioReady) 7 AudioManagerinstancePlaySound(Assetsinstancesoundready 8 ConstantsVOLUME_AUDIO_EFFECTS)9 audioReady = false10 11 if(timeLeftShowReadyScreen gt 0)12 13 if(deltaTime lt 03f ) 14 timeLeftShowReadyScreen -=deltaTime15 16 if(timeLeftShowReadyScreen lt 0)17 18 gameScreensetVisibilityGUI()19 timeLeftShowReadyScreen = 020 CounterTimeinstancestartTime()21 22 AudioManagerinstancePlayMusic(Assetsinstancemusiclevel01 23 ConstantsVOLUME_MUSIC_GAME true)24 gameState = GAME_STATEGAME 2526 27 28 break 29 case GAME30 updateGame() 31 if(timeOpenDoorPen gt 0)32 33 if(deltaTime lt 03f ) 34 timeOpenDoorPen -= deltaTime35 36 if(timeOpenDoorPen lt= 0) 37 gameScreengetDoorPen()setVisibility(gameScreengetDoorPen()getVisibility())38

En este listado podemos ver el estado READY y un trozo del estado GAME de la maacutequina deestados definida en el apartado 231 de este documento inicialmente la maacutequina toma el estadoREADY como se puede ver en la linea 4 del listado 5111 este estado se ira repitiendo a cadavuelta del ciclo de vida del videojuego hasta que cambie el estado de juego a GAME estosucederaacute una vez transcurridos 3 segundos tal y como se puede ver en la linea 24 del listado5112 Hay que tener en cuenta que un videojuego tal y como se ha definido en el apartado 522de este documento forma un bucle infinito por tanto la funcioacuten update de la linea 1 de este listadose repetiraacute de forma indefinida durante la ejecucioacuten del nivel de juego y cada vuelta ejecutaraacute elestado en que se encuentre la maacutequina de estados

Paacutegina 74 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6Conclusiones El desarrollo del proyecto ha sido tal y como se esperaba en lineas generales no han habidograndes desviaciones de tiempo ni durante el disentildeo ni en el posterior desarrollo de este Cabedestacar que el hecho de poder probar el proyecto ejecutaacutendolo en la propia maacutequina donde se hadesarrollado sin tener que utilizar un dispositivo real o virtual cada vez que se ha querido verificarha hecho que el desarrollo sea mucho maacutes fluido que sino se hubiera contado con el escenariodescrito Esto no significa que en ciertos momentos del desarrollo no se haya probado con undispositivo real Android Dejando a parte la gran ventaja que esto significa ya que una vezdesarrollado el esfuerzo realizado nos sirve para distintas plataformas casi sin tener que tocarnada del coacutedigo

Por tanto el hecho de haber escogido libGDX para el desarrollo ha sido una buena eleccioacuten Estambieacuten una buena eleccioacuten escoger un framework o un motor focalizado al desarrollo devideojuegos si se quiere implementar uno ya sea para Android o para cualquier plataforma

Existe la posibilidad de desarrollarlo sin ninguacuten tipo de framework o motor pero hay que tenerclaro que se quiere hacer exactamente y a donde se quiere llegar es decir si lo que se quiere escentrarse en la programacioacuten de videojuegos es mucho mejor partir de un framework o motor yaque de esta forma nos desligamos de programar ciertos apartados que estaacuten maacutes focalizados a laprogramacioacuten de frameworks o motores para videojuegos que no a la programacioacuten devideojuegos en si

Yendo maacutes allaacute de donde el programador se quiere centrar existe otro factor importante a teneren cuenta en el momento de plantear un proyecto llamado tiempo con el tiempo de que se hadispuesto para este proyecto queda auacuten maacutes justificado la eleccioacuten de este framework pararealizarlo Ya que probablemente sin el debido al esfuerzo mayor en programar apartados que noson exclusivos del videojuego pudieran haber existido desviaciones de tiempo importantes enrelacioacuten al calendario propuesto

Ha quedado fuera del proyecto por temas de tiempo realizar animaciones a todos los personajesdel videojuego para conseguir una mejor experiencia de usuario y un nivel de acabado superiorFuera del proyecto tambieacuten ha quedado la implementacioacuten no solo de unas puntuacionesmaacuteximas a nivel local sino tambieacuten unas a nivel mundial consultables a traveacutes de una paacutegina webA su vez no solo guardariacutea la puntuacioacuten maacutexima sino tambieacuten el tiempo jugado las ovejassalvadas y los lobos ahuyentados Tambieacuten ha quedado fuera de este proyecto la realizacioacuten deun blog dedicado al videojuego Todos estos apartados se implementaran en breve fuera de esteTFC

7Recursos utilizados

71 Portada documento

Jake Maymar httpwwwflickrcomphotosmaymar5334789030httpcreativecommonsorglicensesby-sa20deeden

72 Recursos utilizados para el disentildeo del videojuego

Para realizar todo el disentildeo visual del videojuego se ha recurrido a diferentes fuentes de arte

Paacutegina 75 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriasujetas a licencias creative commons y dominio puacuteblico A continuacioacuten se detalla una lista decada recurso con su autor en el caso de que no haya sido publicado de forma anoacutenimajuntamente con el link donde se ha encontrado

721 Fotografiacutea pantalla intro videojuego y usuarios

Michael Karrerhttpwwwflickrcomphotosmichael_karrer78438470httpcreativecommonsorglicensesby-nc20deeden

Jodi Womackhttpwwwflickrcomphotosjodiwomack6217578512httpcreativecommonsorglicensesby20deeden

Tony Alterhttpwwwflickrcomphotos78428166N008279647916httpcreativecommonsorglicensesby20deeden

Gage Skidmore (Nina Dobrev)httpwwwflickrcomphotosgageskidmore5980906910httpcreativecommonsorglicensesby-sa20deeden

722 Iconos y botones

7221 Altavoz

Autor httpwwwiconshockcom Link httpswwwiconfindercomicons67771audio_speaker_iconsize=128Licencia Free for commercial use

7222 Nota Musical

Autor httpwwwdezinerfoliocomLink httpswwwiconfindercomicons58679music_iconsize=128Licencia Free for commercial use

7223 Flecha salida

Autorhttptayteldeviantartcom Linkhttpswwwiconfindercomicons41696arrow_back_grey_left_orange_iconsize=128LicenciaFree for commercial use (Include link to authors website) 7224 Icono de pausa

AutorhttpwwwwebdesignerdepotcomLink httpswwwiconfindercomicons40716blue_button_pause_iconsize=64Licencia Free for commercial use

7225 Icono interrogante (help)

AutorhttpwwwdoublejdesigncoukLinkhttpwwwiconarchivecomshowravenna-3d-icons-by-double-j-designHelp-iconhtml

Paacutegina 76 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLicencia httpcreativecommonsorglicensesby30

7226 Botones (Play Score Options)

AutorydLinkhttpopengameartorgcontentbuttons-variationsLicenciahttp creativecommonsorgpublicdomainzero10

723 Recursos graacuteficos 2D componentes escenario

7231 Ojos lobos

AutorCreek23Link httpopengameartorgcontentgnu-the-gnu-mascotLicencia httpcreativecommonsorglicensesby-sa30

7232 Ovejas y lobos

Autor lemmlingLink httpopenclipartorguser-clipartslemmlingLicencia httpopenclipartorgshare

7233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY

AutorSamLink httpopengameartorgcontentcountry-fieldLicencia httpcreativecommonsorgpublicdomainzero10

7234 Escenario

Daniel EddelandLinkhttpopengameartorgcontentlpc-farming-tilesets-magic-animations-and-ui-elementsLicenciahttpcreativecommonsorglicensesby-sa30

724 Fuentes

7241 ThinckheadAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10 7242 MisfortuneAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7243 TabaqueraAutor deFharoLink httpwwwdafontcomesfernando-harod3419l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7244 Press Start Font

Paacutegina 77 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAutor desconegutLink httpwwwzone38netfontpressstartLicencia httpscriptssilorgcmsscriptspagephpsite_id=nrsiampid=OFL

725 Otros

Todos los demaacutes recursos no nombrados en esta lista como el fondo de pantalla del menuacuteprincipal de inicio del juego y las letras del titulo del juego Fling the sheep impresas sobre lapantalla del menuacute inicial son de elaboracioacuten propia

726 Audio y efectos de sonido

7261 Menu

Autor mrpolyLinkhttpopengameartorgcontentmenu-musicLicencia httpcreativecommonsorgpublicdomainzero10

7262 Game Over

Autor MacroLinkhttpopengameartorgcontentrest-outro-loopLicenciahttpcreativecommonsorglicensesby30

7263 Game Play

AutorRezonerLinkhttpopengameartorgcontenttrance-menuLicenciahttpcreativecommonsorglicensesby30

7264 Creacutedits

Autor -Linkhttpopengameartorgcontent1-minute Licenciahttpcreativecommonsorgpublicdomainzero10

7265 Ready

httpopengameartorgcontentui-accept-or-forwardhttpcreativecommonsorglicensesby30

7266 Pause_Resume

httpopengameartorgcontentcompletion-sound httpcreativecommonsorglicensesby30

7267 Quit

httpopengameartorgcontentfly-swatter-squish-sound httpcreativecommonsorgpublicdomainzero10

7268 Sheep

Paacutegina 78 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

httpopengameartorgcontentsheep-sound-bleats-yo-frankiehttpcreativecommonsorglicensesby30

El resto de efectos de audio han sido obtenidos de la siguiente paacutegina httpwwwpond5com

8Lineas abiertas del proyecto Se haraacute un repaso del proyecto por si existe alguacuten bug para solucionarlo Posteriormente deadaptara para que sea funcional en distintas resoluciones de pantalla Se antildeadiraacuten los power-upsque se definieron al principio del proyecto por temas de tiempo han quedado fuera de la entregaA su vez se balanceara el gameplay antildeadiendo alguna mecaacutenica de juego extra si procede

Se publicara el juego en Google Play y se creara un blog del juego se mirara la posibilidad dehacer funcionar el juego en el blog con webGL httpprojects3cometcom

Se ampliara la tabla de puntuaciones de la siguiente manera la tabla no solamente guardara lospuntos tambieacuten guardara el tiempo jugado nuacutemero de lobos ahuyentados nuacutemero de ovejassalvadas y nombre del usuario con 5 caracteres Se creara un un registro de puntuaciones globalconsultable desde el blog del videojuego

Finalmente se crearan maacutes niveles de juego con distribuciones diferentes alguacuten nivel podriacuteatambieacuten tener mecaacutenicas diferentes de juego con los mismos personajeshellip

9Bibliografiacutea utilizada

Titulo Beginning Android Games (Second Edition) ISBN 978-1-43024-677-0

Autor Mario Zechner Robert Green

Editorial Apress

Contenido Desarrollo de videojuegos para Android

Titulo Learning libGDX Game Development ISBN 978-1-78216-604-7

Autor Andreas Oehlke

Editorial PACKT Publishing

Contenido Desarrollo de videojuegos para Android con libGDX

Paacutegina 79 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

10Otros proyectos realizados

101 Remake Gradius Konami

Remake del famoso shooter de Konami lanzado para ordenadores MSX en 1986 programadocon C++ con SDL Aunque este juego existe para multitud de plataformas Ver articulo wikipedia

httpeswikipediaorgwikiGradius_videojuego

Blog del proyecto httpprojects3cometcom

102 Tales of Nimria mini RPG

Mini RPG en 2D programado en C++ con DirectX este mini RPG trata de salvar a una princesacapturada por unas malvadas criaturas

Blog del proyecto httpprojects3cometcom

102 Motocalipsis Bar 66 RTS RTS en 3D con ambiente motero los hechos de la historia suceden en un pequentildeo pueblo deTexas Programado en Unity con C

Blog del proyecto httpmotocalipsisbar66blogspotcomes

Paacutegina 80 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Creative Commons 40 license by-nc-sa

Attribution-NonCommercial-ShareAlike 40 International

===========================================================

Creative Commons Corporation (Creative Commons) is not a law firm anddoes not provide legal services or legal advice Distribution ofCreative Commons public licenses does not create a lawyer-client orother relationship Creative Commons makes its licenses and relatedinformation available on an as-is basis Creative Commons gives nowarranties regarding its licenses any material licensed under theirterms and conditions or any related information Creative Commonsdisclaims all liability for damages resulting from their use to thefullest extent possible

Using Creative Commons Public Licenses

Creative Commons public licenses provide a standard set of terms andconditions that creators and other rights holders may use to shareoriginal works of authorship and other material subject to copyrightand certain other rights specified in the public license below Thefollowing considerations are for informational purposes only are notexhaustive and do not form part of our licenses

Considerations for licensors Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights Our licenses are irrevocable Licensors should read and understand the terms and conditions of the license they choose before applying it Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected Licensors should clearly mark any material not subject to the license This includes other CC- licensed material or material used under an exception or limitation to copyright More considerations for licensors wikicreativecommonsorgConsiderations_for_licensors

Considerations for the public By using one of our public licenses a licensor grants the public permission to use the licensed material under specified terms and conditions If the licensors permission is not necessary for any reason--for example because of any applicable exception or limitation to copyright--then that use is not regulated by the license Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant Use of

Paacutegina 81 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria the licensed material may still be restricted for other reasons including because others have copyright or other rights in the material A licensor may make special requests such as asking that all changes be marked or described Although not required by our licenses you are encouraged to respect those requests where reasonable More_considerations for the public wikicreativecommonsorgConsiderations_for_licensees

===========================================================

Creative Commons Attribution-NonCommercial-ShareAlike 40 InternationalPublic License

By exercising the Licensed Rights (defined below) You accept and agreeto be bound by the terms and conditions of this Creative CommonsAttribution-NonCommercial-ShareAlike 40 International Public License(Public License) To the extent this Public License may beinterpreted as a contract You are granted the Licensed Rights inconsideration of Your acceptance of these terms and conditions and theLicensor grants You such rights in consideration of benefits theLicensor receives from making the Licensed Material available underthese terms and conditions

Section 1 -- Definitions

a Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated altered arranged transformed or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor For purposes of this Public License where the Licensed Material is a musical work performance or sound recording Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image

b Adapters License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License

c BY-NC-SA Compatible License means a license listed at creativecommonsorgcompatiblelicenses approved by Creative Commons as essentially the equivalent of this Public License

d Copyright and Similar Rights means copyright andor similar rights closely related to copyright including without limitation performance broadcast sound recording and Sui Generis Database

Paacutegina 82 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Rights without regard to how the rights are labeled or categorized For purposes of this Public License the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights

e Effective Technological Measures means those measures that in the absence of proper authority may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20 1996 andor similar international agreements

f Exceptions and Limitations means fair use fair dealing andor any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material

g License Elements means the license attributes listed in the name of a Creative Commons Public License The License Elements of this Public License are Attribution NonCommercial and ShareAlike

h Licensed Material means the artistic or literary work database or other material to which the Licensor applied this Public License

i Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license

j Licensor means the individual(s) or entity(ies) granting rights under this Public License

k NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation For purposes of this Public License the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange

l Share means to provide material to the public by any means or process that requires permission under the Licensed Rights such as reproduction public display public performance distribution dissemination communication or importation and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them

Paacutegina 83 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria m Sui Generis Database Rights means rights other than copyright resulting from Directive 969EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases as amended andor succeeded as well as other essentially equivalent rights anywhere in the world

n You means the individual or entity exercising the Licensed Rights under this Public License Your has a corresponding meaning

Section 2 -- Scope

a License grant

1 Subject to the terms and conditions of this Public License the Licensor hereby grants You a worldwide royalty-free non-sublicensable non-exclusive irrevocable license to exercise the Licensed Rights in the Licensed Material to

a reproduce and Share the Licensed Material in whole or in part for NonCommercial purposes only and

b produce reproduce and Share Adapted Material for NonCommercial purposes only

2 Exceptions and Limitations For the avoidance of doubt where Exceptions and Limitations apply to Your use this Public License does not apply and You do not need to comply with its terms and conditions

3 Term The term of this Public License is specified in Section 6(a)

4 Media and formats technical modifications allowed The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created and to make technical modifications necessary to do so The Licensor waives andor agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights including technical modifications necessary to circumvent Effective Technological Measures For purposes of this Public License simply making modifications authorized by this Section 2(a) (4) never produces Adapted Material

5 Downstream recipients

a Offer from the Licensor -- Licensed Material Every recipient of the Licensed Material automatically

Paacutegina 84 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License

b Additional offer from the Licensor -- Adapted Material Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapters License You apply

c No downstream restrictions You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material

6 No endorsement Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are or that Your use of the Licensed Material is connected with or sponsored endorsed or granted official status by the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i)

b Other rights

1 Moral rights such as the right of integrity are not licensed under this Public License nor are publicity privacy andor other similar personality rights however to the extent possible the Licensor waives andor agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights but not otherwise

2 Patent and trademark rights are not licensed under this Public License

3 To the extent possible the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme In all other cases the Licensor expressly reserves any right to collect such royalties including when the Licensed Material is used other than for NonCommercial purposes

Paacutegina 85 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 3 -- License Conditions

Your exercise of the Licensed Rights is expressly made subject to thefollowing conditions

a Attribution

1 If You Share the Licensed Material (including in modified form) You must

a retain the following if it is supplied by the Licensor with the Licensed Material

i identification of the creator(s) of the Licensed Material and any others designated to receive attribution in any reasonable manner requested by the Licensor (including by pseudonym if designated)

ii a copyright notice

iii a notice that refers to this Public License

iv a notice that refers to the disclaimer of warranties

v a URI or hyperlink to the Licensed Material to the extent reasonably practicable

b indicate if You modified the Licensed Material and retain an indication of any previous modifications and

c indicate the Licensed Material is licensed under this Public License and include the text of or the URI or hyperlink to this Public License

2 You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium means and context in which You Share the Licensed Material For example it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information 3 If requested by the Licensor You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable

Paacutegina 86 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria b ShareAlike

In addition to the conditions in Section 3(a) if You Share Adapted Material You produce the following conditions also apply

1 The Adapters License You apply must be a Creative Commons license with the same License Elements this version or later or a BY-NC-SA Compatible License

2 You must include the text of or the URI or hyperlink to the Adapters License You apply You may satisfy this condition in any reasonable manner based on the medium means and context in which You Share Adapted Material

3 You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to Adapted Material that restrict exercise of the rights granted under the Adapters License You apply

Section 4 -- Sui Generis Database Rights

Where the Licensed Rights include Sui Generis Database Rights thatapply to Your use of the Licensed Material

a for the avoidance of doubt Section 2(a)(1) grants You the right to extract reuse reproduce and Share all or a substantial portion of the contents of the database for NonCommercial purposes only

b if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material including for purposes of Section 3(b) and

c You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database

For the avoidance of doubt this Section 4 supplements and does notreplace Your obligations under this Public License where the LicensedRights include other Copyright and Similar Rights

Paacutegina 87 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 5 -- Disclaimer of Warranties and Limitation of Liability

a UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR TO THE EXTENT POSSIBLE THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL WHETHER EXPRESS IMPLIED STATUTORY OR OTHER THIS INCLUDES WITHOUT LIMITATION WARRANTIES OF TITLE MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE NON-INFRINGEMENT ABSENCE OF LATENT OR OTHER DEFECTS ACCURACY OR THE PRESENCE OR ABSENCE OF ERRORS WHETHER OR NOT KNOWN OR DISCOVERABLE WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART THIS DISCLAIMER MAY NOT APPLY TO YOU

b TO THE EXTENT POSSIBLE IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING WITHOUT LIMITATION NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT SPECIAL INDIRECT INCIDENTAL CONSEQUENTIAL PUNITIVE EXEMPLARY OR OTHER LOSSES COSTS EXPENSES OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES COSTS EXPENSES OR DAMAGES WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART THIS LIMITATION MAY NOT APPLY TO YOU

c The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that to the extent possible most closely approximates an absolute disclaimer and waiver of all liability

Section 6 -- Term and Termination

a This Public License applies for the term of the Copyright and Similar Rights licensed here However if You fail to comply with this Public License then Your rights under this Public License terminate automatically

b Where Your right to use the Licensed Material has terminated under Section 6(a) it reinstates

1 automatically as of the date the violation is cured provided it is cured within 30 days of Your discovery of the violation or

2 upon express reinstatement by the Licensor

For the avoidance of doubt this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License

Paacutegina 88 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

c For the avoidance of doubt the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time however doing so will not terminate this Public License

d Sections 1 5 6 7 and 8 survive termination of this Public License

Section 7 -- Other Terms and Conditions

a The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed

b Any arrangements understandings or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License

Section 8 -- Interpretation

a For the avoidance of doubt this Public License does not and shall not be interpreted to reduce limit restrict or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License

b To the extent possible if any provision of this Public License is deemed unenforceable it shall be automatically reformed to the minimum extent necessary to make it enforceable If the provision cannot be reformed it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions

c No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor

d Nothing in this Public License constitutes or may be interpreted as a limitation upon or waiver of any privileges and immunities that apply to the Licensor or You including from the legal processes of any jurisdiction or authority

===========================================================

Paacutegina 89 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaCreative Commons is not a party to its public licensesNotwithstanding Creative Commons may elect to apply one of its publiclicenses to material it publishes and in those instances will beconsidered the Licensor Except for the limited purpose of indicatingthat material is shared under a Creative Commons public license or asotherwise permitted by the Creative Commons policies published atcreativecommonsorgpolicies Creative Commons does not authorize theuse of the trademark Creative Commons or any other trademark or logoof Creative Commons without its prior written consent includingwithout limitation in connection with any unauthorized modificationsto any of its public licenses or any other arrangementsunderstandings or agreements concerning use of licensed material Forthe avoidance of doubt this paragraph does not form part of the publiclicenses

Creative Commons may be contacted at creativecommonsorg

Paacutegina 90 de 102

Page 2: Universitat Oberta de Catalunya UOC Ingeniería técnica en

Universitat Oberta de Catalunya UOCUniversitat Oberta de Catalunya UOC

Ingenieriacutea teacutecnica en informaacutetica de sistemasIngenieriacutea teacutecnica en informaacutetica de sistemas

Proyecto fin de carrera - Desarrollo deProyecto fin de carrera - Desarrollo deaplicaciones para dispositivos moacuteviles (Android)aplicaciones para dispositivos moacuteviles (Android)

Desarrollo de videojuegos para Android conDesarrollo de videojuegos para Android conlibGDXlibGDX

(Casual games)(Casual games)Fling the sheepFling the sheep

httpprojects3cometcomhttpprojects3cometcom

Consultores Marc Domingo PrietoConsultores Marc Domingo Prieto Jordi Almirall Loacutepez Jordi Almirall Loacutepez

Autor Xavier Figuera AlberichAutor Xavier Figuera Alberich Correo xfiguerauocedu Correo xfiguerauocedu

Sabadell 31 de Diciembre de 2013Sabadell 31 de Diciembre de 2013

A mi pareja Remei Soleacute por su paciencia y apoyo durante estosuacuteltimos meses y siempre sin ella no hubiera sido posible llegarhoy a escribir estas lineas te quiero

A la vida por haberme brindado la posibilidad de poder hacer loque realmente siento dentro de mi

Licencia This document Fling the sheep casual game for Andorid with libGDX (c) 2013 by Xavier Figuera Alberich

This document Fling the sheep casual game for Andorid with libGDX is licensed under aCreative Commons Attribution-NonCommercial-ShareAlike 40 International License

You should have received a copy of the license along with thiswork If not see lthttpcreativecommonsorglicensesby-nc-sa40gt

Resumen

Android es un sistema operativo con nuacutecleo monoliacutetico basado en el kernel de Linux version 26que fue lanzado al mercado el 23 de septiembre de 2008 Disentildeado principalmente paradispositivos moacuteviles con pantalla taacutectil como pueden ser Smartphones o tabletas Esta disponiblegratuitamente para un uso comercial o no comercial El nuacutecleo esta escrito en C algunas de laslibreriacuteas de terceros estaacuten escritas en C++ y su interfaz de usuario esta escrita en Java Soportadistintas estructuras de procesador entre ellas ARM x86 MIPS y IBM POWER no obstante laarquitectura utilizada mayoritariamente son los procesadores ARM Esta publicado bajo la licenciaApache 20 y GNU GPL2 En el momento de escribir este documento su versioacuten actual es la Android 43 Jelly Bean(Gominola) y se encuentra en permanente desarrollo El primer moacutevil con Android fue el HTCDream que se comercializo por primera vez en Octubre de 2008

Android fue desarrollado inicialmente por la compantildeiacutea Android Inc esta estuvo financiada porGoogle durante un tiempo hasta que la compantildeiacutea fue adquirida por la multinacionalestadounidense en julio de 2005 Google queriacutea tener presencia en el mercado de los dispositivosmoacuteviles Android fue presentado en 2007 conjuntamente con la fundacioacuten Open Handset AllianceEsta entidad actualmente es un consorcio de 78 compantildeiacuteas de hardware software ytelecomunicaciones dedicadas al desarrollo de estaacutendares abiertos para dispositivos moacutevilesliderada por Google La multinacional estadounidense es el principal desarrollador de Android yaporta el ecosistema necesario para el crecimiento de este No obstante todos los miembros delconsorcio contribuyen de distintas maneras al desarrollo

En el antildeo 2008 salio a la luz la versioacuten 10 de Android En el momento de su aparicioacuten tubo queenfrentarse a las distintas plataformas ya existentes en aquel momento iPhone OS queactualmente es conocido como iOS BlackBerry OS y Windows Phone 7 El crecimiento deAndroid a sido espectacular en estos uacuteltimos antildeos a nivel mundial alcanzoacute una cuota de mercadodel 509 durante el uacuteltimo trimestre de 2011 esto represento maacutes del doble que el sistemaoperativo iOS de Apple Actualmente su cuota de mercado se situacutea en el 744 seguacuten un estudiorealizado por la empresa Gartner Ver la siguiente tabla

El hecho de que Android sea de coacutedigo abierto permite a los fabricantes comercializardispositivos de distintas gamas y precios adaptando ellos mismos el sistema operativo seguacuten lasnecesidades de cada modelo De esta forma se consigue un alcance mayor a distintos niveles depublico esto seria uno de los motivos que ha causado en estos uacuteltimos antildeos el crecimientoespectacular de cuota de mercado llegando casi al 75 actualmente a nivel mundial

Android a sufrido numerosas actualizaciones desde su liberacioacuten cada versioacuten liberada se le ha

dado un nombre de postres en ingles por orden alfabeacutetico

En la siguiente tabla se enumeran las distintas versiones salidas a la luz desde su lanzamientoinicial en el antildeo 2008

Letra Nombre del Postre - Versioacuten

A Apple Pie (v10) Tarta de manzana

B Banana Bread (v11) Pan de plaacutetano

C Cupcake (v15) Panque

D Donut (v16) Rosquilla

E Eacuteclair (v20v21) Pastel franceacutes

F Froyo (v22) (Abreviatura de laquofrozen yogurtraquo) Yogur helado

G Gingerbread (v23) Pan de jengibre

H Honeycomb (v30v31v32) Panal de miel

I Ice Cream Sandwich (v40) Saacutendwich de helado

J Jelly BeanGummy Bear (v41v42v43) Gominola (versioacuten actual)

K KitKat (v44) Kit Kat (versioacuten en desarrollo)

Iacutendice de contenidos1Introduccioacuten1

11 Justificacioacuten y contexto del proyecto112 Descripcioacuten del Proyecto113 Objetivos2

131 Definicioacuten del videojuego 214 Planificacioacuten4

141 Ciclo de vida4142 Planificacioacuten detallada del proyecto4

1411 Anaacutelisis previo planificacioacuten41412 Anaacutelisis de requisitos51413 Disentildeo51414 Implementacioacuten y pruebas61415 Finalizacioacuten6

143 Temporalizacioacuten del proyecto 715 Herramientas y tecnologiacuteas utilizadas916 Riesgos del proyecto10

2 Anaacutelisis funcional1121 Requisitos funcionales casos de uso11

211 Diagrama casos de uso actor ldquoJugadorrdquo11212 Tabla resumen casos de uso12213 Descripcioacuten textual de los casos de uso12

2131 VJ01 Inicio videojuego 122132 VJ02 Jugar 132133 VJ03 Acceder puntuaciones maacuteximas locales 132134 VJ31 Consultar puntuaciones locales 142135 VJ32 Salir puntuaciones locales 142136 VJ04 Acceder a las opciones 152137 VJ41 Activar o desactivar muacutesica o efectos 152138 VJ42 Acceder a la pantalla de creacuteditos 162139 VJ421 Salir de la pantalla de creacuteditos 1621310 VJ05 Acceder a las instrucciones 1721311 VJ51 Salir de las instrucciones 1721312 VJ06 Salir del videojuego 18

214 Diagrama casos de uso actor ldquoIArdquo192141 Diagrama casos de uso IA personaje principal (oveja)19

21411 Tabla resumen casos de uso2021412 Descripcioacuten textual de los casos de uso20

214121 IA03 Salida ovejas al escenario 20214122 IA031 Posicionamiento en pantalla de las oveja 20214123 IA032 Movimiento oveja 21214124 IA033 Oveja pastando21214125 IA034 Lanzamiento oveja22214126 IA035 Rebotes de la oveja 22214127 IA036 La oveja entra en el establo 23214128 IA037 Parar oveja 23

2142 Diagrama casos de uso IA enemigos (lobo)2421421 Tabla resumen casos de uso2421422 Descripcioacuten textual de los casos de uso25

214221 IA02 Salida lobo al escenario 25

i

214222 IA021 Ojos por la derecha o por la izquierda25214223 IA022 Escoge el tipo de lobo26214224 IA023 Lobo por la derecha o por la izquierda26214225 IA024 Salta a escena27214226 IA025 Movimiento lobo27

22 Disentildeo inicial diagrama de clases28221 Diagrama de clases inicial ldquoFling the sheeprdquo 28

2211 Resumen clases videojuego28222 Diagrama de clases inicial de pantallas30

2221 Resumen clases pantallas3023 Definicioacuten de maacutequinas de estado finitas31

231 Maacutequina de estados del videojuego 31232 Maacutequina de estados comportamiento oveja32233 Maacutequina de estados comportamiento lobo33234 Maacutequina de estados tutorial in game34

3 Disentildeo3531 Estudio comparativo35

311 Sheep amp Wolf36312 Sheep Up 37313 Temple Run38314 Attack of the Spooklings39

32 Perfiles de usuarios identificados4033 Contextos de uso42

331 iquest Doacutende 42332 iquest Cuaacutendo 42333 iquest En que entorno 42

4Disentildeo y ldquoConcept Artrdquo4241 Elementos presentes en la interfaz de la aplicacioacuten4242 Flujos de interaccioacuten4343 Prototipaje44

431 Sketches44432 Transiciones definidas entre pantallas47433 Prototipo horizontal de alta fidelidad 48

4331 Pantalla inicial484332 Pantalla menuacute principal del juego484333 Pantalla de opciones494334 Pantalla de creacuteditos494335 Pantalla tabla de puntuaciones504336 Pantalla de juego READY 504337 Pantalla de juego514338 Pantalla de pausa botones RESUME y QUIT524339 Pantalla GAME OVER5243310 Pantalla de instrucciones de juego HOW TO PLAY5343311 Pantalla de instrucciones in game 53

5Implementacioacuten5551 Arquitectura global55

511 Arquitectura del framework libGDX55512 Visioacuten de los moacutedulos de libGDX55

52 Arquitectura de un videojuego56521 Programa vs Aplicacioacuten56

ii

522 Estructura baacutesica de un videojuego5653 Esquema de la estructura baacutesica de un videojuego5854 Patrones de disentildeo59

541 Introduccioacuten59542 Patrones de creacioacuten59543 Singleton59

55 Diagramas de clases definitivos6156 Diagramas nuacutecleo videojuego 6157 Diagrama de clases objetos videojuego6458 Diagrama de clases pantallas videojuego6759 Configurar el entorno de desarrollo69

591 Instalacioacuten 69510 Traspaso del disentildeo a texturas 71511 Implementacioacuten de las maacutequinas de estado 73

6Conclusiones757Recursos utilizados 75

71 Portada documento 7572 Recursos utilizados para el disentildeo del videojuego 75

721 Fotografiacutea pantalla intro videojuego y usuarios 76722 Iconos y botones76

7221 Altavoz767222 Nota Musical767223 Flecha salida767224 Icono de pausa767225 Icono interrogante (help)767226 Botones (Play Score Options)77

723 Recursos graacuteficos 2D componentes escenario777231 Ojos lobos777232 Ovejas y lobos777233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY777234 Escenario77

724 Fuentes777241 Thinckhead777242 Misfortune777243 Tabaquera777244 Press Start Font77

725 Otros78726 Audio y efectos de sonido78

7261 Menu 787262 Game Over787263 Game Play787264 Creacutedits787265 Ready787266 Pause_Resume787267 Quit787268 Sheep78

8Lineas abiertas del proyecto799Bibliografiacutea utilizada 7910Otros proyectos realizados80

101 Remake Gradius Konami80

iii

102 Tales of Nimria mini RPG80102 Motocalipsis Bar 66 RTS80

Creative Commons 40 license by-nc-sa81

Iacutendice de ilustracionesilustracioacuten 1 Ciclo de vida en cascada4ilustracioacuten 11 Calendario proyecto7ilustracioacuten 2 Diagrama de gantt8ilustracioacuten 3 Diagrama de casos de usos actor jugador11ilustracioacuten 4 Diagrama de casos de usos personaje principal19ilustracioacuten 5 Diagrama de casos de usos enemigos24ilustracioacuten 6 Diagrama de clases videojuego28ilustracioacuten 7 Diagrama de clases de pantallas30ilustracioacuten 8 Maacutequina de estados del videojuego 31ilustracioacuten 9 Maacutequina de estados comportamiento oveja 32ilustracioacuten 10 Maacutequina de estados comportamiento lobo 33ilustracioacuten 11 Maacutequina de estados tutorial in game 34ilustraciones 12 y 13 pantallas juego Sheep amp Wolf 36ilustraciones 14 y 15 pantallas juego Sheep Up 37ilustraciones 16 y 17 pantallas juego Temple run38ilustraciones 18 y 19 pantallas juego Attack of the Spooklings39ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitas41ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintas pantallas43ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada44ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada45ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada46ilustracioacuten 241 Transiciones definidas entre pantallas47ilustracioacuten 242 Disentildeo pantallas con Gimp54ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en un videojuego55ilustracioacuten 26 Estructura baacutesica de un videojuego 58ilustracioacuten 27 Singleton59ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego 63ilustracioacuten 29 Diagrama de clases Assets 64ilustracioacuten 30 Diagrama de clases objetos 66ilustracioacuten 31 Diagrama de clases pantallas 68ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse69ilustracioacuten 33 Creacioacuten proyecto libGDX70ilustracioacuten 34 Creacioacuten proyecto libGDX70ilustracioacuten 35 Capas separadas por imaacutegenes71Ilustracioacuten 36 Texture packer 72ilustracioacuten 37 Posicioacuten texturas 73

iv

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

1Introduccioacuten

11 Justificacioacuten y contexto del proyecto

Este trabajo de fin de carrera en adelante TFC se centra en el desarrollo de aplicaciones paradispositivos moacuteviles con sistema operativo Android Actualmente existen multitud de aplicacionesNo obstante este TFC se quiere centrar en un subconjunto de aplicaciones focalizadas alentretenimiento conocidas por todo el mundo como videojuegos

Un videojuego es un software creado para el entretenimiento en general y basado en lainteraccioacuten entre una o varias personas y un aparato electroacutenico que ejecuta dicho videojuego Asiacutepues un videojuego es considerado un software cuyo fin directo es el entretenimiento

En estos uacuteltimos antildeos los smartphones y tabletas se han convertido en las nuevas plataformasmoacuteviles para juegos que compiten con los sistemas portaacutetiles claacutesicos que generalmente tienden aser maacutes cerrados

Los videojuegos se pueden clasificar en distintos geacuteneros estos son una forma de clasificacioacutenque designan un conjunto de videojuegos que poseen una serie de elementos comunes A lo largode la historia de los videojuegos aquellos elementos que han compartido varios de los mismos hanservido para clasificar como un geacutenero a aquellos que les han seguido en estilo y forma de lamisma manera que ha pasado con la muacutesica o el cine Como ejemplo se enumeran algunos de losgeacuteneros maacutes populares Lucha Disparos conocidos como Shooters Sigilo Plataformas ArcadeDeporte etc

Durante mucho tiempo los videojuegos estuvieron reservados para un tipo de usuario muyconcreto con un perfil muy especiacutefico la gran mayoriacutea eran hombres entre 15 y 25 antildeos Saliendode este perfil si se buscaban mujeres o personas mayores de 25 antildeos el nuacutemero de usuarioscaiacutea en picado y es que los videojuegos eran percibidos como el hobby de los adolescentesmasculinos No obstante en los uacuteltimos antildeos se ha visto coacutemo todo esto ha ido cambiando con unaumento tanto del puacuteblico femenino como la aparicioacuten en escena de usuarios con edades maacutesavanzadas

Este cambio ha venido motivado por diferentes motivos evolutivos dentro de la industria delvideojuego Uno de los motivos que ha provocado esto es la aparicioacuten de los teleacutefonos moacutevilesinteligentes tabletas y juegos online junto con gran cantidad de videojuegos de tipo casual Otroclaro motivo es que la mayoriacutea de los que jugaacutebamos hace 25 antildeos pues hoy seguimos jugandoya que hemos crecido con esta cultura y claro esta que a diacutea de hoy ya no tenemos la edad deentonces

12 Descripcioacuten del Proyecto Este proyecto se quiere centrar en el desarrollo de un videojuego de tipo casual para moacutevilesAndroid Estos son un tipo de videojuegos dirigidos a un puacuteblico de jugadores casuales Losvideojuegos casuales pueden tener cualquier tipo de mecaacutenica de juego y ser clasificados dentrode cualquier otro geacutenero Son diferenciados por sus reglas simples y de no requerir un excesivocompromiso en contraste con la mayoriacutea de juegos maacutes complejos No requieren una dedicacioacutende tiempo a largo plazo o habilidades especiales para jugar

Paacutegina 1 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Durante la realizacioacuten del proyecto se realizara el disentildeo del juego por disentildeo se entienderealizar un documento que defina el juego de forma generalizada mecaacutenicas personajes etceste documento es conocido como el ldquogame designrdquo el disentildeo de arte conocido como ldquoConcepartrdquo engloba todo lo relacionado con el aspecto graacutefico del juego estilos de personajes estilos degraacuteficos etc Finalmente se realizara el anaacutelisis disentildeo e implementacioacuten de laaplicacioacuten(videojuego) con las tecnologiacuteas escogidas para este proyecto

13 Objetivos

El objetivo principal de este TFC es adquirir experiencia en el desarrollo de videojuegos paraAndroid Sin embargo yendo maacutes allaacute de la plataforma tambieacuten existe un intereacutes por ampliarconocimientos en cuanto a programacioacuten y disentildeo de videojuegos en general

En cuanto al disentildeo y desarrollo del videojuego se pretende realizar un casual game con lassiguientes caracteriacutesticas

El juego consistiraacute en conducir unas ovejas descarriadas a su corral eacutestas con nuestra ayudadeberaacuten sortear los peligros que iraacuten apareciendo durante el camino hacia el deseado corral Elprincipal peligro que amenaza las ovejas son unos lobos malvados que quieren comeacuterselas Elvideojuego soacutelo dispondraacute de una uacutenica modalidad de juego para un uacutenico jugador Al tratarse deun juego casual el publico objetivo es muy amplio Se pretende conseguir un ldquolook amp feelrdquo conesteacutetica tipo cartoon en clave de humor El juego sera desarrollado en 2D con perspectiva cenital

131 Definicioacuten del videojuego

El nivel se describe como una pantalla estaacutetica con vista cenital en posicioacuten vertical Con estaacuteticase entiende que no hay ninguacuten tipo de scroll que haga desplazar la pantalla Siempre veremos lomismo

En la parte de arriba del todo apareceraacute un corral con una puerta la puerta se iraacute abriendo ycerrando de forma aleatoria Por los extremos de la pantalla habraacute arbustos que representaran loslimites del bosque De estos limites iraacuten saliendo lobos a la escena que se querraacuten comer a laspobres ovejas Estas ovejas permaneceraacuten en la parte de abajo de la pantalla e iraacuten saliendo a laescena ellas solas sin saber demasiado donde van(son ovejas descarriadas) nuestra misioacutenconsistiraacute en tirarlas hacia el corral para salvarlas de los malvados lobos metiendolas por lapuerta en los momentos que este abierta para lanzarlas tendremos que deslizar el dedo encimade ellas para darles impulso hacia el corral si no acertamos en meter la oveja en la puerta estarebotara como si de un pelota se tratase Los lobos iraacuten saliendo para sacarnos los lobos deencima deberemos deslizar nuestro dedo encima de ellos o tocarlos para ahuyentarlos De lobos habraacute de diferentes colores marrones grises y azulados Cada lobo loahuyentaremos de manera distinta

bull Marrones 1 pulsacioacuten o deslizar 1 vez el dedo sobre el lobobull Grises 2 pulsaciones o deslizar 2 veces el dedo sobre el lobobull Azulados 3 pulsaciones o deslizar 3 veces el dedo sobre el lobo

A parte de impedir que se coman las ovejas que estaacuten en camino hacia el corral tambieacutentendremos que evitar que los lobos lleguen a la parte de abajo donde estaacute el grupo de ovejas yaque esto nos haraacute perder vidas el juego inicialmente empezara con 3 vidas pudiendo alcanzar unmaacuteximo de 6 vidas en total cada 10000 puntos obtendremos un vida extra

Paacutegina 2 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Conforme el juego se va desarrollando eacuteste iraacute acumulando

bull Puntosbull Tiempo jugadobull Numero de lobos ahuyentadosbull Ovejas colocadas en el corral

Se tratara pues de ir mejorando nuestro propio reacutecord partida tras partida El juego iraacuteaumentando de dificultad durante el transcurso de la partida

Como apunte final el juego recibe el nombre de ldquoFling the sheeprdquo que traducido al espantildeolvendriacutea a ser algo como ldquolanzar las ovejasrdquo

Paacutegina 3 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

14 Planificacioacuten

141 Ciclo de vida

Un videojuego no deja de ser un proyecto de software por tanto para la realizacioacuten de esteproyecto se ha tomado como base el ciclo de vida claacutesico de cualquier proyecto de softwaremodificado ligeramente a las necesidades del proyecto Este ciclo de vida que tambieacuten sedenomina ciclo de vida en cascada se compone de las siguientes etapas

ilustracioacuten 1 Ciclo de vida en cascada

142 Planificacioacuten detallada del proyecto

En los siguientes apartados se recogen por cada etapa que compone el ciclo de vida las principales actividades realizadas con el objetivo de alcanzar el producto deseado dentro delos plazos definidos

1411 Anaacutelisis previo planificacioacuten

En este punto se ha abordado la visioacuten global del proyecto comprendida en establecer lospuntos iniciales necesarios para crear una planificacioacuten de tareas en funcioacuten de las actividades arealizar

Actividad Descripcioacuten

Disentildeo conceptual del videojuego Mecaacutenicas del videojuego

Definicioacuten de las tecnologiacuteas Tecnologiacuteas que se utilizaran en el desarrollo delvideojuego

Anaacutelisis de riesgos Posibles riesgos del proyecto

Planificacioacuten del proyecto Crear una planificacioacuten adaptada a los plazos de entregade este TFC

Paacutegina 4 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Redaccioacuten del documento Generacioacuten del plan de trabajo

Entrega de la PEC1 Entrega del documento

1412 Anaacutelisis de requisitos

En esta fase se ha detallado que necesidades debe cubrir el videojuego tanto desde un puntode vista funcional como desde un punto de vista arquitectoacutenico de la aplicacioacuten a disentildear se hadisentildeado un modelo troncal de clases para posteriormente desarrollar en base a estas todo elvideojuego No obstante en ninguacuten caso se ha entrado en detalle en las tecnologiacuteas a utilizar yadefinidas previamente

Actividad Descripcioacuten

Especificacioacuten de requisitos funcionales Definicioacuten de casos de usos

Disentildeo baacutesico estructura aplicacioacuten Diagrama baacutesico de clases

Especificacioacuten de requisitos funcionales Definicioacuten de maacutequinas de estado

1413 Disentildeo

En este apartado teniendo en cuenta que en este proyecto se va a desarrollar un videojuego seha realizado la recopilacioacuten conceptual de arte conjuntamente con el disentildeo de todas laspantallas que intervienen en el Conjuntamente con la seleccioacuten de los tipos de fuente que seutilizaran para el videojuego seleccioacuten de personajes y enemigos

Actividad Descripcioacuten

Definicioacuten de usuarios y contexto de uso delvideojuego

Conocer las caracteriacutesticas de los usuarios susnecesidades y objetivos asiacute como los contextosde uso

Disentildeo conceptual Un escenario de uso describe desde el puntode vista del usuario como seraacute utilizado unproducto determinado (es este caso unvideojuego) en un escenario determinado

Seleccioacuten de arte Seleccioacuten de arte ya hecho con licencias libresya que no se disponen de conocimientos dearte para abordar el disentildeo

Seleccioacuten de fuentes Seleccioacuten de los tipos de fuente adecuadospara el disentildeo del videojuego

Seleccioacuten de personajes y enemigos Seleccioacuten de personajes y enemigosdisponibles en la red con licencias libres ya queno se disponen de conocimientos de arte paraabordar el disentildeo

Disentildeo de pantallas que intervienen(prototipo) Con todo el arte fuentes y personajes serealizara el disentildeo de todas las pantallas queintervienen en el juego Realizacioacuten de unboceto a mano alzada Sketches y prototipo dealta fidelidad

Redaccioacuten del documento Generacioacuten del documento de disentildeo

Paacutegina 5 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Entrega de la PEC2 Entrega del documento

1414 Implementacioacuten y pruebas

En este punto se ha desarrollado la implementacioacuten del videojuego partiendo de todas lasdefiniciones de los apartados anteriores y las verificaciones oportunas para asegurar el correctofuncionamiento del videojuego

Actividad Descripcioacuten

Implementacioacuten de navegables y contenidos Implementacioacuten de la estructura de todas lapantallas del video juego y la navegabilidadentre ellas y las funciones principales de cadauna de ellas

Implementacioacuten del gameplay Implementacioacuten de la logica de juego

Implementacioacuten de sonido y efectos Implementacioacuten de los efectos de sonido y lamusica

Version alpha del videojuego En este punto se dispone de un videojuegofuncional listo para ser revisado y refinado

Pruebas y refinamiento de la implementacioacuten Pruebas y correcioacutenes de posibles errores

Preparacioacuten del paquete entregable y laredaccioacuten del documento

Testeo final y preparacioacuten del apk a entregarmas la redaccioacuten del documento estrutural delaplicacioacuten

Entrega de la PEC3 Entrega del documento

1415 Finalizacioacuten

En un proyecto de software esta parte quedariacutea focalizada en la fase de implantacioacuten y puesta enmarcha Sin embargo al tratarse de un videojuego esta fase quedariacutea focalizada en la fase delanzamiento del producto No obstante en este caso se ha utilizado para documentar todo eltrabajo realizado a lo largo de este TFC

Actividad Descripcioacuten

Redaccioacuten memoria final proyecto Redaccioacuten memoria final

Montaje presentacioacuten diapositivas Montaje presentacioacuten diapositivas

Montaje del video final presentacioacuten proyecto Montaje del video final presentacioacuten proyecto

Entrega final Entega final

Paacutegina 6 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria143 Temporalizacioacuten del proyecto

La siguiente ilustracioacuten muestra el calendario definido para el proyecto

ilustracioacuten 11 Calendario proyecto

Paacutegina 7 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

En la siguiente pagina se muestra una ilustracioacuten del diagrama de gantt correspondiente alcalendario mostrado en la ilustracioacuten 1

ilustracioacuten 2 Diagrama de gantt

Paacutegina 8 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

15 Herramientas y tecnologiacuteas utilizadas

Actualmente existen varios frameworks para desarrollar videojuegos sobre plataformas moacutevilesSe ha hecho un anaacutelisis comparativo preliminar entre Cocos2D-android1 Cocos2D-x y libGDXaunque existen otros estos tres son los maacutes nombrados y utilizados

Cocos2d-android1 Es un framework en Java basado en la versioacuten de cocos2d-android queesta basado en la versioacuten de cocos2d para iphone Este framework permite el desarrollo devideojuegos en 2D y se programa en Java en lugar de objective-c Para la versioacuten Cocos2d deiphone Actualmente este framework no parece tener mucha continuidad por parte de lacomunidad de desarrolladores aunque no estaacute discontinuado del todo

Cocos2D-x Es un framework en C++ multi-plataforma permite desarrollar para diferentesplataformas a la vez con el mismo coacutedigo Android iOS Bada Marmalade Windows Linux etcSin embargo aunque es un framework con una comunidad muy activa su documentacioacuten esbastante mejorable Se programa en C++ y es posible trabajar con distintos entornos de desarrollocomo Visual Studio o Eclipse El proceso de depuracioacuten con eclipse es algo complejo con C++JNIcon varios pasos a seguir para poder depurar A la vez su configuracioacuten en el entorno Eclipse noes trivial Finalmente tiene relativamente todaviacutea poco tiempo de vida

LibGDX Es un framework escrito en Java sobre C++ ya que las partes criacuteticas estaacuten escritascon coacutedigo nativo para conseguir el mejor rendimiento posible Tiene una comunidad dedesarrolladores muy activa y una documentacioacuten muy extensa Se programa con Java y permite ladepuracioacuten ejecutando la aplicacioacuten en el escritorio de la maacutequina sin tener que pasar por undispositivo real o uno virtual En caso de que se quiera probar en un dispositivo real es posiblehacerlo sin ninguacuten cambio sobre el coacutedigo Este hecho hace que el desarrollo sea maacutes fluidoTiene un rendimiento bastante alto ante cocos2d-x y otros frameworks existentes para eldesarrollo de videojuegos

Todo lo expuesto anteriormente provoca una inclinacioacuten definitiva a utilizar libGDX paraimplementar el videojuego Asiacute pues el videojuego seraacute escrito en Java utilizando el IDE Eclipseque es el soportado oficialmente para Android utilizando el framework libGDX

Para la realizacioacuten de este proyecto se han utilizado las siguientes herramientas

bull Planificacioacuten proyecto

Microsoft Project Professional 2010

bull Disentildeo

Gimp 28 Inkscape 048 TexturePacker 320 Microsoft Visio Professional 2010

bull Programacioacuten

Entorno de desarrollo Eclipse 421 Juno Android develompment tools ADT Android SDK

Paacutegina 9 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Framework libGDX 098 ObjectAid herramienta de visualizacioacuten de coacutedigo en UML para Eclipse Control de versiones Git utilizando como plataforma GitHub

bull Edicioacuten de audio

Audacity 203 GoldWave 569

bull Redaccioacuten de documentos

OpenOffice 401

bull Edicioacuten de viacutedeo

Adobe Premiere Pro CS55

16 Riesgos del proyecto

Se parte de una experiencia previa en desarrollo de videojuegos ver apartado 9 otros proyectosrealizados al final de este documento Aunque no se dispone de experiencia con la libreriacuteaescogida ni tampoco con programacioacuten sobre Android A nivel teacutecnico no se preveacute que puedansurgir muchos riesgos en liacuteneas generales No obstante existe la posibilidad de gastar maacutestiempo del previsto consultando documentacioacuten para lograr los objetivos establecidos

Existe un riesgo maacutes alto a nivel artiacutestico ya que no se dispone de ninguacuten conocimiento de artede ninguacuten tipo Por lo tanto muy probablemente a nivel artiacutestico el juego sea un poco justo Es poreste motivo que durante la realizacioacuten de este proyecto no se va a profundizar en temas de disentildeoartiacutestico en su lugar se utilizaran recursos de arte existentes en la red con licencias libres tipocreative commons o dominio puacuteblico Al final de este documento en el apartado 6 se puede ver unlistado de los recursos utilizados juntamente con un link a la obra y el nombre del autor si esteesta disponible Se haraacute una seleccioacuten de distintos tipos de recursos graacuteficos para posteriormentehacer el montaje de toda la parte graacutefica del videojuego En cuanto a la parte de audio la situacioacuten es exactamente la misma no se dispone de ninguacutenconocimiento para componer muacutesica ni efectos Por lo tanto se buscaraacuten sonidos y temasmusicales con licencias libres Intentando que estos queden integrados de la mejor maneraposible al videojuego

Finalmente existe el riesgo de que el gameplay definido en el disentildeo conceptual del videojuegouna vez puesto en praacutectica no sea del todo funcional o necesite de un balanceo para conseguirun juego equilibrado y jugable

Paacutegina 10 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2 Anaacutelisis funcional Basaacutendonos en el aparatado ldquo131 Definicioacuten del videojuegordquo se han definido los requisitosfuncionales necesarios para este con la definicioacuten de casos de uso Posteriormente se ha definidoun diagrama de clases inicial el cual ha servido como punto de partida para el desarrollo completodel videojuego A su vez se definen las maacutequinas de estado finitas utilizadas para el desarrollo

21 Requisitos funcionales casos de uso

En este apartado se presentan tres diagramas de casos de uso El primer diagrama engloba lavista generalizada del actor ldquojugadorrdquo y los casos de uso que describen los requisitos funcionalesdel sistema En los dos diagramas restantes se describen la vista generalizada del actor ldquoIArdquo porIA se entiende la inteligencia artificial del videojuego Los diagramas muestran los requisitosfuncionales de la IA para el personaje principal y los enemigos La IA interactuacutea con el sistema ypor tanto seraacute susceptible de analizar su uso de la aplicacioacuten

211 Diagrama casos de uso actor ldquoJugadorrdquo

ilustracioacuten 3 Diagrama de casos de usos actor jugador

Paacutegina 11 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Como se puede observar en la ilustracioacuten 3 el sistema solo dispone de un uacutenico actor Que eneste caso es el jugador del videojuego es decir representa todos los posibles usuarios quepueden jugar al videojuego

En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 3estos seraacuten desarrollados en la seccioacuten posterior

212 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

VJ01 Inicio videojuego Jugador

VJ02 Jugar Jugador

VJ03 Acceder puntuaciones maacuteximas Jugador

VJ31 Consultar puntuacione locales Jugador

VJ32 Salir puntuacione locales Jugador

VJ04 Acceder a las opciones Jugador

VJ41 Activar o desactivar muacutesica o efectos Jugador

VJ42 Acceder a la pantalla de creacuteditos Jugador

VJ421 Salir de la pantalla de creacuteditos Jugador

VJ43 Salir de las opciones Jugador

VJ05 Acceder a las instrucciones Jugador

VJ51 Salir de las intrucciones Jugador

VJ06 Salir del videojuego Jugador

213 Descripcioacuten textual de los casos de uso

2131 VJ01 Inicio videojuego

Identificador VJ01

Nombre Inicio videojuego

Autor Xavier Figuera

Resumen El usuario inicia el videojuego

Actor(es) Jugador

Precondiciones Ninguna el videojuego no habiacutea sido iniciado auacuten

Postcondiciones El usuario a iniciado el videojuego a visualizado la pantalla de introdurante un segundo y se encuentra en la pantalla del menuacute principal

Flujo normal 1 El usuario accede a la lista de aplicaciones de su dispositivo 2 Busca el acceso al videojuego3 Ejecuta el programa4 Se carga la aplicacioacuten5 El videojuego muestra la pantalla de intro

Paacutegina 12 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6 Se muestra el menuacute principal al jugador

Flujos alternativos Se podriacutea dar el caso que el usuario accediera al videojuego desde algunacceso directo en alguno de los escritorios del dispositivo

Inclusiones Ninguna

Extensiones Ninguna

2132 VJ02 Jugar

Identificador VJ02

Nombre Jugar

Autor Xavier Figuera

Resumen Jugar al videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario empieza a jugar

Flujo normal 1 El usuario pulsa el botoacuten play del menuacute principal 2 El usuario juega3 El usuario puede volver a jugar una vez finalizada la partida 4 El usuario puede salir del juego en cualquier momento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2133 VJ03 Acceder puntuaciones maacuteximas locales

Identificador VJ03

Nombre Acceder puntuaciones maacuteximas locales

Autor Xavier Figuera

Resumen Acceder a la pantalla de puntuaciones maacuteximas locales de las partidasrealizadas en el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla con la tabla de las 10 puntuacionesmaacuteximas

Flujo normal 1 El usuario pulsa el botoacuten Scores del menuacute principal 2 Al usuario le aparece la pantalla de puntuacioacuten

Paacutegina 13 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ31 Consultar puntuaciones localesVJ32 Salir de la puntuaciones locales

2134 VJ31 Consultar puntuaciones locales

Identificador VJ31

Nombre Consultar puntuaciones locales

Autor Xavier Figuera

Resumen Consulta de las puntuaciones maacuteximas locales de las partidas realizadasen el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Scores delmenuacute principal

Postcondiciones El usuario visualiza la tabla de las 10 puntuaciones maacuteximas

Flujo normal 1 El usuario visualiza una tabla con las 10 puntuaciones maacuteximas

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2135 VJ32 Salir puntuaciones locales

Identificador VJ32

Nombre Salir puntuaciones locales

Autor Xavier Figuera

Resumen Salir de las puntuaciones maacuteximas locales

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulso el botoacuten Scores

Postcondiciones El usuario sale de la tabla de puntuaciones

Flujo normal 1 El usuario pulsa el botoacuten salir en la pantalla tabla de puntuaciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 14 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2136 VJ04 Acceder a las opciones

Identificador VJ04

Nombre Acceder a la pantalla de opciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de opciones del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla de opciones

Flujo normal 1 El usuario pulsa el botoacuten Options del menuacute principal 2 Al usuario le aparece la pantalla de opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ41 Activar o desactivar muacutesica o efectos VJ42 Acceder a la pantalla de creacuteditosVJ43 Salir de las opciones

2137 VJ41 Activar o desactivar muacutesica o efectos

Identificador VJ041

Nombre Activar o desactivar muacutesica o efectos

Autor Xavier Figuera

Resumen Activar o desactivar muacutesica o efectos de audio del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal

Postcondiciones El usuario activa o desactiva la muacutesica o efectos del videojuego

Flujo normal 1 El usuario pulsa el botoacuten altavoz para activar o desactivar la muacutesica delvideojuego 2 El usuario pulsa el botoacuten notas musicales para activar o desactivar losefectos de audio del videojuego

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 15 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2138 VJ42 Acceder a la pantalla de creacuteditos

Identificador VJ42

Nombre Acceder a la pantalla de creacuteditos

Autor Xavier Figuera

Resumen Acceder a la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario se encuentra en la pantalla de opciones

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten credits para acceder a los creacuteditos2 El usuario puede desplazar el texto de los creacuteditos deslizando el dedosobre el texto hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ421 Salir de la pantalla de creacuteditos

2139 VJ421 Salir de la pantalla de creacuteditos

Identificador VJ421

Nombre Salir de la pantalla de creditos

Autor Xavier Figuera

Resumen Salir de la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal y ha accedido a la pantalla creacuteditos

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten salir para abandonar la pantalla para accedera los creacuteditos2 El usuario se encuentra de nuevo en la pantalla opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 16 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21310 VJ05 Acceder a las instrucciones

Identificador VJ05

Nombre Acceder a la pantalla de instrucciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten del menuacuteprincipal

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a las instrucciones2 El usuario puede desplazar el texto de las instrucciones deslizando eldedo sobre el hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ51 Salir de las instrucciones

21311 VJ51 Salir de las instrucciones

Identificador VJ51

Nombre Salir de las intrucciones

Autor Xavier Figuera

Resumen Salir de la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten en el menuacuteprincipal y ha accedido a la pantalla de instrucciones

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a la pantalla de instrucciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 17 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21312 VJ06 Salir del videojuego

Identificador VJ06

Nombre Salir del videojuego

Autor Xavier Figuera

Resumen Salir del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego

Postcondiciones El usuario abandona el videojuego

Flujo normal 1 El usuario pulsa el botoacuten exit de la aplicacioacuten para salir del videojuego oel botoacuten salir del dispositivo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 18 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214 Diagrama casos de uso actor ldquoIArdquo

Por IA se entiende inteligencia artificial es un elemento fundamental para dotar de realismo a unvideojuego Uno de los retos principales que se plantean a la hora de integrar comportamientosinteligentes es alcanzar un equilibrio entre la sensacioacuten de inteligencia y el tiempo de coacutemputoempleado por este subsistema Este equilibrio es de gran importancia en el caso de losvideojuegos Este planteamiento gira generalmente en torno a la generacioacuten de soluciones quesin ser oacuteptimas proporcionen una cierta sensacioacuten de inteligencia En concreto dichas solucionesdeberiacutean tener como meta que el jugador se enfrente a un reto que sea factible de manera quesuponga un estiacutemulo emocional y que consiga engancharlo al videojuego

En estos uacuteltimos antildeos la IA ha pasado de ser un componente secundario en el proceso dedesarrollo de videojuegos a convertirse en uno de los aspectos maacutes importantes Actualmentelograr un alto nivel de IA en un juego sigue siendo uno de los retos maacutes emocionantes y complejosy en ocasiones sirve para diferenciar un juego normal de uno realmente espectacular

Dentro de este proyecto de ha definido una IA baacutesica para dotar del realismo necesario alvideojuego propuesto En los siguientes diagramas se define esta IA en forma de casos de usospara su posterior implementacioacuten

2141 Diagrama casos de uso IA personaje principal (oveja)

ilustracioacuten 4 Diagrama de casos de usos personaje principal

Paacutegina 19 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 4estos seraacuten desarrollados en la seccioacuten posterior

21411 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA03 Salida oveja al escenario IA

IA031 Posicionamiento en pantalla de la oveja IA

IA032 Movimiento oveja IA

IA033 Oveja pastando IA

IA034 Lanzamiento oveja IA

IA035 Rebotes de la oveja IA

IA036 La oveja entra en el establo IA

IA037 Parar oveja IA

21412 Descripcioacuten textual de los casos de uso

214121 IA03 Salida ovejas al escenario

Identificador IA03

Nombre Salida oveja al escenario

Autor Xavier Figuera

Resumen Salida oveja al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones La oveja es instanciada de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Las ovejas se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA031 Posicionamiento en pantalla de las oveja

214122 IA031 Posicionamiento en pantalla de las oveja

Identificador IA031

Nombre Posicionamiento en pantalla de las oveja

Paacutegina 20 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Autor Xavier Figuera

Resumen Asignacioacuten inicial posicioacuten de las ovejas en pantalla siempre es la mismaposicioacuten esta queda fuera del rango visual de la pantalla

Actor(es) IA

Precondiciones La partida esta iniciada y la oveja instanciada

Postcondiciones La oveja queda posicionada en unas coordenadas fuera de la pantalla

Flujo normal 1 Se instancia la oveja2 La oveja queda posicionada en unas coordenadas uacutenicas fuera delrango visual de pantalla

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214123 IA032 Movimiento oveja

Identificador IA032

Nombre Movimiento oveja

Autor Xavier Figuera

Resumen Movimiento de las ovejas hacia el escenario

Actor(es) IA

Precondiciones La partida esta iniciada la oveja instanciada y posicionada

Postcondiciones La oveja se mueve hacia el escenario empieza a pastar

Flujo normal 1 La oveja se mueve hacia el escenario

Flujos alternativos Ninguno

Inclusiones IA034

Extensiones IA033 Oveja PastandoIA037 Parar oveja

214124 IA033 Oveja pastando

Identificador IA033

Nombre Oveja pastando

Autor Xavier Figuera

Resumen La ovejas permanecen en un espacio determinado de coordenadas depantalla mientras no sean lanzadas al escenario por el usuario

Actor(es) IA

Paacutegina 21 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Precondiciones La oveja ha salido al escenario

Postcondiciones La oveja se mueve dentro de un espacio determinado de forma indefinida

Flujo normal 1 La oveja se mueve de forma indefinida hasta que sea lanzada por elusuario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA034 Lanzamiento oveja

214125 IA034 Lanzamiento oveja

Identificador IA034

Nombre Lanzamiento oveja

Autor Xavier Figuera

Resumen La oveja es lanzada por el usuario y se acelera en funcioacuten de la fuerza delanzamiento

Actor(es) IA

Precondiciones La oveja se mueve

Postcondiciones La oveja ha sido lanzada

Flujo normal 1 La oveja se mueve de forma indefinida2 La oveja es lanzada3 La oveja acelera en funcioacuten de la fuerza de lanzamiento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214126 IA035 Rebotes de la oveja

Identificador IA035

Nombre Rebotes de la oveja

Autor Xavier Figuera

Resumen La oveja ha sido lanzada y rebota por el escenario

Actor(es) IA

Precondiciones La oveja ha sido lanzada

Postcondiciones La oveja rebota por el escenario

Flujo normal 1 La oveja ha sido lanzada y rebota por el escenario 2 La oveja entra en el establo si colisiona con la puerta y esta abierta

Paacutegina 22 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA036 La oveja entra en el establo

214127 IA036 La oveja entra en el establo

Identificador IA036

Nombre La oveja entra en el establo

Autor Xavier Figuera

Resumen La oveja entra en el establo

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario y la puerta del establo estaabierta

Postcondiciones La oveja entra en el establo

Flujo normal 1 La oveja entra en el establo si colisiona con la puerta y esta abierta

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214128 IA037 Parar oveja

Identificador IA037

Nombre Parar oveja

Autor Xavier Figuera

Resumen La oveja para si se hacen dos pulsaciones encima de ella

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario

Postcondiciones La oveja se para

Flujo normal 1 La oveja esta rebotando2 El usuario pulsa dos veces encima de ella3 La oveja se para

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 23 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2142 Diagrama casos de uso IA enemigos (lobo)

ilustracioacuten 5 Diagrama de casos de usos enemigos

21421 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA02 Salida lobo al escenario IA

IA021 Ojos por la derecha o por la izquierda IA

IA022 Escoje el tipo de lobo IA

IA023 Lobo por la derecha o por la izquierda IA

IA024 Salta a escena IA

IA025 Movimento lobo IA

Paacutegina 24 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21422 Descripcioacuten textual de los casos de uso

214221 IA02 Salida lobo al escenario

Identificador IA02

Nombre Salida lobo al escenario

Autor Xavier Figuera

Resumen Salida lobo al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones El lobo es instanciado de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Los lobos se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA02 IA021 IA022 IA023 IA024

214222 IA021 Ojos por la derecha o por la izquierda

Identificador IA021

Nombre Ojos por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Salida de ojos al escenario paso previo a que salte el lobo

Actor(es) IA

Precondiciones El lobo ha sido instanciado

Postcondiciones Aparecen unos ojos que se cierra y se abren por la derecha o izquierda dela pantalla de forma aleatoria

Flujo normal 1 El lobo ha sido instanciado2 Aparecen unos ojos que se cierran y se abren 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 25 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214223 IA022 Escoge el tipo de lobo

Identificador IA022

Nombre Escoge el tipo de lobo

Autor Xavier Figuera

Resumen Escoge el tipo de lobo de forma aleatoria de los tres definidos

Actor(es) IA

Precondiciones Han aparecido los ojos

Postcondiciones Ha escogido el tipo de lobo que saltara al escenario

Flujo normal 1 Han aparecido los ojos2 Ha escogido el tipo de lobo que saltara al escenario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214224 IA023 Lobo por la derecha o por la izquierda

Identificador IA023

Nombre Lobo por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Escoge de forma aleatoria el lado por donde debe aparecer el lobo

Actor(es) IA

Precondiciones Se ha seleccionado el tipo de lobo

Postcondiciones Se ha escogido el lado por donde apareceraacute

Flujo normal 1 Se ha escogido el lado por donde apareceraacute

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 26 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214225 IA024 Salta a escena

Identificador IA024

Nombre Salta a escena

Autor Xavier Figuera

Resumen El lobo salta a escena

Actor(es) IA

Precondiciones Se ha seleccionado el lado por donde debe aparecer y salta

Postcondiciones El lobo esta en escena

Flujo normal 1 Se ha seleccionado el lado por donde debe aparecer y salta2 El lobo esta en escena

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones A025

214226 IA025 Movimiento lobo

Identificador IA025

Nombre Movimiento lobo

Autor Xavier Figuera

Resumen El lobo esta en escena y se mueve

Actor(es) IA

Precondiciones El lobo ha saltado a la escena

Postcondiciones El lobo se mueve

Flujo normal 1 El lobo ha saltado a la escena2 El lobo se mueve

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 27 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

22 Disentildeo inicial diagrama de clases

221 Diagrama de clases inicial ldquoFling the sheeprdquo

ilustracioacuten 6 Diagrama de clases videojuego

En este apartado se define la estructura inicial de la aplicacioacuten a traveacutes del diagrama de clasesmostrado en la ilustracioacuten 6 Esto serviraacute como punto de partida para el completo disentildeo de laaplicacioacuten para su posterior implementacioacuten A continuacioacuten se pasan a detallar a modo resumidoque funcionalidad tiene cada una de las clases definidas en este diagrama

2211 Resumen clases videojuego

FlingTheSheepMain Clase principal desde donde se inicializaraacute la aplicacioacuten

Assets Esta clase contendraacute todos los recursos necesarios del juego texturas sonidos etcEstos seraacuten inicializados en el momento de iniciar el juego Existe una dependencia entre la claseFlingTheSheepMain y Assets ya que la instanciacioacuten de Assets esta condicionada por lainstanciacioacuten de la clase principal FlingTheSheepMain cuando se pone en marcha el videojuego

Paacutegina 28 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaWorldGameController Esta clase contendraacute la loacutegica del videojuego

AudioManager Clase destinada para controlar la reproduccioacuten de efectos de sonido y audio delvideojuego

Charcater Es la superclase que describe los comportamientos comunes de los personajes deella se extienden los personajes principales y los enemigos

Sheep Clase que representa el personaje principal

Wolf Clase que representa a los enemigos

AbstractGameObject Esta superclase recoge todos los comportamientos comunes de losobjetos del juego por objetos se entiende todos los componentes que forman el escenario delvideojuego De esta clase se extienden todos los objetos del videojuego

Grass Hierba que apareceraacute en el escenario

Flower Flores que apareceraacuten en el escenario

ThePen Establo donde hay que hacer llegar las ovejas

DoorPen Puerta del establo esta se abriraacute y se cerrara aleatoriamente

Hole Agujeros en el escenario

WoodFenceForest Valla de madera que apareceraacute en el escenario

Como se ha comentado este diagrama de clases es un diagrama inicial por tanto lo maacutesprobable es que durante el desarrollo del videojuego se antildeadan maacutes clases al disentildeo inicialmostrado en la ilustracioacuten 6 En el apartado 55 de este documento se muestran los diagramas declases definitivos

Paacutegina 29 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria222 Diagrama de clases inicial de pantallas

ilustracioacuten 7 Diagrama de clases de pantallas

Este diagrama recoge en forma de clases las pantallas iniciales definidas del videojuego Separte de una superclase llamada AbstractGameScreen que recogeraacute las operaciones comunes detodas ellas y de esta se extienden las pantallas concretas este diagrama solo muestra laspantallas maacutes baacutesicas definidas inicialmente estas serviraacuten como base para desarrollar elconjunto de pantallas total necesarias para este proyecto y que quedan recogidas en su totalidaden el apartado 4 ldquoDisentildeordquo de esta documento

A continuacioacuten se pasan a detallar a modo resumido cada una de ellas

2221 Resumen clases pantallas

IntroScreen Clase para la pantalla de intro

MenuScreen Clase que contiene el menuacute principal del videojuego GameScreen La clase game screen es la que contiene la pantalla donde se desarrolla todo elvideojuego

Paacutegina 30 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

23 Definicioacuten de maacutequinas de estado finitas

Como ya se ha introducido en el punto 212 la IA aplicada a los videojuegos dota a estos derealismo Existen distintas teacutecnicas para la implementacioacuten de esta Una de las maacutes consolidadases el uso de maacutequinas de estados finitas ya que tienen un coste computacional casi inexistenteya que no tienen ninguacuten coste de procesamiento asignado Las maacutequinas de estados permiten deforma faacutecil definir comportamientos Es por este motivo que han sido utilizadas no solamente para definir los comportamientos de laIA del videojuego sino tambieacuten para definir los distintos estados en que se puede encontrar elvideojuego durante su tiempo de vida A continuacioacuten se detallan los distintos diagramas de lasmaacutequinas de estados utilizadas para este proyecto conjuntamente con una explicacioacuten de cadauna de ellas

231 Maacutequina de estados del videojuego

ilustracioacuten 8 Maacutequina de estados del videojuego

La ilustracioacuten 8 nos muestra los estados que puede tomar el videojuego durante su tiempo devida

Este diagrama define los estados que puede tomar el videojuego una vez iniciado inicialmente eljuego se encuentra en el estado READY de este estado existe una transicioacuten al estado GAMEcuando el tiempo de READY finaliza READY lt=0 El estado game sera el estado en donde se

Paacutegina 31 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriadesarrollara todo el juego Des de este estado podemos pasar al estado PAUSE si pulsamos elbotoacuten de pausa del juego y desde el estado PUASE volvemos al estado GAME si volvemos apulsar el botoacuten pause Finalmente desde el estado GAME haremos la transicioacuten al estado GAMEOVER si nos arrebatan todas las vidas durante la partida Desde el estado GAME OVERpodremos volver a READY si decidimos hacer una nueva partida

232 Maacutequina de estados comportamiento oveja

ilustracioacuten 9 Maacutequina de estados comportamiento oveja La ilustracioacuten 9 muestra el comportamiento del personaje principal del videojuego que en estecaso es la oveja Se define el ciclo de vida de la oveja a traveacutes de sus comportamientos

APPEAR SHEEP La oveja aparece fuera del rango visual de la pantalla y empieza a moversepara que suceda la transicioacuten hacia el siguiente estado FOREST START la coordenada x debeser menor que 220

FOREST START La oveja seguiraacute movieacutendose en un espacio determinado de la pantalla hastaque sea lanzada en unas determinadas direcciones la direccioacuten queda determinada por lasvariables velocityX velocityY estas tomaran valores positivos o negativos determinando ladireccioacuten de lanzamiento esto queda reflejado en la condicioacuten de transicioacuten del estado FORESTSTART a FOREST DEEP Si realizamos el lanzamiento en esas determinadas direccionesharemos la transicioacuten al un nuevo estado FOREST DEEP

FOREST DEEP La oveja rebota por el escenario si colisiona con la puerta del corral y estaabierta hacemos la transicioacuten al estado ON THE PEN

Paacutegina 32 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ON THE PEN Finaliza el ciclo de vida de la oveja dentro del juego esta es devuelta al corral seincrementan puntos en el marcador de puntuacioacuten y se incrementa una unidad en el contador deovejas salvadas

233 Maacutequina de estados comportamiento lobo

ilustracioacuten 10 Maacutequina de estados comportamiento lobo La ilustracioacuten 10 muestra el comportamiento de los enemigos del videojuego que en este casoson los lobos Se define el ciclo de vida del lobo a traveacutes de sus comportamientos

APPEAR EYES Antes de aparecer los lobos a escena apareceraacuten sus ojos entre los matorralesdel bosque Cuando acaba el tiempo pasa al siguiente estado tiempo ojos lt= 0

APPEAR WOLF En este estado se seleccionara el tipo de lobo (habraacute 3 tipos distintos) el ladode la pantalla por donde apareceraacute posicioacuten y velocidad de salto como tambieacuten el tiempo ensegundos que tardara a saltar al escenario Una vez seleccionados todos estos paraacutemetros haraacutela transicioacuten al estado WHEN JUMP

WHEN JUMP Este estado simplemente esperara que pase el tiempo para que el lobo salte alescenario Un vez pase el tiempo el lobo apareceraacute en el escenario pasando a la transicioacuten JUMPON SCENE

JUMP ON SCENE En este estado se efectuara el salto a escena del lobo este saltara desde los

Paacutegina 33 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriamatorrales laterales de la pantallahacia el escenario dibujando un arco convexo Para realizar elsalto nos apoyaremos en la representacioacuten del calculo de la funcioacuten trigonomeacutetrica cosenosolamente en sus valores positivos por tanto cuando cosy lt 0 haremos la transicioacuten al estadoMOVE ya que el salto habraacute finalizado

MOVE En este estado los lobos se moveraacuten y podraacuten ser ahuyentados pulsando repetidas vecesencima de ellos las veces a pulsar queda sujeta al tipo de lobo que sea Des de este estadopodremos hacer a dos estado distintos dependiendo de lo que suceda Si conseguimos ahuyentaral lobo pasaremos al estado WOLF SCARED Si por el contrario el lobo atrapa a la ovejaharemos la transicioacuten al estado SHEEP TRAPPED en ambos estados finalizara el ciclo de vidadel lobo

WOLF SCARED Se habraacute ahuyentado el lobo se incrementa en uno el contador de lobosahuyentados y se suman puntos a la puntuacioacuten total En este estado finaliza el ciclo de vida dellobo

SHEEP TRAPPED El lobo habraacute atrapado una oveja se nos restara una vida En este estadofinaliza el ciclo de vida del lobo

234 Maacutequina de estados tutorial in game

ilustracioacuten 11 Maacutequina de estados tutorial in game La ilustracioacuten 11 muestra los distintos estados que toma el mini tutorial in game que apareceraacute laprimera vez que se juega En este las transiciones entre estados suceden de forma automaacutetica

Paacutegina 34 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriacada 5 segundos desde que se ha activado el primer estado Cada estado corresponderaacute a unacaja de texto mostrada en pantalla

3 Disentildeo

31 Estudio comparativo

Un estudio realizado en 2011 por la empresa Newzoo httpwwwnewzoocom empresainternacional dedicada a los estudios de mercado y enfocada por completo a la industria de losvideojuegos Ha realizado la primera encuesta a jugadores espantildeoles y una de las cosas que dicees La suma del volumen de negocio de juegos online (redes sociales juegos casualesjuegos para moacuteviles juegos MMO) superaraacute al del consumo en juegos para consolas en2011 Se puede ver un resumen del estudio en liacutenea en

httpwwweurogameresarticles2011-10-26-espana-gastara-1-600-millones-de-euros-en-videojuegos-en-2011

Con esta informacioacuten se puede ver que hacer un videojuego casual para una plataforma moacutevilcomo Android puede ser muy viable

Para este proyecto se realizaraacute un estudio comparativo (benchmarking) En la industria de losvideojuegos es habitual sacar tiacutetulos fijaacutendose en otros tiacutetulos que han conseguido gran eacutexito enel mercado La operativa consiste en mejorarlos dentro de otro contexto o hacer un videojuegocompletamente diferente pero basaacutendose en ocasiones en mecaacutenicas de alguacuten otro tiacutetulo que haconseguido un gran eacutexito

Existen en Google Play gran cantidad de juegos casuales que pueden servir como inspiracioacuten ycomo punto de inicio para hacer un planteamiento general de coacutemo disentildear el producto que sequiere desarrollar partiendo de los requisitos definidos en el apartado 131 de este documento Setomaraacuten como referencia algunos tiacutetulos para identificar patrones para ver coacutemo otros hansolucionado ciertas situaciones como pueden ser problemas de disentildeo o interaccioacuten entre otrosEn ninguacuten caso deberaacuten ser exactamente de la misma temaacutetica pero si que se miraraacute que seandel mismo tipo es decir casual games

El primer paso para realizar este estudio a sido ir a Google play y verificar si hay alguacuten juego conel mismo nombre que el que se pretende desarrollar ldquoFling the sheeprdquo No existe ninguacuten juego adiacutea de hoy con este nombre

El segundo paso a sido buscar tambieacuten en Google play videojuegos en los que aparezcanovejas solo poniendo en el buscador la palabra sheep nos aparecen muchiacutesimos juegos quetienen una temaacutetica donde aparecen ovejas Se ha verificado tambieacuten poniendo combinaciones depalabras relacionadas con el juego que se quiere implementar palabras como sheep wolves o sheep farm etc los resultados obtenidos son bastante elevados

Por la cantidad de juegos encontrados y los recursos de que se dispone como por ejemplo eltiempo no es posible analizarlos todos Si que se tomaran algunos juegos despueacutes de hacer unrepaso de los maacutes destacados Hay que decir que despueacutes de haber instalado algunos alguno deellos no ha acabado de funcionar correctamente en el dispositivo moacutevil

Tras estos pasos se escogeraacuten dos videojuegos de temaacutetica similar y dos videojuegos detemaacutetica diferente Los videojuegos escogidos para realizar el anaacutelisis comparativo son

Paacutegina 35 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria311 Sheep amp Wolf

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 12 y 13 pantallas juego Sheep amp Wolf Link httpsplaygooglecomstoreappsdetailsid=jscompanygamesSheepAndWolf_enter3

El juego consta de una mecaacutenica muy simple disponemos de un boomerang y un corazoacuten laperspectiva del juego es elevada y vemos coacutemo van bajando ovejas y lobos de forma aleatoria setrata de forma taacutectil dibujar la trayectoria del boomerang para eliminar los lobos sin tocar lasovejas y con el corazoacuten dibujar una trayectoria de forma taacutectil para tocar las ovejas y no los lobosconforme vamos tocando los lobos y las ovejas con el correspondiente objeto iremos sumandopuntos

Tiene cierta similitud con el que se quiere implementar ya que salen tambieacuten lobosovejas ytambieacuten que lo que se pretende implementar funcionara de forma taacutectil para lanzar las ovejas alcorral y ahuyentar a los lobos que amenazan a las ovejas

Tiene una perspectiva de caacutemara igual a la que se quiere implementar Tiene una mecaacutenica dejuego muy sencilla las opciones que ofrece son muy definidas y claras 3 botones al inicio deljuego grandes que nos indican las posibles opciones que tenemos dentro del juego Game StartGame Record Exit Un punto interesante de este juego es que las puntuaciones no se guardan anivel local de la aplicacioacuten sino que son compartidas en una pagina web asiacute se pueden ver laspuntuaciones a nivel mundial La navegacioacuten por las diferentes pantallas es correcta

Quizaacute un aspecto negativo del juego seriacutea que visualmente esta muy poco cuidado Aunque aveces si el juego produce mucha adiccioacuten el aspecto visual puede quedar en segundo teacutermino enjuegos para dispositivos moacuteviles En otros tipos de plataformas como consolas o PC el aspectovisual es un punto muy importante y que se debe trabajar mucho maacutes a fondo no obstante estono significa que en un dispositivo moacutevil no deba estarlo

Paacutegina 36 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez adictivo puntuaciones a nivel mundial Navegacioacuten correctaPuntos Negativos Poco cuidado visualmente no tiene pausaObservaciones No tiene un final definido a medida que avanzamos la dificultad aumenta

312 Sheep Up

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 14 y 15 pantallas juego Sheep Up Linkhttpsplaygooglecomstoreappsdetailsid=compgpublishandroidsheepuplive

A diferencia del anterior este visualmente esta mucho maacutes cuidado Es un juego en 3D dondeuna oveja de juguete esta guardada dentro de una caja de cartoacuten Va botando y tiene que irrecogiendo botones e ir subiendo por diferentes niveles para poder salir de la caja es un juego deplataformas tambieacuten con una mecaacutenica bastante sencilla

Este dispone de una pantalla que dura unos segundos y seguidamente sale el menuacute de opcionesdel juego a diferencia de lo visto anteriormente donde directamente saliacutea el menuacute de opcionesde juego El menuacute de opciones de juego tambieacuten es muy directo y claro Aparte del botoacuten playpara iniciar el juego el botoacuten opciones para configurar el audio del juego los efectos el idioma yver los creacuteditos Tiene el botoacuten store donde este juego tiene implementada la modalidad freemiumpara ir comprando diferentes objetos dentro de el que nos daraacuten ciertas ventajas dentro delgameplay La compra se podraacute realizar con monedas virtuales (los botones) que los habremos idorecogiendo durante los diferentes niveles jugados o tambieacuten podemos comprar cantidadesdeterminadas de botones a cambio de dinero de verdad Dispone de vinculacioacuten a redes socialescomo Twitter y Facebook

Puntos Positivos Sencillez adictivo vinculado a Twitter y el Facebook el juego se puede pararNavegacioacuten correctaPuntos Negativos La pantalla inicial tarda demasiado en desaparecer y no da ninguacuten tipo de

Paacutegina 37 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriainformacioacuten al usuario puede llegar a parecer que se a colgado debido al largo tiempo que tardaal menos con el dispositivo que se ha verificado

313 Temple Run

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 16 y 17 pantallas juego Temple runLinkhttpsplaygooglecomstoreappsdetailsid=comimangitemplerun Es un juego que no tiene final donde un explorador tiene que evitar la muerte superandodiferentes obstaacuteculos a traveacutes de diferentes pasillos tendremos que dibujar diferentes trazos deforma taacutectil para que el personaje gire salte o se deslice por el suelo al mismo tiempo tendremosque inclinar el teleacutefono para que el personaje vaya recogiendo monedas que podremos utilizarpara adquirir objetos y mejoras en la partida A medida que vamos recorriendo maacutes y maacutes metrosla dificultad aumenta y nos obligara a realizar maacutes acciones en un espacio de tiempo maacutes cortoasiacute pues los reflejos juegan un papel importante

Tambieacuten dispone de una pantalla que dura unos segundos seguida de un menuacute de opciones muyclaro y definido Este igual que el anterior dispone de una tienda donde se pueden comprarmejoras (potenciadores) con dinero virtual o real Los botones de inicio son muy similares al delanterior juego visto Dispone de vinculacioacuten a redes sociales como Twitter

Puntos Positivos Sencillez Adictivo vinculado a Twitter el juego se puede parar NavegacioacutencorrectaPuntos Negativos -

Paacutegina 38 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria314 Attack of the Spooklings

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 18 y 19 pantallas juego Attack of the SpooklingsLinkhttpsplaygooglecomstoreappsdetailsid=compicarogamesspooklings_free

Finalmente nos centramos en este casual con aspecto visual retro Otro juego que no disponede final y donde la dificultad va aumentando conforme el tiempo de juego aumenta El objetivo deljuego es matar a todos los Spooklings que quieren atacar nuestro poblado La forma de matar alos Spooklings es con el dedo deslizaacutendolo sobre la pantalla soacutelo que un Spookling llegue anuestro poblado en la parte inferior de la pantalla la partida finaliza Debemos evitar de todas lasformas posibles que lleguen a la parte inferior de la pantalla

Tambieacuten dispone de una pantalla de inicio y un menuacute inicial de juego claro y directo no disponede ninguna vinculacioacuten a redes sociales El juego no se puede parar La navegacioacuten por todas laspantallas es correcta teniendo pantalla de puntuaciones maacutes altas pantalla con mini tutorial decoacutemo jugar y unas opciones para configurar el audio y ver los creacuteditos del juego Sin embargo adiferencia de los otros tiene algunas fallas de disentildeo a nivel de transiciones entre pantallas yfuncionalidades baacutesicas que aparentemente no tienen mucho sentido Fuera de la pantalla dejuego no es posible abandonar la aplicacioacuten de ninguna de las maneras no hay botoacuten de salida yla tecla de ir hacia atraacutes no funciona la uacutenica manera de salir es matando el proceso Por otrolado durante la partida con el botoacuten de ir atraacutes conseguimos hacer pausa del juego pero de unaforma que no estaacute anunciada al usuario de ninguna manera con alguacuten icono visual que informa alusuario de la funcionalidad Una vez parado el juego con una tecla que no estaacute indicada enninguna parte como tal nos da dos opciones RESTART y QUIT con QUIT salimos de la aplicacioacutenalgo que no se puede hacer en ninguacuten otro punto de la aplicacioacuten Con RESTART vuelve aempezar la partida y se pierde la que teniacuteamos empezada En resumen si pulsamos este botoacuten noestaacute anunciado en ninguna parte por accidente durante una partida perdemos la partida ya que notenemos la opcioacuten de continuar puesto que o volvemos a empezar o salimos de la aplicacioacuten

Paacutegina 39 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez Muy adictivoPuntos Negativos Errores en el disentildeo de menuacutes y transiciones entre pantallas no tienevinculacioacuten a redes sociales no tiene pausa

Todo lo que se ha visto en este estudio comparativo nos da una idea de que el disentildeo que selleve a cabo debe cumplir las siguientes metas tener una mecaacutenica de juego adictiva y sencillaque la disposicioacuten de opciones e iconos han ser claras y dejar claro al usuario de forma visual queacutefuncionalidad tienen las transiciones y operativas baacutesicas deben estar bien indicadas eimplementadas El disentildeo visual debe ser lo mas cuidado posible aunque a veces en juegos paraeste tipo de dispositivos no es el que maacutes domina sobre todo si el juego tiene una mecaacutenica muyadictiva aunque si se consiguen las dos cosas mucho mejor Otro punto importante es tener unamecaacutenica freemium implementada dentro del juego con una tienda para comprar mejorasaplicables a la mecaacutenica de juego Otro punto importante es la vinculacioacuten del juego a redessociales y que recoja puntuaciones a nivel mundial y no locales del dispositivo todos estosingredientes le pueden dar al juego un plus que haga que el usuario vea el juego maacutes atractivo

Debido a temas de tiempo inicialmente se descarta para este proyecto la implementacioacuten de lassiguientes funcionalidades dentro del videojuego las puntuaciones a nivel mundial estas demomento quedaraacuten sujetas a nivel local del dispositivo tambieacuten se descarta la vinculacioacuten a redessociales y mecaacutenicas freemium

El resto de puntos comentados como las mecaacutenicas sencillas y adictivas aspecto visual lo maacutescuidado posible dentro de los recursos de que se dispone y la navegacioacuten entre pantallas ymenuacutes claros y sencillos seraacute lo que se transportaraacute al disentildeo y la posterior implementacioacuten delproyecto Es posible que durante la implementacioacuten del disentildeo mostrado en este documento semodifiquen algunos puntos por temas de balanceo y equilibrio del producto final

32 Perfiles de usuarios identificados

Los juegos casuales son juegos con mecaacutenicas simples Este hecho hace que esteacuten al alcancede cualquier usuario aunque eacuteste no sea un jugador experimentado acostumbrado a utilizar juegoscon mecaacutenicas maacutes complicadas que requieren de cierta experiencia previa Al mismo tiempo sonjuegos que pueden ser jugados en cortos espacios de tiempo Por tanto el tipo de usuario deestos juegos sera muy variado Podemos encontrar el perfil de usuario experimentado tanto enlas tecnologiacuteas como en los videojuegos y que tiene intereacutes por cualquier tipo de juego Y por otrolado encontramos el usuario poco experimentado pero que gracias a los smarphones y lasencillez de las mecaacutenicas de juego provoca que tambieacuten juegue

Todos tendraacuten un objetivo comuacuten pasar un rato jugando al juego Para mejorar su uacuteltimo reacutecordAunque en este tipo de juegos el usuario tambieacuten puede jugar sin buscar ninguacuten tipo de metaconcreta simplemente pasar un rato divertido sin necesidad de alcanzar ninguacuten tipo de reacutecord niobjetivo concreto Tambieacuten es importante mencionar que aunque los perfiles de usuarios son muyvariados existe una fuerte tendencia a que los jugadores de este tipo de juegos tiendan a sermaacutes grandes que los jugadores de otros tipos de videojuegos y suelen tener un intereacutes y tiempolimitado tanto para jugar como los videojuegos en general siendo normalmente del sexofemenino

Se detectan dos grandes grupos de perfiles de usuario los experimentados en jugar avideojuegos y los no experimentados en jugar videojuegos edades diferentes profesionesvariadas educacioacuten variada sexo variado Los usuarios de Android en general suelen pagarmucho menos por aplicaciones que otros grupos de usuarios como los de iphone por ejemplo

Paacutegina 40 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Los haacutebitos de consumo en los estados unidos ya no de los usuarios de juegos casuales sinode los usuarios de Android en general se definen de la siguiente manera soacutelo un 4 de estospaga por descargar una aplicacioacuten contra un 23 y un 31 de los usuarios de la App Store paraiPhone y iPad respectivamente tal y como muestra un estudio realizado por la empresa Statistacon las 100 aplicaciones maacutes descargadas

ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitasSe puede ver en linea en el link httpwwwstatistacomtopics983mobile-app-monetizationchart1400paid-apps-don-t-stand-a-chance-on-google-play

Se puede ver otro articulo similar en el siguiente link

httpwwwwayerlesscom201307usuarios-de-android-pagan-menos-por-apps-que-los-de-ios

La mayoriacutea de aplicaciones gratuitas utilizan la modalidad freemium que no es maacutes que ofrecerun producto baacutesico de forma gratuita y cobrar a los usuarios por opciones maacutes avanzadas oespeciales dentro de la misma aplicacioacuten No obstante tambieacuten es posible encontrar aplicacionescompletamente gratuitas sin la modalidad freemium

Como ya se ha dicho se han detectado inicialmente dos grandes grupos dentro de la masa deusuarios que son consumidores potenciales de juegos casuales Estos son los usuarios asiduos ajugar videojuegos de todo tipo y con experiencia en el uso de tecnologiacuteas en general es decirusuarios experimentados Por otro lado encontramos los que no tienen costumbre de jugar muchoy normalmente tampoco tienen una gran experiencia en el uso de tecnologiacuteas en general pero

Paacutegina 41 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debido a la simpleza de los videojuegos casuales eacutestos tambieacuten se convierten en jugadores yen muchas ocasiones se convierten en los usuarios que consumen maacutes este tipo de juegos Asiacutepues encontramos dos grandes grupos seguacuten unas caracteriacutesticas comunes experiencia previa osin experiencia ante los videojuegos y las tecnologiacuteas

33 Contextos de uso

331 iquest Doacutende

Al tratarse de un casual game para un dispositivo moacutevil el espacio de utilizacioacuten seraacute muyvariado Por tanto los usuarios podraacuten encontrarse en muchos lugares distintos como puedenser en casa en el tren en el metro en el autobuacutes al aire libre etc En definitiva el usuario podraacuteencontrarse en cualquier lugar

332 iquest Cuaacutendo

El tipo de juegos casuales tienden a ser juegos donde los usuarios realizan partidas cortas peroal mismo tiempo la naturaleza adictiva de estos hace que los usuarios puedan quedar atrapadosdurante varias horas repartidas en ratos diferentes o continuados dependiendo de la situacioacuten decada usuario Por tanto el cuaacutendo de este tipo de juegos puede ser muy variado casi en cualquiermomento que el usuario pueda dedicarle unos minutos o ratos maacutes largos durante su tiempolibre mientras se desplaza ya sea en tren en metro o en alguacuten otro medio de transporte que nonecesite estar pendiente del vehiacuteculo cuando esta en la cama etc

333 iquest En que entorno

Los entornos de utilizacioacuten pueden tambieacuten ser muy variados promovidos por doacutende y el cuaacutendoPor lo tanto el entorno tecnoloacutegico podraacute tambieacuten ser variado puede existir o no conexioacuten a lared en un entorno social muy diferente que podraacute ser maacutes privado o maacutes puacuteblico yconsecuentemente se dibujaraacute un entorno ambiental variado seguacuten el momento

4Disentildeo y ldquoConcept Artrdquo

41 Elementos presentes en la interfaz de la aplicacioacuten

Con todo lo que se ha visto en el apartado 31 estudio comparativo queda patente que la interfazde usuario debe ser clara y sencilla Seraacute necesario que contenga las siguientes pantallas

bull Pantalla de intro inicial que apareceraacute durante un segundobull Pantalla menuacute inicial del juego con las opciones Play Scores Options () How to play bull Pantalla de nivel donde se desarrolla el videojuegobull Pantalla high scores que mostrara la tabla de reacutecords con las 10 puntuaciones maacutes altasbull Pantalla how to play instrucciones de como jugar tambieacuten se integraran dentro del

videojuego y apareceraacuten durante la primera partida que se jueguebull Pantalla opciones podremos activar y desactivar el sonido y los efectos de audio A su vez

desde esta pantalla podremos acceder a la pantalla de creacuteditosbull Pantalla de creacuteditos pantalla doacutende se mostraran lo creacuteditos del videojuego bull Pantalla Ready pantalla de juego con el mensaje sobre impreso antes de empezar a

jugar apareceraacute durante 3 segundosbull Pantalla con los botones resume quit sobreimpresos en la pantalla de juego se accederaacute

Paacutegina 42 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaa ella con el botoacuten de pausa pausando el juego Desde ella podremos reanudar el juego oabandonar el juego

bull Pantalla game over con el resumen de los reacutecords conseguidos durante la partidapuntostiempo jugado numero de lobos ahuyentados y ovejas colocadas en el corralDesde esta pantalla tendremos dos botones Play again y Exit uno nos permitiraacute volver ajugar y el otro nos permitiraacute abandonar el juego tal y como su nombre indica

42 Flujos de interaccioacuten

En la siguiente ilustracioacuten se muestran los flujos de interaccioacuten definidos con las pantallasenumeradas en el apartado anterior Los flujos muestran la navegacioacuten que debe existir entre laspantallas del videojuego

ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintaspantallas

Paacutegina 43 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

43 Prototipaje

431 Sketches

En este apartado se muestran los primeros esbozos realizados a mano alzada estos intentanplasmar el disentildeo del juego en su totalidad Estos esbozos serviraacuten como punto de partida en unasegunda fase para realizar el prototipaje de todas las pantallas que intervienen en el videojuegoutilizando todo el material recopilado en la red

Tal y como ya se ha dicho en este mismo documento anteriormente no se dispone deconocimientos de disentildeo suficientes como para abordar un disentildeo de arte desde cero Por lo tantose han utilizado recursos ya disponibles en la red para el montaje de todos los graacuteficos delvideojuego Todos los recursos utilizados estaacuten bajo licencias creative commons o dominio puacuteblico A continuacioacuten se muestran los bocetos

ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 44 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 45 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada

En la siguiente paacutegina se muestran las transiciones definidas entre pantallas con los sketchesrealizados ilustracioacuten 241 Las transiciones toman como base el diagrama de flujos deinteraccioacuten definido en el apartado 42 de este documento ver ilustracioacuten 21

Paacutegina 46 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria432 Transiciones definidas entre pantallas

ilustracioacuten 241 Transiciones definidas entre pantallas

Paacutegina 47 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria433 Prototipo horizontal de alta fidelidad

4331 Pantalla inicial

Pantalla de inicio al ejecutar el juego apareceraacute esta pantalladurante un segundo

4332 Pantalla menuacute principal del juego

Pantalla de menuacute principal del juego desde esta pantallapodremos empezar a jugar (botoacuten Play) consultar la tabla depuntuaciones (botoacuten Scores) e ir a la pantalla de opciones deljuego (botoacuten Options) El interrogante de la parte inferiorderecha nos serviraacute para ir a la pantalla de instruccionesHOW TO PLAY para saber coacutemo se juega

Paacutegina 48 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4333 Pantalla de opciones

La pantalla de opciones nos permitiraacute deshabilitar la muacutesicadel juego y los efectos sonoros pasando el dedo sobre losiconos del altavoz y las notas musicales con el altavozdeshabilitaremos la muacutesica y con las notas musicalesdesactivaremos los efectos de audio La flecha naranja nosconduciraacute de nuevo a la pantalla de inicio del juego el botoacutencreacuteditos nos llevara a la pantalla de creacuteditos

4334 Pantalla de creacuteditos

Pantalla de creacuteditos en ella se muestran los nombres dequienes han disentildeado y programado el juego con la flechanaranja inferior volvemos a la pantalla de opcionesDeslizando el dedo sobre el texto se podraacute desplazar haciaarriba y hacia abajo

Paacutegina 49 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4335 Pantalla tabla de puntuaciones

Pantalla tabla de puntuaciones nos mostrara una tabla conlas 10 puntuaciones maacutes altas de todas las partidas jugadasEsta tabla se guardara de forma local en el dispositivo

4336 Pantalla de juego READY

Pantalla de juego READY Apareceraacute durante unossegundos una vez iniciada la partida Despueacutes de 3segundos pasara a la pantalla de juego que se muestra en elsiguiente apartado

Paacutegina 50 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4337 Pantalla de juego

La pantalla de la izquierda es donde se desarrollaraacute todo el gameplay en la parte superiorizquierda de la pantalla se muestran los puntos conseguidos y las vidas En la parte superiorderecha hay un botoacuten que permitiraacute pausar el juego una vez pausado mostraraacute la pantalla depausa con los botones RESUME y QUIT la pantalla se muestra en el apartado siguiente En laparte derecha se muestra otra pantalla ideacutentica a la de la izquierda donde se puede ver elgameplay baacutesico representado con flechas los lobos saldraacuten de los extremos de la pantalla yendohacia las ovejas las ovejas al mismo tiempo saldraacuten de la derecha de la pantalla y las tendremosque lanzarlas deslizando el dedo sobre ellas y lanzandolas hacia el establo La puerta se iraacuteabriendo y cerrando aleatoriamente los lobos una vez puestos en escena los podremos ahuyentardeslizando el dedo sobre ellos un nuacutemero de veces determinado en funcioacuten del color del lobocomo esta indicado en el apartado 131 de este documento

Paacutegina 51 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4338 Pantalla de pausa botones RESUME y QUIT

Pantalla de pausa que apareceraacute cuando se pause el juegoCon la opcioacuten RESUME continuaremos jugando con laopcioacuten QUIT se saldraacute de la partida y pasaraacute a la pantalla delmenuacute principal del juego descrita en el punto 322

4339 Pantalla GAME OVER

Pantalla GAME OVER apareceraacute cuando se hayanagotado todas las vidas Mostraraacute un resumen de los puntosconseguidos en la partida actual tiempo invertido en lapartida lobos ahuyentados y ovejas salvadas Con losbotones de la parte inferior podremos volver a jugar (botoacutenplay again) o salir del juego con el botoacuten exit este botoacuten nosconduciraacute a la pantalla de inicio de juego descrita en elapartado 322

Paacutegina 52 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria43310 Pantalla de instrucciones de juego HOW TO PLAY

Pantalla de instrucciones del juego nos haraacute una breveexplicacioacuten de coacutemo jugar Deslizando el dedo sobre el textose podraacute desplazar hacia arriba y hacia abajo El juegodispondraacute de unas mini instrucciones in game queapareceraacuten en la primera partida que se juegue en forma decajas de texto esta pantalla se muestra en el siguienteapartado

43311 Pantalla de instrucciones in game

Esta pantalla muestra el modo como quedaraacuten integradaslas instrucciones de juego dentro del gameplay Estasinstrucciones apareceraacuten solamente la primera vez que sejuegue

Paacutegina 53 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Todo el disentildeo mostrado en este apartado ha sido realizado con todos los recursos encontradosen la red todos ellos quedan recogidos en el apartado 6 Con el programa Gimp se ha montadotodo el disentildeo de alta fidelidad mostrado en este apartado Se ha trabajado con capas paradisponer de flexibilidad en la construccioacuten del disentildeo A su vez el hecho de tener los disentildeos porcapas nos permitiraacute poderlo exportar a la implementacioacuten del videojuego de una manera coacutemoday raacutepida en el apartado 5 implementacioacuten se hace referencia a como convertir el disentildeo realizadoen capas a recursos graacuteficos del videojuego

En la siguiente ilustracioacuten se muestra una captura del disentildeo de la pantalla de juego descrita enel apartado 4337 realizado con Gimp

ilustracioacuten 242 Disentildeo pantallas con Gimp

Paacutegina 54 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

5Implementacioacuten

51 Arquitectura global

511 Arquitectura del framework libGDX

LibGDX es un framework multiplataforma que actualmente soporta WindowsLinuxMac OS XAndroid iOS y HTML5 Esto permite escribir el coacutedigo una sola vez y desplegarlo en las distintasplataformas comentadas sin tener que modificar el coacutedigo LibGDX permite bajar a maacutes bajonivel si se desea ya que da acceso directo al sistema de ficheros dispositivos de entrada desonido y a OpenGL a traveacutes de la interfaz unificada OpenGL ES11 y 20

LibGDX ofrece a su vez un conjunto de APIs que ayudan en las tareas comunes de desarrollode videojuegos como son la presentacioacuten de sprites texto la creacioacuten de interfaces de usuario lareproduccioacuten de efectos de sonido y secuencias musicales y los distintos tipos de caacutelculosnecesarios en la programacioacuten de videojuegos

En algunas ocasiones LibGDX deja de lado el lenguaje Java y recurre a coacutedigo nativo paraconseguir un mejor rendimiento No obstante todas estas funciones quedan ocultas detraacutes de lasAPIs de Java De manera que en el momento de desarrollar un videojuego no hay quepreocuparse de realizar una compilacioacuten cruzada entre Java y C++

LibGDX es un framework maacutes que un motor de videojuegos que ayuda al desarrollo de estosgracias a las abstracciones de gran alcance que ofrece y deja en manos del programador elegircomo escribir su videojuego o aplicacioacuten

512 Visioacuten de los moacutedulos de libGDX

LibGDX comprende varios moacutedulos que proporcionan los servicios necesarios para crear laarquitectura tiacutepica de un videojuego

ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en unvideojuego

Paacutegina 55 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaA continuacioacuten de describen los moacutedulos mostrados en la ilustracioacuten 25

Input Proporciona un modelo de entrada unificado para todas las plataformas Soporta tecladopantalla taacutectil aceleroacutemetro y ratoacuten si esta disponible

Graphics Permite el dibujo de las imaacutegenes en pantalla usando el hardware proporcionado por laimplementacioacuten de Open GL ES las versiones soportadas son GL versioacuten 10 11 20

Files Proporciona los meacutetodos necesarios para las operaciones de lectura escritura totalmenteindependientes a los medios de comunicacioacuten existente

Audio Proporciona las herramientas necesarias para la reproduccioacuten de sonido para todas lasplataformas

Math Moacutedulo que proporciona los caacutelculos matemaacuteticos necesarios orientados al desarrollo devideojuegos

Physics LibGDX proporciona un wrapper completo al motor de fiacutesicas en 2D open sourcedesarrollado en C++ llamado Box2D

52 Arquitectura de un videojuego

521 Programa vs Aplicacioacuten

Una aplicacioacuten convencional sigue una secuencia loacutegica lineal reacciona cuando sucede alguacutenevento es decir responde a eventos como por ejemplo cuando se pulsa una tecla Por el contrarioun videojuego es maacutes complejo hace caacutelculos y dibuja en pantalla constantemente aunque no seproduzca ninguacuten evento

522 Estructura baacutesica de un videojuego

Programar videojuegos es una forma completamente diferente de programar software Ladiferencia principal entre una aplicacioacuten convencional y un videojuego radica en la gestioacuten deeventos tal y como se ha indicado anteriormente un programa ofrece respuestas a eventos y unavez son servidos permanece a la espera de una nueva orden en cambio un videojuego es unprograma que debe actuar en tiempo real tiene que estar haciendo caacutelculos y dibujando enpantalla constantemente No se puede esperar a que suceda un evento para poder actuaraunque el jugador no haga nada no presione una sola tecla no mueva el ratoacuten el juego tiene quecalcular el tiempo que lleva jugando en ese nivel si le va a atacar alguacuten enemigo si estaacute cargandoenergiacutea y por supuesto dibujar en pantalla todo lo que va sucediendo

La mayoriacutea de videojuegos estaacuten construidos bajo la misma estructura baacutesica sobre la cual correel programa Esta estructura puede tener variaciones pero de forma general se presenta de lasiguiente manera

Inicializacioacuten En esta primera etapa el juego se situacutea en su estado inicial Se realizan lasinicializaciones por lo que respecta a las libreriacuteas o motores que vayan a utilizarse de variables yestructuras de datos referentes a los atributos de las entidades o personajes escenariosconfiguraciones etc y de los diferentes recursos fiacutesicos que vayan a emplearse tales comograacuteficos o sonidos

Paacutegina 56 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Ciclo de juego En esta parte esta toda la accioacuten este ciclo se repite de manera indefinida hastaque el jugador pierda gane o salga del juego Este punto se puede dividir en tres partes quepodemos llamarlas entrada proceso y salida

Como entrada se entiende el punto donde se captura todo lo que hace el jugador comopresionar los botones de control mover el ratoacuten presionar las flechas del teclado tocar la pantallataacutectil y el resto de informacioacuten que recibe el juego

En la parte de proceso es donde se procesa toda la informacioacuten que se recibioacute en la entrada ytiene lugar la loacutegica del videojuego Por tanto es donde se realizan los caacutelculos de fiacutesicas si eljuego los requiere asiacute como tambieacuten los caacutelculos de la inteligencia artificial de esteconjuntamente con el tratamiento graacutefico

La salida es la encargada de enviar al jugador toda la informacioacuten que se ha procesado en laetapa anterior proceso Se muestra al jugador el resultado de lo que hizo con la visualizacioacuten enpantalla del estado actual del videojuego Tambieacuten es en este punto donde se hace sonar lamuacutesica y efectos de sonido

Por uacuteltimo y fuera del ciclo de juego esta la parte de finalizacioacuten esta parte es la encargada deliberar todos los recursos y memoria utilizada durante el transcurso del videojuego

Es importante diferenciar estas tres etapas del ciclo del videojuego y ver queacute tarea se delega encada una de ellas en la entrada tan soacutelo nos ocupamos de captar los posibles eventos el procesose encarga en primer lugar de procesar la entrada y maacutes adelante de la loacutegica del videojuego ypor uacuteltimo la capa de salida se encarga de visualizar y reproducir la muacutesica

Con estos puntos claros se puede mostrar la estructura principal de un videojuego En elsiguiente apartado se muestra esta estructura baacutesica a modo de esquema

Paacutegina 57 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

53 Esquema de la estructura baacutesica de un videojuego

Inicializacioacuten Creacioacuten de estructuras dedatos carga de recursos graacuteficos y sonidos

Entrada Gestioacuten de pantalla taacutectiljoystick teclado

Proceso Lanzamos una oveja al corralrebota la oveja salta un lobo al escenarioetc

Salida Mostrar graacuteficos y reproducirsonidos

ilustracioacuten 26 Estructura baacutesica de unvideojuego

Finalizacioacuten Liberar recursos

Paacutegina 58 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

54 Patrones de disentildeo

541 Introduccioacuten

En el disentildeo de cualquier aplicacioacuten como por ejemplo un videojuegono es posible abordarlo porcompleto El proceso de disentildeo de una aplicacioacuten suele ser iterativo y se realiza en diferentesetapas de forma que se vaya refinando con el tiempo Conseguir un disentildeo perfecto a la primeraes muy difiacutecil de conseguir El disentildeo de aplicaciones es complejo y la maacutes importante y que maacutesimpacto tiene no soacutelo sobre el producto final sino tambieacuten sobre su vida futura Ya que es en eldisentildeo en donde se definen las estructuras y entidades que se van a encargar de resolver elproblema planteado Como de bien se definan estas estructuras y entidades influiraacute en granmedida en el eacutexito o fracaso del proyecto y en la viabilidad de su mantenimiento

Los patrones de disentildeo son formas reconocidas y probadas de resolver problemas de disentildeo queson recurrentes en el tiempo No es maacutes que basarse en experiencias anteriores en problemassimilares aplicado soluciones probadas anteriormente en determinados contextos para alcanzarun mejor disentildeo maacutes raacutepidamente

Existen distintos patrones para distintos problemas de disentildeo No obstante en este documentosoacutelo se haraacute hincapieacute en los patrones utilizados para este proyecto Quedando fuera del alcancede este documento los demaacutes patrones existentes

542 Patrones de creacioacuten

Estos patrones nos proporcionan una solucioacuten relacionada con la construccioacuten de clases objetosy otras estructuras de datos Algunos ejemplos de patrones pueden ser Abstract Factory BuilderSingleton estos ofrecen mecanismos de creacioacuten de instancias de objetos y estructurasescalables dependiendo de las necesidades

543 Singleton

Para este proyecto se ha utilizado este patroacuten ya que era necesario tener una uacutenica instancia dealgunas determinadas clases En java cuando se utiliza el operador new es posible crear unainstancia de un objeto No obstante a veces es necesario tener una uacutenica instancia de un objetopor ejemplo para poder acceder a ella des de cualquier punto de la aplicacioacuten Seria un ejemplolapelota de un juego de pinball en donde podriacutea ser conveniente mantener una uacutenica instancia deeste objeto

La solucioacuten para garantizar que solo existe una instancia de un objeto se consigue impidiendoque ninguna otra clase pueda acceder al constructor por este motivo de declara el constructorcomo miacutenimo de forma protegida o privada y se proporciona un uacutenico punto (controlado) en dondese proporciona la uacutenica instancia En la siguiente ilustracioacuten se muestra el diagrama de clases delpatroacuten Singleton

ilustracioacuten 27 Singleton

Paacutegina 59 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria A continuacioacuten en el listado 543 se muestra una implementacioacuten baacutesica del patroacuten Singletonutilizada en el proyecto para la clase que maneja el audio del videojuego

Listado 543

1 package comthreecometflingthesheeputil23 import combadlogicgdxaudioMusic 4 import combadlogicgdxaudioSound56 public class AudioManager 7 8 public static final AudioManager instance = new AudioManager()910 private Music playingMusic11 private Sound playingSound1213 Singleton14 private AudioManager() 15 1617 1819 public void ResunmeMusic()20 21 if(playingMusic = null) playingMusicplay()22 2324 public void PlayMusic(Music musicfloat volumeboolean loop) 25 26 if(GamePreferencesinstancemusic) return27 playingMusic = music28 musicsetLooping(loop)29 musicsetVolume(volume)30 musicplay()31 3233 public void StopMusic()34 35 if(playingMusic = null) playingMusicstop()36 3738 public void PauseMusic()39 40 if(playingMusic = null) 41 if(playingMusicisPlaying()) 42 playingMusicpause()43 44 45 4647 public void PlaySound(Sound soundfloat volume) 48 49 if(GamePreferencesinstancesound) return50 playingSound = sound51 soundplay(volume)52 5354 public void PlaySound(Sound soundfloat volumefloat pitchfloat pan) 55 56 if(GamePreferencesinstancesound) return57 playingSound = sound58 soundplay(volume pitch pan)59 60

Esta clase maneja el audio del videojuego tanto efectos de sonido como la muacutesica es una clase

Paacutegina 60 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debe estar accesible des de cualquier punto de la aplicacioacuten y no tiene ninguacuten sentido que seinstancie repetidas veces soacutelo sera necesaria una instancia de dicha clase para poder manejar losaudios y muacutesicas Como se puede ver en la linea 14 del listado 543 se declara el constructorprivado y en la linea 8 se proporciona el punto donde se proporciona la uacutenica instancia de dichaclase a traveacutes de la variable instance declarada de forma publica para que se accesible desdecualquier otra clase y a su vez declarada de forma static y final Con final le decimos que estavariable ya no puede ser modificada una vez declarada es decir sera una constante Con static leindicamos que podremos utilizar la variable instance sin la necesidad de hacer ninguna instanciacon el operador new de la clase AudioManager

Existen varias clases en el videojuego que son singleton A continuacioacuten se nombran todas ellasAudioManager Assets WorldGameController CounterTime GamePreferences

55 Diagramas de clases definitivos

Se ha dividido en varios diagramas para facilitar su lectura se pueden ver los diagramas en lossiguientes apartados de este documento A continuacioacuten se pasan a comentar las clases descritasen ellos

56 Diagramas nuacutecleo videojuego

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep-android encontramoslas siguientes clases

MainActivity Hereda de AndroidAplication que a su vez hereda de Activity es donde se crea laaplicacioacuten crea una instancia de FlingTheSheepMain

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep encontramos laclase FlingTheSheepMain donde se instancia la pantalla de intro del juego dentro del meacutetodocreate

Siguiendo el esquema estructural de un videojuego descrito en el punto 53 de este documentola ilustracioacuten 28 detalla el diagrama de clases que engloba la inicializacioacuten del juego y el ciclo devida

La Inicializacioacuten queda recogida en la clase Assets esta clase es un singleton que instanciaotras clases que a su vez guardan todos los recursos del videojuego por recursos se entiendetexturas para los graacuteficos archivos de audio ficheros con informacioacuten necesaria para el juegoUna vez inicializado el hecho de ser un singleton nos permite acceder a estas clases a traveacutes dela clase assets des de cualquier punto de la aplicacioacuten En la ilustracioacuten 29 se detallan todas estasclases que engloba la clase assets Esta clase se encuentra el el paquetecomthreecometflingthesheepgame A continuacioacuten se comenta cada una de ellas con una brevedescripcioacuten

LevelDecoration Enumera todas las texturas de los objetos de decoracioacuten del videojuego floreshierba etc Son objetos que no tienen ninguna interaccioacuten con el juego simplemente decoran

AssetFontsScene2D Engloba los tipos distintos de fuente que se utilizan en el videojuego tipode letra medida y color

AssetSound Enumera todos los efectos de sonido del juego

Paacutegina 61 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAssetMusic Contiene todas las muacutesicas del juego

FileHandleHighScores Inicializa la tabla de puntuaciones local y la actualiza cada vez que serealiza una partida de juego

LevelObjects Engloba todos los objetos que tienen interaccioacuten con el videojuego por interaccioacutense entiende objetos que pueden colisionar con otros o que tienen alguacuten papel importante dentrode videojuego no son solo objetos de decoracioacuten

Character Contiene el protagonista del juego el personaje que lleva el jugador en esta caso lasovejas

NPCs En esta clase quedan englobadas las texturas de los enemigos en esta caso los lobos

GUI En esta clase se engloban todas las texturas utilizadas para la creacioacuten de la interfaz deusuario botones imaacutegenes

La clase Constants es una clase que declara varias constates estaacuteticas que son accesibles desde cualquier punto de la aplicacioacuten y se utilizan tanto en la inicializacioacuten como en el ciclo de vidadel videojuego La podemos encontrar en el paquete comthreecometflingthesheeputil

El ciclo de vida del videojuego entrada proceso y salida queda repartido en las siguientes clases

Entrada Gestioacuten pantalla taacutectil se realiza en la clase WorldGameController en el meacutetodollamado handleInput a su vez cada personaje(character) y enemigo(NPC) gestiona su propiaentrada de eventos a traveacutes de los meacutetodos sobre escritos touchDown fling y tap Ver ilustracioacuten30 clases Sheep y Wolf

Proceso Este apartado realiza la loacutegica del videojuego y es responsable de esto el meacutetodoupdate de la clase WorldGameController Dentro de este meacutetodo existe implementada lamaquina de estados descrita en el apartado 231 con todos los estados posibles que el juegopuede tener durante su ciclo de vida los estados son READYGAMEPAUSEGAME OVER Cadapersonaje y enemigo lleva implementado su propia loacutegica y maquina de estados dentro de susclases correspondientes Ver ilustracioacuten 30 clases Sheep y Wolf estas maacutequinas de estados sonlas descritas en los apartados 232 y 233 respectivamente

Salida La salida descrita en el apartado 53 queda recogida en la clase GameScreen Verilustracioacuten 31

Finalizacioacuten La finalizacioacuten liberacioacuten de recursos queda a cargo del meacutetodo sobre escrito hiderepartido por las distintas clases de la aplicacioacuten

Otras clases que intervienen en el ciclo de juego recogidas en la ilustracioacuten 28 sonCounterTime GamePreferences AudioManager a continuacioacuten se detalla la funcionalidad decada una de ellas

CounterTime Esta clase engloba el calculo de tiempo transcurrido desde que empieza el juegohasta que termina hace la funcioacuten de contador de tiempo interno

GamePreferences Esta clase hace persistente la configuracioacuten escogida por el usuario en lasopciones Es posible configurar el juego con o sin sonido al igual que los efectos de audio estaclase es la encargada de guardar esta configuracioacuten aunque abandonemos la aplicacioacuten

Paacutegina 62 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

AudioManager Clase que se encarga tanto de la reproduccioacuten de audio como los efectos desonido es su responsabilidad interrogar la configuracioacuten actual del sonido y efectos paradeterminar si tiene que realizar la reproduccioacuten de audio o efectos asiacute como tambieacuten determinarel volumen del sonido o si un audio hay que reproducirlo de forma ciacuteclica En el listado 543 deeste documento se puede ver el coacutedigo de esta clase como ejemplo de singleton

ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego

Paacutegina 63 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 29 Diagrama de clases Assets

57 Diagrama de clases objetos videojuego

En la ilustracioacuten 30 de este documento se detalla el diagrama de clases referente a los objetosdel videojuego Por objetos se entiende personaje principal enemigos juntamente con todos loselementos que forman el conjunto del escenario del videojuego

En primer lugar cabe destacar la existencia de la clase abstracta AbstractGameObject Estaclase abstracta define los meacutetodos comunes de todos los objetos del juego Por las necesidadesde implementacioacuten no se han definido meacutetodos abstractos no obstante la clase se define comoabstracta ya que va a ser la superclase de todos los objetos del videojuego y por tanto no se van arealizar instancias de esta A continuacioacuten se enumeran las clases que se extienden de esta y querecogen todos los objetos del juego ya sean con o sin interaccioacuten en el

Paacutegina 64 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaGrass Hole Flower Flowers Stump ForestLeft ForestRight ThePen WoodFenceForestWoodFencePen DoorPen BorderGrassLeft BorderGrassRight PotionPurple AubergineRedPuddle Tree GrassField

Estas clases corresponden a los objetos que constituyen el escenario del videojuego Las clasesSheep y Wolf corresponden al personaje del videojuego y a los enemigos respectivamente estasclases no solamente contienen el meacutetodo para ser dibujadas en pantalla igual que las anterioressino que tambieacuten poseen toda la loacutegica para el comportamiento de cada una de ellas este puntocorresponderiacutea a la fase de proceso de la estructura baacutesica de un videojuego detallada en elpunto 53 de este documento Existe para cada personaje y enemigo una maquina de estadosimplementada que indica en que estado se encuentra en cada momento aplicando la loacutegicacorrespondiente para ese estado Ver las enumeraciones SHEEP_STATE y WOLF_STATE de lailustracioacuten 30 estas corresponden a las maacutequinas de estado definidas en los apartados 232 y233 respectivamente

Finalmente en la ilustracioacuten 30 aparecen las clases GameScreen y WorldGameController

La clase GameScreen como se vera en el apartado 58 es la clase que engloba todo lorelacionado con la pantalla del juego o nivel En ella se instancian todos los objetos descritosanteriormente para la creacioacuten del nivel asiacute como tambieacuten la creacioacuten de la GUI del videojuegobotones textos sobreimpresos y cajas de textos Es por este motivo que en la clase GameScreenexisten dependencias u asociaciones hacia todos los objetos dependiendo del tipo de declaracioacutende estos

La clase WorldGameController contiene la implementacioacuten de gran parte de la loacutegica delvideojuego esta clase formariacutea parte de la etapa de proceso dentro de la estructura baacutesica de unvideojuego descrita en el apartado 53 de este documento

Existe tambieacuten en esta clase una asociacioacuten hacia la clase GameScreen ya que des de la claseWorldGameController que es donde se encuentra gran parte de la loacutegica es necesario accedera la instancia de GameScreen para interactuar con varios elementos visuales que manipulan laloacutegica del videjuego

En la siguiente hoja se muestra la ilustracioacuten 30 correspondiente a todo los descrito en esteapartado

Paacutegina 65 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 30 Diagrama de clases objetos

Paacutegina 66 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

58 Diagrama de clases pantallas videojuego

En la ilustracioacuten 31 quedan recogidas todas las clases que intervienen en la creacioacuten depantallas del videjuego por pantallas se entine la pantalla de intro la del menuacute principal la deopciones etc Estas clases engloban todo lo necesario para la construccioacuten y visualizacioacuten deestas A continuacioacuten se detallan cada una de las clases

AbstractGameScreen Esta clase abstracta recoge todos los meacutetodos abstractos que sonimplementados en cada una de las clases que a continuacioacuten se detallan(pantallas) con la loacutegicanecesaria seguacuten las necesidades de cada pantalla No se crea ninguna instancia de esta clase

IntroScreen Corresponde a la pantalla de intro del videojuego descrita en el apartado 4331

MenuScreen Corresponde a la pantalla del menuacute inicial del juego des de aquiacute podemos escogersi jugar consultar la tabla de puntuaciones local ir a las opciones o a la pantalla de ayuda delvideojuego descrita en el apartado 4332 OptionsScreenPantalla de opciones descrita en el apartado 4333

CreditsScreen Pantalla de creacuteditosdescrita en el apartado 4334

HighScoresScreen Pantalla en donde se recoge la puntuacioacuten local del videojuegodescrita en elapartado 4335

GameScreen Pantalla general esta clase engloba toda la loacutegica del nivel del juego a su vezengloba la pantalla inicial de nivel READY la pantalla de pausa del juego y la de game overdescritas en los apartados 4336 4337 4338 4339

HowToPlayScreen El videojuego dispone de un tutorial in game que solo aparece la primera vezque jugamos a el y en las siguientes partidas ya no vuelve aparecer maacutes descrita en el apartado43311 No obstante existe una pantalla en donde podemos ver este tutorial fuera del juego estaclase esta destinada a contener los datos de esta pantalla descrita en el apartado 43310

TextGUI Esta clase contiene todos los textos sobreimpresos que existen en el videojuego En ellaesta la loacutegica de cada uno de estos textos para que sean posicionados y visualizados desde lasdistintas partes del videojuego

TUTORIAL_INGAME_STATE Esta enumeracioacuten enumera los estados de la maquina de estadosutilizada para mostrar el tutorial in game dentro del videojuego la primera vez que jugamos lamaacutequina de estados esta implementada dentro de la clase TextGUI la maacutequina corresponde a ladescrita en el apartado 234

En la siguiente hoja se muestra la ilustracioacuten correspondiente a todo los descrito en esteapartado

Paacutegina 67 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 31 Diagrama de clases pantallas

Paacutegina 68 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

59 Configurar el entorno de desarrollo

Antes de empezar a desarrollar juegos con libGDX es necesario instalar y configurar el entornode desarrollo Para ello se utilizaraacute Eclipse como entorno de desarrollo integrado IDE A su vez secreara un proyecto que nos serviraacute como base para el desarrollo de este

Es posible desarrollar con otros entornos distintos a Eclipse pero el hecho que Eclipse sea elentrono de desarrollo soportado oficialmente ha sido motivo suficiente para escogerlo para esteproyecto como entorno de desarrollo

591 Instalacioacuten

Para poder instalar el entorno de desarrollo nos haraacute falta primero instalar el Java DevelopmentKit(JDK) para posteriormente poder instalar eclipse

Una vez instalados seraacute necesario bajar el framework libGDX del siguiente enlace

httplibgdxbadlogicgamescomdownloadhtml

Tambieacuten sera necesario instalar el Android SDK seguidamente tendremos que ejecutar eclipse yinstalar los plugins necesarios para poder desarrollar con Android El plugin necesario paradesarrollar con Eclipse sobre Android de llama ADT (Android Developer Tools) Para instalar esteplugin debemos dirigirnos a Help--gtInstall new software tal y como muestra la siguiente ilustracioacuten

ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse

Paacutegina 69 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez el entorno de desarrollo preparado seraacute el momento de descomprimir el frameworklibGDX se recomienda descomprimirlo en la raiacutez ClibGDX en esta caso ya que trabajamos bajoWindows

Una vez descomprimido dentro de la la carpeta encontramos una aplicacioacuten llamada gdx-setup-uijar Esta aplicacioacuten nos ayuda a crear un proyecto ya configurado con las libreriacuteas necesariaslisto para ser importado a Eclipse y empezar a desarrollar con libGDX para Android O paracualquier otra de las plataformas soportadas por el framework En este caso se configura elproyecto para Android y para Escritorio de esta manera podremos verificar durante el desarrollodel proyecto los avances sin necesidad de instalarlo en un dispositivo Android ya sea fiacutesico ovirtual

Las siguientes ilustraciones muestran la configuracioacuten a realizar

ilustracioacuten 33 Creacioacuten proyecto libGDX Habraacute que pulsar en el botoacuten Create y con ello accederemos a la siguiente ilustracioacuten

ilustracioacuten 34 Creacioacuten proyecto libGDX

Paacutegina 70 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez configuradas todas las opciones le daremos al paso 4 Open the generation screen ygeneraremos el proyecto Esto proyecto sera importable a eclipse desde la opcioacuten Import delpropio IDE La configuracioacuten del proyecto tambieacuten es posible hacerla a mano no obstante esta aplicacioacutennos ahorra tiempo y posibles errores en el momento de configurarlo dentro del entorno ya quepara hacerlo a mano existen distintos pasos a seguir para conseguir lo mismo que se consiguecon esta aplicacioacuten con escasos clicks de ratoacuten

510 Traspaso del disentildeo a texturas

Todo el disentildeo realizado en el apartado 4 seraacute necesario pasarlo a texturas para posteriormenteutilizarlo en la implementacioacuten del juego como recursos graacuteficos

Una textura es una imagen digital cualquiera en cualquiera de los formatos habituales jpg pnggif tga etc Para poderla cargar dentro de un videojuego y manipularla haraacute falta una libreriacuteaespecializada para ello esto se podria programar para para el caso de este proyecto utilizamos elpropio framework libGDX para realizar esta tarea que a su vez envuelve el uso de OpenGL

Las texturas en OpenGL deben ser siempre potencias de 2163264128256 etc del contrarionos daraacute problemas y no funcionaraacute

El primer paso sera desmontar todas las capas pieza por pieza por decirlo de alguna manera ycrear ficheros de cada una de las capas de forma separada para guardarlas todas en una carpetacon un nombre identificativo Ver la siguiente ilustracioacuten

ilustracioacuten 35 Capas separadas por imaacutegenes

Paacutegina 71 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez realizado este paso deberemos juntarlas todas de nuevo en una uacutenica textura que seapotencia de 2 Trataacutendose de un juego para moacutevil las texturas no deberiacutean ser mayores de1024x1024 y no se podraacuten cargar muchas de ellas en memoria por razones obvias de recursosdel tipo de dispositivo

Para juntarlas utilizaremos una aplicacioacuten llamada Texture Packer esta nos juntara las texturasde repartieacutendola de forma que quepan en una tamantildeo de textura definido que en este caso serade 1024x1024 en caso de caber en una uacutenica textura el programa generara 2 texturas siempreoptimizadas a potencias de 2 La siguiente ilustracioacuten muestra el programa Texture packer

Ilustracioacuten 36 Texture packer El formato de salida de las textura sera png ya que necesitamos mantener el canal alpha deestas activado para los objetos sean correctamente dibujados en la escena del videojuego

Conjuntamente con la textura la aplicacioacuten nos generara un archivo de texto que contendraacute elnombre de la textura y la posicioacuten donde se encuentra dentro de la textura generada de1024x1024 Ver la siguiente ilustracioacuten en la siguiente paacutegina

Paacutegina 72 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 37 Posicioacuten texturas De esta manera podremos cargar las texturas en la fase inicializacioacuten en la clase Assets descritaen la ilustracioacuten 29 en forma de diagrama de clases

511 Implementacioacuten de las maacutequinas de estado

La implementacioacuten de las maacutequinas de estado se realiza con una estructura enumconjuntamente con una estructura switch case El siguiente listado muestra la declaracioacuten del laestructura enum implementada en la clase WorldGameController la implementacioacuten de todas lasmaacutequinas se realiza del mismo modo por tanto se toma esta como ejemplo en representacioacuten detodas las implementadas en el videojuego

Listado 5111

1 private enum GAME_STATE READYGAMEPAUSEGAME_OVER2 private GAME_STATE gameState34 gameState = GAME_STATEREADY

Paacutegina 73 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLa siguiente tabla muestra un trozo de la estructura switch case implementada en el meacutetodoupdate de la clase WorldGameController

Listado 5112

1 public void update(float deltaTime)2 3 switch(gameState)4 5 case READY6 if(audioReady) 7 AudioManagerinstancePlaySound(Assetsinstancesoundready 8 ConstantsVOLUME_AUDIO_EFFECTS)9 audioReady = false10 11 if(timeLeftShowReadyScreen gt 0)12 13 if(deltaTime lt 03f ) 14 timeLeftShowReadyScreen -=deltaTime15 16 if(timeLeftShowReadyScreen lt 0)17 18 gameScreensetVisibilityGUI()19 timeLeftShowReadyScreen = 020 CounterTimeinstancestartTime()21 22 AudioManagerinstancePlayMusic(Assetsinstancemusiclevel01 23 ConstantsVOLUME_MUSIC_GAME true)24 gameState = GAME_STATEGAME 2526 27 28 break 29 case GAME30 updateGame() 31 if(timeOpenDoorPen gt 0)32 33 if(deltaTime lt 03f ) 34 timeOpenDoorPen -= deltaTime35 36 if(timeOpenDoorPen lt= 0) 37 gameScreengetDoorPen()setVisibility(gameScreengetDoorPen()getVisibility())38

En este listado podemos ver el estado READY y un trozo del estado GAME de la maacutequina deestados definida en el apartado 231 de este documento inicialmente la maacutequina toma el estadoREADY como se puede ver en la linea 4 del listado 5111 este estado se ira repitiendo a cadavuelta del ciclo de vida del videojuego hasta que cambie el estado de juego a GAME estosucederaacute una vez transcurridos 3 segundos tal y como se puede ver en la linea 24 del listado5112 Hay que tener en cuenta que un videojuego tal y como se ha definido en el apartado 522de este documento forma un bucle infinito por tanto la funcioacuten update de la linea 1 de este listadose repetiraacute de forma indefinida durante la ejecucioacuten del nivel de juego y cada vuelta ejecutaraacute elestado en que se encuentre la maacutequina de estados

Paacutegina 74 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6Conclusiones El desarrollo del proyecto ha sido tal y como se esperaba en lineas generales no han habidograndes desviaciones de tiempo ni durante el disentildeo ni en el posterior desarrollo de este Cabedestacar que el hecho de poder probar el proyecto ejecutaacutendolo en la propia maacutequina donde se hadesarrollado sin tener que utilizar un dispositivo real o virtual cada vez que se ha querido verificarha hecho que el desarrollo sea mucho maacutes fluido que sino se hubiera contado con el escenariodescrito Esto no significa que en ciertos momentos del desarrollo no se haya probado con undispositivo real Android Dejando a parte la gran ventaja que esto significa ya que una vezdesarrollado el esfuerzo realizado nos sirve para distintas plataformas casi sin tener que tocarnada del coacutedigo

Por tanto el hecho de haber escogido libGDX para el desarrollo ha sido una buena eleccioacuten Estambieacuten una buena eleccioacuten escoger un framework o un motor focalizado al desarrollo devideojuegos si se quiere implementar uno ya sea para Android o para cualquier plataforma

Existe la posibilidad de desarrollarlo sin ninguacuten tipo de framework o motor pero hay que tenerclaro que se quiere hacer exactamente y a donde se quiere llegar es decir si lo que se quiere escentrarse en la programacioacuten de videojuegos es mucho mejor partir de un framework o motor yaque de esta forma nos desligamos de programar ciertos apartados que estaacuten maacutes focalizados a laprogramacioacuten de frameworks o motores para videojuegos que no a la programacioacuten devideojuegos en si

Yendo maacutes allaacute de donde el programador se quiere centrar existe otro factor importante a teneren cuenta en el momento de plantear un proyecto llamado tiempo con el tiempo de que se hadispuesto para este proyecto queda auacuten maacutes justificado la eleccioacuten de este framework pararealizarlo Ya que probablemente sin el debido al esfuerzo mayor en programar apartados que noson exclusivos del videojuego pudieran haber existido desviaciones de tiempo importantes enrelacioacuten al calendario propuesto

Ha quedado fuera del proyecto por temas de tiempo realizar animaciones a todos los personajesdel videojuego para conseguir una mejor experiencia de usuario y un nivel de acabado superiorFuera del proyecto tambieacuten ha quedado la implementacioacuten no solo de unas puntuacionesmaacuteximas a nivel local sino tambieacuten unas a nivel mundial consultables a traveacutes de una paacutegina webA su vez no solo guardariacutea la puntuacioacuten maacutexima sino tambieacuten el tiempo jugado las ovejassalvadas y los lobos ahuyentados Tambieacuten ha quedado fuera de este proyecto la realizacioacuten deun blog dedicado al videojuego Todos estos apartados se implementaran en breve fuera de esteTFC

7Recursos utilizados

71 Portada documento

Jake Maymar httpwwwflickrcomphotosmaymar5334789030httpcreativecommonsorglicensesby-sa20deeden

72 Recursos utilizados para el disentildeo del videojuego

Para realizar todo el disentildeo visual del videojuego se ha recurrido a diferentes fuentes de arte

Paacutegina 75 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriasujetas a licencias creative commons y dominio puacuteblico A continuacioacuten se detalla una lista decada recurso con su autor en el caso de que no haya sido publicado de forma anoacutenimajuntamente con el link donde se ha encontrado

721 Fotografiacutea pantalla intro videojuego y usuarios

Michael Karrerhttpwwwflickrcomphotosmichael_karrer78438470httpcreativecommonsorglicensesby-nc20deeden

Jodi Womackhttpwwwflickrcomphotosjodiwomack6217578512httpcreativecommonsorglicensesby20deeden

Tony Alterhttpwwwflickrcomphotos78428166N008279647916httpcreativecommonsorglicensesby20deeden

Gage Skidmore (Nina Dobrev)httpwwwflickrcomphotosgageskidmore5980906910httpcreativecommonsorglicensesby-sa20deeden

722 Iconos y botones

7221 Altavoz

Autor httpwwwiconshockcom Link httpswwwiconfindercomicons67771audio_speaker_iconsize=128Licencia Free for commercial use

7222 Nota Musical

Autor httpwwwdezinerfoliocomLink httpswwwiconfindercomicons58679music_iconsize=128Licencia Free for commercial use

7223 Flecha salida

Autorhttptayteldeviantartcom Linkhttpswwwiconfindercomicons41696arrow_back_grey_left_orange_iconsize=128LicenciaFree for commercial use (Include link to authors website) 7224 Icono de pausa

AutorhttpwwwwebdesignerdepotcomLink httpswwwiconfindercomicons40716blue_button_pause_iconsize=64Licencia Free for commercial use

7225 Icono interrogante (help)

AutorhttpwwwdoublejdesigncoukLinkhttpwwwiconarchivecomshowravenna-3d-icons-by-double-j-designHelp-iconhtml

Paacutegina 76 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLicencia httpcreativecommonsorglicensesby30

7226 Botones (Play Score Options)

AutorydLinkhttpopengameartorgcontentbuttons-variationsLicenciahttp creativecommonsorgpublicdomainzero10

723 Recursos graacuteficos 2D componentes escenario

7231 Ojos lobos

AutorCreek23Link httpopengameartorgcontentgnu-the-gnu-mascotLicencia httpcreativecommonsorglicensesby-sa30

7232 Ovejas y lobos

Autor lemmlingLink httpopenclipartorguser-clipartslemmlingLicencia httpopenclipartorgshare

7233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY

AutorSamLink httpopengameartorgcontentcountry-fieldLicencia httpcreativecommonsorgpublicdomainzero10

7234 Escenario

Daniel EddelandLinkhttpopengameartorgcontentlpc-farming-tilesets-magic-animations-and-ui-elementsLicenciahttpcreativecommonsorglicensesby-sa30

724 Fuentes

7241 ThinckheadAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10 7242 MisfortuneAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7243 TabaqueraAutor deFharoLink httpwwwdafontcomesfernando-harod3419l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7244 Press Start Font

Paacutegina 77 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAutor desconegutLink httpwwwzone38netfontpressstartLicencia httpscriptssilorgcmsscriptspagephpsite_id=nrsiampid=OFL

725 Otros

Todos los demaacutes recursos no nombrados en esta lista como el fondo de pantalla del menuacuteprincipal de inicio del juego y las letras del titulo del juego Fling the sheep impresas sobre lapantalla del menuacute inicial son de elaboracioacuten propia

726 Audio y efectos de sonido

7261 Menu

Autor mrpolyLinkhttpopengameartorgcontentmenu-musicLicencia httpcreativecommonsorgpublicdomainzero10

7262 Game Over

Autor MacroLinkhttpopengameartorgcontentrest-outro-loopLicenciahttpcreativecommonsorglicensesby30

7263 Game Play

AutorRezonerLinkhttpopengameartorgcontenttrance-menuLicenciahttpcreativecommonsorglicensesby30

7264 Creacutedits

Autor -Linkhttpopengameartorgcontent1-minute Licenciahttpcreativecommonsorgpublicdomainzero10

7265 Ready

httpopengameartorgcontentui-accept-or-forwardhttpcreativecommonsorglicensesby30

7266 Pause_Resume

httpopengameartorgcontentcompletion-sound httpcreativecommonsorglicensesby30

7267 Quit

httpopengameartorgcontentfly-swatter-squish-sound httpcreativecommonsorgpublicdomainzero10

7268 Sheep

Paacutegina 78 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

httpopengameartorgcontentsheep-sound-bleats-yo-frankiehttpcreativecommonsorglicensesby30

El resto de efectos de audio han sido obtenidos de la siguiente paacutegina httpwwwpond5com

8Lineas abiertas del proyecto Se haraacute un repaso del proyecto por si existe alguacuten bug para solucionarlo Posteriormente deadaptara para que sea funcional en distintas resoluciones de pantalla Se antildeadiraacuten los power-upsque se definieron al principio del proyecto por temas de tiempo han quedado fuera de la entregaA su vez se balanceara el gameplay antildeadiendo alguna mecaacutenica de juego extra si procede

Se publicara el juego en Google Play y se creara un blog del juego se mirara la posibilidad dehacer funcionar el juego en el blog con webGL httpprojects3cometcom

Se ampliara la tabla de puntuaciones de la siguiente manera la tabla no solamente guardara lospuntos tambieacuten guardara el tiempo jugado nuacutemero de lobos ahuyentados nuacutemero de ovejassalvadas y nombre del usuario con 5 caracteres Se creara un un registro de puntuaciones globalconsultable desde el blog del videojuego

Finalmente se crearan maacutes niveles de juego con distribuciones diferentes alguacuten nivel podriacuteatambieacuten tener mecaacutenicas diferentes de juego con los mismos personajeshellip

9Bibliografiacutea utilizada

Titulo Beginning Android Games (Second Edition) ISBN 978-1-43024-677-0

Autor Mario Zechner Robert Green

Editorial Apress

Contenido Desarrollo de videojuegos para Android

Titulo Learning libGDX Game Development ISBN 978-1-78216-604-7

Autor Andreas Oehlke

Editorial PACKT Publishing

Contenido Desarrollo de videojuegos para Android con libGDX

Paacutegina 79 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

10Otros proyectos realizados

101 Remake Gradius Konami

Remake del famoso shooter de Konami lanzado para ordenadores MSX en 1986 programadocon C++ con SDL Aunque este juego existe para multitud de plataformas Ver articulo wikipedia

httpeswikipediaorgwikiGradius_videojuego

Blog del proyecto httpprojects3cometcom

102 Tales of Nimria mini RPG

Mini RPG en 2D programado en C++ con DirectX este mini RPG trata de salvar a una princesacapturada por unas malvadas criaturas

Blog del proyecto httpprojects3cometcom

102 Motocalipsis Bar 66 RTS RTS en 3D con ambiente motero los hechos de la historia suceden en un pequentildeo pueblo deTexas Programado en Unity con C

Blog del proyecto httpmotocalipsisbar66blogspotcomes

Paacutegina 80 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Creative Commons 40 license by-nc-sa

Attribution-NonCommercial-ShareAlike 40 International

===========================================================

Creative Commons Corporation (Creative Commons) is not a law firm anddoes not provide legal services or legal advice Distribution ofCreative Commons public licenses does not create a lawyer-client orother relationship Creative Commons makes its licenses and relatedinformation available on an as-is basis Creative Commons gives nowarranties regarding its licenses any material licensed under theirterms and conditions or any related information Creative Commonsdisclaims all liability for damages resulting from their use to thefullest extent possible

Using Creative Commons Public Licenses

Creative Commons public licenses provide a standard set of terms andconditions that creators and other rights holders may use to shareoriginal works of authorship and other material subject to copyrightand certain other rights specified in the public license below Thefollowing considerations are for informational purposes only are notexhaustive and do not form part of our licenses

Considerations for licensors Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights Our licenses are irrevocable Licensors should read and understand the terms and conditions of the license they choose before applying it Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected Licensors should clearly mark any material not subject to the license This includes other CC- licensed material or material used under an exception or limitation to copyright More considerations for licensors wikicreativecommonsorgConsiderations_for_licensors

Considerations for the public By using one of our public licenses a licensor grants the public permission to use the licensed material under specified terms and conditions If the licensors permission is not necessary for any reason--for example because of any applicable exception or limitation to copyright--then that use is not regulated by the license Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant Use of

Paacutegina 81 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria the licensed material may still be restricted for other reasons including because others have copyright or other rights in the material A licensor may make special requests such as asking that all changes be marked or described Although not required by our licenses you are encouraged to respect those requests where reasonable More_considerations for the public wikicreativecommonsorgConsiderations_for_licensees

===========================================================

Creative Commons Attribution-NonCommercial-ShareAlike 40 InternationalPublic License

By exercising the Licensed Rights (defined below) You accept and agreeto be bound by the terms and conditions of this Creative CommonsAttribution-NonCommercial-ShareAlike 40 International Public License(Public License) To the extent this Public License may beinterpreted as a contract You are granted the Licensed Rights inconsideration of Your acceptance of these terms and conditions and theLicensor grants You such rights in consideration of benefits theLicensor receives from making the Licensed Material available underthese terms and conditions

Section 1 -- Definitions

a Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated altered arranged transformed or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor For purposes of this Public License where the Licensed Material is a musical work performance or sound recording Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image

b Adapters License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License

c BY-NC-SA Compatible License means a license listed at creativecommonsorgcompatiblelicenses approved by Creative Commons as essentially the equivalent of this Public License

d Copyright and Similar Rights means copyright andor similar rights closely related to copyright including without limitation performance broadcast sound recording and Sui Generis Database

Paacutegina 82 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Rights without regard to how the rights are labeled or categorized For purposes of this Public License the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights

e Effective Technological Measures means those measures that in the absence of proper authority may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20 1996 andor similar international agreements

f Exceptions and Limitations means fair use fair dealing andor any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material

g License Elements means the license attributes listed in the name of a Creative Commons Public License The License Elements of this Public License are Attribution NonCommercial and ShareAlike

h Licensed Material means the artistic or literary work database or other material to which the Licensor applied this Public License

i Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license

j Licensor means the individual(s) or entity(ies) granting rights under this Public License

k NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation For purposes of this Public License the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange

l Share means to provide material to the public by any means or process that requires permission under the Licensed Rights such as reproduction public display public performance distribution dissemination communication or importation and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them

Paacutegina 83 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria m Sui Generis Database Rights means rights other than copyright resulting from Directive 969EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases as amended andor succeeded as well as other essentially equivalent rights anywhere in the world

n You means the individual or entity exercising the Licensed Rights under this Public License Your has a corresponding meaning

Section 2 -- Scope

a License grant

1 Subject to the terms and conditions of this Public License the Licensor hereby grants You a worldwide royalty-free non-sublicensable non-exclusive irrevocable license to exercise the Licensed Rights in the Licensed Material to

a reproduce and Share the Licensed Material in whole or in part for NonCommercial purposes only and

b produce reproduce and Share Adapted Material for NonCommercial purposes only

2 Exceptions and Limitations For the avoidance of doubt where Exceptions and Limitations apply to Your use this Public License does not apply and You do not need to comply with its terms and conditions

3 Term The term of this Public License is specified in Section 6(a)

4 Media and formats technical modifications allowed The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created and to make technical modifications necessary to do so The Licensor waives andor agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights including technical modifications necessary to circumvent Effective Technological Measures For purposes of this Public License simply making modifications authorized by this Section 2(a) (4) never produces Adapted Material

5 Downstream recipients

a Offer from the Licensor -- Licensed Material Every recipient of the Licensed Material automatically

Paacutegina 84 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License

b Additional offer from the Licensor -- Adapted Material Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapters License You apply

c No downstream restrictions You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material

6 No endorsement Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are or that Your use of the Licensed Material is connected with or sponsored endorsed or granted official status by the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i)

b Other rights

1 Moral rights such as the right of integrity are not licensed under this Public License nor are publicity privacy andor other similar personality rights however to the extent possible the Licensor waives andor agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights but not otherwise

2 Patent and trademark rights are not licensed under this Public License

3 To the extent possible the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme In all other cases the Licensor expressly reserves any right to collect such royalties including when the Licensed Material is used other than for NonCommercial purposes

Paacutegina 85 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 3 -- License Conditions

Your exercise of the Licensed Rights is expressly made subject to thefollowing conditions

a Attribution

1 If You Share the Licensed Material (including in modified form) You must

a retain the following if it is supplied by the Licensor with the Licensed Material

i identification of the creator(s) of the Licensed Material and any others designated to receive attribution in any reasonable manner requested by the Licensor (including by pseudonym if designated)

ii a copyright notice

iii a notice that refers to this Public License

iv a notice that refers to the disclaimer of warranties

v a URI or hyperlink to the Licensed Material to the extent reasonably practicable

b indicate if You modified the Licensed Material and retain an indication of any previous modifications and

c indicate the Licensed Material is licensed under this Public License and include the text of or the URI or hyperlink to this Public License

2 You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium means and context in which You Share the Licensed Material For example it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information 3 If requested by the Licensor You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable

Paacutegina 86 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria b ShareAlike

In addition to the conditions in Section 3(a) if You Share Adapted Material You produce the following conditions also apply

1 The Adapters License You apply must be a Creative Commons license with the same License Elements this version or later or a BY-NC-SA Compatible License

2 You must include the text of or the URI or hyperlink to the Adapters License You apply You may satisfy this condition in any reasonable manner based on the medium means and context in which You Share Adapted Material

3 You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to Adapted Material that restrict exercise of the rights granted under the Adapters License You apply

Section 4 -- Sui Generis Database Rights

Where the Licensed Rights include Sui Generis Database Rights thatapply to Your use of the Licensed Material

a for the avoidance of doubt Section 2(a)(1) grants You the right to extract reuse reproduce and Share all or a substantial portion of the contents of the database for NonCommercial purposes only

b if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material including for purposes of Section 3(b) and

c You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database

For the avoidance of doubt this Section 4 supplements and does notreplace Your obligations under this Public License where the LicensedRights include other Copyright and Similar Rights

Paacutegina 87 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 5 -- Disclaimer of Warranties and Limitation of Liability

a UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR TO THE EXTENT POSSIBLE THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL WHETHER EXPRESS IMPLIED STATUTORY OR OTHER THIS INCLUDES WITHOUT LIMITATION WARRANTIES OF TITLE MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE NON-INFRINGEMENT ABSENCE OF LATENT OR OTHER DEFECTS ACCURACY OR THE PRESENCE OR ABSENCE OF ERRORS WHETHER OR NOT KNOWN OR DISCOVERABLE WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART THIS DISCLAIMER MAY NOT APPLY TO YOU

b TO THE EXTENT POSSIBLE IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING WITHOUT LIMITATION NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT SPECIAL INDIRECT INCIDENTAL CONSEQUENTIAL PUNITIVE EXEMPLARY OR OTHER LOSSES COSTS EXPENSES OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES COSTS EXPENSES OR DAMAGES WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART THIS LIMITATION MAY NOT APPLY TO YOU

c The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that to the extent possible most closely approximates an absolute disclaimer and waiver of all liability

Section 6 -- Term and Termination

a This Public License applies for the term of the Copyright and Similar Rights licensed here However if You fail to comply with this Public License then Your rights under this Public License terminate automatically

b Where Your right to use the Licensed Material has terminated under Section 6(a) it reinstates

1 automatically as of the date the violation is cured provided it is cured within 30 days of Your discovery of the violation or

2 upon express reinstatement by the Licensor

For the avoidance of doubt this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License

Paacutegina 88 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

c For the avoidance of doubt the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time however doing so will not terminate this Public License

d Sections 1 5 6 7 and 8 survive termination of this Public License

Section 7 -- Other Terms and Conditions

a The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed

b Any arrangements understandings or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License

Section 8 -- Interpretation

a For the avoidance of doubt this Public License does not and shall not be interpreted to reduce limit restrict or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License

b To the extent possible if any provision of this Public License is deemed unenforceable it shall be automatically reformed to the minimum extent necessary to make it enforceable If the provision cannot be reformed it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions

c No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor

d Nothing in this Public License constitutes or may be interpreted as a limitation upon or waiver of any privileges and immunities that apply to the Licensor or You including from the legal processes of any jurisdiction or authority

===========================================================

Paacutegina 89 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaCreative Commons is not a party to its public licensesNotwithstanding Creative Commons may elect to apply one of its publiclicenses to material it publishes and in those instances will beconsidered the Licensor Except for the limited purpose of indicatingthat material is shared under a Creative Commons public license or asotherwise permitted by the Creative Commons policies published atcreativecommonsorgpolicies Creative Commons does not authorize theuse of the trademark Creative Commons or any other trademark or logoof Creative Commons without its prior written consent includingwithout limitation in connection with any unauthorized modificationsto any of its public licenses or any other arrangementsunderstandings or agreements concerning use of licensed material Forthe avoidance of doubt this paragraph does not form part of the publiclicenses

Creative Commons may be contacted at creativecommonsorg

Paacutegina 90 de 102

Page 3: Universitat Oberta de Catalunya UOC Ingeniería técnica en

A mi pareja Remei Soleacute por su paciencia y apoyo durante estosuacuteltimos meses y siempre sin ella no hubiera sido posible llegarhoy a escribir estas lineas te quiero

A la vida por haberme brindado la posibilidad de poder hacer loque realmente siento dentro de mi

Licencia This document Fling the sheep casual game for Andorid with libGDX (c) 2013 by Xavier Figuera Alberich

This document Fling the sheep casual game for Andorid with libGDX is licensed under aCreative Commons Attribution-NonCommercial-ShareAlike 40 International License

You should have received a copy of the license along with thiswork If not see lthttpcreativecommonsorglicensesby-nc-sa40gt

Resumen

Android es un sistema operativo con nuacutecleo monoliacutetico basado en el kernel de Linux version 26que fue lanzado al mercado el 23 de septiembre de 2008 Disentildeado principalmente paradispositivos moacuteviles con pantalla taacutectil como pueden ser Smartphones o tabletas Esta disponiblegratuitamente para un uso comercial o no comercial El nuacutecleo esta escrito en C algunas de laslibreriacuteas de terceros estaacuten escritas en C++ y su interfaz de usuario esta escrita en Java Soportadistintas estructuras de procesador entre ellas ARM x86 MIPS y IBM POWER no obstante laarquitectura utilizada mayoritariamente son los procesadores ARM Esta publicado bajo la licenciaApache 20 y GNU GPL2 En el momento de escribir este documento su versioacuten actual es la Android 43 Jelly Bean(Gominola) y se encuentra en permanente desarrollo El primer moacutevil con Android fue el HTCDream que se comercializo por primera vez en Octubre de 2008

Android fue desarrollado inicialmente por la compantildeiacutea Android Inc esta estuvo financiada porGoogle durante un tiempo hasta que la compantildeiacutea fue adquirida por la multinacionalestadounidense en julio de 2005 Google queriacutea tener presencia en el mercado de los dispositivosmoacuteviles Android fue presentado en 2007 conjuntamente con la fundacioacuten Open Handset AllianceEsta entidad actualmente es un consorcio de 78 compantildeiacuteas de hardware software ytelecomunicaciones dedicadas al desarrollo de estaacutendares abiertos para dispositivos moacutevilesliderada por Google La multinacional estadounidense es el principal desarrollador de Android yaporta el ecosistema necesario para el crecimiento de este No obstante todos los miembros delconsorcio contribuyen de distintas maneras al desarrollo

En el antildeo 2008 salio a la luz la versioacuten 10 de Android En el momento de su aparicioacuten tubo queenfrentarse a las distintas plataformas ya existentes en aquel momento iPhone OS queactualmente es conocido como iOS BlackBerry OS y Windows Phone 7 El crecimiento deAndroid a sido espectacular en estos uacuteltimos antildeos a nivel mundial alcanzoacute una cuota de mercadodel 509 durante el uacuteltimo trimestre de 2011 esto represento maacutes del doble que el sistemaoperativo iOS de Apple Actualmente su cuota de mercado se situacutea en el 744 seguacuten un estudiorealizado por la empresa Gartner Ver la siguiente tabla

El hecho de que Android sea de coacutedigo abierto permite a los fabricantes comercializardispositivos de distintas gamas y precios adaptando ellos mismos el sistema operativo seguacuten lasnecesidades de cada modelo De esta forma se consigue un alcance mayor a distintos niveles depublico esto seria uno de los motivos que ha causado en estos uacuteltimos antildeos el crecimientoespectacular de cuota de mercado llegando casi al 75 actualmente a nivel mundial

Android a sufrido numerosas actualizaciones desde su liberacioacuten cada versioacuten liberada se le ha

dado un nombre de postres en ingles por orden alfabeacutetico

En la siguiente tabla se enumeran las distintas versiones salidas a la luz desde su lanzamientoinicial en el antildeo 2008

Letra Nombre del Postre - Versioacuten

A Apple Pie (v10) Tarta de manzana

B Banana Bread (v11) Pan de plaacutetano

C Cupcake (v15) Panque

D Donut (v16) Rosquilla

E Eacuteclair (v20v21) Pastel franceacutes

F Froyo (v22) (Abreviatura de laquofrozen yogurtraquo) Yogur helado

G Gingerbread (v23) Pan de jengibre

H Honeycomb (v30v31v32) Panal de miel

I Ice Cream Sandwich (v40) Saacutendwich de helado

J Jelly BeanGummy Bear (v41v42v43) Gominola (versioacuten actual)

K KitKat (v44) Kit Kat (versioacuten en desarrollo)

Iacutendice de contenidos1Introduccioacuten1

11 Justificacioacuten y contexto del proyecto112 Descripcioacuten del Proyecto113 Objetivos2

131 Definicioacuten del videojuego 214 Planificacioacuten4

141 Ciclo de vida4142 Planificacioacuten detallada del proyecto4

1411 Anaacutelisis previo planificacioacuten41412 Anaacutelisis de requisitos51413 Disentildeo51414 Implementacioacuten y pruebas61415 Finalizacioacuten6

143 Temporalizacioacuten del proyecto 715 Herramientas y tecnologiacuteas utilizadas916 Riesgos del proyecto10

2 Anaacutelisis funcional1121 Requisitos funcionales casos de uso11

211 Diagrama casos de uso actor ldquoJugadorrdquo11212 Tabla resumen casos de uso12213 Descripcioacuten textual de los casos de uso12

2131 VJ01 Inicio videojuego 122132 VJ02 Jugar 132133 VJ03 Acceder puntuaciones maacuteximas locales 132134 VJ31 Consultar puntuaciones locales 142135 VJ32 Salir puntuaciones locales 142136 VJ04 Acceder a las opciones 152137 VJ41 Activar o desactivar muacutesica o efectos 152138 VJ42 Acceder a la pantalla de creacuteditos 162139 VJ421 Salir de la pantalla de creacuteditos 1621310 VJ05 Acceder a las instrucciones 1721311 VJ51 Salir de las instrucciones 1721312 VJ06 Salir del videojuego 18

214 Diagrama casos de uso actor ldquoIArdquo192141 Diagrama casos de uso IA personaje principal (oveja)19

21411 Tabla resumen casos de uso2021412 Descripcioacuten textual de los casos de uso20

214121 IA03 Salida ovejas al escenario 20214122 IA031 Posicionamiento en pantalla de las oveja 20214123 IA032 Movimiento oveja 21214124 IA033 Oveja pastando21214125 IA034 Lanzamiento oveja22214126 IA035 Rebotes de la oveja 22214127 IA036 La oveja entra en el establo 23214128 IA037 Parar oveja 23

2142 Diagrama casos de uso IA enemigos (lobo)2421421 Tabla resumen casos de uso2421422 Descripcioacuten textual de los casos de uso25

214221 IA02 Salida lobo al escenario 25

i

214222 IA021 Ojos por la derecha o por la izquierda25214223 IA022 Escoge el tipo de lobo26214224 IA023 Lobo por la derecha o por la izquierda26214225 IA024 Salta a escena27214226 IA025 Movimiento lobo27

22 Disentildeo inicial diagrama de clases28221 Diagrama de clases inicial ldquoFling the sheeprdquo 28

2211 Resumen clases videojuego28222 Diagrama de clases inicial de pantallas30

2221 Resumen clases pantallas3023 Definicioacuten de maacutequinas de estado finitas31

231 Maacutequina de estados del videojuego 31232 Maacutequina de estados comportamiento oveja32233 Maacutequina de estados comportamiento lobo33234 Maacutequina de estados tutorial in game34

3 Disentildeo3531 Estudio comparativo35

311 Sheep amp Wolf36312 Sheep Up 37313 Temple Run38314 Attack of the Spooklings39

32 Perfiles de usuarios identificados4033 Contextos de uso42

331 iquest Doacutende 42332 iquest Cuaacutendo 42333 iquest En que entorno 42

4Disentildeo y ldquoConcept Artrdquo4241 Elementos presentes en la interfaz de la aplicacioacuten4242 Flujos de interaccioacuten4343 Prototipaje44

431 Sketches44432 Transiciones definidas entre pantallas47433 Prototipo horizontal de alta fidelidad 48

4331 Pantalla inicial484332 Pantalla menuacute principal del juego484333 Pantalla de opciones494334 Pantalla de creacuteditos494335 Pantalla tabla de puntuaciones504336 Pantalla de juego READY 504337 Pantalla de juego514338 Pantalla de pausa botones RESUME y QUIT524339 Pantalla GAME OVER5243310 Pantalla de instrucciones de juego HOW TO PLAY5343311 Pantalla de instrucciones in game 53

5Implementacioacuten5551 Arquitectura global55

511 Arquitectura del framework libGDX55512 Visioacuten de los moacutedulos de libGDX55

52 Arquitectura de un videojuego56521 Programa vs Aplicacioacuten56

ii

522 Estructura baacutesica de un videojuego5653 Esquema de la estructura baacutesica de un videojuego5854 Patrones de disentildeo59

541 Introduccioacuten59542 Patrones de creacioacuten59543 Singleton59

55 Diagramas de clases definitivos6156 Diagramas nuacutecleo videojuego 6157 Diagrama de clases objetos videojuego6458 Diagrama de clases pantallas videojuego6759 Configurar el entorno de desarrollo69

591 Instalacioacuten 69510 Traspaso del disentildeo a texturas 71511 Implementacioacuten de las maacutequinas de estado 73

6Conclusiones757Recursos utilizados 75

71 Portada documento 7572 Recursos utilizados para el disentildeo del videojuego 75

721 Fotografiacutea pantalla intro videojuego y usuarios 76722 Iconos y botones76

7221 Altavoz767222 Nota Musical767223 Flecha salida767224 Icono de pausa767225 Icono interrogante (help)767226 Botones (Play Score Options)77

723 Recursos graacuteficos 2D componentes escenario777231 Ojos lobos777232 Ovejas y lobos777233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY777234 Escenario77

724 Fuentes777241 Thinckhead777242 Misfortune777243 Tabaquera777244 Press Start Font77

725 Otros78726 Audio y efectos de sonido78

7261 Menu 787262 Game Over787263 Game Play787264 Creacutedits787265 Ready787266 Pause_Resume787267 Quit787268 Sheep78

8Lineas abiertas del proyecto799Bibliografiacutea utilizada 7910Otros proyectos realizados80

101 Remake Gradius Konami80

iii

102 Tales of Nimria mini RPG80102 Motocalipsis Bar 66 RTS80

Creative Commons 40 license by-nc-sa81

Iacutendice de ilustracionesilustracioacuten 1 Ciclo de vida en cascada4ilustracioacuten 11 Calendario proyecto7ilustracioacuten 2 Diagrama de gantt8ilustracioacuten 3 Diagrama de casos de usos actor jugador11ilustracioacuten 4 Diagrama de casos de usos personaje principal19ilustracioacuten 5 Diagrama de casos de usos enemigos24ilustracioacuten 6 Diagrama de clases videojuego28ilustracioacuten 7 Diagrama de clases de pantallas30ilustracioacuten 8 Maacutequina de estados del videojuego 31ilustracioacuten 9 Maacutequina de estados comportamiento oveja 32ilustracioacuten 10 Maacutequina de estados comportamiento lobo 33ilustracioacuten 11 Maacutequina de estados tutorial in game 34ilustraciones 12 y 13 pantallas juego Sheep amp Wolf 36ilustraciones 14 y 15 pantallas juego Sheep Up 37ilustraciones 16 y 17 pantallas juego Temple run38ilustraciones 18 y 19 pantallas juego Attack of the Spooklings39ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitas41ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintas pantallas43ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada44ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada45ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada46ilustracioacuten 241 Transiciones definidas entre pantallas47ilustracioacuten 242 Disentildeo pantallas con Gimp54ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en un videojuego55ilustracioacuten 26 Estructura baacutesica de un videojuego 58ilustracioacuten 27 Singleton59ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego 63ilustracioacuten 29 Diagrama de clases Assets 64ilustracioacuten 30 Diagrama de clases objetos 66ilustracioacuten 31 Diagrama de clases pantallas 68ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse69ilustracioacuten 33 Creacioacuten proyecto libGDX70ilustracioacuten 34 Creacioacuten proyecto libGDX70ilustracioacuten 35 Capas separadas por imaacutegenes71Ilustracioacuten 36 Texture packer 72ilustracioacuten 37 Posicioacuten texturas 73

iv

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

1Introduccioacuten

11 Justificacioacuten y contexto del proyecto

Este trabajo de fin de carrera en adelante TFC se centra en el desarrollo de aplicaciones paradispositivos moacuteviles con sistema operativo Android Actualmente existen multitud de aplicacionesNo obstante este TFC se quiere centrar en un subconjunto de aplicaciones focalizadas alentretenimiento conocidas por todo el mundo como videojuegos

Un videojuego es un software creado para el entretenimiento en general y basado en lainteraccioacuten entre una o varias personas y un aparato electroacutenico que ejecuta dicho videojuego Asiacutepues un videojuego es considerado un software cuyo fin directo es el entretenimiento

En estos uacuteltimos antildeos los smartphones y tabletas se han convertido en las nuevas plataformasmoacuteviles para juegos que compiten con los sistemas portaacutetiles claacutesicos que generalmente tienden aser maacutes cerrados

Los videojuegos se pueden clasificar en distintos geacuteneros estos son una forma de clasificacioacutenque designan un conjunto de videojuegos que poseen una serie de elementos comunes A lo largode la historia de los videojuegos aquellos elementos que han compartido varios de los mismos hanservido para clasificar como un geacutenero a aquellos que les han seguido en estilo y forma de lamisma manera que ha pasado con la muacutesica o el cine Como ejemplo se enumeran algunos de losgeacuteneros maacutes populares Lucha Disparos conocidos como Shooters Sigilo Plataformas ArcadeDeporte etc

Durante mucho tiempo los videojuegos estuvieron reservados para un tipo de usuario muyconcreto con un perfil muy especiacutefico la gran mayoriacutea eran hombres entre 15 y 25 antildeos Saliendode este perfil si se buscaban mujeres o personas mayores de 25 antildeos el nuacutemero de usuarioscaiacutea en picado y es que los videojuegos eran percibidos como el hobby de los adolescentesmasculinos No obstante en los uacuteltimos antildeos se ha visto coacutemo todo esto ha ido cambiando con unaumento tanto del puacuteblico femenino como la aparicioacuten en escena de usuarios con edades maacutesavanzadas

Este cambio ha venido motivado por diferentes motivos evolutivos dentro de la industria delvideojuego Uno de los motivos que ha provocado esto es la aparicioacuten de los teleacutefonos moacutevilesinteligentes tabletas y juegos online junto con gran cantidad de videojuegos de tipo casual Otroclaro motivo es que la mayoriacutea de los que jugaacutebamos hace 25 antildeos pues hoy seguimos jugandoya que hemos crecido con esta cultura y claro esta que a diacutea de hoy ya no tenemos la edad deentonces

12 Descripcioacuten del Proyecto Este proyecto se quiere centrar en el desarrollo de un videojuego de tipo casual para moacutevilesAndroid Estos son un tipo de videojuegos dirigidos a un puacuteblico de jugadores casuales Losvideojuegos casuales pueden tener cualquier tipo de mecaacutenica de juego y ser clasificados dentrode cualquier otro geacutenero Son diferenciados por sus reglas simples y de no requerir un excesivocompromiso en contraste con la mayoriacutea de juegos maacutes complejos No requieren una dedicacioacutende tiempo a largo plazo o habilidades especiales para jugar

Paacutegina 1 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Durante la realizacioacuten del proyecto se realizara el disentildeo del juego por disentildeo se entienderealizar un documento que defina el juego de forma generalizada mecaacutenicas personajes etceste documento es conocido como el ldquogame designrdquo el disentildeo de arte conocido como ldquoConcepartrdquo engloba todo lo relacionado con el aspecto graacutefico del juego estilos de personajes estilos degraacuteficos etc Finalmente se realizara el anaacutelisis disentildeo e implementacioacuten de laaplicacioacuten(videojuego) con las tecnologiacuteas escogidas para este proyecto

13 Objetivos

El objetivo principal de este TFC es adquirir experiencia en el desarrollo de videojuegos paraAndroid Sin embargo yendo maacutes allaacute de la plataforma tambieacuten existe un intereacutes por ampliarconocimientos en cuanto a programacioacuten y disentildeo de videojuegos en general

En cuanto al disentildeo y desarrollo del videojuego se pretende realizar un casual game con lassiguientes caracteriacutesticas

El juego consistiraacute en conducir unas ovejas descarriadas a su corral eacutestas con nuestra ayudadeberaacuten sortear los peligros que iraacuten apareciendo durante el camino hacia el deseado corral Elprincipal peligro que amenaza las ovejas son unos lobos malvados que quieren comeacuterselas Elvideojuego soacutelo dispondraacute de una uacutenica modalidad de juego para un uacutenico jugador Al tratarse deun juego casual el publico objetivo es muy amplio Se pretende conseguir un ldquolook amp feelrdquo conesteacutetica tipo cartoon en clave de humor El juego sera desarrollado en 2D con perspectiva cenital

131 Definicioacuten del videojuego

El nivel se describe como una pantalla estaacutetica con vista cenital en posicioacuten vertical Con estaacuteticase entiende que no hay ninguacuten tipo de scroll que haga desplazar la pantalla Siempre veremos lomismo

En la parte de arriba del todo apareceraacute un corral con una puerta la puerta se iraacute abriendo ycerrando de forma aleatoria Por los extremos de la pantalla habraacute arbustos que representaran loslimites del bosque De estos limites iraacuten saliendo lobos a la escena que se querraacuten comer a laspobres ovejas Estas ovejas permaneceraacuten en la parte de abajo de la pantalla e iraacuten saliendo a laescena ellas solas sin saber demasiado donde van(son ovejas descarriadas) nuestra misioacutenconsistiraacute en tirarlas hacia el corral para salvarlas de los malvados lobos metiendolas por lapuerta en los momentos que este abierta para lanzarlas tendremos que deslizar el dedo encimade ellas para darles impulso hacia el corral si no acertamos en meter la oveja en la puerta estarebotara como si de un pelota se tratase Los lobos iraacuten saliendo para sacarnos los lobos deencima deberemos deslizar nuestro dedo encima de ellos o tocarlos para ahuyentarlos De lobos habraacute de diferentes colores marrones grises y azulados Cada lobo loahuyentaremos de manera distinta

bull Marrones 1 pulsacioacuten o deslizar 1 vez el dedo sobre el lobobull Grises 2 pulsaciones o deslizar 2 veces el dedo sobre el lobobull Azulados 3 pulsaciones o deslizar 3 veces el dedo sobre el lobo

A parte de impedir que se coman las ovejas que estaacuten en camino hacia el corral tambieacutentendremos que evitar que los lobos lleguen a la parte de abajo donde estaacute el grupo de ovejas yaque esto nos haraacute perder vidas el juego inicialmente empezara con 3 vidas pudiendo alcanzar unmaacuteximo de 6 vidas en total cada 10000 puntos obtendremos un vida extra

Paacutegina 2 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Conforme el juego se va desarrollando eacuteste iraacute acumulando

bull Puntosbull Tiempo jugadobull Numero de lobos ahuyentadosbull Ovejas colocadas en el corral

Se tratara pues de ir mejorando nuestro propio reacutecord partida tras partida El juego iraacuteaumentando de dificultad durante el transcurso de la partida

Como apunte final el juego recibe el nombre de ldquoFling the sheeprdquo que traducido al espantildeolvendriacutea a ser algo como ldquolanzar las ovejasrdquo

Paacutegina 3 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

14 Planificacioacuten

141 Ciclo de vida

Un videojuego no deja de ser un proyecto de software por tanto para la realizacioacuten de esteproyecto se ha tomado como base el ciclo de vida claacutesico de cualquier proyecto de softwaremodificado ligeramente a las necesidades del proyecto Este ciclo de vida que tambieacuten sedenomina ciclo de vida en cascada se compone de las siguientes etapas

ilustracioacuten 1 Ciclo de vida en cascada

142 Planificacioacuten detallada del proyecto

En los siguientes apartados se recogen por cada etapa que compone el ciclo de vida las principales actividades realizadas con el objetivo de alcanzar el producto deseado dentro delos plazos definidos

1411 Anaacutelisis previo planificacioacuten

En este punto se ha abordado la visioacuten global del proyecto comprendida en establecer lospuntos iniciales necesarios para crear una planificacioacuten de tareas en funcioacuten de las actividades arealizar

Actividad Descripcioacuten

Disentildeo conceptual del videojuego Mecaacutenicas del videojuego

Definicioacuten de las tecnologiacuteas Tecnologiacuteas que se utilizaran en el desarrollo delvideojuego

Anaacutelisis de riesgos Posibles riesgos del proyecto

Planificacioacuten del proyecto Crear una planificacioacuten adaptada a los plazos de entregade este TFC

Paacutegina 4 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Redaccioacuten del documento Generacioacuten del plan de trabajo

Entrega de la PEC1 Entrega del documento

1412 Anaacutelisis de requisitos

En esta fase se ha detallado que necesidades debe cubrir el videojuego tanto desde un puntode vista funcional como desde un punto de vista arquitectoacutenico de la aplicacioacuten a disentildear se hadisentildeado un modelo troncal de clases para posteriormente desarrollar en base a estas todo elvideojuego No obstante en ninguacuten caso se ha entrado en detalle en las tecnologiacuteas a utilizar yadefinidas previamente

Actividad Descripcioacuten

Especificacioacuten de requisitos funcionales Definicioacuten de casos de usos

Disentildeo baacutesico estructura aplicacioacuten Diagrama baacutesico de clases

Especificacioacuten de requisitos funcionales Definicioacuten de maacutequinas de estado

1413 Disentildeo

En este apartado teniendo en cuenta que en este proyecto se va a desarrollar un videojuego seha realizado la recopilacioacuten conceptual de arte conjuntamente con el disentildeo de todas laspantallas que intervienen en el Conjuntamente con la seleccioacuten de los tipos de fuente que seutilizaran para el videojuego seleccioacuten de personajes y enemigos

Actividad Descripcioacuten

Definicioacuten de usuarios y contexto de uso delvideojuego

Conocer las caracteriacutesticas de los usuarios susnecesidades y objetivos asiacute como los contextosde uso

Disentildeo conceptual Un escenario de uso describe desde el puntode vista del usuario como seraacute utilizado unproducto determinado (es este caso unvideojuego) en un escenario determinado

Seleccioacuten de arte Seleccioacuten de arte ya hecho con licencias libresya que no se disponen de conocimientos dearte para abordar el disentildeo

Seleccioacuten de fuentes Seleccioacuten de los tipos de fuente adecuadospara el disentildeo del videojuego

Seleccioacuten de personajes y enemigos Seleccioacuten de personajes y enemigosdisponibles en la red con licencias libres ya queno se disponen de conocimientos de arte paraabordar el disentildeo

Disentildeo de pantallas que intervienen(prototipo) Con todo el arte fuentes y personajes serealizara el disentildeo de todas las pantallas queintervienen en el juego Realizacioacuten de unboceto a mano alzada Sketches y prototipo dealta fidelidad

Redaccioacuten del documento Generacioacuten del documento de disentildeo

Paacutegina 5 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Entrega de la PEC2 Entrega del documento

1414 Implementacioacuten y pruebas

En este punto se ha desarrollado la implementacioacuten del videojuego partiendo de todas lasdefiniciones de los apartados anteriores y las verificaciones oportunas para asegurar el correctofuncionamiento del videojuego

Actividad Descripcioacuten

Implementacioacuten de navegables y contenidos Implementacioacuten de la estructura de todas lapantallas del video juego y la navegabilidadentre ellas y las funciones principales de cadauna de ellas

Implementacioacuten del gameplay Implementacioacuten de la logica de juego

Implementacioacuten de sonido y efectos Implementacioacuten de los efectos de sonido y lamusica

Version alpha del videojuego En este punto se dispone de un videojuegofuncional listo para ser revisado y refinado

Pruebas y refinamiento de la implementacioacuten Pruebas y correcioacutenes de posibles errores

Preparacioacuten del paquete entregable y laredaccioacuten del documento

Testeo final y preparacioacuten del apk a entregarmas la redaccioacuten del documento estrutural delaplicacioacuten

Entrega de la PEC3 Entrega del documento

1415 Finalizacioacuten

En un proyecto de software esta parte quedariacutea focalizada en la fase de implantacioacuten y puesta enmarcha Sin embargo al tratarse de un videojuego esta fase quedariacutea focalizada en la fase delanzamiento del producto No obstante en este caso se ha utilizado para documentar todo eltrabajo realizado a lo largo de este TFC

Actividad Descripcioacuten

Redaccioacuten memoria final proyecto Redaccioacuten memoria final

Montaje presentacioacuten diapositivas Montaje presentacioacuten diapositivas

Montaje del video final presentacioacuten proyecto Montaje del video final presentacioacuten proyecto

Entrega final Entega final

Paacutegina 6 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria143 Temporalizacioacuten del proyecto

La siguiente ilustracioacuten muestra el calendario definido para el proyecto

ilustracioacuten 11 Calendario proyecto

Paacutegina 7 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

En la siguiente pagina se muestra una ilustracioacuten del diagrama de gantt correspondiente alcalendario mostrado en la ilustracioacuten 1

ilustracioacuten 2 Diagrama de gantt

Paacutegina 8 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

15 Herramientas y tecnologiacuteas utilizadas

Actualmente existen varios frameworks para desarrollar videojuegos sobre plataformas moacutevilesSe ha hecho un anaacutelisis comparativo preliminar entre Cocos2D-android1 Cocos2D-x y libGDXaunque existen otros estos tres son los maacutes nombrados y utilizados

Cocos2d-android1 Es un framework en Java basado en la versioacuten de cocos2d-android queesta basado en la versioacuten de cocos2d para iphone Este framework permite el desarrollo devideojuegos en 2D y se programa en Java en lugar de objective-c Para la versioacuten Cocos2d deiphone Actualmente este framework no parece tener mucha continuidad por parte de lacomunidad de desarrolladores aunque no estaacute discontinuado del todo

Cocos2D-x Es un framework en C++ multi-plataforma permite desarrollar para diferentesplataformas a la vez con el mismo coacutedigo Android iOS Bada Marmalade Windows Linux etcSin embargo aunque es un framework con una comunidad muy activa su documentacioacuten esbastante mejorable Se programa en C++ y es posible trabajar con distintos entornos de desarrollocomo Visual Studio o Eclipse El proceso de depuracioacuten con eclipse es algo complejo con C++JNIcon varios pasos a seguir para poder depurar A la vez su configuracioacuten en el entorno Eclipse noes trivial Finalmente tiene relativamente todaviacutea poco tiempo de vida

LibGDX Es un framework escrito en Java sobre C++ ya que las partes criacuteticas estaacuten escritascon coacutedigo nativo para conseguir el mejor rendimiento posible Tiene una comunidad dedesarrolladores muy activa y una documentacioacuten muy extensa Se programa con Java y permite ladepuracioacuten ejecutando la aplicacioacuten en el escritorio de la maacutequina sin tener que pasar por undispositivo real o uno virtual En caso de que se quiera probar en un dispositivo real es posiblehacerlo sin ninguacuten cambio sobre el coacutedigo Este hecho hace que el desarrollo sea maacutes fluidoTiene un rendimiento bastante alto ante cocos2d-x y otros frameworks existentes para eldesarrollo de videojuegos

Todo lo expuesto anteriormente provoca una inclinacioacuten definitiva a utilizar libGDX paraimplementar el videojuego Asiacute pues el videojuego seraacute escrito en Java utilizando el IDE Eclipseque es el soportado oficialmente para Android utilizando el framework libGDX

Para la realizacioacuten de este proyecto se han utilizado las siguientes herramientas

bull Planificacioacuten proyecto

Microsoft Project Professional 2010

bull Disentildeo

Gimp 28 Inkscape 048 TexturePacker 320 Microsoft Visio Professional 2010

bull Programacioacuten

Entorno de desarrollo Eclipse 421 Juno Android develompment tools ADT Android SDK

Paacutegina 9 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Framework libGDX 098 ObjectAid herramienta de visualizacioacuten de coacutedigo en UML para Eclipse Control de versiones Git utilizando como plataforma GitHub

bull Edicioacuten de audio

Audacity 203 GoldWave 569

bull Redaccioacuten de documentos

OpenOffice 401

bull Edicioacuten de viacutedeo

Adobe Premiere Pro CS55

16 Riesgos del proyecto

Se parte de una experiencia previa en desarrollo de videojuegos ver apartado 9 otros proyectosrealizados al final de este documento Aunque no se dispone de experiencia con la libreriacuteaescogida ni tampoco con programacioacuten sobre Android A nivel teacutecnico no se preveacute que puedansurgir muchos riesgos en liacuteneas generales No obstante existe la posibilidad de gastar maacutestiempo del previsto consultando documentacioacuten para lograr los objetivos establecidos

Existe un riesgo maacutes alto a nivel artiacutestico ya que no se dispone de ninguacuten conocimiento de artede ninguacuten tipo Por lo tanto muy probablemente a nivel artiacutestico el juego sea un poco justo Es poreste motivo que durante la realizacioacuten de este proyecto no se va a profundizar en temas de disentildeoartiacutestico en su lugar se utilizaran recursos de arte existentes en la red con licencias libres tipocreative commons o dominio puacuteblico Al final de este documento en el apartado 6 se puede ver unlistado de los recursos utilizados juntamente con un link a la obra y el nombre del autor si esteesta disponible Se haraacute una seleccioacuten de distintos tipos de recursos graacuteficos para posteriormentehacer el montaje de toda la parte graacutefica del videojuego En cuanto a la parte de audio la situacioacuten es exactamente la misma no se dispone de ninguacutenconocimiento para componer muacutesica ni efectos Por lo tanto se buscaraacuten sonidos y temasmusicales con licencias libres Intentando que estos queden integrados de la mejor maneraposible al videojuego

Finalmente existe el riesgo de que el gameplay definido en el disentildeo conceptual del videojuegouna vez puesto en praacutectica no sea del todo funcional o necesite de un balanceo para conseguirun juego equilibrado y jugable

Paacutegina 10 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2 Anaacutelisis funcional Basaacutendonos en el aparatado ldquo131 Definicioacuten del videojuegordquo se han definido los requisitosfuncionales necesarios para este con la definicioacuten de casos de uso Posteriormente se ha definidoun diagrama de clases inicial el cual ha servido como punto de partida para el desarrollo completodel videojuego A su vez se definen las maacutequinas de estado finitas utilizadas para el desarrollo

21 Requisitos funcionales casos de uso

En este apartado se presentan tres diagramas de casos de uso El primer diagrama engloba lavista generalizada del actor ldquojugadorrdquo y los casos de uso que describen los requisitos funcionalesdel sistema En los dos diagramas restantes se describen la vista generalizada del actor ldquoIArdquo porIA se entiende la inteligencia artificial del videojuego Los diagramas muestran los requisitosfuncionales de la IA para el personaje principal y los enemigos La IA interactuacutea con el sistema ypor tanto seraacute susceptible de analizar su uso de la aplicacioacuten

211 Diagrama casos de uso actor ldquoJugadorrdquo

ilustracioacuten 3 Diagrama de casos de usos actor jugador

Paacutegina 11 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Como se puede observar en la ilustracioacuten 3 el sistema solo dispone de un uacutenico actor Que eneste caso es el jugador del videojuego es decir representa todos los posibles usuarios quepueden jugar al videojuego

En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 3estos seraacuten desarrollados en la seccioacuten posterior

212 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

VJ01 Inicio videojuego Jugador

VJ02 Jugar Jugador

VJ03 Acceder puntuaciones maacuteximas Jugador

VJ31 Consultar puntuacione locales Jugador

VJ32 Salir puntuacione locales Jugador

VJ04 Acceder a las opciones Jugador

VJ41 Activar o desactivar muacutesica o efectos Jugador

VJ42 Acceder a la pantalla de creacuteditos Jugador

VJ421 Salir de la pantalla de creacuteditos Jugador

VJ43 Salir de las opciones Jugador

VJ05 Acceder a las instrucciones Jugador

VJ51 Salir de las intrucciones Jugador

VJ06 Salir del videojuego Jugador

213 Descripcioacuten textual de los casos de uso

2131 VJ01 Inicio videojuego

Identificador VJ01

Nombre Inicio videojuego

Autor Xavier Figuera

Resumen El usuario inicia el videojuego

Actor(es) Jugador

Precondiciones Ninguna el videojuego no habiacutea sido iniciado auacuten

Postcondiciones El usuario a iniciado el videojuego a visualizado la pantalla de introdurante un segundo y se encuentra en la pantalla del menuacute principal

Flujo normal 1 El usuario accede a la lista de aplicaciones de su dispositivo 2 Busca el acceso al videojuego3 Ejecuta el programa4 Se carga la aplicacioacuten5 El videojuego muestra la pantalla de intro

Paacutegina 12 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6 Se muestra el menuacute principal al jugador

Flujos alternativos Se podriacutea dar el caso que el usuario accediera al videojuego desde algunacceso directo en alguno de los escritorios del dispositivo

Inclusiones Ninguna

Extensiones Ninguna

2132 VJ02 Jugar

Identificador VJ02

Nombre Jugar

Autor Xavier Figuera

Resumen Jugar al videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario empieza a jugar

Flujo normal 1 El usuario pulsa el botoacuten play del menuacute principal 2 El usuario juega3 El usuario puede volver a jugar una vez finalizada la partida 4 El usuario puede salir del juego en cualquier momento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2133 VJ03 Acceder puntuaciones maacuteximas locales

Identificador VJ03

Nombre Acceder puntuaciones maacuteximas locales

Autor Xavier Figuera

Resumen Acceder a la pantalla de puntuaciones maacuteximas locales de las partidasrealizadas en el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla con la tabla de las 10 puntuacionesmaacuteximas

Flujo normal 1 El usuario pulsa el botoacuten Scores del menuacute principal 2 Al usuario le aparece la pantalla de puntuacioacuten

Paacutegina 13 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ31 Consultar puntuaciones localesVJ32 Salir de la puntuaciones locales

2134 VJ31 Consultar puntuaciones locales

Identificador VJ31

Nombre Consultar puntuaciones locales

Autor Xavier Figuera

Resumen Consulta de las puntuaciones maacuteximas locales de las partidas realizadasen el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Scores delmenuacute principal

Postcondiciones El usuario visualiza la tabla de las 10 puntuaciones maacuteximas

Flujo normal 1 El usuario visualiza una tabla con las 10 puntuaciones maacuteximas

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2135 VJ32 Salir puntuaciones locales

Identificador VJ32

Nombre Salir puntuaciones locales

Autor Xavier Figuera

Resumen Salir de las puntuaciones maacuteximas locales

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulso el botoacuten Scores

Postcondiciones El usuario sale de la tabla de puntuaciones

Flujo normal 1 El usuario pulsa el botoacuten salir en la pantalla tabla de puntuaciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 14 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2136 VJ04 Acceder a las opciones

Identificador VJ04

Nombre Acceder a la pantalla de opciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de opciones del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla de opciones

Flujo normal 1 El usuario pulsa el botoacuten Options del menuacute principal 2 Al usuario le aparece la pantalla de opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ41 Activar o desactivar muacutesica o efectos VJ42 Acceder a la pantalla de creacuteditosVJ43 Salir de las opciones

2137 VJ41 Activar o desactivar muacutesica o efectos

Identificador VJ041

Nombre Activar o desactivar muacutesica o efectos

Autor Xavier Figuera

Resumen Activar o desactivar muacutesica o efectos de audio del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal

Postcondiciones El usuario activa o desactiva la muacutesica o efectos del videojuego

Flujo normal 1 El usuario pulsa el botoacuten altavoz para activar o desactivar la muacutesica delvideojuego 2 El usuario pulsa el botoacuten notas musicales para activar o desactivar losefectos de audio del videojuego

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 15 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2138 VJ42 Acceder a la pantalla de creacuteditos

Identificador VJ42

Nombre Acceder a la pantalla de creacuteditos

Autor Xavier Figuera

Resumen Acceder a la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario se encuentra en la pantalla de opciones

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten credits para acceder a los creacuteditos2 El usuario puede desplazar el texto de los creacuteditos deslizando el dedosobre el texto hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ421 Salir de la pantalla de creacuteditos

2139 VJ421 Salir de la pantalla de creacuteditos

Identificador VJ421

Nombre Salir de la pantalla de creditos

Autor Xavier Figuera

Resumen Salir de la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal y ha accedido a la pantalla creacuteditos

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten salir para abandonar la pantalla para accedera los creacuteditos2 El usuario se encuentra de nuevo en la pantalla opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 16 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21310 VJ05 Acceder a las instrucciones

Identificador VJ05

Nombre Acceder a la pantalla de instrucciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten del menuacuteprincipal

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a las instrucciones2 El usuario puede desplazar el texto de las instrucciones deslizando eldedo sobre el hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ51 Salir de las instrucciones

21311 VJ51 Salir de las instrucciones

Identificador VJ51

Nombre Salir de las intrucciones

Autor Xavier Figuera

Resumen Salir de la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten en el menuacuteprincipal y ha accedido a la pantalla de instrucciones

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a la pantalla de instrucciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 17 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21312 VJ06 Salir del videojuego

Identificador VJ06

Nombre Salir del videojuego

Autor Xavier Figuera

Resumen Salir del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego

Postcondiciones El usuario abandona el videojuego

Flujo normal 1 El usuario pulsa el botoacuten exit de la aplicacioacuten para salir del videojuego oel botoacuten salir del dispositivo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 18 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214 Diagrama casos de uso actor ldquoIArdquo

Por IA se entiende inteligencia artificial es un elemento fundamental para dotar de realismo a unvideojuego Uno de los retos principales que se plantean a la hora de integrar comportamientosinteligentes es alcanzar un equilibrio entre la sensacioacuten de inteligencia y el tiempo de coacutemputoempleado por este subsistema Este equilibrio es de gran importancia en el caso de losvideojuegos Este planteamiento gira generalmente en torno a la generacioacuten de soluciones quesin ser oacuteptimas proporcionen una cierta sensacioacuten de inteligencia En concreto dichas solucionesdeberiacutean tener como meta que el jugador se enfrente a un reto que sea factible de manera quesuponga un estiacutemulo emocional y que consiga engancharlo al videojuego

En estos uacuteltimos antildeos la IA ha pasado de ser un componente secundario en el proceso dedesarrollo de videojuegos a convertirse en uno de los aspectos maacutes importantes Actualmentelograr un alto nivel de IA en un juego sigue siendo uno de los retos maacutes emocionantes y complejosy en ocasiones sirve para diferenciar un juego normal de uno realmente espectacular

Dentro de este proyecto de ha definido una IA baacutesica para dotar del realismo necesario alvideojuego propuesto En los siguientes diagramas se define esta IA en forma de casos de usospara su posterior implementacioacuten

2141 Diagrama casos de uso IA personaje principal (oveja)

ilustracioacuten 4 Diagrama de casos de usos personaje principal

Paacutegina 19 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 4estos seraacuten desarrollados en la seccioacuten posterior

21411 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA03 Salida oveja al escenario IA

IA031 Posicionamiento en pantalla de la oveja IA

IA032 Movimiento oveja IA

IA033 Oveja pastando IA

IA034 Lanzamiento oveja IA

IA035 Rebotes de la oveja IA

IA036 La oveja entra en el establo IA

IA037 Parar oveja IA

21412 Descripcioacuten textual de los casos de uso

214121 IA03 Salida ovejas al escenario

Identificador IA03

Nombre Salida oveja al escenario

Autor Xavier Figuera

Resumen Salida oveja al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones La oveja es instanciada de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Las ovejas se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA031 Posicionamiento en pantalla de las oveja

214122 IA031 Posicionamiento en pantalla de las oveja

Identificador IA031

Nombre Posicionamiento en pantalla de las oveja

Paacutegina 20 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Autor Xavier Figuera

Resumen Asignacioacuten inicial posicioacuten de las ovejas en pantalla siempre es la mismaposicioacuten esta queda fuera del rango visual de la pantalla

Actor(es) IA

Precondiciones La partida esta iniciada y la oveja instanciada

Postcondiciones La oveja queda posicionada en unas coordenadas fuera de la pantalla

Flujo normal 1 Se instancia la oveja2 La oveja queda posicionada en unas coordenadas uacutenicas fuera delrango visual de pantalla

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214123 IA032 Movimiento oveja

Identificador IA032

Nombre Movimiento oveja

Autor Xavier Figuera

Resumen Movimiento de las ovejas hacia el escenario

Actor(es) IA

Precondiciones La partida esta iniciada la oveja instanciada y posicionada

Postcondiciones La oveja se mueve hacia el escenario empieza a pastar

Flujo normal 1 La oveja se mueve hacia el escenario

Flujos alternativos Ninguno

Inclusiones IA034

Extensiones IA033 Oveja PastandoIA037 Parar oveja

214124 IA033 Oveja pastando

Identificador IA033

Nombre Oveja pastando

Autor Xavier Figuera

Resumen La ovejas permanecen en un espacio determinado de coordenadas depantalla mientras no sean lanzadas al escenario por el usuario

Actor(es) IA

Paacutegina 21 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Precondiciones La oveja ha salido al escenario

Postcondiciones La oveja se mueve dentro de un espacio determinado de forma indefinida

Flujo normal 1 La oveja se mueve de forma indefinida hasta que sea lanzada por elusuario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA034 Lanzamiento oveja

214125 IA034 Lanzamiento oveja

Identificador IA034

Nombre Lanzamiento oveja

Autor Xavier Figuera

Resumen La oveja es lanzada por el usuario y se acelera en funcioacuten de la fuerza delanzamiento

Actor(es) IA

Precondiciones La oveja se mueve

Postcondiciones La oveja ha sido lanzada

Flujo normal 1 La oveja se mueve de forma indefinida2 La oveja es lanzada3 La oveja acelera en funcioacuten de la fuerza de lanzamiento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214126 IA035 Rebotes de la oveja

Identificador IA035

Nombre Rebotes de la oveja

Autor Xavier Figuera

Resumen La oveja ha sido lanzada y rebota por el escenario

Actor(es) IA

Precondiciones La oveja ha sido lanzada

Postcondiciones La oveja rebota por el escenario

Flujo normal 1 La oveja ha sido lanzada y rebota por el escenario 2 La oveja entra en el establo si colisiona con la puerta y esta abierta

Paacutegina 22 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA036 La oveja entra en el establo

214127 IA036 La oveja entra en el establo

Identificador IA036

Nombre La oveja entra en el establo

Autor Xavier Figuera

Resumen La oveja entra en el establo

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario y la puerta del establo estaabierta

Postcondiciones La oveja entra en el establo

Flujo normal 1 La oveja entra en el establo si colisiona con la puerta y esta abierta

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214128 IA037 Parar oveja

Identificador IA037

Nombre Parar oveja

Autor Xavier Figuera

Resumen La oveja para si se hacen dos pulsaciones encima de ella

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario

Postcondiciones La oveja se para

Flujo normal 1 La oveja esta rebotando2 El usuario pulsa dos veces encima de ella3 La oveja se para

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 23 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2142 Diagrama casos de uso IA enemigos (lobo)

ilustracioacuten 5 Diagrama de casos de usos enemigos

21421 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA02 Salida lobo al escenario IA

IA021 Ojos por la derecha o por la izquierda IA

IA022 Escoje el tipo de lobo IA

IA023 Lobo por la derecha o por la izquierda IA

IA024 Salta a escena IA

IA025 Movimento lobo IA

Paacutegina 24 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21422 Descripcioacuten textual de los casos de uso

214221 IA02 Salida lobo al escenario

Identificador IA02

Nombre Salida lobo al escenario

Autor Xavier Figuera

Resumen Salida lobo al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones El lobo es instanciado de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Los lobos se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA02 IA021 IA022 IA023 IA024

214222 IA021 Ojos por la derecha o por la izquierda

Identificador IA021

Nombre Ojos por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Salida de ojos al escenario paso previo a que salte el lobo

Actor(es) IA

Precondiciones El lobo ha sido instanciado

Postcondiciones Aparecen unos ojos que se cierra y se abren por la derecha o izquierda dela pantalla de forma aleatoria

Flujo normal 1 El lobo ha sido instanciado2 Aparecen unos ojos que se cierran y se abren 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 25 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214223 IA022 Escoge el tipo de lobo

Identificador IA022

Nombre Escoge el tipo de lobo

Autor Xavier Figuera

Resumen Escoge el tipo de lobo de forma aleatoria de los tres definidos

Actor(es) IA

Precondiciones Han aparecido los ojos

Postcondiciones Ha escogido el tipo de lobo que saltara al escenario

Flujo normal 1 Han aparecido los ojos2 Ha escogido el tipo de lobo que saltara al escenario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214224 IA023 Lobo por la derecha o por la izquierda

Identificador IA023

Nombre Lobo por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Escoge de forma aleatoria el lado por donde debe aparecer el lobo

Actor(es) IA

Precondiciones Se ha seleccionado el tipo de lobo

Postcondiciones Se ha escogido el lado por donde apareceraacute

Flujo normal 1 Se ha escogido el lado por donde apareceraacute

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 26 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214225 IA024 Salta a escena

Identificador IA024

Nombre Salta a escena

Autor Xavier Figuera

Resumen El lobo salta a escena

Actor(es) IA

Precondiciones Se ha seleccionado el lado por donde debe aparecer y salta

Postcondiciones El lobo esta en escena

Flujo normal 1 Se ha seleccionado el lado por donde debe aparecer y salta2 El lobo esta en escena

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones A025

214226 IA025 Movimiento lobo

Identificador IA025

Nombre Movimiento lobo

Autor Xavier Figuera

Resumen El lobo esta en escena y se mueve

Actor(es) IA

Precondiciones El lobo ha saltado a la escena

Postcondiciones El lobo se mueve

Flujo normal 1 El lobo ha saltado a la escena2 El lobo se mueve

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 27 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

22 Disentildeo inicial diagrama de clases

221 Diagrama de clases inicial ldquoFling the sheeprdquo

ilustracioacuten 6 Diagrama de clases videojuego

En este apartado se define la estructura inicial de la aplicacioacuten a traveacutes del diagrama de clasesmostrado en la ilustracioacuten 6 Esto serviraacute como punto de partida para el completo disentildeo de laaplicacioacuten para su posterior implementacioacuten A continuacioacuten se pasan a detallar a modo resumidoque funcionalidad tiene cada una de las clases definidas en este diagrama

2211 Resumen clases videojuego

FlingTheSheepMain Clase principal desde donde se inicializaraacute la aplicacioacuten

Assets Esta clase contendraacute todos los recursos necesarios del juego texturas sonidos etcEstos seraacuten inicializados en el momento de iniciar el juego Existe una dependencia entre la claseFlingTheSheepMain y Assets ya que la instanciacioacuten de Assets esta condicionada por lainstanciacioacuten de la clase principal FlingTheSheepMain cuando se pone en marcha el videojuego

Paacutegina 28 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaWorldGameController Esta clase contendraacute la loacutegica del videojuego

AudioManager Clase destinada para controlar la reproduccioacuten de efectos de sonido y audio delvideojuego

Charcater Es la superclase que describe los comportamientos comunes de los personajes deella se extienden los personajes principales y los enemigos

Sheep Clase que representa el personaje principal

Wolf Clase que representa a los enemigos

AbstractGameObject Esta superclase recoge todos los comportamientos comunes de losobjetos del juego por objetos se entiende todos los componentes que forman el escenario delvideojuego De esta clase se extienden todos los objetos del videojuego

Grass Hierba que apareceraacute en el escenario

Flower Flores que apareceraacuten en el escenario

ThePen Establo donde hay que hacer llegar las ovejas

DoorPen Puerta del establo esta se abriraacute y se cerrara aleatoriamente

Hole Agujeros en el escenario

WoodFenceForest Valla de madera que apareceraacute en el escenario

Como se ha comentado este diagrama de clases es un diagrama inicial por tanto lo maacutesprobable es que durante el desarrollo del videojuego se antildeadan maacutes clases al disentildeo inicialmostrado en la ilustracioacuten 6 En el apartado 55 de este documento se muestran los diagramas declases definitivos

Paacutegina 29 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria222 Diagrama de clases inicial de pantallas

ilustracioacuten 7 Diagrama de clases de pantallas

Este diagrama recoge en forma de clases las pantallas iniciales definidas del videojuego Separte de una superclase llamada AbstractGameScreen que recogeraacute las operaciones comunes detodas ellas y de esta se extienden las pantallas concretas este diagrama solo muestra laspantallas maacutes baacutesicas definidas inicialmente estas serviraacuten como base para desarrollar elconjunto de pantallas total necesarias para este proyecto y que quedan recogidas en su totalidaden el apartado 4 ldquoDisentildeordquo de esta documento

A continuacioacuten se pasan a detallar a modo resumido cada una de ellas

2221 Resumen clases pantallas

IntroScreen Clase para la pantalla de intro

MenuScreen Clase que contiene el menuacute principal del videojuego GameScreen La clase game screen es la que contiene la pantalla donde se desarrolla todo elvideojuego

Paacutegina 30 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

23 Definicioacuten de maacutequinas de estado finitas

Como ya se ha introducido en el punto 212 la IA aplicada a los videojuegos dota a estos derealismo Existen distintas teacutecnicas para la implementacioacuten de esta Una de las maacutes consolidadases el uso de maacutequinas de estados finitas ya que tienen un coste computacional casi inexistenteya que no tienen ninguacuten coste de procesamiento asignado Las maacutequinas de estados permiten deforma faacutecil definir comportamientos Es por este motivo que han sido utilizadas no solamente para definir los comportamientos de laIA del videojuego sino tambieacuten para definir los distintos estados en que se puede encontrar elvideojuego durante su tiempo de vida A continuacioacuten se detallan los distintos diagramas de lasmaacutequinas de estados utilizadas para este proyecto conjuntamente con una explicacioacuten de cadauna de ellas

231 Maacutequina de estados del videojuego

ilustracioacuten 8 Maacutequina de estados del videojuego

La ilustracioacuten 8 nos muestra los estados que puede tomar el videojuego durante su tiempo devida

Este diagrama define los estados que puede tomar el videojuego una vez iniciado inicialmente eljuego se encuentra en el estado READY de este estado existe una transicioacuten al estado GAMEcuando el tiempo de READY finaliza READY lt=0 El estado game sera el estado en donde se

Paacutegina 31 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriadesarrollara todo el juego Des de este estado podemos pasar al estado PAUSE si pulsamos elbotoacuten de pausa del juego y desde el estado PUASE volvemos al estado GAME si volvemos apulsar el botoacuten pause Finalmente desde el estado GAME haremos la transicioacuten al estado GAMEOVER si nos arrebatan todas las vidas durante la partida Desde el estado GAME OVERpodremos volver a READY si decidimos hacer una nueva partida

232 Maacutequina de estados comportamiento oveja

ilustracioacuten 9 Maacutequina de estados comportamiento oveja La ilustracioacuten 9 muestra el comportamiento del personaje principal del videojuego que en estecaso es la oveja Se define el ciclo de vida de la oveja a traveacutes de sus comportamientos

APPEAR SHEEP La oveja aparece fuera del rango visual de la pantalla y empieza a moversepara que suceda la transicioacuten hacia el siguiente estado FOREST START la coordenada x debeser menor que 220

FOREST START La oveja seguiraacute movieacutendose en un espacio determinado de la pantalla hastaque sea lanzada en unas determinadas direcciones la direccioacuten queda determinada por lasvariables velocityX velocityY estas tomaran valores positivos o negativos determinando ladireccioacuten de lanzamiento esto queda reflejado en la condicioacuten de transicioacuten del estado FORESTSTART a FOREST DEEP Si realizamos el lanzamiento en esas determinadas direccionesharemos la transicioacuten al un nuevo estado FOREST DEEP

FOREST DEEP La oveja rebota por el escenario si colisiona con la puerta del corral y estaabierta hacemos la transicioacuten al estado ON THE PEN

Paacutegina 32 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ON THE PEN Finaliza el ciclo de vida de la oveja dentro del juego esta es devuelta al corral seincrementan puntos en el marcador de puntuacioacuten y se incrementa una unidad en el contador deovejas salvadas

233 Maacutequina de estados comportamiento lobo

ilustracioacuten 10 Maacutequina de estados comportamiento lobo La ilustracioacuten 10 muestra el comportamiento de los enemigos del videojuego que en este casoson los lobos Se define el ciclo de vida del lobo a traveacutes de sus comportamientos

APPEAR EYES Antes de aparecer los lobos a escena apareceraacuten sus ojos entre los matorralesdel bosque Cuando acaba el tiempo pasa al siguiente estado tiempo ojos lt= 0

APPEAR WOLF En este estado se seleccionara el tipo de lobo (habraacute 3 tipos distintos) el ladode la pantalla por donde apareceraacute posicioacuten y velocidad de salto como tambieacuten el tiempo ensegundos que tardara a saltar al escenario Una vez seleccionados todos estos paraacutemetros haraacutela transicioacuten al estado WHEN JUMP

WHEN JUMP Este estado simplemente esperara que pase el tiempo para que el lobo salte alescenario Un vez pase el tiempo el lobo apareceraacute en el escenario pasando a la transicioacuten JUMPON SCENE

JUMP ON SCENE En este estado se efectuara el salto a escena del lobo este saltara desde los

Paacutegina 33 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriamatorrales laterales de la pantallahacia el escenario dibujando un arco convexo Para realizar elsalto nos apoyaremos en la representacioacuten del calculo de la funcioacuten trigonomeacutetrica cosenosolamente en sus valores positivos por tanto cuando cosy lt 0 haremos la transicioacuten al estadoMOVE ya que el salto habraacute finalizado

MOVE En este estado los lobos se moveraacuten y podraacuten ser ahuyentados pulsando repetidas vecesencima de ellos las veces a pulsar queda sujeta al tipo de lobo que sea Des de este estadopodremos hacer a dos estado distintos dependiendo de lo que suceda Si conseguimos ahuyentaral lobo pasaremos al estado WOLF SCARED Si por el contrario el lobo atrapa a la ovejaharemos la transicioacuten al estado SHEEP TRAPPED en ambos estados finalizara el ciclo de vidadel lobo

WOLF SCARED Se habraacute ahuyentado el lobo se incrementa en uno el contador de lobosahuyentados y se suman puntos a la puntuacioacuten total En este estado finaliza el ciclo de vida dellobo

SHEEP TRAPPED El lobo habraacute atrapado una oveja se nos restara una vida En este estadofinaliza el ciclo de vida del lobo

234 Maacutequina de estados tutorial in game

ilustracioacuten 11 Maacutequina de estados tutorial in game La ilustracioacuten 11 muestra los distintos estados que toma el mini tutorial in game que apareceraacute laprimera vez que se juega En este las transiciones entre estados suceden de forma automaacutetica

Paacutegina 34 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriacada 5 segundos desde que se ha activado el primer estado Cada estado corresponderaacute a unacaja de texto mostrada en pantalla

3 Disentildeo

31 Estudio comparativo

Un estudio realizado en 2011 por la empresa Newzoo httpwwwnewzoocom empresainternacional dedicada a los estudios de mercado y enfocada por completo a la industria de losvideojuegos Ha realizado la primera encuesta a jugadores espantildeoles y una de las cosas que dicees La suma del volumen de negocio de juegos online (redes sociales juegos casualesjuegos para moacuteviles juegos MMO) superaraacute al del consumo en juegos para consolas en2011 Se puede ver un resumen del estudio en liacutenea en

httpwwweurogameresarticles2011-10-26-espana-gastara-1-600-millones-de-euros-en-videojuegos-en-2011

Con esta informacioacuten se puede ver que hacer un videojuego casual para una plataforma moacutevilcomo Android puede ser muy viable

Para este proyecto se realizaraacute un estudio comparativo (benchmarking) En la industria de losvideojuegos es habitual sacar tiacutetulos fijaacutendose en otros tiacutetulos que han conseguido gran eacutexito enel mercado La operativa consiste en mejorarlos dentro de otro contexto o hacer un videojuegocompletamente diferente pero basaacutendose en ocasiones en mecaacutenicas de alguacuten otro tiacutetulo que haconseguido un gran eacutexito

Existen en Google Play gran cantidad de juegos casuales que pueden servir como inspiracioacuten ycomo punto de inicio para hacer un planteamiento general de coacutemo disentildear el producto que sequiere desarrollar partiendo de los requisitos definidos en el apartado 131 de este documento Setomaraacuten como referencia algunos tiacutetulos para identificar patrones para ver coacutemo otros hansolucionado ciertas situaciones como pueden ser problemas de disentildeo o interaccioacuten entre otrosEn ninguacuten caso deberaacuten ser exactamente de la misma temaacutetica pero si que se miraraacute que seandel mismo tipo es decir casual games

El primer paso para realizar este estudio a sido ir a Google play y verificar si hay alguacuten juego conel mismo nombre que el que se pretende desarrollar ldquoFling the sheeprdquo No existe ninguacuten juego adiacutea de hoy con este nombre

El segundo paso a sido buscar tambieacuten en Google play videojuegos en los que aparezcanovejas solo poniendo en el buscador la palabra sheep nos aparecen muchiacutesimos juegos quetienen una temaacutetica donde aparecen ovejas Se ha verificado tambieacuten poniendo combinaciones depalabras relacionadas con el juego que se quiere implementar palabras como sheep wolves o sheep farm etc los resultados obtenidos son bastante elevados

Por la cantidad de juegos encontrados y los recursos de que se dispone como por ejemplo eltiempo no es posible analizarlos todos Si que se tomaran algunos juegos despueacutes de hacer unrepaso de los maacutes destacados Hay que decir que despueacutes de haber instalado algunos alguno deellos no ha acabado de funcionar correctamente en el dispositivo moacutevil

Tras estos pasos se escogeraacuten dos videojuegos de temaacutetica similar y dos videojuegos detemaacutetica diferente Los videojuegos escogidos para realizar el anaacutelisis comparativo son

Paacutegina 35 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria311 Sheep amp Wolf

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 12 y 13 pantallas juego Sheep amp Wolf Link httpsplaygooglecomstoreappsdetailsid=jscompanygamesSheepAndWolf_enter3

El juego consta de una mecaacutenica muy simple disponemos de un boomerang y un corazoacuten laperspectiva del juego es elevada y vemos coacutemo van bajando ovejas y lobos de forma aleatoria setrata de forma taacutectil dibujar la trayectoria del boomerang para eliminar los lobos sin tocar lasovejas y con el corazoacuten dibujar una trayectoria de forma taacutectil para tocar las ovejas y no los lobosconforme vamos tocando los lobos y las ovejas con el correspondiente objeto iremos sumandopuntos

Tiene cierta similitud con el que se quiere implementar ya que salen tambieacuten lobosovejas ytambieacuten que lo que se pretende implementar funcionara de forma taacutectil para lanzar las ovejas alcorral y ahuyentar a los lobos que amenazan a las ovejas

Tiene una perspectiva de caacutemara igual a la que se quiere implementar Tiene una mecaacutenica dejuego muy sencilla las opciones que ofrece son muy definidas y claras 3 botones al inicio deljuego grandes que nos indican las posibles opciones que tenemos dentro del juego Game StartGame Record Exit Un punto interesante de este juego es que las puntuaciones no se guardan anivel local de la aplicacioacuten sino que son compartidas en una pagina web asiacute se pueden ver laspuntuaciones a nivel mundial La navegacioacuten por las diferentes pantallas es correcta

Quizaacute un aspecto negativo del juego seriacutea que visualmente esta muy poco cuidado Aunque aveces si el juego produce mucha adiccioacuten el aspecto visual puede quedar en segundo teacutermino enjuegos para dispositivos moacuteviles En otros tipos de plataformas como consolas o PC el aspectovisual es un punto muy importante y que se debe trabajar mucho maacutes a fondo no obstante estono significa que en un dispositivo moacutevil no deba estarlo

Paacutegina 36 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez adictivo puntuaciones a nivel mundial Navegacioacuten correctaPuntos Negativos Poco cuidado visualmente no tiene pausaObservaciones No tiene un final definido a medida que avanzamos la dificultad aumenta

312 Sheep Up

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 14 y 15 pantallas juego Sheep Up Linkhttpsplaygooglecomstoreappsdetailsid=compgpublishandroidsheepuplive

A diferencia del anterior este visualmente esta mucho maacutes cuidado Es un juego en 3D dondeuna oveja de juguete esta guardada dentro de una caja de cartoacuten Va botando y tiene que irrecogiendo botones e ir subiendo por diferentes niveles para poder salir de la caja es un juego deplataformas tambieacuten con una mecaacutenica bastante sencilla

Este dispone de una pantalla que dura unos segundos y seguidamente sale el menuacute de opcionesdel juego a diferencia de lo visto anteriormente donde directamente saliacutea el menuacute de opcionesde juego El menuacute de opciones de juego tambieacuten es muy directo y claro Aparte del botoacuten playpara iniciar el juego el botoacuten opciones para configurar el audio del juego los efectos el idioma yver los creacuteditos Tiene el botoacuten store donde este juego tiene implementada la modalidad freemiumpara ir comprando diferentes objetos dentro de el que nos daraacuten ciertas ventajas dentro delgameplay La compra se podraacute realizar con monedas virtuales (los botones) que los habremos idorecogiendo durante los diferentes niveles jugados o tambieacuten podemos comprar cantidadesdeterminadas de botones a cambio de dinero de verdad Dispone de vinculacioacuten a redes socialescomo Twitter y Facebook

Puntos Positivos Sencillez adictivo vinculado a Twitter y el Facebook el juego se puede pararNavegacioacuten correctaPuntos Negativos La pantalla inicial tarda demasiado en desaparecer y no da ninguacuten tipo de

Paacutegina 37 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriainformacioacuten al usuario puede llegar a parecer que se a colgado debido al largo tiempo que tardaal menos con el dispositivo que se ha verificado

313 Temple Run

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 16 y 17 pantallas juego Temple runLinkhttpsplaygooglecomstoreappsdetailsid=comimangitemplerun Es un juego que no tiene final donde un explorador tiene que evitar la muerte superandodiferentes obstaacuteculos a traveacutes de diferentes pasillos tendremos que dibujar diferentes trazos deforma taacutectil para que el personaje gire salte o se deslice por el suelo al mismo tiempo tendremosque inclinar el teleacutefono para que el personaje vaya recogiendo monedas que podremos utilizarpara adquirir objetos y mejoras en la partida A medida que vamos recorriendo maacutes y maacutes metrosla dificultad aumenta y nos obligara a realizar maacutes acciones en un espacio de tiempo maacutes cortoasiacute pues los reflejos juegan un papel importante

Tambieacuten dispone de una pantalla que dura unos segundos seguida de un menuacute de opciones muyclaro y definido Este igual que el anterior dispone de una tienda donde se pueden comprarmejoras (potenciadores) con dinero virtual o real Los botones de inicio son muy similares al delanterior juego visto Dispone de vinculacioacuten a redes sociales como Twitter

Puntos Positivos Sencillez Adictivo vinculado a Twitter el juego se puede parar NavegacioacutencorrectaPuntos Negativos -

Paacutegina 38 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria314 Attack of the Spooklings

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 18 y 19 pantallas juego Attack of the SpooklingsLinkhttpsplaygooglecomstoreappsdetailsid=compicarogamesspooklings_free

Finalmente nos centramos en este casual con aspecto visual retro Otro juego que no disponede final y donde la dificultad va aumentando conforme el tiempo de juego aumenta El objetivo deljuego es matar a todos los Spooklings que quieren atacar nuestro poblado La forma de matar alos Spooklings es con el dedo deslizaacutendolo sobre la pantalla soacutelo que un Spookling llegue anuestro poblado en la parte inferior de la pantalla la partida finaliza Debemos evitar de todas lasformas posibles que lleguen a la parte inferior de la pantalla

Tambieacuten dispone de una pantalla de inicio y un menuacute inicial de juego claro y directo no disponede ninguna vinculacioacuten a redes sociales El juego no se puede parar La navegacioacuten por todas laspantallas es correcta teniendo pantalla de puntuaciones maacutes altas pantalla con mini tutorial decoacutemo jugar y unas opciones para configurar el audio y ver los creacuteditos del juego Sin embargo adiferencia de los otros tiene algunas fallas de disentildeo a nivel de transiciones entre pantallas yfuncionalidades baacutesicas que aparentemente no tienen mucho sentido Fuera de la pantalla dejuego no es posible abandonar la aplicacioacuten de ninguna de las maneras no hay botoacuten de salida yla tecla de ir hacia atraacutes no funciona la uacutenica manera de salir es matando el proceso Por otrolado durante la partida con el botoacuten de ir atraacutes conseguimos hacer pausa del juego pero de unaforma que no estaacute anunciada al usuario de ninguna manera con alguacuten icono visual que informa alusuario de la funcionalidad Una vez parado el juego con una tecla que no estaacute indicada enninguna parte como tal nos da dos opciones RESTART y QUIT con QUIT salimos de la aplicacioacutenalgo que no se puede hacer en ninguacuten otro punto de la aplicacioacuten Con RESTART vuelve aempezar la partida y se pierde la que teniacuteamos empezada En resumen si pulsamos este botoacuten noestaacute anunciado en ninguna parte por accidente durante una partida perdemos la partida ya que notenemos la opcioacuten de continuar puesto que o volvemos a empezar o salimos de la aplicacioacuten

Paacutegina 39 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez Muy adictivoPuntos Negativos Errores en el disentildeo de menuacutes y transiciones entre pantallas no tienevinculacioacuten a redes sociales no tiene pausa

Todo lo que se ha visto en este estudio comparativo nos da una idea de que el disentildeo que selleve a cabo debe cumplir las siguientes metas tener una mecaacutenica de juego adictiva y sencillaque la disposicioacuten de opciones e iconos han ser claras y dejar claro al usuario de forma visual queacutefuncionalidad tienen las transiciones y operativas baacutesicas deben estar bien indicadas eimplementadas El disentildeo visual debe ser lo mas cuidado posible aunque a veces en juegos paraeste tipo de dispositivos no es el que maacutes domina sobre todo si el juego tiene una mecaacutenica muyadictiva aunque si se consiguen las dos cosas mucho mejor Otro punto importante es tener unamecaacutenica freemium implementada dentro del juego con una tienda para comprar mejorasaplicables a la mecaacutenica de juego Otro punto importante es la vinculacioacuten del juego a redessociales y que recoja puntuaciones a nivel mundial y no locales del dispositivo todos estosingredientes le pueden dar al juego un plus que haga que el usuario vea el juego maacutes atractivo

Debido a temas de tiempo inicialmente se descarta para este proyecto la implementacioacuten de lassiguientes funcionalidades dentro del videojuego las puntuaciones a nivel mundial estas demomento quedaraacuten sujetas a nivel local del dispositivo tambieacuten se descarta la vinculacioacuten a redessociales y mecaacutenicas freemium

El resto de puntos comentados como las mecaacutenicas sencillas y adictivas aspecto visual lo maacutescuidado posible dentro de los recursos de que se dispone y la navegacioacuten entre pantallas ymenuacutes claros y sencillos seraacute lo que se transportaraacute al disentildeo y la posterior implementacioacuten delproyecto Es posible que durante la implementacioacuten del disentildeo mostrado en este documento semodifiquen algunos puntos por temas de balanceo y equilibrio del producto final

32 Perfiles de usuarios identificados

Los juegos casuales son juegos con mecaacutenicas simples Este hecho hace que esteacuten al alcancede cualquier usuario aunque eacuteste no sea un jugador experimentado acostumbrado a utilizar juegoscon mecaacutenicas maacutes complicadas que requieren de cierta experiencia previa Al mismo tiempo sonjuegos que pueden ser jugados en cortos espacios de tiempo Por tanto el tipo de usuario deestos juegos sera muy variado Podemos encontrar el perfil de usuario experimentado tanto enlas tecnologiacuteas como en los videojuegos y que tiene intereacutes por cualquier tipo de juego Y por otrolado encontramos el usuario poco experimentado pero que gracias a los smarphones y lasencillez de las mecaacutenicas de juego provoca que tambieacuten juegue

Todos tendraacuten un objetivo comuacuten pasar un rato jugando al juego Para mejorar su uacuteltimo reacutecordAunque en este tipo de juegos el usuario tambieacuten puede jugar sin buscar ninguacuten tipo de metaconcreta simplemente pasar un rato divertido sin necesidad de alcanzar ninguacuten tipo de reacutecord niobjetivo concreto Tambieacuten es importante mencionar que aunque los perfiles de usuarios son muyvariados existe una fuerte tendencia a que los jugadores de este tipo de juegos tiendan a sermaacutes grandes que los jugadores de otros tipos de videojuegos y suelen tener un intereacutes y tiempolimitado tanto para jugar como los videojuegos en general siendo normalmente del sexofemenino

Se detectan dos grandes grupos de perfiles de usuario los experimentados en jugar avideojuegos y los no experimentados en jugar videojuegos edades diferentes profesionesvariadas educacioacuten variada sexo variado Los usuarios de Android en general suelen pagarmucho menos por aplicaciones que otros grupos de usuarios como los de iphone por ejemplo

Paacutegina 40 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Los haacutebitos de consumo en los estados unidos ya no de los usuarios de juegos casuales sinode los usuarios de Android en general se definen de la siguiente manera soacutelo un 4 de estospaga por descargar una aplicacioacuten contra un 23 y un 31 de los usuarios de la App Store paraiPhone y iPad respectivamente tal y como muestra un estudio realizado por la empresa Statistacon las 100 aplicaciones maacutes descargadas

ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitasSe puede ver en linea en el link httpwwwstatistacomtopics983mobile-app-monetizationchart1400paid-apps-don-t-stand-a-chance-on-google-play

Se puede ver otro articulo similar en el siguiente link

httpwwwwayerlesscom201307usuarios-de-android-pagan-menos-por-apps-que-los-de-ios

La mayoriacutea de aplicaciones gratuitas utilizan la modalidad freemium que no es maacutes que ofrecerun producto baacutesico de forma gratuita y cobrar a los usuarios por opciones maacutes avanzadas oespeciales dentro de la misma aplicacioacuten No obstante tambieacuten es posible encontrar aplicacionescompletamente gratuitas sin la modalidad freemium

Como ya se ha dicho se han detectado inicialmente dos grandes grupos dentro de la masa deusuarios que son consumidores potenciales de juegos casuales Estos son los usuarios asiduos ajugar videojuegos de todo tipo y con experiencia en el uso de tecnologiacuteas en general es decirusuarios experimentados Por otro lado encontramos los que no tienen costumbre de jugar muchoy normalmente tampoco tienen una gran experiencia en el uso de tecnologiacuteas en general pero

Paacutegina 41 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debido a la simpleza de los videojuegos casuales eacutestos tambieacuten se convierten en jugadores yen muchas ocasiones se convierten en los usuarios que consumen maacutes este tipo de juegos Asiacutepues encontramos dos grandes grupos seguacuten unas caracteriacutesticas comunes experiencia previa osin experiencia ante los videojuegos y las tecnologiacuteas

33 Contextos de uso

331 iquest Doacutende

Al tratarse de un casual game para un dispositivo moacutevil el espacio de utilizacioacuten seraacute muyvariado Por tanto los usuarios podraacuten encontrarse en muchos lugares distintos como puedenser en casa en el tren en el metro en el autobuacutes al aire libre etc En definitiva el usuario podraacuteencontrarse en cualquier lugar

332 iquest Cuaacutendo

El tipo de juegos casuales tienden a ser juegos donde los usuarios realizan partidas cortas peroal mismo tiempo la naturaleza adictiva de estos hace que los usuarios puedan quedar atrapadosdurante varias horas repartidas en ratos diferentes o continuados dependiendo de la situacioacuten decada usuario Por tanto el cuaacutendo de este tipo de juegos puede ser muy variado casi en cualquiermomento que el usuario pueda dedicarle unos minutos o ratos maacutes largos durante su tiempolibre mientras se desplaza ya sea en tren en metro o en alguacuten otro medio de transporte que nonecesite estar pendiente del vehiacuteculo cuando esta en la cama etc

333 iquest En que entorno

Los entornos de utilizacioacuten pueden tambieacuten ser muy variados promovidos por doacutende y el cuaacutendoPor lo tanto el entorno tecnoloacutegico podraacute tambieacuten ser variado puede existir o no conexioacuten a lared en un entorno social muy diferente que podraacute ser maacutes privado o maacutes puacuteblico yconsecuentemente se dibujaraacute un entorno ambiental variado seguacuten el momento

4Disentildeo y ldquoConcept Artrdquo

41 Elementos presentes en la interfaz de la aplicacioacuten

Con todo lo que se ha visto en el apartado 31 estudio comparativo queda patente que la interfazde usuario debe ser clara y sencilla Seraacute necesario que contenga las siguientes pantallas

bull Pantalla de intro inicial que apareceraacute durante un segundobull Pantalla menuacute inicial del juego con las opciones Play Scores Options () How to play bull Pantalla de nivel donde se desarrolla el videojuegobull Pantalla high scores que mostrara la tabla de reacutecords con las 10 puntuaciones maacutes altasbull Pantalla how to play instrucciones de como jugar tambieacuten se integraran dentro del

videojuego y apareceraacuten durante la primera partida que se jueguebull Pantalla opciones podremos activar y desactivar el sonido y los efectos de audio A su vez

desde esta pantalla podremos acceder a la pantalla de creacuteditosbull Pantalla de creacuteditos pantalla doacutende se mostraran lo creacuteditos del videojuego bull Pantalla Ready pantalla de juego con el mensaje sobre impreso antes de empezar a

jugar apareceraacute durante 3 segundosbull Pantalla con los botones resume quit sobreimpresos en la pantalla de juego se accederaacute

Paacutegina 42 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaa ella con el botoacuten de pausa pausando el juego Desde ella podremos reanudar el juego oabandonar el juego

bull Pantalla game over con el resumen de los reacutecords conseguidos durante la partidapuntostiempo jugado numero de lobos ahuyentados y ovejas colocadas en el corralDesde esta pantalla tendremos dos botones Play again y Exit uno nos permitiraacute volver ajugar y el otro nos permitiraacute abandonar el juego tal y como su nombre indica

42 Flujos de interaccioacuten

En la siguiente ilustracioacuten se muestran los flujos de interaccioacuten definidos con las pantallasenumeradas en el apartado anterior Los flujos muestran la navegacioacuten que debe existir entre laspantallas del videojuego

ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintaspantallas

Paacutegina 43 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

43 Prototipaje

431 Sketches

En este apartado se muestran los primeros esbozos realizados a mano alzada estos intentanplasmar el disentildeo del juego en su totalidad Estos esbozos serviraacuten como punto de partida en unasegunda fase para realizar el prototipaje de todas las pantallas que intervienen en el videojuegoutilizando todo el material recopilado en la red

Tal y como ya se ha dicho en este mismo documento anteriormente no se dispone deconocimientos de disentildeo suficientes como para abordar un disentildeo de arte desde cero Por lo tantose han utilizado recursos ya disponibles en la red para el montaje de todos los graacuteficos delvideojuego Todos los recursos utilizados estaacuten bajo licencias creative commons o dominio puacuteblico A continuacioacuten se muestran los bocetos

ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 44 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 45 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada

En la siguiente paacutegina se muestran las transiciones definidas entre pantallas con los sketchesrealizados ilustracioacuten 241 Las transiciones toman como base el diagrama de flujos deinteraccioacuten definido en el apartado 42 de este documento ver ilustracioacuten 21

Paacutegina 46 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria432 Transiciones definidas entre pantallas

ilustracioacuten 241 Transiciones definidas entre pantallas

Paacutegina 47 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria433 Prototipo horizontal de alta fidelidad

4331 Pantalla inicial

Pantalla de inicio al ejecutar el juego apareceraacute esta pantalladurante un segundo

4332 Pantalla menuacute principal del juego

Pantalla de menuacute principal del juego desde esta pantallapodremos empezar a jugar (botoacuten Play) consultar la tabla depuntuaciones (botoacuten Scores) e ir a la pantalla de opciones deljuego (botoacuten Options) El interrogante de la parte inferiorderecha nos serviraacute para ir a la pantalla de instruccionesHOW TO PLAY para saber coacutemo se juega

Paacutegina 48 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4333 Pantalla de opciones

La pantalla de opciones nos permitiraacute deshabilitar la muacutesicadel juego y los efectos sonoros pasando el dedo sobre losiconos del altavoz y las notas musicales con el altavozdeshabilitaremos la muacutesica y con las notas musicalesdesactivaremos los efectos de audio La flecha naranja nosconduciraacute de nuevo a la pantalla de inicio del juego el botoacutencreacuteditos nos llevara a la pantalla de creacuteditos

4334 Pantalla de creacuteditos

Pantalla de creacuteditos en ella se muestran los nombres dequienes han disentildeado y programado el juego con la flechanaranja inferior volvemos a la pantalla de opcionesDeslizando el dedo sobre el texto se podraacute desplazar haciaarriba y hacia abajo

Paacutegina 49 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4335 Pantalla tabla de puntuaciones

Pantalla tabla de puntuaciones nos mostrara una tabla conlas 10 puntuaciones maacutes altas de todas las partidas jugadasEsta tabla se guardara de forma local en el dispositivo

4336 Pantalla de juego READY

Pantalla de juego READY Apareceraacute durante unossegundos una vez iniciada la partida Despueacutes de 3segundos pasara a la pantalla de juego que se muestra en elsiguiente apartado

Paacutegina 50 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4337 Pantalla de juego

La pantalla de la izquierda es donde se desarrollaraacute todo el gameplay en la parte superiorizquierda de la pantalla se muestran los puntos conseguidos y las vidas En la parte superiorderecha hay un botoacuten que permitiraacute pausar el juego una vez pausado mostraraacute la pantalla depausa con los botones RESUME y QUIT la pantalla se muestra en el apartado siguiente En laparte derecha se muestra otra pantalla ideacutentica a la de la izquierda donde se puede ver elgameplay baacutesico representado con flechas los lobos saldraacuten de los extremos de la pantalla yendohacia las ovejas las ovejas al mismo tiempo saldraacuten de la derecha de la pantalla y las tendremosque lanzarlas deslizando el dedo sobre ellas y lanzandolas hacia el establo La puerta se iraacuteabriendo y cerrando aleatoriamente los lobos una vez puestos en escena los podremos ahuyentardeslizando el dedo sobre ellos un nuacutemero de veces determinado en funcioacuten del color del lobocomo esta indicado en el apartado 131 de este documento

Paacutegina 51 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4338 Pantalla de pausa botones RESUME y QUIT

Pantalla de pausa que apareceraacute cuando se pause el juegoCon la opcioacuten RESUME continuaremos jugando con laopcioacuten QUIT se saldraacute de la partida y pasaraacute a la pantalla delmenuacute principal del juego descrita en el punto 322

4339 Pantalla GAME OVER

Pantalla GAME OVER apareceraacute cuando se hayanagotado todas las vidas Mostraraacute un resumen de los puntosconseguidos en la partida actual tiempo invertido en lapartida lobos ahuyentados y ovejas salvadas Con losbotones de la parte inferior podremos volver a jugar (botoacutenplay again) o salir del juego con el botoacuten exit este botoacuten nosconduciraacute a la pantalla de inicio de juego descrita en elapartado 322

Paacutegina 52 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria43310 Pantalla de instrucciones de juego HOW TO PLAY

Pantalla de instrucciones del juego nos haraacute una breveexplicacioacuten de coacutemo jugar Deslizando el dedo sobre el textose podraacute desplazar hacia arriba y hacia abajo El juegodispondraacute de unas mini instrucciones in game queapareceraacuten en la primera partida que se juegue en forma decajas de texto esta pantalla se muestra en el siguienteapartado

43311 Pantalla de instrucciones in game

Esta pantalla muestra el modo como quedaraacuten integradaslas instrucciones de juego dentro del gameplay Estasinstrucciones apareceraacuten solamente la primera vez que sejuegue

Paacutegina 53 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Todo el disentildeo mostrado en este apartado ha sido realizado con todos los recursos encontradosen la red todos ellos quedan recogidos en el apartado 6 Con el programa Gimp se ha montadotodo el disentildeo de alta fidelidad mostrado en este apartado Se ha trabajado con capas paradisponer de flexibilidad en la construccioacuten del disentildeo A su vez el hecho de tener los disentildeos porcapas nos permitiraacute poderlo exportar a la implementacioacuten del videojuego de una manera coacutemoday raacutepida en el apartado 5 implementacioacuten se hace referencia a como convertir el disentildeo realizadoen capas a recursos graacuteficos del videojuego

En la siguiente ilustracioacuten se muestra una captura del disentildeo de la pantalla de juego descrita enel apartado 4337 realizado con Gimp

ilustracioacuten 242 Disentildeo pantallas con Gimp

Paacutegina 54 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

5Implementacioacuten

51 Arquitectura global

511 Arquitectura del framework libGDX

LibGDX es un framework multiplataforma que actualmente soporta WindowsLinuxMac OS XAndroid iOS y HTML5 Esto permite escribir el coacutedigo una sola vez y desplegarlo en las distintasplataformas comentadas sin tener que modificar el coacutedigo LibGDX permite bajar a maacutes bajonivel si se desea ya que da acceso directo al sistema de ficheros dispositivos de entrada desonido y a OpenGL a traveacutes de la interfaz unificada OpenGL ES11 y 20

LibGDX ofrece a su vez un conjunto de APIs que ayudan en las tareas comunes de desarrollode videojuegos como son la presentacioacuten de sprites texto la creacioacuten de interfaces de usuario lareproduccioacuten de efectos de sonido y secuencias musicales y los distintos tipos de caacutelculosnecesarios en la programacioacuten de videojuegos

En algunas ocasiones LibGDX deja de lado el lenguaje Java y recurre a coacutedigo nativo paraconseguir un mejor rendimiento No obstante todas estas funciones quedan ocultas detraacutes de lasAPIs de Java De manera que en el momento de desarrollar un videojuego no hay quepreocuparse de realizar una compilacioacuten cruzada entre Java y C++

LibGDX es un framework maacutes que un motor de videojuegos que ayuda al desarrollo de estosgracias a las abstracciones de gran alcance que ofrece y deja en manos del programador elegircomo escribir su videojuego o aplicacioacuten

512 Visioacuten de los moacutedulos de libGDX

LibGDX comprende varios moacutedulos que proporcionan los servicios necesarios para crear laarquitectura tiacutepica de un videojuego

ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en unvideojuego

Paacutegina 55 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaA continuacioacuten de describen los moacutedulos mostrados en la ilustracioacuten 25

Input Proporciona un modelo de entrada unificado para todas las plataformas Soporta tecladopantalla taacutectil aceleroacutemetro y ratoacuten si esta disponible

Graphics Permite el dibujo de las imaacutegenes en pantalla usando el hardware proporcionado por laimplementacioacuten de Open GL ES las versiones soportadas son GL versioacuten 10 11 20

Files Proporciona los meacutetodos necesarios para las operaciones de lectura escritura totalmenteindependientes a los medios de comunicacioacuten existente

Audio Proporciona las herramientas necesarias para la reproduccioacuten de sonido para todas lasplataformas

Math Moacutedulo que proporciona los caacutelculos matemaacuteticos necesarios orientados al desarrollo devideojuegos

Physics LibGDX proporciona un wrapper completo al motor de fiacutesicas en 2D open sourcedesarrollado en C++ llamado Box2D

52 Arquitectura de un videojuego

521 Programa vs Aplicacioacuten

Una aplicacioacuten convencional sigue una secuencia loacutegica lineal reacciona cuando sucede alguacutenevento es decir responde a eventos como por ejemplo cuando se pulsa una tecla Por el contrarioun videojuego es maacutes complejo hace caacutelculos y dibuja en pantalla constantemente aunque no seproduzca ninguacuten evento

522 Estructura baacutesica de un videojuego

Programar videojuegos es una forma completamente diferente de programar software Ladiferencia principal entre una aplicacioacuten convencional y un videojuego radica en la gestioacuten deeventos tal y como se ha indicado anteriormente un programa ofrece respuestas a eventos y unavez son servidos permanece a la espera de una nueva orden en cambio un videojuego es unprograma que debe actuar en tiempo real tiene que estar haciendo caacutelculos y dibujando enpantalla constantemente No se puede esperar a que suceda un evento para poder actuaraunque el jugador no haga nada no presione una sola tecla no mueva el ratoacuten el juego tiene quecalcular el tiempo que lleva jugando en ese nivel si le va a atacar alguacuten enemigo si estaacute cargandoenergiacutea y por supuesto dibujar en pantalla todo lo que va sucediendo

La mayoriacutea de videojuegos estaacuten construidos bajo la misma estructura baacutesica sobre la cual correel programa Esta estructura puede tener variaciones pero de forma general se presenta de lasiguiente manera

Inicializacioacuten En esta primera etapa el juego se situacutea en su estado inicial Se realizan lasinicializaciones por lo que respecta a las libreriacuteas o motores que vayan a utilizarse de variables yestructuras de datos referentes a los atributos de las entidades o personajes escenariosconfiguraciones etc y de los diferentes recursos fiacutesicos que vayan a emplearse tales comograacuteficos o sonidos

Paacutegina 56 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Ciclo de juego En esta parte esta toda la accioacuten este ciclo se repite de manera indefinida hastaque el jugador pierda gane o salga del juego Este punto se puede dividir en tres partes quepodemos llamarlas entrada proceso y salida

Como entrada se entiende el punto donde se captura todo lo que hace el jugador comopresionar los botones de control mover el ratoacuten presionar las flechas del teclado tocar la pantallataacutectil y el resto de informacioacuten que recibe el juego

En la parte de proceso es donde se procesa toda la informacioacuten que se recibioacute en la entrada ytiene lugar la loacutegica del videojuego Por tanto es donde se realizan los caacutelculos de fiacutesicas si eljuego los requiere asiacute como tambieacuten los caacutelculos de la inteligencia artificial de esteconjuntamente con el tratamiento graacutefico

La salida es la encargada de enviar al jugador toda la informacioacuten que se ha procesado en laetapa anterior proceso Se muestra al jugador el resultado de lo que hizo con la visualizacioacuten enpantalla del estado actual del videojuego Tambieacuten es en este punto donde se hace sonar lamuacutesica y efectos de sonido

Por uacuteltimo y fuera del ciclo de juego esta la parte de finalizacioacuten esta parte es la encargada deliberar todos los recursos y memoria utilizada durante el transcurso del videojuego

Es importante diferenciar estas tres etapas del ciclo del videojuego y ver queacute tarea se delega encada una de ellas en la entrada tan soacutelo nos ocupamos de captar los posibles eventos el procesose encarga en primer lugar de procesar la entrada y maacutes adelante de la loacutegica del videojuego ypor uacuteltimo la capa de salida se encarga de visualizar y reproducir la muacutesica

Con estos puntos claros se puede mostrar la estructura principal de un videojuego En elsiguiente apartado se muestra esta estructura baacutesica a modo de esquema

Paacutegina 57 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

53 Esquema de la estructura baacutesica de un videojuego

Inicializacioacuten Creacioacuten de estructuras dedatos carga de recursos graacuteficos y sonidos

Entrada Gestioacuten de pantalla taacutectiljoystick teclado

Proceso Lanzamos una oveja al corralrebota la oveja salta un lobo al escenarioetc

Salida Mostrar graacuteficos y reproducirsonidos

ilustracioacuten 26 Estructura baacutesica de unvideojuego

Finalizacioacuten Liberar recursos

Paacutegina 58 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

54 Patrones de disentildeo

541 Introduccioacuten

En el disentildeo de cualquier aplicacioacuten como por ejemplo un videojuegono es posible abordarlo porcompleto El proceso de disentildeo de una aplicacioacuten suele ser iterativo y se realiza en diferentesetapas de forma que se vaya refinando con el tiempo Conseguir un disentildeo perfecto a la primeraes muy difiacutecil de conseguir El disentildeo de aplicaciones es complejo y la maacutes importante y que maacutesimpacto tiene no soacutelo sobre el producto final sino tambieacuten sobre su vida futura Ya que es en eldisentildeo en donde se definen las estructuras y entidades que se van a encargar de resolver elproblema planteado Como de bien se definan estas estructuras y entidades influiraacute en granmedida en el eacutexito o fracaso del proyecto y en la viabilidad de su mantenimiento

Los patrones de disentildeo son formas reconocidas y probadas de resolver problemas de disentildeo queson recurrentes en el tiempo No es maacutes que basarse en experiencias anteriores en problemassimilares aplicado soluciones probadas anteriormente en determinados contextos para alcanzarun mejor disentildeo maacutes raacutepidamente

Existen distintos patrones para distintos problemas de disentildeo No obstante en este documentosoacutelo se haraacute hincapieacute en los patrones utilizados para este proyecto Quedando fuera del alcancede este documento los demaacutes patrones existentes

542 Patrones de creacioacuten

Estos patrones nos proporcionan una solucioacuten relacionada con la construccioacuten de clases objetosy otras estructuras de datos Algunos ejemplos de patrones pueden ser Abstract Factory BuilderSingleton estos ofrecen mecanismos de creacioacuten de instancias de objetos y estructurasescalables dependiendo de las necesidades

543 Singleton

Para este proyecto se ha utilizado este patroacuten ya que era necesario tener una uacutenica instancia dealgunas determinadas clases En java cuando se utiliza el operador new es posible crear unainstancia de un objeto No obstante a veces es necesario tener una uacutenica instancia de un objetopor ejemplo para poder acceder a ella des de cualquier punto de la aplicacioacuten Seria un ejemplolapelota de un juego de pinball en donde podriacutea ser conveniente mantener una uacutenica instancia deeste objeto

La solucioacuten para garantizar que solo existe una instancia de un objeto se consigue impidiendoque ninguna otra clase pueda acceder al constructor por este motivo de declara el constructorcomo miacutenimo de forma protegida o privada y se proporciona un uacutenico punto (controlado) en dondese proporciona la uacutenica instancia En la siguiente ilustracioacuten se muestra el diagrama de clases delpatroacuten Singleton

ilustracioacuten 27 Singleton

Paacutegina 59 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria A continuacioacuten en el listado 543 se muestra una implementacioacuten baacutesica del patroacuten Singletonutilizada en el proyecto para la clase que maneja el audio del videojuego

Listado 543

1 package comthreecometflingthesheeputil23 import combadlogicgdxaudioMusic 4 import combadlogicgdxaudioSound56 public class AudioManager 7 8 public static final AudioManager instance = new AudioManager()910 private Music playingMusic11 private Sound playingSound1213 Singleton14 private AudioManager() 15 1617 1819 public void ResunmeMusic()20 21 if(playingMusic = null) playingMusicplay()22 2324 public void PlayMusic(Music musicfloat volumeboolean loop) 25 26 if(GamePreferencesinstancemusic) return27 playingMusic = music28 musicsetLooping(loop)29 musicsetVolume(volume)30 musicplay()31 3233 public void StopMusic()34 35 if(playingMusic = null) playingMusicstop()36 3738 public void PauseMusic()39 40 if(playingMusic = null) 41 if(playingMusicisPlaying()) 42 playingMusicpause()43 44 45 4647 public void PlaySound(Sound soundfloat volume) 48 49 if(GamePreferencesinstancesound) return50 playingSound = sound51 soundplay(volume)52 5354 public void PlaySound(Sound soundfloat volumefloat pitchfloat pan) 55 56 if(GamePreferencesinstancesound) return57 playingSound = sound58 soundplay(volume pitch pan)59 60

Esta clase maneja el audio del videojuego tanto efectos de sonido como la muacutesica es una clase

Paacutegina 60 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debe estar accesible des de cualquier punto de la aplicacioacuten y no tiene ninguacuten sentido que seinstancie repetidas veces soacutelo sera necesaria una instancia de dicha clase para poder manejar losaudios y muacutesicas Como se puede ver en la linea 14 del listado 543 se declara el constructorprivado y en la linea 8 se proporciona el punto donde se proporciona la uacutenica instancia de dichaclase a traveacutes de la variable instance declarada de forma publica para que se accesible desdecualquier otra clase y a su vez declarada de forma static y final Con final le decimos que estavariable ya no puede ser modificada una vez declarada es decir sera una constante Con static leindicamos que podremos utilizar la variable instance sin la necesidad de hacer ninguna instanciacon el operador new de la clase AudioManager

Existen varias clases en el videojuego que son singleton A continuacioacuten se nombran todas ellasAudioManager Assets WorldGameController CounterTime GamePreferences

55 Diagramas de clases definitivos

Se ha dividido en varios diagramas para facilitar su lectura se pueden ver los diagramas en lossiguientes apartados de este documento A continuacioacuten se pasan a comentar las clases descritasen ellos

56 Diagramas nuacutecleo videojuego

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep-android encontramoslas siguientes clases

MainActivity Hereda de AndroidAplication que a su vez hereda de Activity es donde se crea laaplicacioacuten crea una instancia de FlingTheSheepMain

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep encontramos laclase FlingTheSheepMain donde se instancia la pantalla de intro del juego dentro del meacutetodocreate

Siguiendo el esquema estructural de un videojuego descrito en el punto 53 de este documentola ilustracioacuten 28 detalla el diagrama de clases que engloba la inicializacioacuten del juego y el ciclo devida

La Inicializacioacuten queda recogida en la clase Assets esta clase es un singleton que instanciaotras clases que a su vez guardan todos los recursos del videojuego por recursos se entiendetexturas para los graacuteficos archivos de audio ficheros con informacioacuten necesaria para el juegoUna vez inicializado el hecho de ser un singleton nos permite acceder a estas clases a traveacutes dela clase assets des de cualquier punto de la aplicacioacuten En la ilustracioacuten 29 se detallan todas estasclases que engloba la clase assets Esta clase se encuentra el el paquetecomthreecometflingthesheepgame A continuacioacuten se comenta cada una de ellas con una brevedescripcioacuten

LevelDecoration Enumera todas las texturas de los objetos de decoracioacuten del videojuego floreshierba etc Son objetos que no tienen ninguna interaccioacuten con el juego simplemente decoran

AssetFontsScene2D Engloba los tipos distintos de fuente que se utilizan en el videojuego tipode letra medida y color

AssetSound Enumera todos los efectos de sonido del juego

Paacutegina 61 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAssetMusic Contiene todas las muacutesicas del juego

FileHandleHighScores Inicializa la tabla de puntuaciones local y la actualiza cada vez que serealiza una partida de juego

LevelObjects Engloba todos los objetos que tienen interaccioacuten con el videojuego por interaccioacutense entiende objetos que pueden colisionar con otros o que tienen alguacuten papel importante dentrode videojuego no son solo objetos de decoracioacuten

Character Contiene el protagonista del juego el personaje que lleva el jugador en esta caso lasovejas

NPCs En esta clase quedan englobadas las texturas de los enemigos en esta caso los lobos

GUI En esta clase se engloban todas las texturas utilizadas para la creacioacuten de la interfaz deusuario botones imaacutegenes

La clase Constants es una clase que declara varias constates estaacuteticas que son accesibles desde cualquier punto de la aplicacioacuten y se utilizan tanto en la inicializacioacuten como en el ciclo de vidadel videojuego La podemos encontrar en el paquete comthreecometflingthesheeputil

El ciclo de vida del videojuego entrada proceso y salida queda repartido en las siguientes clases

Entrada Gestioacuten pantalla taacutectil se realiza en la clase WorldGameController en el meacutetodollamado handleInput a su vez cada personaje(character) y enemigo(NPC) gestiona su propiaentrada de eventos a traveacutes de los meacutetodos sobre escritos touchDown fling y tap Ver ilustracioacuten30 clases Sheep y Wolf

Proceso Este apartado realiza la loacutegica del videojuego y es responsable de esto el meacutetodoupdate de la clase WorldGameController Dentro de este meacutetodo existe implementada lamaquina de estados descrita en el apartado 231 con todos los estados posibles que el juegopuede tener durante su ciclo de vida los estados son READYGAMEPAUSEGAME OVER Cadapersonaje y enemigo lleva implementado su propia loacutegica y maquina de estados dentro de susclases correspondientes Ver ilustracioacuten 30 clases Sheep y Wolf estas maacutequinas de estados sonlas descritas en los apartados 232 y 233 respectivamente

Salida La salida descrita en el apartado 53 queda recogida en la clase GameScreen Verilustracioacuten 31

Finalizacioacuten La finalizacioacuten liberacioacuten de recursos queda a cargo del meacutetodo sobre escrito hiderepartido por las distintas clases de la aplicacioacuten

Otras clases que intervienen en el ciclo de juego recogidas en la ilustracioacuten 28 sonCounterTime GamePreferences AudioManager a continuacioacuten se detalla la funcionalidad decada una de ellas

CounterTime Esta clase engloba el calculo de tiempo transcurrido desde que empieza el juegohasta que termina hace la funcioacuten de contador de tiempo interno

GamePreferences Esta clase hace persistente la configuracioacuten escogida por el usuario en lasopciones Es posible configurar el juego con o sin sonido al igual que los efectos de audio estaclase es la encargada de guardar esta configuracioacuten aunque abandonemos la aplicacioacuten

Paacutegina 62 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

AudioManager Clase que se encarga tanto de la reproduccioacuten de audio como los efectos desonido es su responsabilidad interrogar la configuracioacuten actual del sonido y efectos paradeterminar si tiene que realizar la reproduccioacuten de audio o efectos asiacute como tambieacuten determinarel volumen del sonido o si un audio hay que reproducirlo de forma ciacuteclica En el listado 543 deeste documento se puede ver el coacutedigo de esta clase como ejemplo de singleton

ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego

Paacutegina 63 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 29 Diagrama de clases Assets

57 Diagrama de clases objetos videojuego

En la ilustracioacuten 30 de este documento se detalla el diagrama de clases referente a los objetosdel videojuego Por objetos se entiende personaje principal enemigos juntamente con todos loselementos que forman el conjunto del escenario del videojuego

En primer lugar cabe destacar la existencia de la clase abstracta AbstractGameObject Estaclase abstracta define los meacutetodos comunes de todos los objetos del juego Por las necesidadesde implementacioacuten no se han definido meacutetodos abstractos no obstante la clase se define comoabstracta ya que va a ser la superclase de todos los objetos del videojuego y por tanto no se van arealizar instancias de esta A continuacioacuten se enumeran las clases que se extienden de esta y querecogen todos los objetos del juego ya sean con o sin interaccioacuten en el

Paacutegina 64 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaGrass Hole Flower Flowers Stump ForestLeft ForestRight ThePen WoodFenceForestWoodFencePen DoorPen BorderGrassLeft BorderGrassRight PotionPurple AubergineRedPuddle Tree GrassField

Estas clases corresponden a los objetos que constituyen el escenario del videojuego Las clasesSheep y Wolf corresponden al personaje del videojuego y a los enemigos respectivamente estasclases no solamente contienen el meacutetodo para ser dibujadas en pantalla igual que las anterioressino que tambieacuten poseen toda la loacutegica para el comportamiento de cada una de ellas este puntocorresponderiacutea a la fase de proceso de la estructura baacutesica de un videojuego detallada en elpunto 53 de este documento Existe para cada personaje y enemigo una maquina de estadosimplementada que indica en que estado se encuentra en cada momento aplicando la loacutegicacorrespondiente para ese estado Ver las enumeraciones SHEEP_STATE y WOLF_STATE de lailustracioacuten 30 estas corresponden a las maacutequinas de estado definidas en los apartados 232 y233 respectivamente

Finalmente en la ilustracioacuten 30 aparecen las clases GameScreen y WorldGameController

La clase GameScreen como se vera en el apartado 58 es la clase que engloba todo lorelacionado con la pantalla del juego o nivel En ella se instancian todos los objetos descritosanteriormente para la creacioacuten del nivel asiacute como tambieacuten la creacioacuten de la GUI del videojuegobotones textos sobreimpresos y cajas de textos Es por este motivo que en la clase GameScreenexisten dependencias u asociaciones hacia todos los objetos dependiendo del tipo de declaracioacutende estos

La clase WorldGameController contiene la implementacioacuten de gran parte de la loacutegica delvideojuego esta clase formariacutea parte de la etapa de proceso dentro de la estructura baacutesica de unvideojuego descrita en el apartado 53 de este documento

Existe tambieacuten en esta clase una asociacioacuten hacia la clase GameScreen ya que des de la claseWorldGameController que es donde se encuentra gran parte de la loacutegica es necesario accedera la instancia de GameScreen para interactuar con varios elementos visuales que manipulan laloacutegica del videjuego

En la siguiente hoja se muestra la ilustracioacuten 30 correspondiente a todo los descrito en esteapartado

Paacutegina 65 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 30 Diagrama de clases objetos

Paacutegina 66 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

58 Diagrama de clases pantallas videojuego

En la ilustracioacuten 31 quedan recogidas todas las clases que intervienen en la creacioacuten depantallas del videjuego por pantallas se entine la pantalla de intro la del menuacute principal la deopciones etc Estas clases engloban todo lo necesario para la construccioacuten y visualizacioacuten deestas A continuacioacuten se detallan cada una de las clases

AbstractGameScreen Esta clase abstracta recoge todos los meacutetodos abstractos que sonimplementados en cada una de las clases que a continuacioacuten se detallan(pantallas) con la loacutegicanecesaria seguacuten las necesidades de cada pantalla No se crea ninguna instancia de esta clase

IntroScreen Corresponde a la pantalla de intro del videojuego descrita en el apartado 4331

MenuScreen Corresponde a la pantalla del menuacute inicial del juego des de aquiacute podemos escogersi jugar consultar la tabla de puntuaciones local ir a las opciones o a la pantalla de ayuda delvideojuego descrita en el apartado 4332 OptionsScreenPantalla de opciones descrita en el apartado 4333

CreditsScreen Pantalla de creacuteditosdescrita en el apartado 4334

HighScoresScreen Pantalla en donde se recoge la puntuacioacuten local del videojuegodescrita en elapartado 4335

GameScreen Pantalla general esta clase engloba toda la loacutegica del nivel del juego a su vezengloba la pantalla inicial de nivel READY la pantalla de pausa del juego y la de game overdescritas en los apartados 4336 4337 4338 4339

HowToPlayScreen El videojuego dispone de un tutorial in game que solo aparece la primera vezque jugamos a el y en las siguientes partidas ya no vuelve aparecer maacutes descrita en el apartado43311 No obstante existe una pantalla en donde podemos ver este tutorial fuera del juego estaclase esta destinada a contener los datos de esta pantalla descrita en el apartado 43310

TextGUI Esta clase contiene todos los textos sobreimpresos que existen en el videojuego En ellaesta la loacutegica de cada uno de estos textos para que sean posicionados y visualizados desde lasdistintas partes del videojuego

TUTORIAL_INGAME_STATE Esta enumeracioacuten enumera los estados de la maquina de estadosutilizada para mostrar el tutorial in game dentro del videojuego la primera vez que jugamos lamaacutequina de estados esta implementada dentro de la clase TextGUI la maacutequina corresponde a ladescrita en el apartado 234

En la siguiente hoja se muestra la ilustracioacuten correspondiente a todo los descrito en esteapartado

Paacutegina 67 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 31 Diagrama de clases pantallas

Paacutegina 68 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

59 Configurar el entorno de desarrollo

Antes de empezar a desarrollar juegos con libGDX es necesario instalar y configurar el entornode desarrollo Para ello se utilizaraacute Eclipse como entorno de desarrollo integrado IDE A su vez secreara un proyecto que nos serviraacute como base para el desarrollo de este

Es posible desarrollar con otros entornos distintos a Eclipse pero el hecho que Eclipse sea elentrono de desarrollo soportado oficialmente ha sido motivo suficiente para escogerlo para esteproyecto como entorno de desarrollo

591 Instalacioacuten

Para poder instalar el entorno de desarrollo nos haraacute falta primero instalar el Java DevelopmentKit(JDK) para posteriormente poder instalar eclipse

Una vez instalados seraacute necesario bajar el framework libGDX del siguiente enlace

httplibgdxbadlogicgamescomdownloadhtml

Tambieacuten sera necesario instalar el Android SDK seguidamente tendremos que ejecutar eclipse yinstalar los plugins necesarios para poder desarrollar con Android El plugin necesario paradesarrollar con Eclipse sobre Android de llama ADT (Android Developer Tools) Para instalar esteplugin debemos dirigirnos a Help--gtInstall new software tal y como muestra la siguiente ilustracioacuten

ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse

Paacutegina 69 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez el entorno de desarrollo preparado seraacute el momento de descomprimir el frameworklibGDX se recomienda descomprimirlo en la raiacutez ClibGDX en esta caso ya que trabajamos bajoWindows

Una vez descomprimido dentro de la la carpeta encontramos una aplicacioacuten llamada gdx-setup-uijar Esta aplicacioacuten nos ayuda a crear un proyecto ya configurado con las libreriacuteas necesariaslisto para ser importado a Eclipse y empezar a desarrollar con libGDX para Android O paracualquier otra de las plataformas soportadas por el framework En este caso se configura elproyecto para Android y para Escritorio de esta manera podremos verificar durante el desarrollodel proyecto los avances sin necesidad de instalarlo en un dispositivo Android ya sea fiacutesico ovirtual

Las siguientes ilustraciones muestran la configuracioacuten a realizar

ilustracioacuten 33 Creacioacuten proyecto libGDX Habraacute que pulsar en el botoacuten Create y con ello accederemos a la siguiente ilustracioacuten

ilustracioacuten 34 Creacioacuten proyecto libGDX

Paacutegina 70 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez configuradas todas las opciones le daremos al paso 4 Open the generation screen ygeneraremos el proyecto Esto proyecto sera importable a eclipse desde la opcioacuten Import delpropio IDE La configuracioacuten del proyecto tambieacuten es posible hacerla a mano no obstante esta aplicacioacutennos ahorra tiempo y posibles errores en el momento de configurarlo dentro del entorno ya quepara hacerlo a mano existen distintos pasos a seguir para conseguir lo mismo que se consiguecon esta aplicacioacuten con escasos clicks de ratoacuten

510 Traspaso del disentildeo a texturas

Todo el disentildeo realizado en el apartado 4 seraacute necesario pasarlo a texturas para posteriormenteutilizarlo en la implementacioacuten del juego como recursos graacuteficos

Una textura es una imagen digital cualquiera en cualquiera de los formatos habituales jpg pnggif tga etc Para poderla cargar dentro de un videojuego y manipularla haraacute falta una libreriacuteaespecializada para ello esto se podria programar para para el caso de este proyecto utilizamos elpropio framework libGDX para realizar esta tarea que a su vez envuelve el uso de OpenGL

Las texturas en OpenGL deben ser siempre potencias de 2163264128256 etc del contrarionos daraacute problemas y no funcionaraacute

El primer paso sera desmontar todas las capas pieza por pieza por decirlo de alguna manera ycrear ficheros de cada una de las capas de forma separada para guardarlas todas en una carpetacon un nombre identificativo Ver la siguiente ilustracioacuten

ilustracioacuten 35 Capas separadas por imaacutegenes

Paacutegina 71 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez realizado este paso deberemos juntarlas todas de nuevo en una uacutenica textura que seapotencia de 2 Trataacutendose de un juego para moacutevil las texturas no deberiacutean ser mayores de1024x1024 y no se podraacuten cargar muchas de ellas en memoria por razones obvias de recursosdel tipo de dispositivo

Para juntarlas utilizaremos una aplicacioacuten llamada Texture Packer esta nos juntara las texturasde repartieacutendola de forma que quepan en una tamantildeo de textura definido que en este caso serade 1024x1024 en caso de caber en una uacutenica textura el programa generara 2 texturas siempreoptimizadas a potencias de 2 La siguiente ilustracioacuten muestra el programa Texture packer

Ilustracioacuten 36 Texture packer El formato de salida de las textura sera png ya que necesitamos mantener el canal alpha deestas activado para los objetos sean correctamente dibujados en la escena del videojuego

Conjuntamente con la textura la aplicacioacuten nos generara un archivo de texto que contendraacute elnombre de la textura y la posicioacuten donde se encuentra dentro de la textura generada de1024x1024 Ver la siguiente ilustracioacuten en la siguiente paacutegina

Paacutegina 72 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 37 Posicioacuten texturas De esta manera podremos cargar las texturas en la fase inicializacioacuten en la clase Assets descritaen la ilustracioacuten 29 en forma de diagrama de clases

511 Implementacioacuten de las maacutequinas de estado

La implementacioacuten de las maacutequinas de estado se realiza con una estructura enumconjuntamente con una estructura switch case El siguiente listado muestra la declaracioacuten del laestructura enum implementada en la clase WorldGameController la implementacioacuten de todas lasmaacutequinas se realiza del mismo modo por tanto se toma esta como ejemplo en representacioacuten detodas las implementadas en el videojuego

Listado 5111

1 private enum GAME_STATE READYGAMEPAUSEGAME_OVER2 private GAME_STATE gameState34 gameState = GAME_STATEREADY

Paacutegina 73 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLa siguiente tabla muestra un trozo de la estructura switch case implementada en el meacutetodoupdate de la clase WorldGameController

Listado 5112

1 public void update(float deltaTime)2 3 switch(gameState)4 5 case READY6 if(audioReady) 7 AudioManagerinstancePlaySound(Assetsinstancesoundready 8 ConstantsVOLUME_AUDIO_EFFECTS)9 audioReady = false10 11 if(timeLeftShowReadyScreen gt 0)12 13 if(deltaTime lt 03f ) 14 timeLeftShowReadyScreen -=deltaTime15 16 if(timeLeftShowReadyScreen lt 0)17 18 gameScreensetVisibilityGUI()19 timeLeftShowReadyScreen = 020 CounterTimeinstancestartTime()21 22 AudioManagerinstancePlayMusic(Assetsinstancemusiclevel01 23 ConstantsVOLUME_MUSIC_GAME true)24 gameState = GAME_STATEGAME 2526 27 28 break 29 case GAME30 updateGame() 31 if(timeOpenDoorPen gt 0)32 33 if(deltaTime lt 03f ) 34 timeOpenDoorPen -= deltaTime35 36 if(timeOpenDoorPen lt= 0) 37 gameScreengetDoorPen()setVisibility(gameScreengetDoorPen()getVisibility())38

En este listado podemos ver el estado READY y un trozo del estado GAME de la maacutequina deestados definida en el apartado 231 de este documento inicialmente la maacutequina toma el estadoREADY como se puede ver en la linea 4 del listado 5111 este estado se ira repitiendo a cadavuelta del ciclo de vida del videojuego hasta que cambie el estado de juego a GAME estosucederaacute una vez transcurridos 3 segundos tal y como se puede ver en la linea 24 del listado5112 Hay que tener en cuenta que un videojuego tal y como se ha definido en el apartado 522de este documento forma un bucle infinito por tanto la funcioacuten update de la linea 1 de este listadose repetiraacute de forma indefinida durante la ejecucioacuten del nivel de juego y cada vuelta ejecutaraacute elestado en que se encuentre la maacutequina de estados

Paacutegina 74 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6Conclusiones El desarrollo del proyecto ha sido tal y como se esperaba en lineas generales no han habidograndes desviaciones de tiempo ni durante el disentildeo ni en el posterior desarrollo de este Cabedestacar que el hecho de poder probar el proyecto ejecutaacutendolo en la propia maacutequina donde se hadesarrollado sin tener que utilizar un dispositivo real o virtual cada vez que se ha querido verificarha hecho que el desarrollo sea mucho maacutes fluido que sino se hubiera contado con el escenariodescrito Esto no significa que en ciertos momentos del desarrollo no se haya probado con undispositivo real Android Dejando a parte la gran ventaja que esto significa ya que una vezdesarrollado el esfuerzo realizado nos sirve para distintas plataformas casi sin tener que tocarnada del coacutedigo

Por tanto el hecho de haber escogido libGDX para el desarrollo ha sido una buena eleccioacuten Estambieacuten una buena eleccioacuten escoger un framework o un motor focalizado al desarrollo devideojuegos si se quiere implementar uno ya sea para Android o para cualquier plataforma

Existe la posibilidad de desarrollarlo sin ninguacuten tipo de framework o motor pero hay que tenerclaro que se quiere hacer exactamente y a donde se quiere llegar es decir si lo que se quiere escentrarse en la programacioacuten de videojuegos es mucho mejor partir de un framework o motor yaque de esta forma nos desligamos de programar ciertos apartados que estaacuten maacutes focalizados a laprogramacioacuten de frameworks o motores para videojuegos que no a la programacioacuten devideojuegos en si

Yendo maacutes allaacute de donde el programador se quiere centrar existe otro factor importante a teneren cuenta en el momento de plantear un proyecto llamado tiempo con el tiempo de que se hadispuesto para este proyecto queda auacuten maacutes justificado la eleccioacuten de este framework pararealizarlo Ya que probablemente sin el debido al esfuerzo mayor en programar apartados que noson exclusivos del videojuego pudieran haber existido desviaciones de tiempo importantes enrelacioacuten al calendario propuesto

Ha quedado fuera del proyecto por temas de tiempo realizar animaciones a todos los personajesdel videojuego para conseguir una mejor experiencia de usuario y un nivel de acabado superiorFuera del proyecto tambieacuten ha quedado la implementacioacuten no solo de unas puntuacionesmaacuteximas a nivel local sino tambieacuten unas a nivel mundial consultables a traveacutes de una paacutegina webA su vez no solo guardariacutea la puntuacioacuten maacutexima sino tambieacuten el tiempo jugado las ovejassalvadas y los lobos ahuyentados Tambieacuten ha quedado fuera de este proyecto la realizacioacuten deun blog dedicado al videojuego Todos estos apartados se implementaran en breve fuera de esteTFC

7Recursos utilizados

71 Portada documento

Jake Maymar httpwwwflickrcomphotosmaymar5334789030httpcreativecommonsorglicensesby-sa20deeden

72 Recursos utilizados para el disentildeo del videojuego

Para realizar todo el disentildeo visual del videojuego se ha recurrido a diferentes fuentes de arte

Paacutegina 75 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriasujetas a licencias creative commons y dominio puacuteblico A continuacioacuten se detalla una lista decada recurso con su autor en el caso de que no haya sido publicado de forma anoacutenimajuntamente con el link donde se ha encontrado

721 Fotografiacutea pantalla intro videojuego y usuarios

Michael Karrerhttpwwwflickrcomphotosmichael_karrer78438470httpcreativecommonsorglicensesby-nc20deeden

Jodi Womackhttpwwwflickrcomphotosjodiwomack6217578512httpcreativecommonsorglicensesby20deeden

Tony Alterhttpwwwflickrcomphotos78428166N008279647916httpcreativecommonsorglicensesby20deeden

Gage Skidmore (Nina Dobrev)httpwwwflickrcomphotosgageskidmore5980906910httpcreativecommonsorglicensesby-sa20deeden

722 Iconos y botones

7221 Altavoz

Autor httpwwwiconshockcom Link httpswwwiconfindercomicons67771audio_speaker_iconsize=128Licencia Free for commercial use

7222 Nota Musical

Autor httpwwwdezinerfoliocomLink httpswwwiconfindercomicons58679music_iconsize=128Licencia Free for commercial use

7223 Flecha salida

Autorhttptayteldeviantartcom Linkhttpswwwiconfindercomicons41696arrow_back_grey_left_orange_iconsize=128LicenciaFree for commercial use (Include link to authors website) 7224 Icono de pausa

AutorhttpwwwwebdesignerdepotcomLink httpswwwiconfindercomicons40716blue_button_pause_iconsize=64Licencia Free for commercial use

7225 Icono interrogante (help)

AutorhttpwwwdoublejdesigncoukLinkhttpwwwiconarchivecomshowravenna-3d-icons-by-double-j-designHelp-iconhtml

Paacutegina 76 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLicencia httpcreativecommonsorglicensesby30

7226 Botones (Play Score Options)

AutorydLinkhttpopengameartorgcontentbuttons-variationsLicenciahttp creativecommonsorgpublicdomainzero10

723 Recursos graacuteficos 2D componentes escenario

7231 Ojos lobos

AutorCreek23Link httpopengameartorgcontentgnu-the-gnu-mascotLicencia httpcreativecommonsorglicensesby-sa30

7232 Ovejas y lobos

Autor lemmlingLink httpopenclipartorguser-clipartslemmlingLicencia httpopenclipartorgshare

7233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY

AutorSamLink httpopengameartorgcontentcountry-fieldLicencia httpcreativecommonsorgpublicdomainzero10

7234 Escenario

Daniel EddelandLinkhttpopengameartorgcontentlpc-farming-tilesets-magic-animations-and-ui-elementsLicenciahttpcreativecommonsorglicensesby-sa30

724 Fuentes

7241 ThinckheadAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10 7242 MisfortuneAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7243 TabaqueraAutor deFharoLink httpwwwdafontcomesfernando-harod3419l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7244 Press Start Font

Paacutegina 77 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAutor desconegutLink httpwwwzone38netfontpressstartLicencia httpscriptssilorgcmsscriptspagephpsite_id=nrsiampid=OFL

725 Otros

Todos los demaacutes recursos no nombrados en esta lista como el fondo de pantalla del menuacuteprincipal de inicio del juego y las letras del titulo del juego Fling the sheep impresas sobre lapantalla del menuacute inicial son de elaboracioacuten propia

726 Audio y efectos de sonido

7261 Menu

Autor mrpolyLinkhttpopengameartorgcontentmenu-musicLicencia httpcreativecommonsorgpublicdomainzero10

7262 Game Over

Autor MacroLinkhttpopengameartorgcontentrest-outro-loopLicenciahttpcreativecommonsorglicensesby30

7263 Game Play

AutorRezonerLinkhttpopengameartorgcontenttrance-menuLicenciahttpcreativecommonsorglicensesby30

7264 Creacutedits

Autor -Linkhttpopengameartorgcontent1-minute Licenciahttpcreativecommonsorgpublicdomainzero10

7265 Ready

httpopengameartorgcontentui-accept-or-forwardhttpcreativecommonsorglicensesby30

7266 Pause_Resume

httpopengameartorgcontentcompletion-sound httpcreativecommonsorglicensesby30

7267 Quit

httpopengameartorgcontentfly-swatter-squish-sound httpcreativecommonsorgpublicdomainzero10

7268 Sheep

Paacutegina 78 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

httpopengameartorgcontentsheep-sound-bleats-yo-frankiehttpcreativecommonsorglicensesby30

El resto de efectos de audio han sido obtenidos de la siguiente paacutegina httpwwwpond5com

8Lineas abiertas del proyecto Se haraacute un repaso del proyecto por si existe alguacuten bug para solucionarlo Posteriormente deadaptara para que sea funcional en distintas resoluciones de pantalla Se antildeadiraacuten los power-upsque se definieron al principio del proyecto por temas de tiempo han quedado fuera de la entregaA su vez se balanceara el gameplay antildeadiendo alguna mecaacutenica de juego extra si procede

Se publicara el juego en Google Play y se creara un blog del juego se mirara la posibilidad dehacer funcionar el juego en el blog con webGL httpprojects3cometcom

Se ampliara la tabla de puntuaciones de la siguiente manera la tabla no solamente guardara lospuntos tambieacuten guardara el tiempo jugado nuacutemero de lobos ahuyentados nuacutemero de ovejassalvadas y nombre del usuario con 5 caracteres Se creara un un registro de puntuaciones globalconsultable desde el blog del videojuego

Finalmente se crearan maacutes niveles de juego con distribuciones diferentes alguacuten nivel podriacuteatambieacuten tener mecaacutenicas diferentes de juego con los mismos personajeshellip

9Bibliografiacutea utilizada

Titulo Beginning Android Games (Second Edition) ISBN 978-1-43024-677-0

Autor Mario Zechner Robert Green

Editorial Apress

Contenido Desarrollo de videojuegos para Android

Titulo Learning libGDX Game Development ISBN 978-1-78216-604-7

Autor Andreas Oehlke

Editorial PACKT Publishing

Contenido Desarrollo de videojuegos para Android con libGDX

Paacutegina 79 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

10Otros proyectos realizados

101 Remake Gradius Konami

Remake del famoso shooter de Konami lanzado para ordenadores MSX en 1986 programadocon C++ con SDL Aunque este juego existe para multitud de plataformas Ver articulo wikipedia

httpeswikipediaorgwikiGradius_videojuego

Blog del proyecto httpprojects3cometcom

102 Tales of Nimria mini RPG

Mini RPG en 2D programado en C++ con DirectX este mini RPG trata de salvar a una princesacapturada por unas malvadas criaturas

Blog del proyecto httpprojects3cometcom

102 Motocalipsis Bar 66 RTS RTS en 3D con ambiente motero los hechos de la historia suceden en un pequentildeo pueblo deTexas Programado en Unity con C

Blog del proyecto httpmotocalipsisbar66blogspotcomes

Paacutegina 80 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Creative Commons 40 license by-nc-sa

Attribution-NonCommercial-ShareAlike 40 International

===========================================================

Creative Commons Corporation (Creative Commons) is not a law firm anddoes not provide legal services or legal advice Distribution ofCreative Commons public licenses does not create a lawyer-client orother relationship Creative Commons makes its licenses and relatedinformation available on an as-is basis Creative Commons gives nowarranties regarding its licenses any material licensed under theirterms and conditions or any related information Creative Commonsdisclaims all liability for damages resulting from their use to thefullest extent possible

Using Creative Commons Public Licenses

Creative Commons public licenses provide a standard set of terms andconditions that creators and other rights holders may use to shareoriginal works of authorship and other material subject to copyrightand certain other rights specified in the public license below Thefollowing considerations are for informational purposes only are notexhaustive and do not form part of our licenses

Considerations for licensors Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights Our licenses are irrevocable Licensors should read and understand the terms and conditions of the license they choose before applying it Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected Licensors should clearly mark any material not subject to the license This includes other CC- licensed material or material used under an exception or limitation to copyright More considerations for licensors wikicreativecommonsorgConsiderations_for_licensors

Considerations for the public By using one of our public licenses a licensor grants the public permission to use the licensed material under specified terms and conditions If the licensors permission is not necessary for any reason--for example because of any applicable exception or limitation to copyright--then that use is not regulated by the license Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant Use of

Paacutegina 81 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria the licensed material may still be restricted for other reasons including because others have copyright or other rights in the material A licensor may make special requests such as asking that all changes be marked or described Although not required by our licenses you are encouraged to respect those requests where reasonable More_considerations for the public wikicreativecommonsorgConsiderations_for_licensees

===========================================================

Creative Commons Attribution-NonCommercial-ShareAlike 40 InternationalPublic License

By exercising the Licensed Rights (defined below) You accept and agreeto be bound by the terms and conditions of this Creative CommonsAttribution-NonCommercial-ShareAlike 40 International Public License(Public License) To the extent this Public License may beinterpreted as a contract You are granted the Licensed Rights inconsideration of Your acceptance of these terms and conditions and theLicensor grants You such rights in consideration of benefits theLicensor receives from making the Licensed Material available underthese terms and conditions

Section 1 -- Definitions

a Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated altered arranged transformed or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor For purposes of this Public License where the Licensed Material is a musical work performance or sound recording Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image

b Adapters License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License

c BY-NC-SA Compatible License means a license listed at creativecommonsorgcompatiblelicenses approved by Creative Commons as essentially the equivalent of this Public License

d Copyright and Similar Rights means copyright andor similar rights closely related to copyright including without limitation performance broadcast sound recording and Sui Generis Database

Paacutegina 82 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Rights without regard to how the rights are labeled or categorized For purposes of this Public License the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights

e Effective Technological Measures means those measures that in the absence of proper authority may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20 1996 andor similar international agreements

f Exceptions and Limitations means fair use fair dealing andor any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material

g License Elements means the license attributes listed in the name of a Creative Commons Public License The License Elements of this Public License are Attribution NonCommercial and ShareAlike

h Licensed Material means the artistic or literary work database or other material to which the Licensor applied this Public License

i Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license

j Licensor means the individual(s) or entity(ies) granting rights under this Public License

k NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation For purposes of this Public License the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange

l Share means to provide material to the public by any means or process that requires permission under the Licensed Rights such as reproduction public display public performance distribution dissemination communication or importation and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them

Paacutegina 83 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria m Sui Generis Database Rights means rights other than copyright resulting from Directive 969EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases as amended andor succeeded as well as other essentially equivalent rights anywhere in the world

n You means the individual or entity exercising the Licensed Rights under this Public License Your has a corresponding meaning

Section 2 -- Scope

a License grant

1 Subject to the terms and conditions of this Public License the Licensor hereby grants You a worldwide royalty-free non-sublicensable non-exclusive irrevocable license to exercise the Licensed Rights in the Licensed Material to

a reproduce and Share the Licensed Material in whole or in part for NonCommercial purposes only and

b produce reproduce and Share Adapted Material for NonCommercial purposes only

2 Exceptions and Limitations For the avoidance of doubt where Exceptions and Limitations apply to Your use this Public License does not apply and You do not need to comply with its terms and conditions

3 Term The term of this Public License is specified in Section 6(a)

4 Media and formats technical modifications allowed The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created and to make technical modifications necessary to do so The Licensor waives andor agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights including technical modifications necessary to circumvent Effective Technological Measures For purposes of this Public License simply making modifications authorized by this Section 2(a) (4) never produces Adapted Material

5 Downstream recipients

a Offer from the Licensor -- Licensed Material Every recipient of the Licensed Material automatically

Paacutegina 84 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License

b Additional offer from the Licensor -- Adapted Material Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapters License You apply

c No downstream restrictions You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material

6 No endorsement Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are or that Your use of the Licensed Material is connected with or sponsored endorsed or granted official status by the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i)

b Other rights

1 Moral rights such as the right of integrity are not licensed under this Public License nor are publicity privacy andor other similar personality rights however to the extent possible the Licensor waives andor agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights but not otherwise

2 Patent and trademark rights are not licensed under this Public License

3 To the extent possible the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme In all other cases the Licensor expressly reserves any right to collect such royalties including when the Licensed Material is used other than for NonCommercial purposes

Paacutegina 85 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 3 -- License Conditions

Your exercise of the Licensed Rights is expressly made subject to thefollowing conditions

a Attribution

1 If You Share the Licensed Material (including in modified form) You must

a retain the following if it is supplied by the Licensor with the Licensed Material

i identification of the creator(s) of the Licensed Material and any others designated to receive attribution in any reasonable manner requested by the Licensor (including by pseudonym if designated)

ii a copyright notice

iii a notice that refers to this Public License

iv a notice that refers to the disclaimer of warranties

v a URI or hyperlink to the Licensed Material to the extent reasonably practicable

b indicate if You modified the Licensed Material and retain an indication of any previous modifications and

c indicate the Licensed Material is licensed under this Public License and include the text of or the URI or hyperlink to this Public License

2 You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium means and context in which You Share the Licensed Material For example it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information 3 If requested by the Licensor You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable

Paacutegina 86 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria b ShareAlike

In addition to the conditions in Section 3(a) if You Share Adapted Material You produce the following conditions also apply

1 The Adapters License You apply must be a Creative Commons license with the same License Elements this version or later or a BY-NC-SA Compatible License

2 You must include the text of or the URI or hyperlink to the Adapters License You apply You may satisfy this condition in any reasonable manner based on the medium means and context in which You Share Adapted Material

3 You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to Adapted Material that restrict exercise of the rights granted under the Adapters License You apply

Section 4 -- Sui Generis Database Rights

Where the Licensed Rights include Sui Generis Database Rights thatapply to Your use of the Licensed Material

a for the avoidance of doubt Section 2(a)(1) grants You the right to extract reuse reproduce and Share all or a substantial portion of the contents of the database for NonCommercial purposes only

b if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material including for purposes of Section 3(b) and

c You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database

For the avoidance of doubt this Section 4 supplements and does notreplace Your obligations under this Public License where the LicensedRights include other Copyright and Similar Rights

Paacutegina 87 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 5 -- Disclaimer of Warranties and Limitation of Liability

a UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR TO THE EXTENT POSSIBLE THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL WHETHER EXPRESS IMPLIED STATUTORY OR OTHER THIS INCLUDES WITHOUT LIMITATION WARRANTIES OF TITLE MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE NON-INFRINGEMENT ABSENCE OF LATENT OR OTHER DEFECTS ACCURACY OR THE PRESENCE OR ABSENCE OF ERRORS WHETHER OR NOT KNOWN OR DISCOVERABLE WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART THIS DISCLAIMER MAY NOT APPLY TO YOU

b TO THE EXTENT POSSIBLE IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING WITHOUT LIMITATION NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT SPECIAL INDIRECT INCIDENTAL CONSEQUENTIAL PUNITIVE EXEMPLARY OR OTHER LOSSES COSTS EXPENSES OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES COSTS EXPENSES OR DAMAGES WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART THIS LIMITATION MAY NOT APPLY TO YOU

c The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that to the extent possible most closely approximates an absolute disclaimer and waiver of all liability

Section 6 -- Term and Termination

a This Public License applies for the term of the Copyright and Similar Rights licensed here However if You fail to comply with this Public License then Your rights under this Public License terminate automatically

b Where Your right to use the Licensed Material has terminated under Section 6(a) it reinstates

1 automatically as of the date the violation is cured provided it is cured within 30 days of Your discovery of the violation or

2 upon express reinstatement by the Licensor

For the avoidance of doubt this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License

Paacutegina 88 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

c For the avoidance of doubt the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time however doing so will not terminate this Public License

d Sections 1 5 6 7 and 8 survive termination of this Public License

Section 7 -- Other Terms and Conditions

a The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed

b Any arrangements understandings or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License

Section 8 -- Interpretation

a For the avoidance of doubt this Public License does not and shall not be interpreted to reduce limit restrict or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License

b To the extent possible if any provision of this Public License is deemed unenforceable it shall be automatically reformed to the minimum extent necessary to make it enforceable If the provision cannot be reformed it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions

c No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor

d Nothing in this Public License constitutes or may be interpreted as a limitation upon or waiver of any privileges and immunities that apply to the Licensor or You including from the legal processes of any jurisdiction or authority

===========================================================

Paacutegina 89 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaCreative Commons is not a party to its public licensesNotwithstanding Creative Commons may elect to apply one of its publiclicenses to material it publishes and in those instances will beconsidered the Licensor Except for the limited purpose of indicatingthat material is shared under a Creative Commons public license or asotherwise permitted by the Creative Commons policies published atcreativecommonsorgpolicies Creative Commons does not authorize theuse of the trademark Creative Commons or any other trademark or logoof Creative Commons without its prior written consent includingwithout limitation in connection with any unauthorized modificationsto any of its public licenses or any other arrangementsunderstandings or agreements concerning use of licensed material Forthe avoidance of doubt this paragraph does not form part of the publiclicenses

Creative Commons may be contacted at creativecommonsorg

Paacutegina 90 de 102

Page 4: Universitat Oberta de Catalunya UOC Ingeniería técnica en

Licencia This document Fling the sheep casual game for Andorid with libGDX (c) 2013 by Xavier Figuera Alberich

This document Fling the sheep casual game for Andorid with libGDX is licensed under aCreative Commons Attribution-NonCommercial-ShareAlike 40 International License

You should have received a copy of the license along with thiswork If not see lthttpcreativecommonsorglicensesby-nc-sa40gt

Resumen

Android es un sistema operativo con nuacutecleo monoliacutetico basado en el kernel de Linux version 26que fue lanzado al mercado el 23 de septiembre de 2008 Disentildeado principalmente paradispositivos moacuteviles con pantalla taacutectil como pueden ser Smartphones o tabletas Esta disponiblegratuitamente para un uso comercial o no comercial El nuacutecleo esta escrito en C algunas de laslibreriacuteas de terceros estaacuten escritas en C++ y su interfaz de usuario esta escrita en Java Soportadistintas estructuras de procesador entre ellas ARM x86 MIPS y IBM POWER no obstante laarquitectura utilizada mayoritariamente son los procesadores ARM Esta publicado bajo la licenciaApache 20 y GNU GPL2 En el momento de escribir este documento su versioacuten actual es la Android 43 Jelly Bean(Gominola) y se encuentra en permanente desarrollo El primer moacutevil con Android fue el HTCDream que se comercializo por primera vez en Octubre de 2008

Android fue desarrollado inicialmente por la compantildeiacutea Android Inc esta estuvo financiada porGoogle durante un tiempo hasta que la compantildeiacutea fue adquirida por la multinacionalestadounidense en julio de 2005 Google queriacutea tener presencia en el mercado de los dispositivosmoacuteviles Android fue presentado en 2007 conjuntamente con la fundacioacuten Open Handset AllianceEsta entidad actualmente es un consorcio de 78 compantildeiacuteas de hardware software ytelecomunicaciones dedicadas al desarrollo de estaacutendares abiertos para dispositivos moacutevilesliderada por Google La multinacional estadounidense es el principal desarrollador de Android yaporta el ecosistema necesario para el crecimiento de este No obstante todos los miembros delconsorcio contribuyen de distintas maneras al desarrollo

En el antildeo 2008 salio a la luz la versioacuten 10 de Android En el momento de su aparicioacuten tubo queenfrentarse a las distintas plataformas ya existentes en aquel momento iPhone OS queactualmente es conocido como iOS BlackBerry OS y Windows Phone 7 El crecimiento deAndroid a sido espectacular en estos uacuteltimos antildeos a nivel mundial alcanzoacute una cuota de mercadodel 509 durante el uacuteltimo trimestre de 2011 esto represento maacutes del doble que el sistemaoperativo iOS de Apple Actualmente su cuota de mercado se situacutea en el 744 seguacuten un estudiorealizado por la empresa Gartner Ver la siguiente tabla

El hecho de que Android sea de coacutedigo abierto permite a los fabricantes comercializardispositivos de distintas gamas y precios adaptando ellos mismos el sistema operativo seguacuten lasnecesidades de cada modelo De esta forma se consigue un alcance mayor a distintos niveles depublico esto seria uno de los motivos que ha causado en estos uacuteltimos antildeos el crecimientoespectacular de cuota de mercado llegando casi al 75 actualmente a nivel mundial

Android a sufrido numerosas actualizaciones desde su liberacioacuten cada versioacuten liberada se le ha

dado un nombre de postres en ingles por orden alfabeacutetico

En la siguiente tabla se enumeran las distintas versiones salidas a la luz desde su lanzamientoinicial en el antildeo 2008

Letra Nombre del Postre - Versioacuten

A Apple Pie (v10) Tarta de manzana

B Banana Bread (v11) Pan de plaacutetano

C Cupcake (v15) Panque

D Donut (v16) Rosquilla

E Eacuteclair (v20v21) Pastel franceacutes

F Froyo (v22) (Abreviatura de laquofrozen yogurtraquo) Yogur helado

G Gingerbread (v23) Pan de jengibre

H Honeycomb (v30v31v32) Panal de miel

I Ice Cream Sandwich (v40) Saacutendwich de helado

J Jelly BeanGummy Bear (v41v42v43) Gominola (versioacuten actual)

K KitKat (v44) Kit Kat (versioacuten en desarrollo)

Iacutendice de contenidos1Introduccioacuten1

11 Justificacioacuten y contexto del proyecto112 Descripcioacuten del Proyecto113 Objetivos2

131 Definicioacuten del videojuego 214 Planificacioacuten4

141 Ciclo de vida4142 Planificacioacuten detallada del proyecto4

1411 Anaacutelisis previo planificacioacuten41412 Anaacutelisis de requisitos51413 Disentildeo51414 Implementacioacuten y pruebas61415 Finalizacioacuten6

143 Temporalizacioacuten del proyecto 715 Herramientas y tecnologiacuteas utilizadas916 Riesgos del proyecto10

2 Anaacutelisis funcional1121 Requisitos funcionales casos de uso11

211 Diagrama casos de uso actor ldquoJugadorrdquo11212 Tabla resumen casos de uso12213 Descripcioacuten textual de los casos de uso12

2131 VJ01 Inicio videojuego 122132 VJ02 Jugar 132133 VJ03 Acceder puntuaciones maacuteximas locales 132134 VJ31 Consultar puntuaciones locales 142135 VJ32 Salir puntuaciones locales 142136 VJ04 Acceder a las opciones 152137 VJ41 Activar o desactivar muacutesica o efectos 152138 VJ42 Acceder a la pantalla de creacuteditos 162139 VJ421 Salir de la pantalla de creacuteditos 1621310 VJ05 Acceder a las instrucciones 1721311 VJ51 Salir de las instrucciones 1721312 VJ06 Salir del videojuego 18

214 Diagrama casos de uso actor ldquoIArdquo192141 Diagrama casos de uso IA personaje principal (oveja)19

21411 Tabla resumen casos de uso2021412 Descripcioacuten textual de los casos de uso20

214121 IA03 Salida ovejas al escenario 20214122 IA031 Posicionamiento en pantalla de las oveja 20214123 IA032 Movimiento oveja 21214124 IA033 Oveja pastando21214125 IA034 Lanzamiento oveja22214126 IA035 Rebotes de la oveja 22214127 IA036 La oveja entra en el establo 23214128 IA037 Parar oveja 23

2142 Diagrama casos de uso IA enemigos (lobo)2421421 Tabla resumen casos de uso2421422 Descripcioacuten textual de los casos de uso25

214221 IA02 Salida lobo al escenario 25

i

214222 IA021 Ojos por la derecha o por la izquierda25214223 IA022 Escoge el tipo de lobo26214224 IA023 Lobo por la derecha o por la izquierda26214225 IA024 Salta a escena27214226 IA025 Movimiento lobo27

22 Disentildeo inicial diagrama de clases28221 Diagrama de clases inicial ldquoFling the sheeprdquo 28

2211 Resumen clases videojuego28222 Diagrama de clases inicial de pantallas30

2221 Resumen clases pantallas3023 Definicioacuten de maacutequinas de estado finitas31

231 Maacutequina de estados del videojuego 31232 Maacutequina de estados comportamiento oveja32233 Maacutequina de estados comportamiento lobo33234 Maacutequina de estados tutorial in game34

3 Disentildeo3531 Estudio comparativo35

311 Sheep amp Wolf36312 Sheep Up 37313 Temple Run38314 Attack of the Spooklings39

32 Perfiles de usuarios identificados4033 Contextos de uso42

331 iquest Doacutende 42332 iquest Cuaacutendo 42333 iquest En que entorno 42

4Disentildeo y ldquoConcept Artrdquo4241 Elementos presentes en la interfaz de la aplicacioacuten4242 Flujos de interaccioacuten4343 Prototipaje44

431 Sketches44432 Transiciones definidas entre pantallas47433 Prototipo horizontal de alta fidelidad 48

4331 Pantalla inicial484332 Pantalla menuacute principal del juego484333 Pantalla de opciones494334 Pantalla de creacuteditos494335 Pantalla tabla de puntuaciones504336 Pantalla de juego READY 504337 Pantalla de juego514338 Pantalla de pausa botones RESUME y QUIT524339 Pantalla GAME OVER5243310 Pantalla de instrucciones de juego HOW TO PLAY5343311 Pantalla de instrucciones in game 53

5Implementacioacuten5551 Arquitectura global55

511 Arquitectura del framework libGDX55512 Visioacuten de los moacutedulos de libGDX55

52 Arquitectura de un videojuego56521 Programa vs Aplicacioacuten56

ii

522 Estructura baacutesica de un videojuego5653 Esquema de la estructura baacutesica de un videojuego5854 Patrones de disentildeo59

541 Introduccioacuten59542 Patrones de creacioacuten59543 Singleton59

55 Diagramas de clases definitivos6156 Diagramas nuacutecleo videojuego 6157 Diagrama de clases objetos videojuego6458 Diagrama de clases pantallas videojuego6759 Configurar el entorno de desarrollo69

591 Instalacioacuten 69510 Traspaso del disentildeo a texturas 71511 Implementacioacuten de las maacutequinas de estado 73

6Conclusiones757Recursos utilizados 75

71 Portada documento 7572 Recursos utilizados para el disentildeo del videojuego 75

721 Fotografiacutea pantalla intro videojuego y usuarios 76722 Iconos y botones76

7221 Altavoz767222 Nota Musical767223 Flecha salida767224 Icono de pausa767225 Icono interrogante (help)767226 Botones (Play Score Options)77

723 Recursos graacuteficos 2D componentes escenario777231 Ojos lobos777232 Ovejas y lobos777233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY777234 Escenario77

724 Fuentes777241 Thinckhead777242 Misfortune777243 Tabaquera777244 Press Start Font77

725 Otros78726 Audio y efectos de sonido78

7261 Menu 787262 Game Over787263 Game Play787264 Creacutedits787265 Ready787266 Pause_Resume787267 Quit787268 Sheep78

8Lineas abiertas del proyecto799Bibliografiacutea utilizada 7910Otros proyectos realizados80

101 Remake Gradius Konami80

iii

102 Tales of Nimria mini RPG80102 Motocalipsis Bar 66 RTS80

Creative Commons 40 license by-nc-sa81

Iacutendice de ilustracionesilustracioacuten 1 Ciclo de vida en cascada4ilustracioacuten 11 Calendario proyecto7ilustracioacuten 2 Diagrama de gantt8ilustracioacuten 3 Diagrama de casos de usos actor jugador11ilustracioacuten 4 Diagrama de casos de usos personaje principal19ilustracioacuten 5 Diagrama de casos de usos enemigos24ilustracioacuten 6 Diagrama de clases videojuego28ilustracioacuten 7 Diagrama de clases de pantallas30ilustracioacuten 8 Maacutequina de estados del videojuego 31ilustracioacuten 9 Maacutequina de estados comportamiento oveja 32ilustracioacuten 10 Maacutequina de estados comportamiento lobo 33ilustracioacuten 11 Maacutequina de estados tutorial in game 34ilustraciones 12 y 13 pantallas juego Sheep amp Wolf 36ilustraciones 14 y 15 pantallas juego Sheep Up 37ilustraciones 16 y 17 pantallas juego Temple run38ilustraciones 18 y 19 pantallas juego Attack of the Spooklings39ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitas41ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintas pantallas43ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada44ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada45ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada46ilustracioacuten 241 Transiciones definidas entre pantallas47ilustracioacuten 242 Disentildeo pantallas con Gimp54ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en un videojuego55ilustracioacuten 26 Estructura baacutesica de un videojuego 58ilustracioacuten 27 Singleton59ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego 63ilustracioacuten 29 Diagrama de clases Assets 64ilustracioacuten 30 Diagrama de clases objetos 66ilustracioacuten 31 Diagrama de clases pantallas 68ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse69ilustracioacuten 33 Creacioacuten proyecto libGDX70ilustracioacuten 34 Creacioacuten proyecto libGDX70ilustracioacuten 35 Capas separadas por imaacutegenes71Ilustracioacuten 36 Texture packer 72ilustracioacuten 37 Posicioacuten texturas 73

iv

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

1Introduccioacuten

11 Justificacioacuten y contexto del proyecto

Este trabajo de fin de carrera en adelante TFC se centra en el desarrollo de aplicaciones paradispositivos moacuteviles con sistema operativo Android Actualmente existen multitud de aplicacionesNo obstante este TFC se quiere centrar en un subconjunto de aplicaciones focalizadas alentretenimiento conocidas por todo el mundo como videojuegos

Un videojuego es un software creado para el entretenimiento en general y basado en lainteraccioacuten entre una o varias personas y un aparato electroacutenico que ejecuta dicho videojuego Asiacutepues un videojuego es considerado un software cuyo fin directo es el entretenimiento

En estos uacuteltimos antildeos los smartphones y tabletas se han convertido en las nuevas plataformasmoacuteviles para juegos que compiten con los sistemas portaacutetiles claacutesicos que generalmente tienden aser maacutes cerrados

Los videojuegos se pueden clasificar en distintos geacuteneros estos son una forma de clasificacioacutenque designan un conjunto de videojuegos que poseen una serie de elementos comunes A lo largode la historia de los videojuegos aquellos elementos que han compartido varios de los mismos hanservido para clasificar como un geacutenero a aquellos que les han seguido en estilo y forma de lamisma manera que ha pasado con la muacutesica o el cine Como ejemplo se enumeran algunos de losgeacuteneros maacutes populares Lucha Disparos conocidos como Shooters Sigilo Plataformas ArcadeDeporte etc

Durante mucho tiempo los videojuegos estuvieron reservados para un tipo de usuario muyconcreto con un perfil muy especiacutefico la gran mayoriacutea eran hombres entre 15 y 25 antildeos Saliendode este perfil si se buscaban mujeres o personas mayores de 25 antildeos el nuacutemero de usuarioscaiacutea en picado y es que los videojuegos eran percibidos como el hobby de los adolescentesmasculinos No obstante en los uacuteltimos antildeos se ha visto coacutemo todo esto ha ido cambiando con unaumento tanto del puacuteblico femenino como la aparicioacuten en escena de usuarios con edades maacutesavanzadas

Este cambio ha venido motivado por diferentes motivos evolutivos dentro de la industria delvideojuego Uno de los motivos que ha provocado esto es la aparicioacuten de los teleacutefonos moacutevilesinteligentes tabletas y juegos online junto con gran cantidad de videojuegos de tipo casual Otroclaro motivo es que la mayoriacutea de los que jugaacutebamos hace 25 antildeos pues hoy seguimos jugandoya que hemos crecido con esta cultura y claro esta que a diacutea de hoy ya no tenemos la edad deentonces

12 Descripcioacuten del Proyecto Este proyecto se quiere centrar en el desarrollo de un videojuego de tipo casual para moacutevilesAndroid Estos son un tipo de videojuegos dirigidos a un puacuteblico de jugadores casuales Losvideojuegos casuales pueden tener cualquier tipo de mecaacutenica de juego y ser clasificados dentrode cualquier otro geacutenero Son diferenciados por sus reglas simples y de no requerir un excesivocompromiso en contraste con la mayoriacutea de juegos maacutes complejos No requieren una dedicacioacutende tiempo a largo plazo o habilidades especiales para jugar

Paacutegina 1 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Durante la realizacioacuten del proyecto se realizara el disentildeo del juego por disentildeo se entienderealizar un documento que defina el juego de forma generalizada mecaacutenicas personajes etceste documento es conocido como el ldquogame designrdquo el disentildeo de arte conocido como ldquoConcepartrdquo engloba todo lo relacionado con el aspecto graacutefico del juego estilos de personajes estilos degraacuteficos etc Finalmente se realizara el anaacutelisis disentildeo e implementacioacuten de laaplicacioacuten(videojuego) con las tecnologiacuteas escogidas para este proyecto

13 Objetivos

El objetivo principal de este TFC es adquirir experiencia en el desarrollo de videojuegos paraAndroid Sin embargo yendo maacutes allaacute de la plataforma tambieacuten existe un intereacutes por ampliarconocimientos en cuanto a programacioacuten y disentildeo de videojuegos en general

En cuanto al disentildeo y desarrollo del videojuego se pretende realizar un casual game con lassiguientes caracteriacutesticas

El juego consistiraacute en conducir unas ovejas descarriadas a su corral eacutestas con nuestra ayudadeberaacuten sortear los peligros que iraacuten apareciendo durante el camino hacia el deseado corral Elprincipal peligro que amenaza las ovejas son unos lobos malvados que quieren comeacuterselas Elvideojuego soacutelo dispondraacute de una uacutenica modalidad de juego para un uacutenico jugador Al tratarse deun juego casual el publico objetivo es muy amplio Se pretende conseguir un ldquolook amp feelrdquo conesteacutetica tipo cartoon en clave de humor El juego sera desarrollado en 2D con perspectiva cenital

131 Definicioacuten del videojuego

El nivel se describe como una pantalla estaacutetica con vista cenital en posicioacuten vertical Con estaacuteticase entiende que no hay ninguacuten tipo de scroll que haga desplazar la pantalla Siempre veremos lomismo

En la parte de arriba del todo apareceraacute un corral con una puerta la puerta se iraacute abriendo ycerrando de forma aleatoria Por los extremos de la pantalla habraacute arbustos que representaran loslimites del bosque De estos limites iraacuten saliendo lobos a la escena que se querraacuten comer a laspobres ovejas Estas ovejas permaneceraacuten en la parte de abajo de la pantalla e iraacuten saliendo a laescena ellas solas sin saber demasiado donde van(son ovejas descarriadas) nuestra misioacutenconsistiraacute en tirarlas hacia el corral para salvarlas de los malvados lobos metiendolas por lapuerta en los momentos que este abierta para lanzarlas tendremos que deslizar el dedo encimade ellas para darles impulso hacia el corral si no acertamos en meter la oveja en la puerta estarebotara como si de un pelota se tratase Los lobos iraacuten saliendo para sacarnos los lobos deencima deberemos deslizar nuestro dedo encima de ellos o tocarlos para ahuyentarlos De lobos habraacute de diferentes colores marrones grises y azulados Cada lobo loahuyentaremos de manera distinta

bull Marrones 1 pulsacioacuten o deslizar 1 vez el dedo sobre el lobobull Grises 2 pulsaciones o deslizar 2 veces el dedo sobre el lobobull Azulados 3 pulsaciones o deslizar 3 veces el dedo sobre el lobo

A parte de impedir que se coman las ovejas que estaacuten en camino hacia el corral tambieacutentendremos que evitar que los lobos lleguen a la parte de abajo donde estaacute el grupo de ovejas yaque esto nos haraacute perder vidas el juego inicialmente empezara con 3 vidas pudiendo alcanzar unmaacuteximo de 6 vidas en total cada 10000 puntos obtendremos un vida extra

Paacutegina 2 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Conforme el juego se va desarrollando eacuteste iraacute acumulando

bull Puntosbull Tiempo jugadobull Numero de lobos ahuyentadosbull Ovejas colocadas en el corral

Se tratara pues de ir mejorando nuestro propio reacutecord partida tras partida El juego iraacuteaumentando de dificultad durante el transcurso de la partida

Como apunte final el juego recibe el nombre de ldquoFling the sheeprdquo que traducido al espantildeolvendriacutea a ser algo como ldquolanzar las ovejasrdquo

Paacutegina 3 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

14 Planificacioacuten

141 Ciclo de vida

Un videojuego no deja de ser un proyecto de software por tanto para la realizacioacuten de esteproyecto se ha tomado como base el ciclo de vida claacutesico de cualquier proyecto de softwaremodificado ligeramente a las necesidades del proyecto Este ciclo de vida que tambieacuten sedenomina ciclo de vida en cascada se compone de las siguientes etapas

ilustracioacuten 1 Ciclo de vida en cascada

142 Planificacioacuten detallada del proyecto

En los siguientes apartados se recogen por cada etapa que compone el ciclo de vida las principales actividades realizadas con el objetivo de alcanzar el producto deseado dentro delos plazos definidos

1411 Anaacutelisis previo planificacioacuten

En este punto se ha abordado la visioacuten global del proyecto comprendida en establecer lospuntos iniciales necesarios para crear una planificacioacuten de tareas en funcioacuten de las actividades arealizar

Actividad Descripcioacuten

Disentildeo conceptual del videojuego Mecaacutenicas del videojuego

Definicioacuten de las tecnologiacuteas Tecnologiacuteas que se utilizaran en el desarrollo delvideojuego

Anaacutelisis de riesgos Posibles riesgos del proyecto

Planificacioacuten del proyecto Crear una planificacioacuten adaptada a los plazos de entregade este TFC

Paacutegina 4 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Redaccioacuten del documento Generacioacuten del plan de trabajo

Entrega de la PEC1 Entrega del documento

1412 Anaacutelisis de requisitos

En esta fase se ha detallado que necesidades debe cubrir el videojuego tanto desde un puntode vista funcional como desde un punto de vista arquitectoacutenico de la aplicacioacuten a disentildear se hadisentildeado un modelo troncal de clases para posteriormente desarrollar en base a estas todo elvideojuego No obstante en ninguacuten caso se ha entrado en detalle en las tecnologiacuteas a utilizar yadefinidas previamente

Actividad Descripcioacuten

Especificacioacuten de requisitos funcionales Definicioacuten de casos de usos

Disentildeo baacutesico estructura aplicacioacuten Diagrama baacutesico de clases

Especificacioacuten de requisitos funcionales Definicioacuten de maacutequinas de estado

1413 Disentildeo

En este apartado teniendo en cuenta que en este proyecto se va a desarrollar un videojuego seha realizado la recopilacioacuten conceptual de arte conjuntamente con el disentildeo de todas laspantallas que intervienen en el Conjuntamente con la seleccioacuten de los tipos de fuente que seutilizaran para el videojuego seleccioacuten de personajes y enemigos

Actividad Descripcioacuten

Definicioacuten de usuarios y contexto de uso delvideojuego

Conocer las caracteriacutesticas de los usuarios susnecesidades y objetivos asiacute como los contextosde uso

Disentildeo conceptual Un escenario de uso describe desde el puntode vista del usuario como seraacute utilizado unproducto determinado (es este caso unvideojuego) en un escenario determinado

Seleccioacuten de arte Seleccioacuten de arte ya hecho con licencias libresya que no se disponen de conocimientos dearte para abordar el disentildeo

Seleccioacuten de fuentes Seleccioacuten de los tipos de fuente adecuadospara el disentildeo del videojuego

Seleccioacuten de personajes y enemigos Seleccioacuten de personajes y enemigosdisponibles en la red con licencias libres ya queno se disponen de conocimientos de arte paraabordar el disentildeo

Disentildeo de pantallas que intervienen(prototipo) Con todo el arte fuentes y personajes serealizara el disentildeo de todas las pantallas queintervienen en el juego Realizacioacuten de unboceto a mano alzada Sketches y prototipo dealta fidelidad

Redaccioacuten del documento Generacioacuten del documento de disentildeo

Paacutegina 5 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Entrega de la PEC2 Entrega del documento

1414 Implementacioacuten y pruebas

En este punto se ha desarrollado la implementacioacuten del videojuego partiendo de todas lasdefiniciones de los apartados anteriores y las verificaciones oportunas para asegurar el correctofuncionamiento del videojuego

Actividad Descripcioacuten

Implementacioacuten de navegables y contenidos Implementacioacuten de la estructura de todas lapantallas del video juego y la navegabilidadentre ellas y las funciones principales de cadauna de ellas

Implementacioacuten del gameplay Implementacioacuten de la logica de juego

Implementacioacuten de sonido y efectos Implementacioacuten de los efectos de sonido y lamusica

Version alpha del videojuego En este punto se dispone de un videojuegofuncional listo para ser revisado y refinado

Pruebas y refinamiento de la implementacioacuten Pruebas y correcioacutenes de posibles errores

Preparacioacuten del paquete entregable y laredaccioacuten del documento

Testeo final y preparacioacuten del apk a entregarmas la redaccioacuten del documento estrutural delaplicacioacuten

Entrega de la PEC3 Entrega del documento

1415 Finalizacioacuten

En un proyecto de software esta parte quedariacutea focalizada en la fase de implantacioacuten y puesta enmarcha Sin embargo al tratarse de un videojuego esta fase quedariacutea focalizada en la fase delanzamiento del producto No obstante en este caso se ha utilizado para documentar todo eltrabajo realizado a lo largo de este TFC

Actividad Descripcioacuten

Redaccioacuten memoria final proyecto Redaccioacuten memoria final

Montaje presentacioacuten diapositivas Montaje presentacioacuten diapositivas

Montaje del video final presentacioacuten proyecto Montaje del video final presentacioacuten proyecto

Entrega final Entega final

Paacutegina 6 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria143 Temporalizacioacuten del proyecto

La siguiente ilustracioacuten muestra el calendario definido para el proyecto

ilustracioacuten 11 Calendario proyecto

Paacutegina 7 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

En la siguiente pagina se muestra una ilustracioacuten del diagrama de gantt correspondiente alcalendario mostrado en la ilustracioacuten 1

ilustracioacuten 2 Diagrama de gantt

Paacutegina 8 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

15 Herramientas y tecnologiacuteas utilizadas

Actualmente existen varios frameworks para desarrollar videojuegos sobre plataformas moacutevilesSe ha hecho un anaacutelisis comparativo preliminar entre Cocos2D-android1 Cocos2D-x y libGDXaunque existen otros estos tres son los maacutes nombrados y utilizados

Cocos2d-android1 Es un framework en Java basado en la versioacuten de cocos2d-android queesta basado en la versioacuten de cocos2d para iphone Este framework permite el desarrollo devideojuegos en 2D y se programa en Java en lugar de objective-c Para la versioacuten Cocos2d deiphone Actualmente este framework no parece tener mucha continuidad por parte de lacomunidad de desarrolladores aunque no estaacute discontinuado del todo

Cocos2D-x Es un framework en C++ multi-plataforma permite desarrollar para diferentesplataformas a la vez con el mismo coacutedigo Android iOS Bada Marmalade Windows Linux etcSin embargo aunque es un framework con una comunidad muy activa su documentacioacuten esbastante mejorable Se programa en C++ y es posible trabajar con distintos entornos de desarrollocomo Visual Studio o Eclipse El proceso de depuracioacuten con eclipse es algo complejo con C++JNIcon varios pasos a seguir para poder depurar A la vez su configuracioacuten en el entorno Eclipse noes trivial Finalmente tiene relativamente todaviacutea poco tiempo de vida

LibGDX Es un framework escrito en Java sobre C++ ya que las partes criacuteticas estaacuten escritascon coacutedigo nativo para conseguir el mejor rendimiento posible Tiene una comunidad dedesarrolladores muy activa y una documentacioacuten muy extensa Se programa con Java y permite ladepuracioacuten ejecutando la aplicacioacuten en el escritorio de la maacutequina sin tener que pasar por undispositivo real o uno virtual En caso de que se quiera probar en un dispositivo real es posiblehacerlo sin ninguacuten cambio sobre el coacutedigo Este hecho hace que el desarrollo sea maacutes fluidoTiene un rendimiento bastante alto ante cocos2d-x y otros frameworks existentes para eldesarrollo de videojuegos

Todo lo expuesto anteriormente provoca una inclinacioacuten definitiva a utilizar libGDX paraimplementar el videojuego Asiacute pues el videojuego seraacute escrito en Java utilizando el IDE Eclipseque es el soportado oficialmente para Android utilizando el framework libGDX

Para la realizacioacuten de este proyecto se han utilizado las siguientes herramientas

bull Planificacioacuten proyecto

Microsoft Project Professional 2010

bull Disentildeo

Gimp 28 Inkscape 048 TexturePacker 320 Microsoft Visio Professional 2010

bull Programacioacuten

Entorno de desarrollo Eclipse 421 Juno Android develompment tools ADT Android SDK

Paacutegina 9 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Framework libGDX 098 ObjectAid herramienta de visualizacioacuten de coacutedigo en UML para Eclipse Control de versiones Git utilizando como plataforma GitHub

bull Edicioacuten de audio

Audacity 203 GoldWave 569

bull Redaccioacuten de documentos

OpenOffice 401

bull Edicioacuten de viacutedeo

Adobe Premiere Pro CS55

16 Riesgos del proyecto

Se parte de una experiencia previa en desarrollo de videojuegos ver apartado 9 otros proyectosrealizados al final de este documento Aunque no se dispone de experiencia con la libreriacuteaescogida ni tampoco con programacioacuten sobre Android A nivel teacutecnico no se preveacute que puedansurgir muchos riesgos en liacuteneas generales No obstante existe la posibilidad de gastar maacutestiempo del previsto consultando documentacioacuten para lograr los objetivos establecidos

Existe un riesgo maacutes alto a nivel artiacutestico ya que no se dispone de ninguacuten conocimiento de artede ninguacuten tipo Por lo tanto muy probablemente a nivel artiacutestico el juego sea un poco justo Es poreste motivo que durante la realizacioacuten de este proyecto no se va a profundizar en temas de disentildeoartiacutestico en su lugar se utilizaran recursos de arte existentes en la red con licencias libres tipocreative commons o dominio puacuteblico Al final de este documento en el apartado 6 se puede ver unlistado de los recursos utilizados juntamente con un link a la obra y el nombre del autor si esteesta disponible Se haraacute una seleccioacuten de distintos tipos de recursos graacuteficos para posteriormentehacer el montaje de toda la parte graacutefica del videojuego En cuanto a la parte de audio la situacioacuten es exactamente la misma no se dispone de ninguacutenconocimiento para componer muacutesica ni efectos Por lo tanto se buscaraacuten sonidos y temasmusicales con licencias libres Intentando que estos queden integrados de la mejor maneraposible al videojuego

Finalmente existe el riesgo de que el gameplay definido en el disentildeo conceptual del videojuegouna vez puesto en praacutectica no sea del todo funcional o necesite de un balanceo para conseguirun juego equilibrado y jugable

Paacutegina 10 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2 Anaacutelisis funcional Basaacutendonos en el aparatado ldquo131 Definicioacuten del videojuegordquo se han definido los requisitosfuncionales necesarios para este con la definicioacuten de casos de uso Posteriormente se ha definidoun diagrama de clases inicial el cual ha servido como punto de partida para el desarrollo completodel videojuego A su vez se definen las maacutequinas de estado finitas utilizadas para el desarrollo

21 Requisitos funcionales casos de uso

En este apartado se presentan tres diagramas de casos de uso El primer diagrama engloba lavista generalizada del actor ldquojugadorrdquo y los casos de uso que describen los requisitos funcionalesdel sistema En los dos diagramas restantes se describen la vista generalizada del actor ldquoIArdquo porIA se entiende la inteligencia artificial del videojuego Los diagramas muestran los requisitosfuncionales de la IA para el personaje principal y los enemigos La IA interactuacutea con el sistema ypor tanto seraacute susceptible de analizar su uso de la aplicacioacuten

211 Diagrama casos de uso actor ldquoJugadorrdquo

ilustracioacuten 3 Diagrama de casos de usos actor jugador

Paacutegina 11 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Como se puede observar en la ilustracioacuten 3 el sistema solo dispone de un uacutenico actor Que eneste caso es el jugador del videojuego es decir representa todos los posibles usuarios quepueden jugar al videojuego

En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 3estos seraacuten desarrollados en la seccioacuten posterior

212 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

VJ01 Inicio videojuego Jugador

VJ02 Jugar Jugador

VJ03 Acceder puntuaciones maacuteximas Jugador

VJ31 Consultar puntuacione locales Jugador

VJ32 Salir puntuacione locales Jugador

VJ04 Acceder a las opciones Jugador

VJ41 Activar o desactivar muacutesica o efectos Jugador

VJ42 Acceder a la pantalla de creacuteditos Jugador

VJ421 Salir de la pantalla de creacuteditos Jugador

VJ43 Salir de las opciones Jugador

VJ05 Acceder a las instrucciones Jugador

VJ51 Salir de las intrucciones Jugador

VJ06 Salir del videojuego Jugador

213 Descripcioacuten textual de los casos de uso

2131 VJ01 Inicio videojuego

Identificador VJ01

Nombre Inicio videojuego

Autor Xavier Figuera

Resumen El usuario inicia el videojuego

Actor(es) Jugador

Precondiciones Ninguna el videojuego no habiacutea sido iniciado auacuten

Postcondiciones El usuario a iniciado el videojuego a visualizado la pantalla de introdurante un segundo y se encuentra en la pantalla del menuacute principal

Flujo normal 1 El usuario accede a la lista de aplicaciones de su dispositivo 2 Busca el acceso al videojuego3 Ejecuta el programa4 Se carga la aplicacioacuten5 El videojuego muestra la pantalla de intro

Paacutegina 12 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6 Se muestra el menuacute principal al jugador

Flujos alternativos Se podriacutea dar el caso que el usuario accediera al videojuego desde algunacceso directo en alguno de los escritorios del dispositivo

Inclusiones Ninguna

Extensiones Ninguna

2132 VJ02 Jugar

Identificador VJ02

Nombre Jugar

Autor Xavier Figuera

Resumen Jugar al videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario empieza a jugar

Flujo normal 1 El usuario pulsa el botoacuten play del menuacute principal 2 El usuario juega3 El usuario puede volver a jugar una vez finalizada la partida 4 El usuario puede salir del juego en cualquier momento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2133 VJ03 Acceder puntuaciones maacuteximas locales

Identificador VJ03

Nombre Acceder puntuaciones maacuteximas locales

Autor Xavier Figuera

Resumen Acceder a la pantalla de puntuaciones maacuteximas locales de las partidasrealizadas en el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla con la tabla de las 10 puntuacionesmaacuteximas

Flujo normal 1 El usuario pulsa el botoacuten Scores del menuacute principal 2 Al usuario le aparece la pantalla de puntuacioacuten

Paacutegina 13 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ31 Consultar puntuaciones localesVJ32 Salir de la puntuaciones locales

2134 VJ31 Consultar puntuaciones locales

Identificador VJ31

Nombre Consultar puntuaciones locales

Autor Xavier Figuera

Resumen Consulta de las puntuaciones maacuteximas locales de las partidas realizadasen el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Scores delmenuacute principal

Postcondiciones El usuario visualiza la tabla de las 10 puntuaciones maacuteximas

Flujo normal 1 El usuario visualiza una tabla con las 10 puntuaciones maacuteximas

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2135 VJ32 Salir puntuaciones locales

Identificador VJ32

Nombre Salir puntuaciones locales

Autor Xavier Figuera

Resumen Salir de las puntuaciones maacuteximas locales

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulso el botoacuten Scores

Postcondiciones El usuario sale de la tabla de puntuaciones

Flujo normal 1 El usuario pulsa el botoacuten salir en la pantalla tabla de puntuaciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 14 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2136 VJ04 Acceder a las opciones

Identificador VJ04

Nombre Acceder a la pantalla de opciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de opciones del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla de opciones

Flujo normal 1 El usuario pulsa el botoacuten Options del menuacute principal 2 Al usuario le aparece la pantalla de opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ41 Activar o desactivar muacutesica o efectos VJ42 Acceder a la pantalla de creacuteditosVJ43 Salir de las opciones

2137 VJ41 Activar o desactivar muacutesica o efectos

Identificador VJ041

Nombre Activar o desactivar muacutesica o efectos

Autor Xavier Figuera

Resumen Activar o desactivar muacutesica o efectos de audio del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal

Postcondiciones El usuario activa o desactiva la muacutesica o efectos del videojuego

Flujo normal 1 El usuario pulsa el botoacuten altavoz para activar o desactivar la muacutesica delvideojuego 2 El usuario pulsa el botoacuten notas musicales para activar o desactivar losefectos de audio del videojuego

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 15 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2138 VJ42 Acceder a la pantalla de creacuteditos

Identificador VJ42

Nombre Acceder a la pantalla de creacuteditos

Autor Xavier Figuera

Resumen Acceder a la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario se encuentra en la pantalla de opciones

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten credits para acceder a los creacuteditos2 El usuario puede desplazar el texto de los creacuteditos deslizando el dedosobre el texto hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ421 Salir de la pantalla de creacuteditos

2139 VJ421 Salir de la pantalla de creacuteditos

Identificador VJ421

Nombre Salir de la pantalla de creditos

Autor Xavier Figuera

Resumen Salir de la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal y ha accedido a la pantalla creacuteditos

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten salir para abandonar la pantalla para accedera los creacuteditos2 El usuario se encuentra de nuevo en la pantalla opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 16 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21310 VJ05 Acceder a las instrucciones

Identificador VJ05

Nombre Acceder a la pantalla de instrucciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten del menuacuteprincipal

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a las instrucciones2 El usuario puede desplazar el texto de las instrucciones deslizando eldedo sobre el hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ51 Salir de las instrucciones

21311 VJ51 Salir de las instrucciones

Identificador VJ51

Nombre Salir de las intrucciones

Autor Xavier Figuera

Resumen Salir de la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten en el menuacuteprincipal y ha accedido a la pantalla de instrucciones

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a la pantalla de instrucciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 17 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21312 VJ06 Salir del videojuego

Identificador VJ06

Nombre Salir del videojuego

Autor Xavier Figuera

Resumen Salir del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego

Postcondiciones El usuario abandona el videojuego

Flujo normal 1 El usuario pulsa el botoacuten exit de la aplicacioacuten para salir del videojuego oel botoacuten salir del dispositivo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 18 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214 Diagrama casos de uso actor ldquoIArdquo

Por IA se entiende inteligencia artificial es un elemento fundamental para dotar de realismo a unvideojuego Uno de los retos principales que se plantean a la hora de integrar comportamientosinteligentes es alcanzar un equilibrio entre la sensacioacuten de inteligencia y el tiempo de coacutemputoempleado por este subsistema Este equilibrio es de gran importancia en el caso de losvideojuegos Este planteamiento gira generalmente en torno a la generacioacuten de soluciones quesin ser oacuteptimas proporcionen una cierta sensacioacuten de inteligencia En concreto dichas solucionesdeberiacutean tener como meta que el jugador se enfrente a un reto que sea factible de manera quesuponga un estiacutemulo emocional y que consiga engancharlo al videojuego

En estos uacuteltimos antildeos la IA ha pasado de ser un componente secundario en el proceso dedesarrollo de videojuegos a convertirse en uno de los aspectos maacutes importantes Actualmentelograr un alto nivel de IA en un juego sigue siendo uno de los retos maacutes emocionantes y complejosy en ocasiones sirve para diferenciar un juego normal de uno realmente espectacular

Dentro de este proyecto de ha definido una IA baacutesica para dotar del realismo necesario alvideojuego propuesto En los siguientes diagramas se define esta IA en forma de casos de usospara su posterior implementacioacuten

2141 Diagrama casos de uso IA personaje principal (oveja)

ilustracioacuten 4 Diagrama de casos de usos personaje principal

Paacutegina 19 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 4estos seraacuten desarrollados en la seccioacuten posterior

21411 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA03 Salida oveja al escenario IA

IA031 Posicionamiento en pantalla de la oveja IA

IA032 Movimiento oveja IA

IA033 Oveja pastando IA

IA034 Lanzamiento oveja IA

IA035 Rebotes de la oveja IA

IA036 La oveja entra en el establo IA

IA037 Parar oveja IA

21412 Descripcioacuten textual de los casos de uso

214121 IA03 Salida ovejas al escenario

Identificador IA03

Nombre Salida oveja al escenario

Autor Xavier Figuera

Resumen Salida oveja al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones La oveja es instanciada de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Las ovejas se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA031 Posicionamiento en pantalla de las oveja

214122 IA031 Posicionamiento en pantalla de las oveja

Identificador IA031

Nombre Posicionamiento en pantalla de las oveja

Paacutegina 20 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Autor Xavier Figuera

Resumen Asignacioacuten inicial posicioacuten de las ovejas en pantalla siempre es la mismaposicioacuten esta queda fuera del rango visual de la pantalla

Actor(es) IA

Precondiciones La partida esta iniciada y la oveja instanciada

Postcondiciones La oveja queda posicionada en unas coordenadas fuera de la pantalla

Flujo normal 1 Se instancia la oveja2 La oveja queda posicionada en unas coordenadas uacutenicas fuera delrango visual de pantalla

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214123 IA032 Movimiento oveja

Identificador IA032

Nombre Movimiento oveja

Autor Xavier Figuera

Resumen Movimiento de las ovejas hacia el escenario

Actor(es) IA

Precondiciones La partida esta iniciada la oveja instanciada y posicionada

Postcondiciones La oveja se mueve hacia el escenario empieza a pastar

Flujo normal 1 La oveja se mueve hacia el escenario

Flujos alternativos Ninguno

Inclusiones IA034

Extensiones IA033 Oveja PastandoIA037 Parar oveja

214124 IA033 Oveja pastando

Identificador IA033

Nombre Oveja pastando

Autor Xavier Figuera

Resumen La ovejas permanecen en un espacio determinado de coordenadas depantalla mientras no sean lanzadas al escenario por el usuario

Actor(es) IA

Paacutegina 21 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Precondiciones La oveja ha salido al escenario

Postcondiciones La oveja se mueve dentro de un espacio determinado de forma indefinida

Flujo normal 1 La oveja se mueve de forma indefinida hasta que sea lanzada por elusuario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA034 Lanzamiento oveja

214125 IA034 Lanzamiento oveja

Identificador IA034

Nombre Lanzamiento oveja

Autor Xavier Figuera

Resumen La oveja es lanzada por el usuario y se acelera en funcioacuten de la fuerza delanzamiento

Actor(es) IA

Precondiciones La oveja se mueve

Postcondiciones La oveja ha sido lanzada

Flujo normal 1 La oveja se mueve de forma indefinida2 La oveja es lanzada3 La oveja acelera en funcioacuten de la fuerza de lanzamiento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214126 IA035 Rebotes de la oveja

Identificador IA035

Nombre Rebotes de la oveja

Autor Xavier Figuera

Resumen La oveja ha sido lanzada y rebota por el escenario

Actor(es) IA

Precondiciones La oveja ha sido lanzada

Postcondiciones La oveja rebota por el escenario

Flujo normal 1 La oveja ha sido lanzada y rebota por el escenario 2 La oveja entra en el establo si colisiona con la puerta y esta abierta

Paacutegina 22 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA036 La oveja entra en el establo

214127 IA036 La oveja entra en el establo

Identificador IA036

Nombre La oveja entra en el establo

Autor Xavier Figuera

Resumen La oveja entra en el establo

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario y la puerta del establo estaabierta

Postcondiciones La oveja entra en el establo

Flujo normal 1 La oveja entra en el establo si colisiona con la puerta y esta abierta

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214128 IA037 Parar oveja

Identificador IA037

Nombre Parar oveja

Autor Xavier Figuera

Resumen La oveja para si se hacen dos pulsaciones encima de ella

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario

Postcondiciones La oveja se para

Flujo normal 1 La oveja esta rebotando2 El usuario pulsa dos veces encima de ella3 La oveja se para

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 23 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2142 Diagrama casos de uso IA enemigos (lobo)

ilustracioacuten 5 Diagrama de casos de usos enemigos

21421 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA02 Salida lobo al escenario IA

IA021 Ojos por la derecha o por la izquierda IA

IA022 Escoje el tipo de lobo IA

IA023 Lobo por la derecha o por la izquierda IA

IA024 Salta a escena IA

IA025 Movimento lobo IA

Paacutegina 24 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21422 Descripcioacuten textual de los casos de uso

214221 IA02 Salida lobo al escenario

Identificador IA02

Nombre Salida lobo al escenario

Autor Xavier Figuera

Resumen Salida lobo al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones El lobo es instanciado de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Los lobos se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA02 IA021 IA022 IA023 IA024

214222 IA021 Ojos por la derecha o por la izquierda

Identificador IA021

Nombre Ojos por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Salida de ojos al escenario paso previo a que salte el lobo

Actor(es) IA

Precondiciones El lobo ha sido instanciado

Postcondiciones Aparecen unos ojos que se cierra y se abren por la derecha o izquierda dela pantalla de forma aleatoria

Flujo normal 1 El lobo ha sido instanciado2 Aparecen unos ojos que se cierran y se abren 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 25 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214223 IA022 Escoge el tipo de lobo

Identificador IA022

Nombre Escoge el tipo de lobo

Autor Xavier Figuera

Resumen Escoge el tipo de lobo de forma aleatoria de los tres definidos

Actor(es) IA

Precondiciones Han aparecido los ojos

Postcondiciones Ha escogido el tipo de lobo que saltara al escenario

Flujo normal 1 Han aparecido los ojos2 Ha escogido el tipo de lobo que saltara al escenario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214224 IA023 Lobo por la derecha o por la izquierda

Identificador IA023

Nombre Lobo por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Escoge de forma aleatoria el lado por donde debe aparecer el lobo

Actor(es) IA

Precondiciones Se ha seleccionado el tipo de lobo

Postcondiciones Se ha escogido el lado por donde apareceraacute

Flujo normal 1 Se ha escogido el lado por donde apareceraacute

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 26 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214225 IA024 Salta a escena

Identificador IA024

Nombre Salta a escena

Autor Xavier Figuera

Resumen El lobo salta a escena

Actor(es) IA

Precondiciones Se ha seleccionado el lado por donde debe aparecer y salta

Postcondiciones El lobo esta en escena

Flujo normal 1 Se ha seleccionado el lado por donde debe aparecer y salta2 El lobo esta en escena

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones A025

214226 IA025 Movimiento lobo

Identificador IA025

Nombre Movimiento lobo

Autor Xavier Figuera

Resumen El lobo esta en escena y se mueve

Actor(es) IA

Precondiciones El lobo ha saltado a la escena

Postcondiciones El lobo se mueve

Flujo normal 1 El lobo ha saltado a la escena2 El lobo se mueve

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 27 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

22 Disentildeo inicial diagrama de clases

221 Diagrama de clases inicial ldquoFling the sheeprdquo

ilustracioacuten 6 Diagrama de clases videojuego

En este apartado se define la estructura inicial de la aplicacioacuten a traveacutes del diagrama de clasesmostrado en la ilustracioacuten 6 Esto serviraacute como punto de partida para el completo disentildeo de laaplicacioacuten para su posterior implementacioacuten A continuacioacuten se pasan a detallar a modo resumidoque funcionalidad tiene cada una de las clases definidas en este diagrama

2211 Resumen clases videojuego

FlingTheSheepMain Clase principal desde donde se inicializaraacute la aplicacioacuten

Assets Esta clase contendraacute todos los recursos necesarios del juego texturas sonidos etcEstos seraacuten inicializados en el momento de iniciar el juego Existe una dependencia entre la claseFlingTheSheepMain y Assets ya que la instanciacioacuten de Assets esta condicionada por lainstanciacioacuten de la clase principal FlingTheSheepMain cuando se pone en marcha el videojuego

Paacutegina 28 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaWorldGameController Esta clase contendraacute la loacutegica del videojuego

AudioManager Clase destinada para controlar la reproduccioacuten de efectos de sonido y audio delvideojuego

Charcater Es la superclase que describe los comportamientos comunes de los personajes deella se extienden los personajes principales y los enemigos

Sheep Clase que representa el personaje principal

Wolf Clase que representa a los enemigos

AbstractGameObject Esta superclase recoge todos los comportamientos comunes de losobjetos del juego por objetos se entiende todos los componentes que forman el escenario delvideojuego De esta clase se extienden todos los objetos del videojuego

Grass Hierba que apareceraacute en el escenario

Flower Flores que apareceraacuten en el escenario

ThePen Establo donde hay que hacer llegar las ovejas

DoorPen Puerta del establo esta se abriraacute y se cerrara aleatoriamente

Hole Agujeros en el escenario

WoodFenceForest Valla de madera que apareceraacute en el escenario

Como se ha comentado este diagrama de clases es un diagrama inicial por tanto lo maacutesprobable es que durante el desarrollo del videojuego se antildeadan maacutes clases al disentildeo inicialmostrado en la ilustracioacuten 6 En el apartado 55 de este documento se muestran los diagramas declases definitivos

Paacutegina 29 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria222 Diagrama de clases inicial de pantallas

ilustracioacuten 7 Diagrama de clases de pantallas

Este diagrama recoge en forma de clases las pantallas iniciales definidas del videojuego Separte de una superclase llamada AbstractGameScreen que recogeraacute las operaciones comunes detodas ellas y de esta se extienden las pantallas concretas este diagrama solo muestra laspantallas maacutes baacutesicas definidas inicialmente estas serviraacuten como base para desarrollar elconjunto de pantallas total necesarias para este proyecto y que quedan recogidas en su totalidaden el apartado 4 ldquoDisentildeordquo de esta documento

A continuacioacuten se pasan a detallar a modo resumido cada una de ellas

2221 Resumen clases pantallas

IntroScreen Clase para la pantalla de intro

MenuScreen Clase que contiene el menuacute principal del videojuego GameScreen La clase game screen es la que contiene la pantalla donde se desarrolla todo elvideojuego

Paacutegina 30 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

23 Definicioacuten de maacutequinas de estado finitas

Como ya se ha introducido en el punto 212 la IA aplicada a los videojuegos dota a estos derealismo Existen distintas teacutecnicas para la implementacioacuten de esta Una de las maacutes consolidadases el uso de maacutequinas de estados finitas ya que tienen un coste computacional casi inexistenteya que no tienen ninguacuten coste de procesamiento asignado Las maacutequinas de estados permiten deforma faacutecil definir comportamientos Es por este motivo que han sido utilizadas no solamente para definir los comportamientos de laIA del videojuego sino tambieacuten para definir los distintos estados en que se puede encontrar elvideojuego durante su tiempo de vida A continuacioacuten se detallan los distintos diagramas de lasmaacutequinas de estados utilizadas para este proyecto conjuntamente con una explicacioacuten de cadauna de ellas

231 Maacutequina de estados del videojuego

ilustracioacuten 8 Maacutequina de estados del videojuego

La ilustracioacuten 8 nos muestra los estados que puede tomar el videojuego durante su tiempo devida

Este diagrama define los estados que puede tomar el videojuego una vez iniciado inicialmente eljuego se encuentra en el estado READY de este estado existe una transicioacuten al estado GAMEcuando el tiempo de READY finaliza READY lt=0 El estado game sera el estado en donde se

Paacutegina 31 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriadesarrollara todo el juego Des de este estado podemos pasar al estado PAUSE si pulsamos elbotoacuten de pausa del juego y desde el estado PUASE volvemos al estado GAME si volvemos apulsar el botoacuten pause Finalmente desde el estado GAME haremos la transicioacuten al estado GAMEOVER si nos arrebatan todas las vidas durante la partida Desde el estado GAME OVERpodremos volver a READY si decidimos hacer una nueva partida

232 Maacutequina de estados comportamiento oveja

ilustracioacuten 9 Maacutequina de estados comportamiento oveja La ilustracioacuten 9 muestra el comportamiento del personaje principal del videojuego que en estecaso es la oveja Se define el ciclo de vida de la oveja a traveacutes de sus comportamientos

APPEAR SHEEP La oveja aparece fuera del rango visual de la pantalla y empieza a moversepara que suceda la transicioacuten hacia el siguiente estado FOREST START la coordenada x debeser menor que 220

FOREST START La oveja seguiraacute movieacutendose en un espacio determinado de la pantalla hastaque sea lanzada en unas determinadas direcciones la direccioacuten queda determinada por lasvariables velocityX velocityY estas tomaran valores positivos o negativos determinando ladireccioacuten de lanzamiento esto queda reflejado en la condicioacuten de transicioacuten del estado FORESTSTART a FOREST DEEP Si realizamos el lanzamiento en esas determinadas direccionesharemos la transicioacuten al un nuevo estado FOREST DEEP

FOREST DEEP La oveja rebota por el escenario si colisiona con la puerta del corral y estaabierta hacemos la transicioacuten al estado ON THE PEN

Paacutegina 32 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ON THE PEN Finaliza el ciclo de vida de la oveja dentro del juego esta es devuelta al corral seincrementan puntos en el marcador de puntuacioacuten y se incrementa una unidad en el contador deovejas salvadas

233 Maacutequina de estados comportamiento lobo

ilustracioacuten 10 Maacutequina de estados comportamiento lobo La ilustracioacuten 10 muestra el comportamiento de los enemigos del videojuego que en este casoson los lobos Se define el ciclo de vida del lobo a traveacutes de sus comportamientos

APPEAR EYES Antes de aparecer los lobos a escena apareceraacuten sus ojos entre los matorralesdel bosque Cuando acaba el tiempo pasa al siguiente estado tiempo ojos lt= 0

APPEAR WOLF En este estado se seleccionara el tipo de lobo (habraacute 3 tipos distintos) el ladode la pantalla por donde apareceraacute posicioacuten y velocidad de salto como tambieacuten el tiempo ensegundos que tardara a saltar al escenario Una vez seleccionados todos estos paraacutemetros haraacutela transicioacuten al estado WHEN JUMP

WHEN JUMP Este estado simplemente esperara que pase el tiempo para que el lobo salte alescenario Un vez pase el tiempo el lobo apareceraacute en el escenario pasando a la transicioacuten JUMPON SCENE

JUMP ON SCENE En este estado se efectuara el salto a escena del lobo este saltara desde los

Paacutegina 33 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriamatorrales laterales de la pantallahacia el escenario dibujando un arco convexo Para realizar elsalto nos apoyaremos en la representacioacuten del calculo de la funcioacuten trigonomeacutetrica cosenosolamente en sus valores positivos por tanto cuando cosy lt 0 haremos la transicioacuten al estadoMOVE ya que el salto habraacute finalizado

MOVE En este estado los lobos se moveraacuten y podraacuten ser ahuyentados pulsando repetidas vecesencima de ellos las veces a pulsar queda sujeta al tipo de lobo que sea Des de este estadopodremos hacer a dos estado distintos dependiendo de lo que suceda Si conseguimos ahuyentaral lobo pasaremos al estado WOLF SCARED Si por el contrario el lobo atrapa a la ovejaharemos la transicioacuten al estado SHEEP TRAPPED en ambos estados finalizara el ciclo de vidadel lobo

WOLF SCARED Se habraacute ahuyentado el lobo se incrementa en uno el contador de lobosahuyentados y se suman puntos a la puntuacioacuten total En este estado finaliza el ciclo de vida dellobo

SHEEP TRAPPED El lobo habraacute atrapado una oveja se nos restara una vida En este estadofinaliza el ciclo de vida del lobo

234 Maacutequina de estados tutorial in game

ilustracioacuten 11 Maacutequina de estados tutorial in game La ilustracioacuten 11 muestra los distintos estados que toma el mini tutorial in game que apareceraacute laprimera vez que se juega En este las transiciones entre estados suceden de forma automaacutetica

Paacutegina 34 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriacada 5 segundos desde que se ha activado el primer estado Cada estado corresponderaacute a unacaja de texto mostrada en pantalla

3 Disentildeo

31 Estudio comparativo

Un estudio realizado en 2011 por la empresa Newzoo httpwwwnewzoocom empresainternacional dedicada a los estudios de mercado y enfocada por completo a la industria de losvideojuegos Ha realizado la primera encuesta a jugadores espantildeoles y una de las cosas que dicees La suma del volumen de negocio de juegos online (redes sociales juegos casualesjuegos para moacuteviles juegos MMO) superaraacute al del consumo en juegos para consolas en2011 Se puede ver un resumen del estudio en liacutenea en

httpwwweurogameresarticles2011-10-26-espana-gastara-1-600-millones-de-euros-en-videojuegos-en-2011

Con esta informacioacuten se puede ver que hacer un videojuego casual para una plataforma moacutevilcomo Android puede ser muy viable

Para este proyecto se realizaraacute un estudio comparativo (benchmarking) En la industria de losvideojuegos es habitual sacar tiacutetulos fijaacutendose en otros tiacutetulos que han conseguido gran eacutexito enel mercado La operativa consiste en mejorarlos dentro de otro contexto o hacer un videojuegocompletamente diferente pero basaacutendose en ocasiones en mecaacutenicas de alguacuten otro tiacutetulo que haconseguido un gran eacutexito

Existen en Google Play gran cantidad de juegos casuales que pueden servir como inspiracioacuten ycomo punto de inicio para hacer un planteamiento general de coacutemo disentildear el producto que sequiere desarrollar partiendo de los requisitos definidos en el apartado 131 de este documento Setomaraacuten como referencia algunos tiacutetulos para identificar patrones para ver coacutemo otros hansolucionado ciertas situaciones como pueden ser problemas de disentildeo o interaccioacuten entre otrosEn ninguacuten caso deberaacuten ser exactamente de la misma temaacutetica pero si que se miraraacute que seandel mismo tipo es decir casual games

El primer paso para realizar este estudio a sido ir a Google play y verificar si hay alguacuten juego conel mismo nombre que el que se pretende desarrollar ldquoFling the sheeprdquo No existe ninguacuten juego adiacutea de hoy con este nombre

El segundo paso a sido buscar tambieacuten en Google play videojuegos en los que aparezcanovejas solo poniendo en el buscador la palabra sheep nos aparecen muchiacutesimos juegos quetienen una temaacutetica donde aparecen ovejas Se ha verificado tambieacuten poniendo combinaciones depalabras relacionadas con el juego que se quiere implementar palabras como sheep wolves o sheep farm etc los resultados obtenidos son bastante elevados

Por la cantidad de juegos encontrados y los recursos de que se dispone como por ejemplo eltiempo no es posible analizarlos todos Si que se tomaran algunos juegos despueacutes de hacer unrepaso de los maacutes destacados Hay que decir que despueacutes de haber instalado algunos alguno deellos no ha acabado de funcionar correctamente en el dispositivo moacutevil

Tras estos pasos se escogeraacuten dos videojuegos de temaacutetica similar y dos videojuegos detemaacutetica diferente Los videojuegos escogidos para realizar el anaacutelisis comparativo son

Paacutegina 35 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria311 Sheep amp Wolf

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 12 y 13 pantallas juego Sheep amp Wolf Link httpsplaygooglecomstoreappsdetailsid=jscompanygamesSheepAndWolf_enter3

El juego consta de una mecaacutenica muy simple disponemos de un boomerang y un corazoacuten laperspectiva del juego es elevada y vemos coacutemo van bajando ovejas y lobos de forma aleatoria setrata de forma taacutectil dibujar la trayectoria del boomerang para eliminar los lobos sin tocar lasovejas y con el corazoacuten dibujar una trayectoria de forma taacutectil para tocar las ovejas y no los lobosconforme vamos tocando los lobos y las ovejas con el correspondiente objeto iremos sumandopuntos

Tiene cierta similitud con el que se quiere implementar ya que salen tambieacuten lobosovejas ytambieacuten que lo que se pretende implementar funcionara de forma taacutectil para lanzar las ovejas alcorral y ahuyentar a los lobos que amenazan a las ovejas

Tiene una perspectiva de caacutemara igual a la que se quiere implementar Tiene una mecaacutenica dejuego muy sencilla las opciones que ofrece son muy definidas y claras 3 botones al inicio deljuego grandes que nos indican las posibles opciones que tenemos dentro del juego Game StartGame Record Exit Un punto interesante de este juego es que las puntuaciones no se guardan anivel local de la aplicacioacuten sino que son compartidas en una pagina web asiacute se pueden ver laspuntuaciones a nivel mundial La navegacioacuten por las diferentes pantallas es correcta

Quizaacute un aspecto negativo del juego seriacutea que visualmente esta muy poco cuidado Aunque aveces si el juego produce mucha adiccioacuten el aspecto visual puede quedar en segundo teacutermino enjuegos para dispositivos moacuteviles En otros tipos de plataformas como consolas o PC el aspectovisual es un punto muy importante y que se debe trabajar mucho maacutes a fondo no obstante estono significa que en un dispositivo moacutevil no deba estarlo

Paacutegina 36 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez adictivo puntuaciones a nivel mundial Navegacioacuten correctaPuntos Negativos Poco cuidado visualmente no tiene pausaObservaciones No tiene un final definido a medida que avanzamos la dificultad aumenta

312 Sheep Up

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 14 y 15 pantallas juego Sheep Up Linkhttpsplaygooglecomstoreappsdetailsid=compgpublishandroidsheepuplive

A diferencia del anterior este visualmente esta mucho maacutes cuidado Es un juego en 3D dondeuna oveja de juguete esta guardada dentro de una caja de cartoacuten Va botando y tiene que irrecogiendo botones e ir subiendo por diferentes niveles para poder salir de la caja es un juego deplataformas tambieacuten con una mecaacutenica bastante sencilla

Este dispone de una pantalla que dura unos segundos y seguidamente sale el menuacute de opcionesdel juego a diferencia de lo visto anteriormente donde directamente saliacutea el menuacute de opcionesde juego El menuacute de opciones de juego tambieacuten es muy directo y claro Aparte del botoacuten playpara iniciar el juego el botoacuten opciones para configurar el audio del juego los efectos el idioma yver los creacuteditos Tiene el botoacuten store donde este juego tiene implementada la modalidad freemiumpara ir comprando diferentes objetos dentro de el que nos daraacuten ciertas ventajas dentro delgameplay La compra se podraacute realizar con monedas virtuales (los botones) que los habremos idorecogiendo durante los diferentes niveles jugados o tambieacuten podemos comprar cantidadesdeterminadas de botones a cambio de dinero de verdad Dispone de vinculacioacuten a redes socialescomo Twitter y Facebook

Puntos Positivos Sencillez adictivo vinculado a Twitter y el Facebook el juego se puede pararNavegacioacuten correctaPuntos Negativos La pantalla inicial tarda demasiado en desaparecer y no da ninguacuten tipo de

Paacutegina 37 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriainformacioacuten al usuario puede llegar a parecer que se a colgado debido al largo tiempo que tardaal menos con el dispositivo que se ha verificado

313 Temple Run

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 16 y 17 pantallas juego Temple runLinkhttpsplaygooglecomstoreappsdetailsid=comimangitemplerun Es un juego que no tiene final donde un explorador tiene que evitar la muerte superandodiferentes obstaacuteculos a traveacutes de diferentes pasillos tendremos que dibujar diferentes trazos deforma taacutectil para que el personaje gire salte o se deslice por el suelo al mismo tiempo tendremosque inclinar el teleacutefono para que el personaje vaya recogiendo monedas que podremos utilizarpara adquirir objetos y mejoras en la partida A medida que vamos recorriendo maacutes y maacutes metrosla dificultad aumenta y nos obligara a realizar maacutes acciones en un espacio de tiempo maacutes cortoasiacute pues los reflejos juegan un papel importante

Tambieacuten dispone de una pantalla que dura unos segundos seguida de un menuacute de opciones muyclaro y definido Este igual que el anterior dispone de una tienda donde se pueden comprarmejoras (potenciadores) con dinero virtual o real Los botones de inicio son muy similares al delanterior juego visto Dispone de vinculacioacuten a redes sociales como Twitter

Puntos Positivos Sencillez Adictivo vinculado a Twitter el juego se puede parar NavegacioacutencorrectaPuntos Negativos -

Paacutegina 38 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria314 Attack of the Spooklings

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 18 y 19 pantallas juego Attack of the SpooklingsLinkhttpsplaygooglecomstoreappsdetailsid=compicarogamesspooklings_free

Finalmente nos centramos en este casual con aspecto visual retro Otro juego que no disponede final y donde la dificultad va aumentando conforme el tiempo de juego aumenta El objetivo deljuego es matar a todos los Spooklings que quieren atacar nuestro poblado La forma de matar alos Spooklings es con el dedo deslizaacutendolo sobre la pantalla soacutelo que un Spookling llegue anuestro poblado en la parte inferior de la pantalla la partida finaliza Debemos evitar de todas lasformas posibles que lleguen a la parte inferior de la pantalla

Tambieacuten dispone de una pantalla de inicio y un menuacute inicial de juego claro y directo no disponede ninguna vinculacioacuten a redes sociales El juego no se puede parar La navegacioacuten por todas laspantallas es correcta teniendo pantalla de puntuaciones maacutes altas pantalla con mini tutorial decoacutemo jugar y unas opciones para configurar el audio y ver los creacuteditos del juego Sin embargo adiferencia de los otros tiene algunas fallas de disentildeo a nivel de transiciones entre pantallas yfuncionalidades baacutesicas que aparentemente no tienen mucho sentido Fuera de la pantalla dejuego no es posible abandonar la aplicacioacuten de ninguna de las maneras no hay botoacuten de salida yla tecla de ir hacia atraacutes no funciona la uacutenica manera de salir es matando el proceso Por otrolado durante la partida con el botoacuten de ir atraacutes conseguimos hacer pausa del juego pero de unaforma que no estaacute anunciada al usuario de ninguna manera con alguacuten icono visual que informa alusuario de la funcionalidad Una vez parado el juego con una tecla que no estaacute indicada enninguna parte como tal nos da dos opciones RESTART y QUIT con QUIT salimos de la aplicacioacutenalgo que no se puede hacer en ninguacuten otro punto de la aplicacioacuten Con RESTART vuelve aempezar la partida y se pierde la que teniacuteamos empezada En resumen si pulsamos este botoacuten noestaacute anunciado en ninguna parte por accidente durante una partida perdemos la partida ya que notenemos la opcioacuten de continuar puesto que o volvemos a empezar o salimos de la aplicacioacuten

Paacutegina 39 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez Muy adictivoPuntos Negativos Errores en el disentildeo de menuacutes y transiciones entre pantallas no tienevinculacioacuten a redes sociales no tiene pausa

Todo lo que se ha visto en este estudio comparativo nos da una idea de que el disentildeo que selleve a cabo debe cumplir las siguientes metas tener una mecaacutenica de juego adictiva y sencillaque la disposicioacuten de opciones e iconos han ser claras y dejar claro al usuario de forma visual queacutefuncionalidad tienen las transiciones y operativas baacutesicas deben estar bien indicadas eimplementadas El disentildeo visual debe ser lo mas cuidado posible aunque a veces en juegos paraeste tipo de dispositivos no es el que maacutes domina sobre todo si el juego tiene una mecaacutenica muyadictiva aunque si se consiguen las dos cosas mucho mejor Otro punto importante es tener unamecaacutenica freemium implementada dentro del juego con una tienda para comprar mejorasaplicables a la mecaacutenica de juego Otro punto importante es la vinculacioacuten del juego a redessociales y que recoja puntuaciones a nivel mundial y no locales del dispositivo todos estosingredientes le pueden dar al juego un plus que haga que el usuario vea el juego maacutes atractivo

Debido a temas de tiempo inicialmente se descarta para este proyecto la implementacioacuten de lassiguientes funcionalidades dentro del videojuego las puntuaciones a nivel mundial estas demomento quedaraacuten sujetas a nivel local del dispositivo tambieacuten se descarta la vinculacioacuten a redessociales y mecaacutenicas freemium

El resto de puntos comentados como las mecaacutenicas sencillas y adictivas aspecto visual lo maacutescuidado posible dentro de los recursos de que se dispone y la navegacioacuten entre pantallas ymenuacutes claros y sencillos seraacute lo que se transportaraacute al disentildeo y la posterior implementacioacuten delproyecto Es posible que durante la implementacioacuten del disentildeo mostrado en este documento semodifiquen algunos puntos por temas de balanceo y equilibrio del producto final

32 Perfiles de usuarios identificados

Los juegos casuales son juegos con mecaacutenicas simples Este hecho hace que esteacuten al alcancede cualquier usuario aunque eacuteste no sea un jugador experimentado acostumbrado a utilizar juegoscon mecaacutenicas maacutes complicadas que requieren de cierta experiencia previa Al mismo tiempo sonjuegos que pueden ser jugados en cortos espacios de tiempo Por tanto el tipo de usuario deestos juegos sera muy variado Podemos encontrar el perfil de usuario experimentado tanto enlas tecnologiacuteas como en los videojuegos y que tiene intereacutes por cualquier tipo de juego Y por otrolado encontramos el usuario poco experimentado pero que gracias a los smarphones y lasencillez de las mecaacutenicas de juego provoca que tambieacuten juegue

Todos tendraacuten un objetivo comuacuten pasar un rato jugando al juego Para mejorar su uacuteltimo reacutecordAunque en este tipo de juegos el usuario tambieacuten puede jugar sin buscar ninguacuten tipo de metaconcreta simplemente pasar un rato divertido sin necesidad de alcanzar ninguacuten tipo de reacutecord niobjetivo concreto Tambieacuten es importante mencionar que aunque los perfiles de usuarios son muyvariados existe una fuerte tendencia a que los jugadores de este tipo de juegos tiendan a sermaacutes grandes que los jugadores de otros tipos de videojuegos y suelen tener un intereacutes y tiempolimitado tanto para jugar como los videojuegos en general siendo normalmente del sexofemenino

Se detectan dos grandes grupos de perfiles de usuario los experimentados en jugar avideojuegos y los no experimentados en jugar videojuegos edades diferentes profesionesvariadas educacioacuten variada sexo variado Los usuarios de Android en general suelen pagarmucho menos por aplicaciones que otros grupos de usuarios como los de iphone por ejemplo

Paacutegina 40 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Los haacutebitos de consumo en los estados unidos ya no de los usuarios de juegos casuales sinode los usuarios de Android en general se definen de la siguiente manera soacutelo un 4 de estospaga por descargar una aplicacioacuten contra un 23 y un 31 de los usuarios de la App Store paraiPhone y iPad respectivamente tal y como muestra un estudio realizado por la empresa Statistacon las 100 aplicaciones maacutes descargadas

ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitasSe puede ver en linea en el link httpwwwstatistacomtopics983mobile-app-monetizationchart1400paid-apps-don-t-stand-a-chance-on-google-play

Se puede ver otro articulo similar en el siguiente link

httpwwwwayerlesscom201307usuarios-de-android-pagan-menos-por-apps-que-los-de-ios

La mayoriacutea de aplicaciones gratuitas utilizan la modalidad freemium que no es maacutes que ofrecerun producto baacutesico de forma gratuita y cobrar a los usuarios por opciones maacutes avanzadas oespeciales dentro de la misma aplicacioacuten No obstante tambieacuten es posible encontrar aplicacionescompletamente gratuitas sin la modalidad freemium

Como ya se ha dicho se han detectado inicialmente dos grandes grupos dentro de la masa deusuarios que son consumidores potenciales de juegos casuales Estos son los usuarios asiduos ajugar videojuegos de todo tipo y con experiencia en el uso de tecnologiacuteas en general es decirusuarios experimentados Por otro lado encontramos los que no tienen costumbre de jugar muchoy normalmente tampoco tienen una gran experiencia en el uso de tecnologiacuteas en general pero

Paacutegina 41 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debido a la simpleza de los videojuegos casuales eacutestos tambieacuten se convierten en jugadores yen muchas ocasiones se convierten en los usuarios que consumen maacutes este tipo de juegos Asiacutepues encontramos dos grandes grupos seguacuten unas caracteriacutesticas comunes experiencia previa osin experiencia ante los videojuegos y las tecnologiacuteas

33 Contextos de uso

331 iquest Doacutende

Al tratarse de un casual game para un dispositivo moacutevil el espacio de utilizacioacuten seraacute muyvariado Por tanto los usuarios podraacuten encontrarse en muchos lugares distintos como puedenser en casa en el tren en el metro en el autobuacutes al aire libre etc En definitiva el usuario podraacuteencontrarse en cualquier lugar

332 iquest Cuaacutendo

El tipo de juegos casuales tienden a ser juegos donde los usuarios realizan partidas cortas peroal mismo tiempo la naturaleza adictiva de estos hace que los usuarios puedan quedar atrapadosdurante varias horas repartidas en ratos diferentes o continuados dependiendo de la situacioacuten decada usuario Por tanto el cuaacutendo de este tipo de juegos puede ser muy variado casi en cualquiermomento que el usuario pueda dedicarle unos minutos o ratos maacutes largos durante su tiempolibre mientras se desplaza ya sea en tren en metro o en alguacuten otro medio de transporte que nonecesite estar pendiente del vehiacuteculo cuando esta en la cama etc

333 iquest En que entorno

Los entornos de utilizacioacuten pueden tambieacuten ser muy variados promovidos por doacutende y el cuaacutendoPor lo tanto el entorno tecnoloacutegico podraacute tambieacuten ser variado puede existir o no conexioacuten a lared en un entorno social muy diferente que podraacute ser maacutes privado o maacutes puacuteblico yconsecuentemente se dibujaraacute un entorno ambiental variado seguacuten el momento

4Disentildeo y ldquoConcept Artrdquo

41 Elementos presentes en la interfaz de la aplicacioacuten

Con todo lo que se ha visto en el apartado 31 estudio comparativo queda patente que la interfazde usuario debe ser clara y sencilla Seraacute necesario que contenga las siguientes pantallas

bull Pantalla de intro inicial que apareceraacute durante un segundobull Pantalla menuacute inicial del juego con las opciones Play Scores Options () How to play bull Pantalla de nivel donde se desarrolla el videojuegobull Pantalla high scores que mostrara la tabla de reacutecords con las 10 puntuaciones maacutes altasbull Pantalla how to play instrucciones de como jugar tambieacuten se integraran dentro del

videojuego y apareceraacuten durante la primera partida que se jueguebull Pantalla opciones podremos activar y desactivar el sonido y los efectos de audio A su vez

desde esta pantalla podremos acceder a la pantalla de creacuteditosbull Pantalla de creacuteditos pantalla doacutende se mostraran lo creacuteditos del videojuego bull Pantalla Ready pantalla de juego con el mensaje sobre impreso antes de empezar a

jugar apareceraacute durante 3 segundosbull Pantalla con los botones resume quit sobreimpresos en la pantalla de juego se accederaacute

Paacutegina 42 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaa ella con el botoacuten de pausa pausando el juego Desde ella podremos reanudar el juego oabandonar el juego

bull Pantalla game over con el resumen de los reacutecords conseguidos durante la partidapuntostiempo jugado numero de lobos ahuyentados y ovejas colocadas en el corralDesde esta pantalla tendremos dos botones Play again y Exit uno nos permitiraacute volver ajugar y el otro nos permitiraacute abandonar el juego tal y como su nombre indica

42 Flujos de interaccioacuten

En la siguiente ilustracioacuten se muestran los flujos de interaccioacuten definidos con las pantallasenumeradas en el apartado anterior Los flujos muestran la navegacioacuten que debe existir entre laspantallas del videojuego

ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintaspantallas

Paacutegina 43 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

43 Prototipaje

431 Sketches

En este apartado se muestran los primeros esbozos realizados a mano alzada estos intentanplasmar el disentildeo del juego en su totalidad Estos esbozos serviraacuten como punto de partida en unasegunda fase para realizar el prototipaje de todas las pantallas que intervienen en el videojuegoutilizando todo el material recopilado en la red

Tal y como ya se ha dicho en este mismo documento anteriormente no se dispone deconocimientos de disentildeo suficientes como para abordar un disentildeo de arte desde cero Por lo tantose han utilizado recursos ya disponibles en la red para el montaje de todos los graacuteficos delvideojuego Todos los recursos utilizados estaacuten bajo licencias creative commons o dominio puacuteblico A continuacioacuten se muestran los bocetos

ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 44 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 45 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada

En la siguiente paacutegina se muestran las transiciones definidas entre pantallas con los sketchesrealizados ilustracioacuten 241 Las transiciones toman como base el diagrama de flujos deinteraccioacuten definido en el apartado 42 de este documento ver ilustracioacuten 21

Paacutegina 46 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria432 Transiciones definidas entre pantallas

ilustracioacuten 241 Transiciones definidas entre pantallas

Paacutegina 47 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria433 Prototipo horizontal de alta fidelidad

4331 Pantalla inicial

Pantalla de inicio al ejecutar el juego apareceraacute esta pantalladurante un segundo

4332 Pantalla menuacute principal del juego

Pantalla de menuacute principal del juego desde esta pantallapodremos empezar a jugar (botoacuten Play) consultar la tabla depuntuaciones (botoacuten Scores) e ir a la pantalla de opciones deljuego (botoacuten Options) El interrogante de la parte inferiorderecha nos serviraacute para ir a la pantalla de instruccionesHOW TO PLAY para saber coacutemo se juega

Paacutegina 48 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4333 Pantalla de opciones

La pantalla de opciones nos permitiraacute deshabilitar la muacutesicadel juego y los efectos sonoros pasando el dedo sobre losiconos del altavoz y las notas musicales con el altavozdeshabilitaremos la muacutesica y con las notas musicalesdesactivaremos los efectos de audio La flecha naranja nosconduciraacute de nuevo a la pantalla de inicio del juego el botoacutencreacuteditos nos llevara a la pantalla de creacuteditos

4334 Pantalla de creacuteditos

Pantalla de creacuteditos en ella se muestran los nombres dequienes han disentildeado y programado el juego con la flechanaranja inferior volvemos a la pantalla de opcionesDeslizando el dedo sobre el texto se podraacute desplazar haciaarriba y hacia abajo

Paacutegina 49 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4335 Pantalla tabla de puntuaciones

Pantalla tabla de puntuaciones nos mostrara una tabla conlas 10 puntuaciones maacutes altas de todas las partidas jugadasEsta tabla se guardara de forma local en el dispositivo

4336 Pantalla de juego READY

Pantalla de juego READY Apareceraacute durante unossegundos una vez iniciada la partida Despueacutes de 3segundos pasara a la pantalla de juego que se muestra en elsiguiente apartado

Paacutegina 50 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4337 Pantalla de juego

La pantalla de la izquierda es donde se desarrollaraacute todo el gameplay en la parte superiorizquierda de la pantalla se muestran los puntos conseguidos y las vidas En la parte superiorderecha hay un botoacuten que permitiraacute pausar el juego una vez pausado mostraraacute la pantalla depausa con los botones RESUME y QUIT la pantalla se muestra en el apartado siguiente En laparte derecha se muestra otra pantalla ideacutentica a la de la izquierda donde se puede ver elgameplay baacutesico representado con flechas los lobos saldraacuten de los extremos de la pantalla yendohacia las ovejas las ovejas al mismo tiempo saldraacuten de la derecha de la pantalla y las tendremosque lanzarlas deslizando el dedo sobre ellas y lanzandolas hacia el establo La puerta se iraacuteabriendo y cerrando aleatoriamente los lobos una vez puestos en escena los podremos ahuyentardeslizando el dedo sobre ellos un nuacutemero de veces determinado en funcioacuten del color del lobocomo esta indicado en el apartado 131 de este documento

Paacutegina 51 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4338 Pantalla de pausa botones RESUME y QUIT

Pantalla de pausa que apareceraacute cuando se pause el juegoCon la opcioacuten RESUME continuaremos jugando con laopcioacuten QUIT se saldraacute de la partida y pasaraacute a la pantalla delmenuacute principal del juego descrita en el punto 322

4339 Pantalla GAME OVER

Pantalla GAME OVER apareceraacute cuando se hayanagotado todas las vidas Mostraraacute un resumen de los puntosconseguidos en la partida actual tiempo invertido en lapartida lobos ahuyentados y ovejas salvadas Con losbotones de la parte inferior podremos volver a jugar (botoacutenplay again) o salir del juego con el botoacuten exit este botoacuten nosconduciraacute a la pantalla de inicio de juego descrita en elapartado 322

Paacutegina 52 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria43310 Pantalla de instrucciones de juego HOW TO PLAY

Pantalla de instrucciones del juego nos haraacute una breveexplicacioacuten de coacutemo jugar Deslizando el dedo sobre el textose podraacute desplazar hacia arriba y hacia abajo El juegodispondraacute de unas mini instrucciones in game queapareceraacuten en la primera partida que se juegue en forma decajas de texto esta pantalla se muestra en el siguienteapartado

43311 Pantalla de instrucciones in game

Esta pantalla muestra el modo como quedaraacuten integradaslas instrucciones de juego dentro del gameplay Estasinstrucciones apareceraacuten solamente la primera vez que sejuegue

Paacutegina 53 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Todo el disentildeo mostrado en este apartado ha sido realizado con todos los recursos encontradosen la red todos ellos quedan recogidos en el apartado 6 Con el programa Gimp se ha montadotodo el disentildeo de alta fidelidad mostrado en este apartado Se ha trabajado con capas paradisponer de flexibilidad en la construccioacuten del disentildeo A su vez el hecho de tener los disentildeos porcapas nos permitiraacute poderlo exportar a la implementacioacuten del videojuego de una manera coacutemoday raacutepida en el apartado 5 implementacioacuten se hace referencia a como convertir el disentildeo realizadoen capas a recursos graacuteficos del videojuego

En la siguiente ilustracioacuten se muestra una captura del disentildeo de la pantalla de juego descrita enel apartado 4337 realizado con Gimp

ilustracioacuten 242 Disentildeo pantallas con Gimp

Paacutegina 54 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

5Implementacioacuten

51 Arquitectura global

511 Arquitectura del framework libGDX

LibGDX es un framework multiplataforma que actualmente soporta WindowsLinuxMac OS XAndroid iOS y HTML5 Esto permite escribir el coacutedigo una sola vez y desplegarlo en las distintasplataformas comentadas sin tener que modificar el coacutedigo LibGDX permite bajar a maacutes bajonivel si se desea ya que da acceso directo al sistema de ficheros dispositivos de entrada desonido y a OpenGL a traveacutes de la interfaz unificada OpenGL ES11 y 20

LibGDX ofrece a su vez un conjunto de APIs que ayudan en las tareas comunes de desarrollode videojuegos como son la presentacioacuten de sprites texto la creacioacuten de interfaces de usuario lareproduccioacuten de efectos de sonido y secuencias musicales y los distintos tipos de caacutelculosnecesarios en la programacioacuten de videojuegos

En algunas ocasiones LibGDX deja de lado el lenguaje Java y recurre a coacutedigo nativo paraconseguir un mejor rendimiento No obstante todas estas funciones quedan ocultas detraacutes de lasAPIs de Java De manera que en el momento de desarrollar un videojuego no hay quepreocuparse de realizar una compilacioacuten cruzada entre Java y C++

LibGDX es un framework maacutes que un motor de videojuegos que ayuda al desarrollo de estosgracias a las abstracciones de gran alcance que ofrece y deja en manos del programador elegircomo escribir su videojuego o aplicacioacuten

512 Visioacuten de los moacutedulos de libGDX

LibGDX comprende varios moacutedulos que proporcionan los servicios necesarios para crear laarquitectura tiacutepica de un videojuego

ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en unvideojuego

Paacutegina 55 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaA continuacioacuten de describen los moacutedulos mostrados en la ilustracioacuten 25

Input Proporciona un modelo de entrada unificado para todas las plataformas Soporta tecladopantalla taacutectil aceleroacutemetro y ratoacuten si esta disponible

Graphics Permite el dibujo de las imaacutegenes en pantalla usando el hardware proporcionado por laimplementacioacuten de Open GL ES las versiones soportadas son GL versioacuten 10 11 20

Files Proporciona los meacutetodos necesarios para las operaciones de lectura escritura totalmenteindependientes a los medios de comunicacioacuten existente

Audio Proporciona las herramientas necesarias para la reproduccioacuten de sonido para todas lasplataformas

Math Moacutedulo que proporciona los caacutelculos matemaacuteticos necesarios orientados al desarrollo devideojuegos

Physics LibGDX proporciona un wrapper completo al motor de fiacutesicas en 2D open sourcedesarrollado en C++ llamado Box2D

52 Arquitectura de un videojuego

521 Programa vs Aplicacioacuten

Una aplicacioacuten convencional sigue una secuencia loacutegica lineal reacciona cuando sucede alguacutenevento es decir responde a eventos como por ejemplo cuando se pulsa una tecla Por el contrarioun videojuego es maacutes complejo hace caacutelculos y dibuja en pantalla constantemente aunque no seproduzca ninguacuten evento

522 Estructura baacutesica de un videojuego

Programar videojuegos es una forma completamente diferente de programar software Ladiferencia principal entre una aplicacioacuten convencional y un videojuego radica en la gestioacuten deeventos tal y como se ha indicado anteriormente un programa ofrece respuestas a eventos y unavez son servidos permanece a la espera de una nueva orden en cambio un videojuego es unprograma que debe actuar en tiempo real tiene que estar haciendo caacutelculos y dibujando enpantalla constantemente No se puede esperar a que suceda un evento para poder actuaraunque el jugador no haga nada no presione una sola tecla no mueva el ratoacuten el juego tiene quecalcular el tiempo que lleva jugando en ese nivel si le va a atacar alguacuten enemigo si estaacute cargandoenergiacutea y por supuesto dibujar en pantalla todo lo que va sucediendo

La mayoriacutea de videojuegos estaacuten construidos bajo la misma estructura baacutesica sobre la cual correel programa Esta estructura puede tener variaciones pero de forma general se presenta de lasiguiente manera

Inicializacioacuten En esta primera etapa el juego se situacutea en su estado inicial Se realizan lasinicializaciones por lo que respecta a las libreriacuteas o motores que vayan a utilizarse de variables yestructuras de datos referentes a los atributos de las entidades o personajes escenariosconfiguraciones etc y de los diferentes recursos fiacutesicos que vayan a emplearse tales comograacuteficos o sonidos

Paacutegina 56 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Ciclo de juego En esta parte esta toda la accioacuten este ciclo se repite de manera indefinida hastaque el jugador pierda gane o salga del juego Este punto se puede dividir en tres partes quepodemos llamarlas entrada proceso y salida

Como entrada se entiende el punto donde se captura todo lo que hace el jugador comopresionar los botones de control mover el ratoacuten presionar las flechas del teclado tocar la pantallataacutectil y el resto de informacioacuten que recibe el juego

En la parte de proceso es donde se procesa toda la informacioacuten que se recibioacute en la entrada ytiene lugar la loacutegica del videojuego Por tanto es donde se realizan los caacutelculos de fiacutesicas si eljuego los requiere asiacute como tambieacuten los caacutelculos de la inteligencia artificial de esteconjuntamente con el tratamiento graacutefico

La salida es la encargada de enviar al jugador toda la informacioacuten que se ha procesado en laetapa anterior proceso Se muestra al jugador el resultado de lo que hizo con la visualizacioacuten enpantalla del estado actual del videojuego Tambieacuten es en este punto donde se hace sonar lamuacutesica y efectos de sonido

Por uacuteltimo y fuera del ciclo de juego esta la parte de finalizacioacuten esta parte es la encargada deliberar todos los recursos y memoria utilizada durante el transcurso del videojuego

Es importante diferenciar estas tres etapas del ciclo del videojuego y ver queacute tarea se delega encada una de ellas en la entrada tan soacutelo nos ocupamos de captar los posibles eventos el procesose encarga en primer lugar de procesar la entrada y maacutes adelante de la loacutegica del videojuego ypor uacuteltimo la capa de salida se encarga de visualizar y reproducir la muacutesica

Con estos puntos claros se puede mostrar la estructura principal de un videojuego En elsiguiente apartado se muestra esta estructura baacutesica a modo de esquema

Paacutegina 57 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

53 Esquema de la estructura baacutesica de un videojuego

Inicializacioacuten Creacioacuten de estructuras dedatos carga de recursos graacuteficos y sonidos

Entrada Gestioacuten de pantalla taacutectiljoystick teclado

Proceso Lanzamos una oveja al corralrebota la oveja salta un lobo al escenarioetc

Salida Mostrar graacuteficos y reproducirsonidos

ilustracioacuten 26 Estructura baacutesica de unvideojuego

Finalizacioacuten Liberar recursos

Paacutegina 58 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

54 Patrones de disentildeo

541 Introduccioacuten

En el disentildeo de cualquier aplicacioacuten como por ejemplo un videojuegono es posible abordarlo porcompleto El proceso de disentildeo de una aplicacioacuten suele ser iterativo y se realiza en diferentesetapas de forma que se vaya refinando con el tiempo Conseguir un disentildeo perfecto a la primeraes muy difiacutecil de conseguir El disentildeo de aplicaciones es complejo y la maacutes importante y que maacutesimpacto tiene no soacutelo sobre el producto final sino tambieacuten sobre su vida futura Ya que es en eldisentildeo en donde se definen las estructuras y entidades que se van a encargar de resolver elproblema planteado Como de bien se definan estas estructuras y entidades influiraacute en granmedida en el eacutexito o fracaso del proyecto y en la viabilidad de su mantenimiento

Los patrones de disentildeo son formas reconocidas y probadas de resolver problemas de disentildeo queson recurrentes en el tiempo No es maacutes que basarse en experiencias anteriores en problemassimilares aplicado soluciones probadas anteriormente en determinados contextos para alcanzarun mejor disentildeo maacutes raacutepidamente

Existen distintos patrones para distintos problemas de disentildeo No obstante en este documentosoacutelo se haraacute hincapieacute en los patrones utilizados para este proyecto Quedando fuera del alcancede este documento los demaacutes patrones existentes

542 Patrones de creacioacuten

Estos patrones nos proporcionan una solucioacuten relacionada con la construccioacuten de clases objetosy otras estructuras de datos Algunos ejemplos de patrones pueden ser Abstract Factory BuilderSingleton estos ofrecen mecanismos de creacioacuten de instancias de objetos y estructurasescalables dependiendo de las necesidades

543 Singleton

Para este proyecto se ha utilizado este patroacuten ya que era necesario tener una uacutenica instancia dealgunas determinadas clases En java cuando se utiliza el operador new es posible crear unainstancia de un objeto No obstante a veces es necesario tener una uacutenica instancia de un objetopor ejemplo para poder acceder a ella des de cualquier punto de la aplicacioacuten Seria un ejemplolapelota de un juego de pinball en donde podriacutea ser conveniente mantener una uacutenica instancia deeste objeto

La solucioacuten para garantizar que solo existe una instancia de un objeto se consigue impidiendoque ninguna otra clase pueda acceder al constructor por este motivo de declara el constructorcomo miacutenimo de forma protegida o privada y se proporciona un uacutenico punto (controlado) en dondese proporciona la uacutenica instancia En la siguiente ilustracioacuten se muestra el diagrama de clases delpatroacuten Singleton

ilustracioacuten 27 Singleton

Paacutegina 59 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria A continuacioacuten en el listado 543 se muestra una implementacioacuten baacutesica del patroacuten Singletonutilizada en el proyecto para la clase que maneja el audio del videojuego

Listado 543

1 package comthreecometflingthesheeputil23 import combadlogicgdxaudioMusic 4 import combadlogicgdxaudioSound56 public class AudioManager 7 8 public static final AudioManager instance = new AudioManager()910 private Music playingMusic11 private Sound playingSound1213 Singleton14 private AudioManager() 15 1617 1819 public void ResunmeMusic()20 21 if(playingMusic = null) playingMusicplay()22 2324 public void PlayMusic(Music musicfloat volumeboolean loop) 25 26 if(GamePreferencesinstancemusic) return27 playingMusic = music28 musicsetLooping(loop)29 musicsetVolume(volume)30 musicplay()31 3233 public void StopMusic()34 35 if(playingMusic = null) playingMusicstop()36 3738 public void PauseMusic()39 40 if(playingMusic = null) 41 if(playingMusicisPlaying()) 42 playingMusicpause()43 44 45 4647 public void PlaySound(Sound soundfloat volume) 48 49 if(GamePreferencesinstancesound) return50 playingSound = sound51 soundplay(volume)52 5354 public void PlaySound(Sound soundfloat volumefloat pitchfloat pan) 55 56 if(GamePreferencesinstancesound) return57 playingSound = sound58 soundplay(volume pitch pan)59 60

Esta clase maneja el audio del videojuego tanto efectos de sonido como la muacutesica es una clase

Paacutegina 60 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debe estar accesible des de cualquier punto de la aplicacioacuten y no tiene ninguacuten sentido que seinstancie repetidas veces soacutelo sera necesaria una instancia de dicha clase para poder manejar losaudios y muacutesicas Como se puede ver en la linea 14 del listado 543 se declara el constructorprivado y en la linea 8 se proporciona el punto donde se proporciona la uacutenica instancia de dichaclase a traveacutes de la variable instance declarada de forma publica para que se accesible desdecualquier otra clase y a su vez declarada de forma static y final Con final le decimos que estavariable ya no puede ser modificada una vez declarada es decir sera una constante Con static leindicamos que podremos utilizar la variable instance sin la necesidad de hacer ninguna instanciacon el operador new de la clase AudioManager

Existen varias clases en el videojuego que son singleton A continuacioacuten se nombran todas ellasAudioManager Assets WorldGameController CounterTime GamePreferences

55 Diagramas de clases definitivos

Se ha dividido en varios diagramas para facilitar su lectura se pueden ver los diagramas en lossiguientes apartados de este documento A continuacioacuten se pasan a comentar las clases descritasen ellos

56 Diagramas nuacutecleo videojuego

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep-android encontramoslas siguientes clases

MainActivity Hereda de AndroidAplication que a su vez hereda de Activity es donde se crea laaplicacioacuten crea una instancia de FlingTheSheepMain

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep encontramos laclase FlingTheSheepMain donde se instancia la pantalla de intro del juego dentro del meacutetodocreate

Siguiendo el esquema estructural de un videojuego descrito en el punto 53 de este documentola ilustracioacuten 28 detalla el diagrama de clases que engloba la inicializacioacuten del juego y el ciclo devida

La Inicializacioacuten queda recogida en la clase Assets esta clase es un singleton que instanciaotras clases que a su vez guardan todos los recursos del videojuego por recursos se entiendetexturas para los graacuteficos archivos de audio ficheros con informacioacuten necesaria para el juegoUna vez inicializado el hecho de ser un singleton nos permite acceder a estas clases a traveacutes dela clase assets des de cualquier punto de la aplicacioacuten En la ilustracioacuten 29 se detallan todas estasclases que engloba la clase assets Esta clase se encuentra el el paquetecomthreecometflingthesheepgame A continuacioacuten se comenta cada una de ellas con una brevedescripcioacuten

LevelDecoration Enumera todas las texturas de los objetos de decoracioacuten del videojuego floreshierba etc Son objetos que no tienen ninguna interaccioacuten con el juego simplemente decoran

AssetFontsScene2D Engloba los tipos distintos de fuente que se utilizan en el videojuego tipode letra medida y color

AssetSound Enumera todos los efectos de sonido del juego

Paacutegina 61 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAssetMusic Contiene todas las muacutesicas del juego

FileHandleHighScores Inicializa la tabla de puntuaciones local y la actualiza cada vez que serealiza una partida de juego

LevelObjects Engloba todos los objetos que tienen interaccioacuten con el videojuego por interaccioacutense entiende objetos que pueden colisionar con otros o que tienen alguacuten papel importante dentrode videojuego no son solo objetos de decoracioacuten

Character Contiene el protagonista del juego el personaje que lleva el jugador en esta caso lasovejas

NPCs En esta clase quedan englobadas las texturas de los enemigos en esta caso los lobos

GUI En esta clase se engloban todas las texturas utilizadas para la creacioacuten de la interfaz deusuario botones imaacutegenes

La clase Constants es una clase que declara varias constates estaacuteticas que son accesibles desde cualquier punto de la aplicacioacuten y se utilizan tanto en la inicializacioacuten como en el ciclo de vidadel videojuego La podemos encontrar en el paquete comthreecometflingthesheeputil

El ciclo de vida del videojuego entrada proceso y salida queda repartido en las siguientes clases

Entrada Gestioacuten pantalla taacutectil se realiza en la clase WorldGameController en el meacutetodollamado handleInput a su vez cada personaje(character) y enemigo(NPC) gestiona su propiaentrada de eventos a traveacutes de los meacutetodos sobre escritos touchDown fling y tap Ver ilustracioacuten30 clases Sheep y Wolf

Proceso Este apartado realiza la loacutegica del videojuego y es responsable de esto el meacutetodoupdate de la clase WorldGameController Dentro de este meacutetodo existe implementada lamaquina de estados descrita en el apartado 231 con todos los estados posibles que el juegopuede tener durante su ciclo de vida los estados son READYGAMEPAUSEGAME OVER Cadapersonaje y enemigo lleva implementado su propia loacutegica y maquina de estados dentro de susclases correspondientes Ver ilustracioacuten 30 clases Sheep y Wolf estas maacutequinas de estados sonlas descritas en los apartados 232 y 233 respectivamente

Salida La salida descrita en el apartado 53 queda recogida en la clase GameScreen Verilustracioacuten 31

Finalizacioacuten La finalizacioacuten liberacioacuten de recursos queda a cargo del meacutetodo sobre escrito hiderepartido por las distintas clases de la aplicacioacuten

Otras clases que intervienen en el ciclo de juego recogidas en la ilustracioacuten 28 sonCounterTime GamePreferences AudioManager a continuacioacuten se detalla la funcionalidad decada una de ellas

CounterTime Esta clase engloba el calculo de tiempo transcurrido desde que empieza el juegohasta que termina hace la funcioacuten de contador de tiempo interno

GamePreferences Esta clase hace persistente la configuracioacuten escogida por el usuario en lasopciones Es posible configurar el juego con o sin sonido al igual que los efectos de audio estaclase es la encargada de guardar esta configuracioacuten aunque abandonemos la aplicacioacuten

Paacutegina 62 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

AudioManager Clase que se encarga tanto de la reproduccioacuten de audio como los efectos desonido es su responsabilidad interrogar la configuracioacuten actual del sonido y efectos paradeterminar si tiene que realizar la reproduccioacuten de audio o efectos asiacute como tambieacuten determinarel volumen del sonido o si un audio hay que reproducirlo de forma ciacuteclica En el listado 543 deeste documento se puede ver el coacutedigo de esta clase como ejemplo de singleton

ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego

Paacutegina 63 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 29 Diagrama de clases Assets

57 Diagrama de clases objetos videojuego

En la ilustracioacuten 30 de este documento se detalla el diagrama de clases referente a los objetosdel videojuego Por objetos se entiende personaje principal enemigos juntamente con todos loselementos que forman el conjunto del escenario del videojuego

En primer lugar cabe destacar la existencia de la clase abstracta AbstractGameObject Estaclase abstracta define los meacutetodos comunes de todos los objetos del juego Por las necesidadesde implementacioacuten no se han definido meacutetodos abstractos no obstante la clase se define comoabstracta ya que va a ser la superclase de todos los objetos del videojuego y por tanto no se van arealizar instancias de esta A continuacioacuten se enumeran las clases que se extienden de esta y querecogen todos los objetos del juego ya sean con o sin interaccioacuten en el

Paacutegina 64 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaGrass Hole Flower Flowers Stump ForestLeft ForestRight ThePen WoodFenceForestWoodFencePen DoorPen BorderGrassLeft BorderGrassRight PotionPurple AubergineRedPuddle Tree GrassField

Estas clases corresponden a los objetos que constituyen el escenario del videojuego Las clasesSheep y Wolf corresponden al personaje del videojuego y a los enemigos respectivamente estasclases no solamente contienen el meacutetodo para ser dibujadas en pantalla igual que las anterioressino que tambieacuten poseen toda la loacutegica para el comportamiento de cada una de ellas este puntocorresponderiacutea a la fase de proceso de la estructura baacutesica de un videojuego detallada en elpunto 53 de este documento Existe para cada personaje y enemigo una maquina de estadosimplementada que indica en que estado se encuentra en cada momento aplicando la loacutegicacorrespondiente para ese estado Ver las enumeraciones SHEEP_STATE y WOLF_STATE de lailustracioacuten 30 estas corresponden a las maacutequinas de estado definidas en los apartados 232 y233 respectivamente

Finalmente en la ilustracioacuten 30 aparecen las clases GameScreen y WorldGameController

La clase GameScreen como se vera en el apartado 58 es la clase que engloba todo lorelacionado con la pantalla del juego o nivel En ella se instancian todos los objetos descritosanteriormente para la creacioacuten del nivel asiacute como tambieacuten la creacioacuten de la GUI del videojuegobotones textos sobreimpresos y cajas de textos Es por este motivo que en la clase GameScreenexisten dependencias u asociaciones hacia todos los objetos dependiendo del tipo de declaracioacutende estos

La clase WorldGameController contiene la implementacioacuten de gran parte de la loacutegica delvideojuego esta clase formariacutea parte de la etapa de proceso dentro de la estructura baacutesica de unvideojuego descrita en el apartado 53 de este documento

Existe tambieacuten en esta clase una asociacioacuten hacia la clase GameScreen ya que des de la claseWorldGameController que es donde se encuentra gran parte de la loacutegica es necesario accedera la instancia de GameScreen para interactuar con varios elementos visuales que manipulan laloacutegica del videjuego

En la siguiente hoja se muestra la ilustracioacuten 30 correspondiente a todo los descrito en esteapartado

Paacutegina 65 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 30 Diagrama de clases objetos

Paacutegina 66 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

58 Diagrama de clases pantallas videojuego

En la ilustracioacuten 31 quedan recogidas todas las clases que intervienen en la creacioacuten depantallas del videjuego por pantallas se entine la pantalla de intro la del menuacute principal la deopciones etc Estas clases engloban todo lo necesario para la construccioacuten y visualizacioacuten deestas A continuacioacuten se detallan cada una de las clases

AbstractGameScreen Esta clase abstracta recoge todos los meacutetodos abstractos que sonimplementados en cada una de las clases que a continuacioacuten se detallan(pantallas) con la loacutegicanecesaria seguacuten las necesidades de cada pantalla No se crea ninguna instancia de esta clase

IntroScreen Corresponde a la pantalla de intro del videojuego descrita en el apartado 4331

MenuScreen Corresponde a la pantalla del menuacute inicial del juego des de aquiacute podemos escogersi jugar consultar la tabla de puntuaciones local ir a las opciones o a la pantalla de ayuda delvideojuego descrita en el apartado 4332 OptionsScreenPantalla de opciones descrita en el apartado 4333

CreditsScreen Pantalla de creacuteditosdescrita en el apartado 4334

HighScoresScreen Pantalla en donde se recoge la puntuacioacuten local del videojuegodescrita en elapartado 4335

GameScreen Pantalla general esta clase engloba toda la loacutegica del nivel del juego a su vezengloba la pantalla inicial de nivel READY la pantalla de pausa del juego y la de game overdescritas en los apartados 4336 4337 4338 4339

HowToPlayScreen El videojuego dispone de un tutorial in game que solo aparece la primera vezque jugamos a el y en las siguientes partidas ya no vuelve aparecer maacutes descrita en el apartado43311 No obstante existe una pantalla en donde podemos ver este tutorial fuera del juego estaclase esta destinada a contener los datos de esta pantalla descrita en el apartado 43310

TextGUI Esta clase contiene todos los textos sobreimpresos que existen en el videojuego En ellaesta la loacutegica de cada uno de estos textos para que sean posicionados y visualizados desde lasdistintas partes del videojuego

TUTORIAL_INGAME_STATE Esta enumeracioacuten enumera los estados de la maquina de estadosutilizada para mostrar el tutorial in game dentro del videojuego la primera vez que jugamos lamaacutequina de estados esta implementada dentro de la clase TextGUI la maacutequina corresponde a ladescrita en el apartado 234

En la siguiente hoja se muestra la ilustracioacuten correspondiente a todo los descrito en esteapartado

Paacutegina 67 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 31 Diagrama de clases pantallas

Paacutegina 68 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

59 Configurar el entorno de desarrollo

Antes de empezar a desarrollar juegos con libGDX es necesario instalar y configurar el entornode desarrollo Para ello se utilizaraacute Eclipse como entorno de desarrollo integrado IDE A su vez secreara un proyecto que nos serviraacute como base para el desarrollo de este

Es posible desarrollar con otros entornos distintos a Eclipse pero el hecho que Eclipse sea elentrono de desarrollo soportado oficialmente ha sido motivo suficiente para escogerlo para esteproyecto como entorno de desarrollo

591 Instalacioacuten

Para poder instalar el entorno de desarrollo nos haraacute falta primero instalar el Java DevelopmentKit(JDK) para posteriormente poder instalar eclipse

Una vez instalados seraacute necesario bajar el framework libGDX del siguiente enlace

httplibgdxbadlogicgamescomdownloadhtml

Tambieacuten sera necesario instalar el Android SDK seguidamente tendremos que ejecutar eclipse yinstalar los plugins necesarios para poder desarrollar con Android El plugin necesario paradesarrollar con Eclipse sobre Android de llama ADT (Android Developer Tools) Para instalar esteplugin debemos dirigirnos a Help--gtInstall new software tal y como muestra la siguiente ilustracioacuten

ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse

Paacutegina 69 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez el entorno de desarrollo preparado seraacute el momento de descomprimir el frameworklibGDX se recomienda descomprimirlo en la raiacutez ClibGDX en esta caso ya que trabajamos bajoWindows

Una vez descomprimido dentro de la la carpeta encontramos una aplicacioacuten llamada gdx-setup-uijar Esta aplicacioacuten nos ayuda a crear un proyecto ya configurado con las libreriacuteas necesariaslisto para ser importado a Eclipse y empezar a desarrollar con libGDX para Android O paracualquier otra de las plataformas soportadas por el framework En este caso se configura elproyecto para Android y para Escritorio de esta manera podremos verificar durante el desarrollodel proyecto los avances sin necesidad de instalarlo en un dispositivo Android ya sea fiacutesico ovirtual

Las siguientes ilustraciones muestran la configuracioacuten a realizar

ilustracioacuten 33 Creacioacuten proyecto libGDX Habraacute que pulsar en el botoacuten Create y con ello accederemos a la siguiente ilustracioacuten

ilustracioacuten 34 Creacioacuten proyecto libGDX

Paacutegina 70 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez configuradas todas las opciones le daremos al paso 4 Open the generation screen ygeneraremos el proyecto Esto proyecto sera importable a eclipse desde la opcioacuten Import delpropio IDE La configuracioacuten del proyecto tambieacuten es posible hacerla a mano no obstante esta aplicacioacutennos ahorra tiempo y posibles errores en el momento de configurarlo dentro del entorno ya quepara hacerlo a mano existen distintos pasos a seguir para conseguir lo mismo que se consiguecon esta aplicacioacuten con escasos clicks de ratoacuten

510 Traspaso del disentildeo a texturas

Todo el disentildeo realizado en el apartado 4 seraacute necesario pasarlo a texturas para posteriormenteutilizarlo en la implementacioacuten del juego como recursos graacuteficos

Una textura es una imagen digital cualquiera en cualquiera de los formatos habituales jpg pnggif tga etc Para poderla cargar dentro de un videojuego y manipularla haraacute falta una libreriacuteaespecializada para ello esto se podria programar para para el caso de este proyecto utilizamos elpropio framework libGDX para realizar esta tarea que a su vez envuelve el uso de OpenGL

Las texturas en OpenGL deben ser siempre potencias de 2163264128256 etc del contrarionos daraacute problemas y no funcionaraacute

El primer paso sera desmontar todas las capas pieza por pieza por decirlo de alguna manera ycrear ficheros de cada una de las capas de forma separada para guardarlas todas en una carpetacon un nombre identificativo Ver la siguiente ilustracioacuten

ilustracioacuten 35 Capas separadas por imaacutegenes

Paacutegina 71 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez realizado este paso deberemos juntarlas todas de nuevo en una uacutenica textura que seapotencia de 2 Trataacutendose de un juego para moacutevil las texturas no deberiacutean ser mayores de1024x1024 y no se podraacuten cargar muchas de ellas en memoria por razones obvias de recursosdel tipo de dispositivo

Para juntarlas utilizaremos una aplicacioacuten llamada Texture Packer esta nos juntara las texturasde repartieacutendola de forma que quepan en una tamantildeo de textura definido que en este caso serade 1024x1024 en caso de caber en una uacutenica textura el programa generara 2 texturas siempreoptimizadas a potencias de 2 La siguiente ilustracioacuten muestra el programa Texture packer

Ilustracioacuten 36 Texture packer El formato de salida de las textura sera png ya que necesitamos mantener el canal alpha deestas activado para los objetos sean correctamente dibujados en la escena del videojuego

Conjuntamente con la textura la aplicacioacuten nos generara un archivo de texto que contendraacute elnombre de la textura y la posicioacuten donde se encuentra dentro de la textura generada de1024x1024 Ver la siguiente ilustracioacuten en la siguiente paacutegina

Paacutegina 72 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 37 Posicioacuten texturas De esta manera podremos cargar las texturas en la fase inicializacioacuten en la clase Assets descritaen la ilustracioacuten 29 en forma de diagrama de clases

511 Implementacioacuten de las maacutequinas de estado

La implementacioacuten de las maacutequinas de estado se realiza con una estructura enumconjuntamente con una estructura switch case El siguiente listado muestra la declaracioacuten del laestructura enum implementada en la clase WorldGameController la implementacioacuten de todas lasmaacutequinas se realiza del mismo modo por tanto se toma esta como ejemplo en representacioacuten detodas las implementadas en el videojuego

Listado 5111

1 private enum GAME_STATE READYGAMEPAUSEGAME_OVER2 private GAME_STATE gameState34 gameState = GAME_STATEREADY

Paacutegina 73 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLa siguiente tabla muestra un trozo de la estructura switch case implementada en el meacutetodoupdate de la clase WorldGameController

Listado 5112

1 public void update(float deltaTime)2 3 switch(gameState)4 5 case READY6 if(audioReady) 7 AudioManagerinstancePlaySound(Assetsinstancesoundready 8 ConstantsVOLUME_AUDIO_EFFECTS)9 audioReady = false10 11 if(timeLeftShowReadyScreen gt 0)12 13 if(deltaTime lt 03f ) 14 timeLeftShowReadyScreen -=deltaTime15 16 if(timeLeftShowReadyScreen lt 0)17 18 gameScreensetVisibilityGUI()19 timeLeftShowReadyScreen = 020 CounterTimeinstancestartTime()21 22 AudioManagerinstancePlayMusic(Assetsinstancemusiclevel01 23 ConstantsVOLUME_MUSIC_GAME true)24 gameState = GAME_STATEGAME 2526 27 28 break 29 case GAME30 updateGame() 31 if(timeOpenDoorPen gt 0)32 33 if(deltaTime lt 03f ) 34 timeOpenDoorPen -= deltaTime35 36 if(timeOpenDoorPen lt= 0) 37 gameScreengetDoorPen()setVisibility(gameScreengetDoorPen()getVisibility())38

En este listado podemos ver el estado READY y un trozo del estado GAME de la maacutequina deestados definida en el apartado 231 de este documento inicialmente la maacutequina toma el estadoREADY como se puede ver en la linea 4 del listado 5111 este estado se ira repitiendo a cadavuelta del ciclo de vida del videojuego hasta que cambie el estado de juego a GAME estosucederaacute una vez transcurridos 3 segundos tal y como se puede ver en la linea 24 del listado5112 Hay que tener en cuenta que un videojuego tal y como se ha definido en el apartado 522de este documento forma un bucle infinito por tanto la funcioacuten update de la linea 1 de este listadose repetiraacute de forma indefinida durante la ejecucioacuten del nivel de juego y cada vuelta ejecutaraacute elestado en que se encuentre la maacutequina de estados

Paacutegina 74 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6Conclusiones El desarrollo del proyecto ha sido tal y como se esperaba en lineas generales no han habidograndes desviaciones de tiempo ni durante el disentildeo ni en el posterior desarrollo de este Cabedestacar que el hecho de poder probar el proyecto ejecutaacutendolo en la propia maacutequina donde se hadesarrollado sin tener que utilizar un dispositivo real o virtual cada vez que se ha querido verificarha hecho que el desarrollo sea mucho maacutes fluido que sino se hubiera contado con el escenariodescrito Esto no significa que en ciertos momentos del desarrollo no se haya probado con undispositivo real Android Dejando a parte la gran ventaja que esto significa ya que una vezdesarrollado el esfuerzo realizado nos sirve para distintas plataformas casi sin tener que tocarnada del coacutedigo

Por tanto el hecho de haber escogido libGDX para el desarrollo ha sido una buena eleccioacuten Estambieacuten una buena eleccioacuten escoger un framework o un motor focalizado al desarrollo devideojuegos si se quiere implementar uno ya sea para Android o para cualquier plataforma

Existe la posibilidad de desarrollarlo sin ninguacuten tipo de framework o motor pero hay que tenerclaro que se quiere hacer exactamente y a donde se quiere llegar es decir si lo que se quiere escentrarse en la programacioacuten de videojuegos es mucho mejor partir de un framework o motor yaque de esta forma nos desligamos de programar ciertos apartados que estaacuten maacutes focalizados a laprogramacioacuten de frameworks o motores para videojuegos que no a la programacioacuten devideojuegos en si

Yendo maacutes allaacute de donde el programador se quiere centrar existe otro factor importante a teneren cuenta en el momento de plantear un proyecto llamado tiempo con el tiempo de que se hadispuesto para este proyecto queda auacuten maacutes justificado la eleccioacuten de este framework pararealizarlo Ya que probablemente sin el debido al esfuerzo mayor en programar apartados que noson exclusivos del videojuego pudieran haber existido desviaciones de tiempo importantes enrelacioacuten al calendario propuesto

Ha quedado fuera del proyecto por temas de tiempo realizar animaciones a todos los personajesdel videojuego para conseguir una mejor experiencia de usuario y un nivel de acabado superiorFuera del proyecto tambieacuten ha quedado la implementacioacuten no solo de unas puntuacionesmaacuteximas a nivel local sino tambieacuten unas a nivel mundial consultables a traveacutes de una paacutegina webA su vez no solo guardariacutea la puntuacioacuten maacutexima sino tambieacuten el tiempo jugado las ovejassalvadas y los lobos ahuyentados Tambieacuten ha quedado fuera de este proyecto la realizacioacuten deun blog dedicado al videojuego Todos estos apartados se implementaran en breve fuera de esteTFC

7Recursos utilizados

71 Portada documento

Jake Maymar httpwwwflickrcomphotosmaymar5334789030httpcreativecommonsorglicensesby-sa20deeden

72 Recursos utilizados para el disentildeo del videojuego

Para realizar todo el disentildeo visual del videojuego se ha recurrido a diferentes fuentes de arte

Paacutegina 75 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriasujetas a licencias creative commons y dominio puacuteblico A continuacioacuten se detalla una lista decada recurso con su autor en el caso de que no haya sido publicado de forma anoacutenimajuntamente con el link donde se ha encontrado

721 Fotografiacutea pantalla intro videojuego y usuarios

Michael Karrerhttpwwwflickrcomphotosmichael_karrer78438470httpcreativecommonsorglicensesby-nc20deeden

Jodi Womackhttpwwwflickrcomphotosjodiwomack6217578512httpcreativecommonsorglicensesby20deeden

Tony Alterhttpwwwflickrcomphotos78428166N008279647916httpcreativecommonsorglicensesby20deeden

Gage Skidmore (Nina Dobrev)httpwwwflickrcomphotosgageskidmore5980906910httpcreativecommonsorglicensesby-sa20deeden

722 Iconos y botones

7221 Altavoz

Autor httpwwwiconshockcom Link httpswwwiconfindercomicons67771audio_speaker_iconsize=128Licencia Free for commercial use

7222 Nota Musical

Autor httpwwwdezinerfoliocomLink httpswwwiconfindercomicons58679music_iconsize=128Licencia Free for commercial use

7223 Flecha salida

Autorhttptayteldeviantartcom Linkhttpswwwiconfindercomicons41696arrow_back_grey_left_orange_iconsize=128LicenciaFree for commercial use (Include link to authors website) 7224 Icono de pausa

AutorhttpwwwwebdesignerdepotcomLink httpswwwiconfindercomicons40716blue_button_pause_iconsize=64Licencia Free for commercial use

7225 Icono interrogante (help)

AutorhttpwwwdoublejdesigncoukLinkhttpwwwiconarchivecomshowravenna-3d-icons-by-double-j-designHelp-iconhtml

Paacutegina 76 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLicencia httpcreativecommonsorglicensesby30

7226 Botones (Play Score Options)

AutorydLinkhttpopengameartorgcontentbuttons-variationsLicenciahttp creativecommonsorgpublicdomainzero10

723 Recursos graacuteficos 2D componentes escenario

7231 Ojos lobos

AutorCreek23Link httpopengameartorgcontentgnu-the-gnu-mascotLicencia httpcreativecommonsorglicensesby-sa30

7232 Ovejas y lobos

Autor lemmlingLink httpopenclipartorguser-clipartslemmlingLicencia httpopenclipartorgshare

7233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY

AutorSamLink httpopengameartorgcontentcountry-fieldLicencia httpcreativecommonsorgpublicdomainzero10

7234 Escenario

Daniel EddelandLinkhttpopengameartorgcontentlpc-farming-tilesets-magic-animations-and-ui-elementsLicenciahttpcreativecommonsorglicensesby-sa30

724 Fuentes

7241 ThinckheadAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10 7242 MisfortuneAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7243 TabaqueraAutor deFharoLink httpwwwdafontcomesfernando-harod3419l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7244 Press Start Font

Paacutegina 77 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAutor desconegutLink httpwwwzone38netfontpressstartLicencia httpscriptssilorgcmsscriptspagephpsite_id=nrsiampid=OFL

725 Otros

Todos los demaacutes recursos no nombrados en esta lista como el fondo de pantalla del menuacuteprincipal de inicio del juego y las letras del titulo del juego Fling the sheep impresas sobre lapantalla del menuacute inicial son de elaboracioacuten propia

726 Audio y efectos de sonido

7261 Menu

Autor mrpolyLinkhttpopengameartorgcontentmenu-musicLicencia httpcreativecommonsorgpublicdomainzero10

7262 Game Over

Autor MacroLinkhttpopengameartorgcontentrest-outro-loopLicenciahttpcreativecommonsorglicensesby30

7263 Game Play

AutorRezonerLinkhttpopengameartorgcontenttrance-menuLicenciahttpcreativecommonsorglicensesby30

7264 Creacutedits

Autor -Linkhttpopengameartorgcontent1-minute Licenciahttpcreativecommonsorgpublicdomainzero10

7265 Ready

httpopengameartorgcontentui-accept-or-forwardhttpcreativecommonsorglicensesby30

7266 Pause_Resume

httpopengameartorgcontentcompletion-sound httpcreativecommonsorglicensesby30

7267 Quit

httpopengameartorgcontentfly-swatter-squish-sound httpcreativecommonsorgpublicdomainzero10

7268 Sheep

Paacutegina 78 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

httpopengameartorgcontentsheep-sound-bleats-yo-frankiehttpcreativecommonsorglicensesby30

El resto de efectos de audio han sido obtenidos de la siguiente paacutegina httpwwwpond5com

8Lineas abiertas del proyecto Se haraacute un repaso del proyecto por si existe alguacuten bug para solucionarlo Posteriormente deadaptara para que sea funcional en distintas resoluciones de pantalla Se antildeadiraacuten los power-upsque se definieron al principio del proyecto por temas de tiempo han quedado fuera de la entregaA su vez se balanceara el gameplay antildeadiendo alguna mecaacutenica de juego extra si procede

Se publicara el juego en Google Play y se creara un blog del juego se mirara la posibilidad dehacer funcionar el juego en el blog con webGL httpprojects3cometcom

Se ampliara la tabla de puntuaciones de la siguiente manera la tabla no solamente guardara lospuntos tambieacuten guardara el tiempo jugado nuacutemero de lobos ahuyentados nuacutemero de ovejassalvadas y nombre del usuario con 5 caracteres Se creara un un registro de puntuaciones globalconsultable desde el blog del videojuego

Finalmente se crearan maacutes niveles de juego con distribuciones diferentes alguacuten nivel podriacuteatambieacuten tener mecaacutenicas diferentes de juego con los mismos personajeshellip

9Bibliografiacutea utilizada

Titulo Beginning Android Games (Second Edition) ISBN 978-1-43024-677-0

Autor Mario Zechner Robert Green

Editorial Apress

Contenido Desarrollo de videojuegos para Android

Titulo Learning libGDX Game Development ISBN 978-1-78216-604-7

Autor Andreas Oehlke

Editorial PACKT Publishing

Contenido Desarrollo de videojuegos para Android con libGDX

Paacutegina 79 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

10Otros proyectos realizados

101 Remake Gradius Konami

Remake del famoso shooter de Konami lanzado para ordenadores MSX en 1986 programadocon C++ con SDL Aunque este juego existe para multitud de plataformas Ver articulo wikipedia

httpeswikipediaorgwikiGradius_videojuego

Blog del proyecto httpprojects3cometcom

102 Tales of Nimria mini RPG

Mini RPG en 2D programado en C++ con DirectX este mini RPG trata de salvar a una princesacapturada por unas malvadas criaturas

Blog del proyecto httpprojects3cometcom

102 Motocalipsis Bar 66 RTS RTS en 3D con ambiente motero los hechos de la historia suceden en un pequentildeo pueblo deTexas Programado en Unity con C

Blog del proyecto httpmotocalipsisbar66blogspotcomes

Paacutegina 80 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Creative Commons 40 license by-nc-sa

Attribution-NonCommercial-ShareAlike 40 International

===========================================================

Creative Commons Corporation (Creative Commons) is not a law firm anddoes not provide legal services or legal advice Distribution ofCreative Commons public licenses does not create a lawyer-client orother relationship Creative Commons makes its licenses and relatedinformation available on an as-is basis Creative Commons gives nowarranties regarding its licenses any material licensed under theirterms and conditions or any related information Creative Commonsdisclaims all liability for damages resulting from their use to thefullest extent possible

Using Creative Commons Public Licenses

Creative Commons public licenses provide a standard set of terms andconditions that creators and other rights holders may use to shareoriginal works of authorship and other material subject to copyrightand certain other rights specified in the public license below Thefollowing considerations are for informational purposes only are notexhaustive and do not form part of our licenses

Considerations for licensors Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights Our licenses are irrevocable Licensors should read and understand the terms and conditions of the license they choose before applying it Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected Licensors should clearly mark any material not subject to the license This includes other CC- licensed material or material used under an exception or limitation to copyright More considerations for licensors wikicreativecommonsorgConsiderations_for_licensors

Considerations for the public By using one of our public licenses a licensor grants the public permission to use the licensed material under specified terms and conditions If the licensors permission is not necessary for any reason--for example because of any applicable exception or limitation to copyright--then that use is not regulated by the license Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant Use of

Paacutegina 81 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria the licensed material may still be restricted for other reasons including because others have copyright or other rights in the material A licensor may make special requests such as asking that all changes be marked or described Although not required by our licenses you are encouraged to respect those requests where reasonable More_considerations for the public wikicreativecommonsorgConsiderations_for_licensees

===========================================================

Creative Commons Attribution-NonCommercial-ShareAlike 40 InternationalPublic License

By exercising the Licensed Rights (defined below) You accept and agreeto be bound by the terms and conditions of this Creative CommonsAttribution-NonCommercial-ShareAlike 40 International Public License(Public License) To the extent this Public License may beinterpreted as a contract You are granted the Licensed Rights inconsideration of Your acceptance of these terms and conditions and theLicensor grants You such rights in consideration of benefits theLicensor receives from making the Licensed Material available underthese terms and conditions

Section 1 -- Definitions

a Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated altered arranged transformed or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor For purposes of this Public License where the Licensed Material is a musical work performance or sound recording Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image

b Adapters License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License

c BY-NC-SA Compatible License means a license listed at creativecommonsorgcompatiblelicenses approved by Creative Commons as essentially the equivalent of this Public License

d Copyright and Similar Rights means copyright andor similar rights closely related to copyright including without limitation performance broadcast sound recording and Sui Generis Database

Paacutegina 82 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Rights without regard to how the rights are labeled or categorized For purposes of this Public License the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights

e Effective Technological Measures means those measures that in the absence of proper authority may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20 1996 andor similar international agreements

f Exceptions and Limitations means fair use fair dealing andor any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material

g License Elements means the license attributes listed in the name of a Creative Commons Public License The License Elements of this Public License are Attribution NonCommercial and ShareAlike

h Licensed Material means the artistic or literary work database or other material to which the Licensor applied this Public License

i Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license

j Licensor means the individual(s) or entity(ies) granting rights under this Public License

k NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation For purposes of this Public License the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange

l Share means to provide material to the public by any means or process that requires permission under the Licensed Rights such as reproduction public display public performance distribution dissemination communication or importation and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them

Paacutegina 83 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria m Sui Generis Database Rights means rights other than copyright resulting from Directive 969EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases as amended andor succeeded as well as other essentially equivalent rights anywhere in the world

n You means the individual or entity exercising the Licensed Rights under this Public License Your has a corresponding meaning

Section 2 -- Scope

a License grant

1 Subject to the terms and conditions of this Public License the Licensor hereby grants You a worldwide royalty-free non-sublicensable non-exclusive irrevocable license to exercise the Licensed Rights in the Licensed Material to

a reproduce and Share the Licensed Material in whole or in part for NonCommercial purposes only and

b produce reproduce and Share Adapted Material for NonCommercial purposes only

2 Exceptions and Limitations For the avoidance of doubt where Exceptions and Limitations apply to Your use this Public License does not apply and You do not need to comply with its terms and conditions

3 Term The term of this Public License is specified in Section 6(a)

4 Media and formats technical modifications allowed The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created and to make technical modifications necessary to do so The Licensor waives andor agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights including technical modifications necessary to circumvent Effective Technological Measures For purposes of this Public License simply making modifications authorized by this Section 2(a) (4) never produces Adapted Material

5 Downstream recipients

a Offer from the Licensor -- Licensed Material Every recipient of the Licensed Material automatically

Paacutegina 84 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License

b Additional offer from the Licensor -- Adapted Material Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapters License You apply

c No downstream restrictions You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material

6 No endorsement Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are or that Your use of the Licensed Material is connected with or sponsored endorsed or granted official status by the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i)

b Other rights

1 Moral rights such as the right of integrity are not licensed under this Public License nor are publicity privacy andor other similar personality rights however to the extent possible the Licensor waives andor agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights but not otherwise

2 Patent and trademark rights are not licensed under this Public License

3 To the extent possible the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme In all other cases the Licensor expressly reserves any right to collect such royalties including when the Licensed Material is used other than for NonCommercial purposes

Paacutegina 85 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 3 -- License Conditions

Your exercise of the Licensed Rights is expressly made subject to thefollowing conditions

a Attribution

1 If You Share the Licensed Material (including in modified form) You must

a retain the following if it is supplied by the Licensor with the Licensed Material

i identification of the creator(s) of the Licensed Material and any others designated to receive attribution in any reasonable manner requested by the Licensor (including by pseudonym if designated)

ii a copyright notice

iii a notice that refers to this Public License

iv a notice that refers to the disclaimer of warranties

v a URI or hyperlink to the Licensed Material to the extent reasonably practicable

b indicate if You modified the Licensed Material and retain an indication of any previous modifications and

c indicate the Licensed Material is licensed under this Public License and include the text of or the URI or hyperlink to this Public License

2 You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium means and context in which You Share the Licensed Material For example it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information 3 If requested by the Licensor You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable

Paacutegina 86 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria b ShareAlike

In addition to the conditions in Section 3(a) if You Share Adapted Material You produce the following conditions also apply

1 The Adapters License You apply must be a Creative Commons license with the same License Elements this version or later or a BY-NC-SA Compatible License

2 You must include the text of or the URI or hyperlink to the Adapters License You apply You may satisfy this condition in any reasonable manner based on the medium means and context in which You Share Adapted Material

3 You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to Adapted Material that restrict exercise of the rights granted under the Adapters License You apply

Section 4 -- Sui Generis Database Rights

Where the Licensed Rights include Sui Generis Database Rights thatapply to Your use of the Licensed Material

a for the avoidance of doubt Section 2(a)(1) grants You the right to extract reuse reproduce and Share all or a substantial portion of the contents of the database for NonCommercial purposes only

b if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material including for purposes of Section 3(b) and

c You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database

For the avoidance of doubt this Section 4 supplements and does notreplace Your obligations under this Public License where the LicensedRights include other Copyright and Similar Rights

Paacutegina 87 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 5 -- Disclaimer of Warranties and Limitation of Liability

a UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR TO THE EXTENT POSSIBLE THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL WHETHER EXPRESS IMPLIED STATUTORY OR OTHER THIS INCLUDES WITHOUT LIMITATION WARRANTIES OF TITLE MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE NON-INFRINGEMENT ABSENCE OF LATENT OR OTHER DEFECTS ACCURACY OR THE PRESENCE OR ABSENCE OF ERRORS WHETHER OR NOT KNOWN OR DISCOVERABLE WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART THIS DISCLAIMER MAY NOT APPLY TO YOU

b TO THE EXTENT POSSIBLE IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING WITHOUT LIMITATION NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT SPECIAL INDIRECT INCIDENTAL CONSEQUENTIAL PUNITIVE EXEMPLARY OR OTHER LOSSES COSTS EXPENSES OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES COSTS EXPENSES OR DAMAGES WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART THIS LIMITATION MAY NOT APPLY TO YOU

c The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that to the extent possible most closely approximates an absolute disclaimer and waiver of all liability

Section 6 -- Term and Termination

a This Public License applies for the term of the Copyright and Similar Rights licensed here However if You fail to comply with this Public License then Your rights under this Public License terminate automatically

b Where Your right to use the Licensed Material has terminated under Section 6(a) it reinstates

1 automatically as of the date the violation is cured provided it is cured within 30 days of Your discovery of the violation or

2 upon express reinstatement by the Licensor

For the avoidance of doubt this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License

Paacutegina 88 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

c For the avoidance of doubt the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time however doing so will not terminate this Public License

d Sections 1 5 6 7 and 8 survive termination of this Public License

Section 7 -- Other Terms and Conditions

a The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed

b Any arrangements understandings or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License

Section 8 -- Interpretation

a For the avoidance of doubt this Public License does not and shall not be interpreted to reduce limit restrict or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License

b To the extent possible if any provision of this Public License is deemed unenforceable it shall be automatically reformed to the minimum extent necessary to make it enforceable If the provision cannot be reformed it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions

c No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor

d Nothing in this Public License constitutes or may be interpreted as a limitation upon or waiver of any privileges and immunities that apply to the Licensor or You including from the legal processes of any jurisdiction or authority

===========================================================

Paacutegina 89 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaCreative Commons is not a party to its public licensesNotwithstanding Creative Commons may elect to apply one of its publiclicenses to material it publishes and in those instances will beconsidered the Licensor Except for the limited purpose of indicatingthat material is shared under a Creative Commons public license or asotherwise permitted by the Creative Commons policies published atcreativecommonsorgpolicies Creative Commons does not authorize theuse of the trademark Creative Commons or any other trademark or logoof Creative Commons without its prior written consent includingwithout limitation in connection with any unauthorized modificationsto any of its public licenses or any other arrangementsunderstandings or agreements concerning use of licensed material Forthe avoidance of doubt this paragraph does not form part of the publiclicenses

Creative Commons may be contacted at creativecommonsorg

Paacutegina 90 de 102

Page 5: Universitat Oberta de Catalunya UOC Ingeniería técnica en

Resumen

Android es un sistema operativo con nuacutecleo monoliacutetico basado en el kernel de Linux version 26que fue lanzado al mercado el 23 de septiembre de 2008 Disentildeado principalmente paradispositivos moacuteviles con pantalla taacutectil como pueden ser Smartphones o tabletas Esta disponiblegratuitamente para un uso comercial o no comercial El nuacutecleo esta escrito en C algunas de laslibreriacuteas de terceros estaacuten escritas en C++ y su interfaz de usuario esta escrita en Java Soportadistintas estructuras de procesador entre ellas ARM x86 MIPS y IBM POWER no obstante laarquitectura utilizada mayoritariamente son los procesadores ARM Esta publicado bajo la licenciaApache 20 y GNU GPL2 En el momento de escribir este documento su versioacuten actual es la Android 43 Jelly Bean(Gominola) y se encuentra en permanente desarrollo El primer moacutevil con Android fue el HTCDream que se comercializo por primera vez en Octubre de 2008

Android fue desarrollado inicialmente por la compantildeiacutea Android Inc esta estuvo financiada porGoogle durante un tiempo hasta que la compantildeiacutea fue adquirida por la multinacionalestadounidense en julio de 2005 Google queriacutea tener presencia en el mercado de los dispositivosmoacuteviles Android fue presentado en 2007 conjuntamente con la fundacioacuten Open Handset AllianceEsta entidad actualmente es un consorcio de 78 compantildeiacuteas de hardware software ytelecomunicaciones dedicadas al desarrollo de estaacutendares abiertos para dispositivos moacutevilesliderada por Google La multinacional estadounidense es el principal desarrollador de Android yaporta el ecosistema necesario para el crecimiento de este No obstante todos los miembros delconsorcio contribuyen de distintas maneras al desarrollo

En el antildeo 2008 salio a la luz la versioacuten 10 de Android En el momento de su aparicioacuten tubo queenfrentarse a las distintas plataformas ya existentes en aquel momento iPhone OS queactualmente es conocido como iOS BlackBerry OS y Windows Phone 7 El crecimiento deAndroid a sido espectacular en estos uacuteltimos antildeos a nivel mundial alcanzoacute una cuota de mercadodel 509 durante el uacuteltimo trimestre de 2011 esto represento maacutes del doble que el sistemaoperativo iOS de Apple Actualmente su cuota de mercado se situacutea en el 744 seguacuten un estudiorealizado por la empresa Gartner Ver la siguiente tabla

El hecho de que Android sea de coacutedigo abierto permite a los fabricantes comercializardispositivos de distintas gamas y precios adaptando ellos mismos el sistema operativo seguacuten lasnecesidades de cada modelo De esta forma se consigue un alcance mayor a distintos niveles depublico esto seria uno de los motivos que ha causado en estos uacuteltimos antildeos el crecimientoespectacular de cuota de mercado llegando casi al 75 actualmente a nivel mundial

Android a sufrido numerosas actualizaciones desde su liberacioacuten cada versioacuten liberada se le ha

dado un nombre de postres en ingles por orden alfabeacutetico

En la siguiente tabla se enumeran las distintas versiones salidas a la luz desde su lanzamientoinicial en el antildeo 2008

Letra Nombre del Postre - Versioacuten

A Apple Pie (v10) Tarta de manzana

B Banana Bread (v11) Pan de plaacutetano

C Cupcake (v15) Panque

D Donut (v16) Rosquilla

E Eacuteclair (v20v21) Pastel franceacutes

F Froyo (v22) (Abreviatura de laquofrozen yogurtraquo) Yogur helado

G Gingerbread (v23) Pan de jengibre

H Honeycomb (v30v31v32) Panal de miel

I Ice Cream Sandwich (v40) Saacutendwich de helado

J Jelly BeanGummy Bear (v41v42v43) Gominola (versioacuten actual)

K KitKat (v44) Kit Kat (versioacuten en desarrollo)

Iacutendice de contenidos1Introduccioacuten1

11 Justificacioacuten y contexto del proyecto112 Descripcioacuten del Proyecto113 Objetivos2

131 Definicioacuten del videojuego 214 Planificacioacuten4

141 Ciclo de vida4142 Planificacioacuten detallada del proyecto4

1411 Anaacutelisis previo planificacioacuten41412 Anaacutelisis de requisitos51413 Disentildeo51414 Implementacioacuten y pruebas61415 Finalizacioacuten6

143 Temporalizacioacuten del proyecto 715 Herramientas y tecnologiacuteas utilizadas916 Riesgos del proyecto10

2 Anaacutelisis funcional1121 Requisitos funcionales casos de uso11

211 Diagrama casos de uso actor ldquoJugadorrdquo11212 Tabla resumen casos de uso12213 Descripcioacuten textual de los casos de uso12

2131 VJ01 Inicio videojuego 122132 VJ02 Jugar 132133 VJ03 Acceder puntuaciones maacuteximas locales 132134 VJ31 Consultar puntuaciones locales 142135 VJ32 Salir puntuaciones locales 142136 VJ04 Acceder a las opciones 152137 VJ41 Activar o desactivar muacutesica o efectos 152138 VJ42 Acceder a la pantalla de creacuteditos 162139 VJ421 Salir de la pantalla de creacuteditos 1621310 VJ05 Acceder a las instrucciones 1721311 VJ51 Salir de las instrucciones 1721312 VJ06 Salir del videojuego 18

214 Diagrama casos de uso actor ldquoIArdquo192141 Diagrama casos de uso IA personaje principal (oveja)19

21411 Tabla resumen casos de uso2021412 Descripcioacuten textual de los casos de uso20

214121 IA03 Salida ovejas al escenario 20214122 IA031 Posicionamiento en pantalla de las oveja 20214123 IA032 Movimiento oveja 21214124 IA033 Oveja pastando21214125 IA034 Lanzamiento oveja22214126 IA035 Rebotes de la oveja 22214127 IA036 La oveja entra en el establo 23214128 IA037 Parar oveja 23

2142 Diagrama casos de uso IA enemigos (lobo)2421421 Tabla resumen casos de uso2421422 Descripcioacuten textual de los casos de uso25

214221 IA02 Salida lobo al escenario 25

i

214222 IA021 Ojos por la derecha o por la izquierda25214223 IA022 Escoge el tipo de lobo26214224 IA023 Lobo por la derecha o por la izquierda26214225 IA024 Salta a escena27214226 IA025 Movimiento lobo27

22 Disentildeo inicial diagrama de clases28221 Diagrama de clases inicial ldquoFling the sheeprdquo 28

2211 Resumen clases videojuego28222 Diagrama de clases inicial de pantallas30

2221 Resumen clases pantallas3023 Definicioacuten de maacutequinas de estado finitas31

231 Maacutequina de estados del videojuego 31232 Maacutequina de estados comportamiento oveja32233 Maacutequina de estados comportamiento lobo33234 Maacutequina de estados tutorial in game34

3 Disentildeo3531 Estudio comparativo35

311 Sheep amp Wolf36312 Sheep Up 37313 Temple Run38314 Attack of the Spooklings39

32 Perfiles de usuarios identificados4033 Contextos de uso42

331 iquest Doacutende 42332 iquest Cuaacutendo 42333 iquest En que entorno 42

4Disentildeo y ldquoConcept Artrdquo4241 Elementos presentes en la interfaz de la aplicacioacuten4242 Flujos de interaccioacuten4343 Prototipaje44

431 Sketches44432 Transiciones definidas entre pantallas47433 Prototipo horizontal de alta fidelidad 48

4331 Pantalla inicial484332 Pantalla menuacute principal del juego484333 Pantalla de opciones494334 Pantalla de creacuteditos494335 Pantalla tabla de puntuaciones504336 Pantalla de juego READY 504337 Pantalla de juego514338 Pantalla de pausa botones RESUME y QUIT524339 Pantalla GAME OVER5243310 Pantalla de instrucciones de juego HOW TO PLAY5343311 Pantalla de instrucciones in game 53

5Implementacioacuten5551 Arquitectura global55

511 Arquitectura del framework libGDX55512 Visioacuten de los moacutedulos de libGDX55

52 Arquitectura de un videojuego56521 Programa vs Aplicacioacuten56

ii

522 Estructura baacutesica de un videojuego5653 Esquema de la estructura baacutesica de un videojuego5854 Patrones de disentildeo59

541 Introduccioacuten59542 Patrones de creacioacuten59543 Singleton59

55 Diagramas de clases definitivos6156 Diagramas nuacutecleo videojuego 6157 Diagrama de clases objetos videojuego6458 Diagrama de clases pantallas videojuego6759 Configurar el entorno de desarrollo69

591 Instalacioacuten 69510 Traspaso del disentildeo a texturas 71511 Implementacioacuten de las maacutequinas de estado 73

6Conclusiones757Recursos utilizados 75

71 Portada documento 7572 Recursos utilizados para el disentildeo del videojuego 75

721 Fotografiacutea pantalla intro videojuego y usuarios 76722 Iconos y botones76

7221 Altavoz767222 Nota Musical767223 Flecha salida767224 Icono de pausa767225 Icono interrogante (help)767226 Botones (Play Score Options)77

723 Recursos graacuteficos 2D componentes escenario777231 Ojos lobos777232 Ovejas y lobos777233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY777234 Escenario77

724 Fuentes777241 Thinckhead777242 Misfortune777243 Tabaquera777244 Press Start Font77

725 Otros78726 Audio y efectos de sonido78

7261 Menu 787262 Game Over787263 Game Play787264 Creacutedits787265 Ready787266 Pause_Resume787267 Quit787268 Sheep78

8Lineas abiertas del proyecto799Bibliografiacutea utilizada 7910Otros proyectos realizados80

101 Remake Gradius Konami80

iii

102 Tales of Nimria mini RPG80102 Motocalipsis Bar 66 RTS80

Creative Commons 40 license by-nc-sa81

Iacutendice de ilustracionesilustracioacuten 1 Ciclo de vida en cascada4ilustracioacuten 11 Calendario proyecto7ilustracioacuten 2 Diagrama de gantt8ilustracioacuten 3 Diagrama de casos de usos actor jugador11ilustracioacuten 4 Diagrama de casos de usos personaje principal19ilustracioacuten 5 Diagrama de casos de usos enemigos24ilustracioacuten 6 Diagrama de clases videojuego28ilustracioacuten 7 Diagrama de clases de pantallas30ilustracioacuten 8 Maacutequina de estados del videojuego 31ilustracioacuten 9 Maacutequina de estados comportamiento oveja 32ilustracioacuten 10 Maacutequina de estados comportamiento lobo 33ilustracioacuten 11 Maacutequina de estados tutorial in game 34ilustraciones 12 y 13 pantallas juego Sheep amp Wolf 36ilustraciones 14 y 15 pantallas juego Sheep Up 37ilustraciones 16 y 17 pantallas juego Temple run38ilustraciones 18 y 19 pantallas juego Attack of the Spooklings39ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitas41ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintas pantallas43ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada44ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada45ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada46ilustracioacuten 241 Transiciones definidas entre pantallas47ilustracioacuten 242 Disentildeo pantallas con Gimp54ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en un videojuego55ilustracioacuten 26 Estructura baacutesica de un videojuego 58ilustracioacuten 27 Singleton59ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego 63ilustracioacuten 29 Diagrama de clases Assets 64ilustracioacuten 30 Diagrama de clases objetos 66ilustracioacuten 31 Diagrama de clases pantallas 68ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse69ilustracioacuten 33 Creacioacuten proyecto libGDX70ilustracioacuten 34 Creacioacuten proyecto libGDX70ilustracioacuten 35 Capas separadas por imaacutegenes71Ilustracioacuten 36 Texture packer 72ilustracioacuten 37 Posicioacuten texturas 73

iv

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

1Introduccioacuten

11 Justificacioacuten y contexto del proyecto

Este trabajo de fin de carrera en adelante TFC se centra en el desarrollo de aplicaciones paradispositivos moacuteviles con sistema operativo Android Actualmente existen multitud de aplicacionesNo obstante este TFC se quiere centrar en un subconjunto de aplicaciones focalizadas alentretenimiento conocidas por todo el mundo como videojuegos

Un videojuego es un software creado para el entretenimiento en general y basado en lainteraccioacuten entre una o varias personas y un aparato electroacutenico que ejecuta dicho videojuego Asiacutepues un videojuego es considerado un software cuyo fin directo es el entretenimiento

En estos uacuteltimos antildeos los smartphones y tabletas se han convertido en las nuevas plataformasmoacuteviles para juegos que compiten con los sistemas portaacutetiles claacutesicos que generalmente tienden aser maacutes cerrados

Los videojuegos se pueden clasificar en distintos geacuteneros estos son una forma de clasificacioacutenque designan un conjunto de videojuegos que poseen una serie de elementos comunes A lo largode la historia de los videojuegos aquellos elementos que han compartido varios de los mismos hanservido para clasificar como un geacutenero a aquellos que les han seguido en estilo y forma de lamisma manera que ha pasado con la muacutesica o el cine Como ejemplo se enumeran algunos de losgeacuteneros maacutes populares Lucha Disparos conocidos como Shooters Sigilo Plataformas ArcadeDeporte etc

Durante mucho tiempo los videojuegos estuvieron reservados para un tipo de usuario muyconcreto con un perfil muy especiacutefico la gran mayoriacutea eran hombres entre 15 y 25 antildeos Saliendode este perfil si se buscaban mujeres o personas mayores de 25 antildeos el nuacutemero de usuarioscaiacutea en picado y es que los videojuegos eran percibidos como el hobby de los adolescentesmasculinos No obstante en los uacuteltimos antildeos se ha visto coacutemo todo esto ha ido cambiando con unaumento tanto del puacuteblico femenino como la aparicioacuten en escena de usuarios con edades maacutesavanzadas

Este cambio ha venido motivado por diferentes motivos evolutivos dentro de la industria delvideojuego Uno de los motivos que ha provocado esto es la aparicioacuten de los teleacutefonos moacutevilesinteligentes tabletas y juegos online junto con gran cantidad de videojuegos de tipo casual Otroclaro motivo es que la mayoriacutea de los que jugaacutebamos hace 25 antildeos pues hoy seguimos jugandoya que hemos crecido con esta cultura y claro esta que a diacutea de hoy ya no tenemos la edad deentonces

12 Descripcioacuten del Proyecto Este proyecto se quiere centrar en el desarrollo de un videojuego de tipo casual para moacutevilesAndroid Estos son un tipo de videojuegos dirigidos a un puacuteblico de jugadores casuales Losvideojuegos casuales pueden tener cualquier tipo de mecaacutenica de juego y ser clasificados dentrode cualquier otro geacutenero Son diferenciados por sus reglas simples y de no requerir un excesivocompromiso en contraste con la mayoriacutea de juegos maacutes complejos No requieren una dedicacioacutende tiempo a largo plazo o habilidades especiales para jugar

Paacutegina 1 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Durante la realizacioacuten del proyecto se realizara el disentildeo del juego por disentildeo se entienderealizar un documento que defina el juego de forma generalizada mecaacutenicas personajes etceste documento es conocido como el ldquogame designrdquo el disentildeo de arte conocido como ldquoConcepartrdquo engloba todo lo relacionado con el aspecto graacutefico del juego estilos de personajes estilos degraacuteficos etc Finalmente se realizara el anaacutelisis disentildeo e implementacioacuten de laaplicacioacuten(videojuego) con las tecnologiacuteas escogidas para este proyecto

13 Objetivos

El objetivo principal de este TFC es adquirir experiencia en el desarrollo de videojuegos paraAndroid Sin embargo yendo maacutes allaacute de la plataforma tambieacuten existe un intereacutes por ampliarconocimientos en cuanto a programacioacuten y disentildeo de videojuegos en general

En cuanto al disentildeo y desarrollo del videojuego se pretende realizar un casual game con lassiguientes caracteriacutesticas

El juego consistiraacute en conducir unas ovejas descarriadas a su corral eacutestas con nuestra ayudadeberaacuten sortear los peligros que iraacuten apareciendo durante el camino hacia el deseado corral Elprincipal peligro que amenaza las ovejas son unos lobos malvados que quieren comeacuterselas Elvideojuego soacutelo dispondraacute de una uacutenica modalidad de juego para un uacutenico jugador Al tratarse deun juego casual el publico objetivo es muy amplio Se pretende conseguir un ldquolook amp feelrdquo conesteacutetica tipo cartoon en clave de humor El juego sera desarrollado en 2D con perspectiva cenital

131 Definicioacuten del videojuego

El nivel se describe como una pantalla estaacutetica con vista cenital en posicioacuten vertical Con estaacuteticase entiende que no hay ninguacuten tipo de scroll que haga desplazar la pantalla Siempre veremos lomismo

En la parte de arriba del todo apareceraacute un corral con una puerta la puerta se iraacute abriendo ycerrando de forma aleatoria Por los extremos de la pantalla habraacute arbustos que representaran loslimites del bosque De estos limites iraacuten saliendo lobos a la escena que se querraacuten comer a laspobres ovejas Estas ovejas permaneceraacuten en la parte de abajo de la pantalla e iraacuten saliendo a laescena ellas solas sin saber demasiado donde van(son ovejas descarriadas) nuestra misioacutenconsistiraacute en tirarlas hacia el corral para salvarlas de los malvados lobos metiendolas por lapuerta en los momentos que este abierta para lanzarlas tendremos que deslizar el dedo encimade ellas para darles impulso hacia el corral si no acertamos en meter la oveja en la puerta estarebotara como si de un pelota se tratase Los lobos iraacuten saliendo para sacarnos los lobos deencima deberemos deslizar nuestro dedo encima de ellos o tocarlos para ahuyentarlos De lobos habraacute de diferentes colores marrones grises y azulados Cada lobo loahuyentaremos de manera distinta

bull Marrones 1 pulsacioacuten o deslizar 1 vez el dedo sobre el lobobull Grises 2 pulsaciones o deslizar 2 veces el dedo sobre el lobobull Azulados 3 pulsaciones o deslizar 3 veces el dedo sobre el lobo

A parte de impedir que se coman las ovejas que estaacuten en camino hacia el corral tambieacutentendremos que evitar que los lobos lleguen a la parte de abajo donde estaacute el grupo de ovejas yaque esto nos haraacute perder vidas el juego inicialmente empezara con 3 vidas pudiendo alcanzar unmaacuteximo de 6 vidas en total cada 10000 puntos obtendremos un vida extra

Paacutegina 2 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Conforme el juego se va desarrollando eacuteste iraacute acumulando

bull Puntosbull Tiempo jugadobull Numero de lobos ahuyentadosbull Ovejas colocadas en el corral

Se tratara pues de ir mejorando nuestro propio reacutecord partida tras partida El juego iraacuteaumentando de dificultad durante el transcurso de la partida

Como apunte final el juego recibe el nombre de ldquoFling the sheeprdquo que traducido al espantildeolvendriacutea a ser algo como ldquolanzar las ovejasrdquo

Paacutegina 3 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

14 Planificacioacuten

141 Ciclo de vida

Un videojuego no deja de ser un proyecto de software por tanto para la realizacioacuten de esteproyecto se ha tomado como base el ciclo de vida claacutesico de cualquier proyecto de softwaremodificado ligeramente a las necesidades del proyecto Este ciclo de vida que tambieacuten sedenomina ciclo de vida en cascada se compone de las siguientes etapas

ilustracioacuten 1 Ciclo de vida en cascada

142 Planificacioacuten detallada del proyecto

En los siguientes apartados se recogen por cada etapa que compone el ciclo de vida las principales actividades realizadas con el objetivo de alcanzar el producto deseado dentro delos plazos definidos

1411 Anaacutelisis previo planificacioacuten

En este punto se ha abordado la visioacuten global del proyecto comprendida en establecer lospuntos iniciales necesarios para crear una planificacioacuten de tareas en funcioacuten de las actividades arealizar

Actividad Descripcioacuten

Disentildeo conceptual del videojuego Mecaacutenicas del videojuego

Definicioacuten de las tecnologiacuteas Tecnologiacuteas que se utilizaran en el desarrollo delvideojuego

Anaacutelisis de riesgos Posibles riesgos del proyecto

Planificacioacuten del proyecto Crear una planificacioacuten adaptada a los plazos de entregade este TFC

Paacutegina 4 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Redaccioacuten del documento Generacioacuten del plan de trabajo

Entrega de la PEC1 Entrega del documento

1412 Anaacutelisis de requisitos

En esta fase se ha detallado que necesidades debe cubrir el videojuego tanto desde un puntode vista funcional como desde un punto de vista arquitectoacutenico de la aplicacioacuten a disentildear se hadisentildeado un modelo troncal de clases para posteriormente desarrollar en base a estas todo elvideojuego No obstante en ninguacuten caso se ha entrado en detalle en las tecnologiacuteas a utilizar yadefinidas previamente

Actividad Descripcioacuten

Especificacioacuten de requisitos funcionales Definicioacuten de casos de usos

Disentildeo baacutesico estructura aplicacioacuten Diagrama baacutesico de clases

Especificacioacuten de requisitos funcionales Definicioacuten de maacutequinas de estado

1413 Disentildeo

En este apartado teniendo en cuenta que en este proyecto se va a desarrollar un videojuego seha realizado la recopilacioacuten conceptual de arte conjuntamente con el disentildeo de todas laspantallas que intervienen en el Conjuntamente con la seleccioacuten de los tipos de fuente que seutilizaran para el videojuego seleccioacuten de personajes y enemigos

Actividad Descripcioacuten

Definicioacuten de usuarios y contexto de uso delvideojuego

Conocer las caracteriacutesticas de los usuarios susnecesidades y objetivos asiacute como los contextosde uso

Disentildeo conceptual Un escenario de uso describe desde el puntode vista del usuario como seraacute utilizado unproducto determinado (es este caso unvideojuego) en un escenario determinado

Seleccioacuten de arte Seleccioacuten de arte ya hecho con licencias libresya que no se disponen de conocimientos dearte para abordar el disentildeo

Seleccioacuten de fuentes Seleccioacuten de los tipos de fuente adecuadospara el disentildeo del videojuego

Seleccioacuten de personajes y enemigos Seleccioacuten de personajes y enemigosdisponibles en la red con licencias libres ya queno se disponen de conocimientos de arte paraabordar el disentildeo

Disentildeo de pantallas que intervienen(prototipo) Con todo el arte fuentes y personajes serealizara el disentildeo de todas las pantallas queintervienen en el juego Realizacioacuten de unboceto a mano alzada Sketches y prototipo dealta fidelidad

Redaccioacuten del documento Generacioacuten del documento de disentildeo

Paacutegina 5 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Entrega de la PEC2 Entrega del documento

1414 Implementacioacuten y pruebas

En este punto se ha desarrollado la implementacioacuten del videojuego partiendo de todas lasdefiniciones de los apartados anteriores y las verificaciones oportunas para asegurar el correctofuncionamiento del videojuego

Actividad Descripcioacuten

Implementacioacuten de navegables y contenidos Implementacioacuten de la estructura de todas lapantallas del video juego y la navegabilidadentre ellas y las funciones principales de cadauna de ellas

Implementacioacuten del gameplay Implementacioacuten de la logica de juego

Implementacioacuten de sonido y efectos Implementacioacuten de los efectos de sonido y lamusica

Version alpha del videojuego En este punto se dispone de un videojuegofuncional listo para ser revisado y refinado

Pruebas y refinamiento de la implementacioacuten Pruebas y correcioacutenes de posibles errores

Preparacioacuten del paquete entregable y laredaccioacuten del documento

Testeo final y preparacioacuten del apk a entregarmas la redaccioacuten del documento estrutural delaplicacioacuten

Entrega de la PEC3 Entrega del documento

1415 Finalizacioacuten

En un proyecto de software esta parte quedariacutea focalizada en la fase de implantacioacuten y puesta enmarcha Sin embargo al tratarse de un videojuego esta fase quedariacutea focalizada en la fase delanzamiento del producto No obstante en este caso se ha utilizado para documentar todo eltrabajo realizado a lo largo de este TFC

Actividad Descripcioacuten

Redaccioacuten memoria final proyecto Redaccioacuten memoria final

Montaje presentacioacuten diapositivas Montaje presentacioacuten diapositivas

Montaje del video final presentacioacuten proyecto Montaje del video final presentacioacuten proyecto

Entrega final Entega final

Paacutegina 6 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria143 Temporalizacioacuten del proyecto

La siguiente ilustracioacuten muestra el calendario definido para el proyecto

ilustracioacuten 11 Calendario proyecto

Paacutegina 7 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

En la siguiente pagina se muestra una ilustracioacuten del diagrama de gantt correspondiente alcalendario mostrado en la ilustracioacuten 1

ilustracioacuten 2 Diagrama de gantt

Paacutegina 8 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

15 Herramientas y tecnologiacuteas utilizadas

Actualmente existen varios frameworks para desarrollar videojuegos sobre plataformas moacutevilesSe ha hecho un anaacutelisis comparativo preliminar entre Cocos2D-android1 Cocos2D-x y libGDXaunque existen otros estos tres son los maacutes nombrados y utilizados

Cocos2d-android1 Es un framework en Java basado en la versioacuten de cocos2d-android queesta basado en la versioacuten de cocos2d para iphone Este framework permite el desarrollo devideojuegos en 2D y se programa en Java en lugar de objective-c Para la versioacuten Cocos2d deiphone Actualmente este framework no parece tener mucha continuidad por parte de lacomunidad de desarrolladores aunque no estaacute discontinuado del todo

Cocos2D-x Es un framework en C++ multi-plataforma permite desarrollar para diferentesplataformas a la vez con el mismo coacutedigo Android iOS Bada Marmalade Windows Linux etcSin embargo aunque es un framework con una comunidad muy activa su documentacioacuten esbastante mejorable Se programa en C++ y es posible trabajar con distintos entornos de desarrollocomo Visual Studio o Eclipse El proceso de depuracioacuten con eclipse es algo complejo con C++JNIcon varios pasos a seguir para poder depurar A la vez su configuracioacuten en el entorno Eclipse noes trivial Finalmente tiene relativamente todaviacutea poco tiempo de vida

LibGDX Es un framework escrito en Java sobre C++ ya que las partes criacuteticas estaacuten escritascon coacutedigo nativo para conseguir el mejor rendimiento posible Tiene una comunidad dedesarrolladores muy activa y una documentacioacuten muy extensa Se programa con Java y permite ladepuracioacuten ejecutando la aplicacioacuten en el escritorio de la maacutequina sin tener que pasar por undispositivo real o uno virtual En caso de que se quiera probar en un dispositivo real es posiblehacerlo sin ninguacuten cambio sobre el coacutedigo Este hecho hace que el desarrollo sea maacutes fluidoTiene un rendimiento bastante alto ante cocos2d-x y otros frameworks existentes para eldesarrollo de videojuegos

Todo lo expuesto anteriormente provoca una inclinacioacuten definitiva a utilizar libGDX paraimplementar el videojuego Asiacute pues el videojuego seraacute escrito en Java utilizando el IDE Eclipseque es el soportado oficialmente para Android utilizando el framework libGDX

Para la realizacioacuten de este proyecto se han utilizado las siguientes herramientas

bull Planificacioacuten proyecto

Microsoft Project Professional 2010

bull Disentildeo

Gimp 28 Inkscape 048 TexturePacker 320 Microsoft Visio Professional 2010

bull Programacioacuten

Entorno de desarrollo Eclipse 421 Juno Android develompment tools ADT Android SDK

Paacutegina 9 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Framework libGDX 098 ObjectAid herramienta de visualizacioacuten de coacutedigo en UML para Eclipse Control de versiones Git utilizando como plataforma GitHub

bull Edicioacuten de audio

Audacity 203 GoldWave 569

bull Redaccioacuten de documentos

OpenOffice 401

bull Edicioacuten de viacutedeo

Adobe Premiere Pro CS55

16 Riesgos del proyecto

Se parte de una experiencia previa en desarrollo de videojuegos ver apartado 9 otros proyectosrealizados al final de este documento Aunque no se dispone de experiencia con la libreriacuteaescogida ni tampoco con programacioacuten sobre Android A nivel teacutecnico no se preveacute que puedansurgir muchos riesgos en liacuteneas generales No obstante existe la posibilidad de gastar maacutestiempo del previsto consultando documentacioacuten para lograr los objetivos establecidos

Existe un riesgo maacutes alto a nivel artiacutestico ya que no se dispone de ninguacuten conocimiento de artede ninguacuten tipo Por lo tanto muy probablemente a nivel artiacutestico el juego sea un poco justo Es poreste motivo que durante la realizacioacuten de este proyecto no se va a profundizar en temas de disentildeoartiacutestico en su lugar se utilizaran recursos de arte existentes en la red con licencias libres tipocreative commons o dominio puacuteblico Al final de este documento en el apartado 6 se puede ver unlistado de los recursos utilizados juntamente con un link a la obra y el nombre del autor si esteesta disponible Se haraacute una seleccioacuten de distintos tipos de recursos graacuteficos para posteriormentehacer el montaje de toda la parte graacutefica del videojuego En cuanto a la parte de audio la situacioacuten es exactamente la misma no se dispone de ninguacutenconocimiento para componer muacutesica ni efectos Por lo tanto se buscaraacuten sonidos y temasmusicales con licencias libres Intentando que estos queden integrados de la mejor maneraposible al videojuego

Finalmente existe el riesgo de que el gameplay definido en el disentildeo conceptual del videojuegouna vez puesto en praacutectica no sea del todo funcional o necesite de un balanceo para conseguirun juego equilibrado y jugable

Paacutegina 10 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2 Anaacutelisis funcional Basaacutendonos en el aparatado ldquo131 Definicioacuten del videojuegordquo se han definido los requisitosfuncionales necesarios para este con la definicioacuten de casos de uso Posteriormente se ha definidoun diagrama de clases inicial el cual ha servido como punto de partida para el desarrollo completodel videojuego A su vez se definen las maacutequinas de estado finitas utilizadas para el desarrollo

21 Requisitos funcionales casos de uso

En este apartado se presentan tres diagramas de casos de uso El primer diagrama engloba lavista generalizada del actor ldquojugadorrdquo y los casos de uso que describen los requisitos funcionalesdel sistema En los dos diagramas restantes se describen la vista generalizada del actor ldquoIArdquo porIA se entiende la inteligencia artificial del videojuego Los diagramas muestran los requisitosfuncionales de la IA para el personaje principal y los enemigos La IA interactuacutea con el sistema ypor tanto seraacute susceptible de analizar su uso de la aplicacioacuten

211 Diagrama casos de uso actor ldquoJugadorrdquo

ilustracioacuten 3 Diagrama de casos de usos actor jugador

Paacutegina 11 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Como se puede observar en la ilustracioacuten 3 el sistema solo dispone de un uacutenico actor Que eneste caso es el jugador del videojuego es decir representa todos los posibles usuarios quepueden jugar al videojuego

En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 3estos seraacuten desarrollados en la seccioacuten posterior

212 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

VJ01 Inicio videojuego Jugador

VJ02 Jugar Jugador

VJ03 Acceder puntuaciones maacuteximas Jugador

VJ31 Consultar puntuacione locales Jugador

VJ32 Salir puntuacione locales Jugador

VJ04 Acceder a las opciones Jugador

VJ41 Activar o desactivar muacutesica o efectos Jugador

VJ42 Acceder a la pantalla de creacuteditos Jugador

VJ421 Salir de la pantalla de creacuteditos Jugador

VJ43 Salir de las opciones Jugador

VJ05 Acceder a las instrucciones Jugador

VJ51 Salir de las intrucciones Jugador

VJ06 Salir del videojuego Jugador

213 Descripcioacuten textual de los casos de uso

2131 VJ01 Inicio videojuego

Identificador VJ01

Nombre Inicio videojuego

Autor Xavier Figuera

Resumen El usuario inicia el videojuego

Actor(es) Jugador

Precondiciones Ninguna el videojuego no habiacutea sido iniciado auacuten

Postcondiciones El usuario a iniciado el videojuego a visualizado la pantalla de introdurante un segundo y se encuentra en la pantalla del menuacute principal

Flujo normal 1 El usuario accede a la lista de aplicaciones de su dispositivo 2 Busca el acceso al videojuego3 Ejecuta el programa4 Se carga la aplicacioacuten5 El videojuego muestra la pantalla de intro

Paacutegina 12 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6 Se muestra el menuacute principal al jugador

Flujos alternativos Se podriacutea dar el caso que el usuario accediera al videojuego desde algunacceso directo en alguno de los escritorios del dispositivo

Inclusiones Ninguna

Extensiones Ninguna

2132 VJ02 Jugar

Identificador VJ02

Nombre Jugar

Autor Xavier Figuera

Resumen Jugar al videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario empieza a jugar

Flujo normal 1 El usuario pulsa el botoacuten play del menuacute principal 2 El usuario juega3 El usuario puede volver a jugar una vez finalizada la partida 4 El usuario puede salir del juego en cualquier momento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2133 VJ03 Acceder puntuaciones maacuteximas locales

Identificador VJ03

Nombre Acceder puntuaciones maacuteximas locales

Autor Xavier Figuera

Resumen Acceder a la pantalla de puntuaciones maacuteximas locales de las partidasrealizadas en el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla con la tabla de las 10 puntuacionesmaacuteximas

Flujo normal 1 El usuario pulsa el botoacuten Scores del menuacute principal 2 Al usuario le aparece la pantalla de puntuacioacuten

Paacutegina 13 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ31 Consultar puntuaciones localesVJ32 Salir de la puntuaciones locales

2134 VJ31 Consultar puntuaciones locales

Identificador VJ31

Nombre Consultar puntuaciones locales

Autor Xavier Figuera

Resumen Consulta de las puntuaciones maacuteximas locales de las partidas realizadasen el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Scores delmenuacute principal

Postcondiciones El usuario visualiza la tabla de las 10 puntuaciones maacuteximas

Flujo normal 1 El usuario visualiza una tabla con las 10 puntuaciones maacuteximas

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2135 VJ32 Salir puntuaciones locales

Identificador VJ32

Nombre Salir puntuaciones locales

Autor Xavier Figuera

Resumen Salir de las puntuaciones maacuteximas locales

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulso el botoacuten Scores

Postcondiciones El usuario sale de la tabla de puntuaciones

Flujo normal 1 El usuario pulsa el botoacuten salir en la pantalla tabla de puntuaciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 14 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2136 VJ04 Acceder a las opciones

Identificador VJ04

Nombre Acceder a la pantalla de opciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de opciones del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla de opciones

Flujo normal 1 El usuario pulsa el botoacuten Options del menuacute principal 2 Al usuario le aparece la pantalla de opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ41 Activar o desactivar muacutesica o efectos VJ42 Acceder a la pantalla de creacuteditosVJ43 Salir de las opciones

2137 VJ41 Activar o desactivar muacutesica o efectos

Identificador VJ041

Nombre Activar o desactivar muacutesica o efectos

Autor Xavier Figuera

Resumen Activar o desactivar muacutesica o efectos de audio del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal

Postcondiciones El usuario activa o desactiva la muacutesica o efectos del videojuego

Flujo normal 1 El usuario pulsa el botoacuten altavoz para activar o desactivar la muacutesica delvideojuego 2 El usuario pulsa el botoacuten notas musicales para activar o desactivar losefectos de audio del videojuego

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 15 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2138 VJ42 Acceder a la pantalla de creacuteditos

Identificador VJ42

Nombre Acceder a la pantalla de creacuteditos

Autor Xavier Figuera

Resumen Acceder a la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario se encuentra en la pantalla de opciones

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten credits para acceder a los creacuteditos2 El usuario puede desplazar el texto de los creacuteditos deslizando el dedosobre el texto hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ421 Salir de la pantalla de creacuteditos

2139 VJ421 Salir de la pantalla de creacuteditos

Identificador VJ421

Nombre Salir de la pantalla de creditos

Autor Xavier Figuera

Resumen Salir de la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal y ha accedido a la pantalla creacuteditos

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten salir para abandonar la pantalla para accedera los creacuteditos2 El usuario se encuentra de nuevo en la pantalla opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 16 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21310 VJ05 Acceder a las instrucciones

Identificador VJ05

Nombre Acceder a la pantalla de instrucciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten del menuacuteprincipal

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a las instrucciones2 El usuario puede desplazar el texto de las instrucciones deslizando eldedo sobre el hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ51 Salir de las instrucciones

21311 VJ51 Salir de las instrucciones

Identificador VJ51

Nombre Salir de las intrucciones

Autor Xavier Figuera

Resumen Salir de la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten en el menuacuteprincipal y ha accedido a la pantalla de instrucciones

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a la pantalla de instrucciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 17 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21312 VJ06 Salir del videojuego

Identificador VJ06

Nombre Salir del videojuego

Autor Xavier Figuera

Resumen Salir del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego

Postcondiciones El usuario abandona el videojuego

Flujo normal 1 El usuario pulsa el botoacuten exit de la aplicacioacuten para salir del videojuego oel botoacuten salir del dispositivo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 18 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214 Diagrama casos de uso actor ldquoIArdquo

Por IA se entiende inteligencia artificial es un elemento fundamental para dotar de realismo a unvideojuego Uno de los retos principales que se plantean a la hora de integrar comportamientosinteligentes es alcanzar un equilibrio entre la sensacioacuten de inteligencia y el tiempo de coacutemputoempleado por este subsistema Este equilibrio es de gran importancia en el caso de losvideojuegos Este planteamiento gira generalmente en torno a la generacioacuten de soluciones quesin ser oacuteptimas proporcionen una cierta sensacioacuten de inteligencia En concreto dichas solucionesdeberiacutean tener como meta que el jugador se enfrente a un reto que sea factible de manera quesuponga un estiacutemulo emocional y que consiga engancharlo al videojuego

En estos uacuteltimos antildeos la IA ha pasado de ser un componente secundario en el proceso dedesarrollo de videojuegos a convertirse en uno de los aspectos maacutes importantes Actualmentelograr un alto nivel de IA en un juego sigue siendo uno de los retos maacutes emocionantes y complejosy en ocasiones sirve para diferenciar un juego normal de uno realmente espectacular

Dentro de este proyecto de ha definido una IA baacutesica para dotar del realismo necesario alvideojuego propuesto En los siguientes diagramas se define esta IA en forma de casos de usospara su posterior implementacioacuten

2141 Diagrama casos de uso IA personaje principal (oveja)

ilustracioacuten 4 Diagrama de casos de usos personaje principal

Paacutegina 19 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 4estos seraacuten desarrollados en la seccioacuten posterior

21411 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA03 Salida oveja al escenario IA

IA031 Posicionamiento en pantalla de la oveja IA

IA032 Movimiento oveja IA

IA033 Oveja pastando IA

IA034 Lanzamiento oveja IA

IA035 Rebotes de la oveja IA

IA036 La oveja entra en el establo IA

IA037 Parar oveja IA

21412 Descripcioacuten textual de los casos de uso

214121 IA03 Salida ovejas al escenario

Identificador IA03

Nombre Salida oveja al escenario

Autor Xavier Figuera

Resumen Salida oveja al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones La oveja es instanciada de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Las ovejas se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA031 Posicionamiento en pantalla de las oveja

214122 IA031 Posicionamiento en pantalla de las oveja

Identificador IA031

Nombre Posicionamiento en pantalla de las oveja

Paacutegina 20 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Autor Xavier Figuera

Resumen Asignacioacuten inicial posicioacuten de las ovejas en pantalla siempre es la mismaposicioacuten esta queda fuera del rango visual de la pantalla

Actor(es) IA

Precondiciones La partida esta iniciada y la oveja instanciada

Postcondiciones La oveja queda posicionada en unas coordenadas fuera de la pantalla

Flujo normal 1 Se instancia la oveja2 La oveja queda posicionada en unas coordenadas uacutenicas fuera delrango visual de pantalla

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214123 IA032 Movimiento oveja

Identificador IA032

Nombre Movimiento oveja

Autor Xavier Figuera

Resumen Movimiento de las ovejas hacia el escenario

Actor(es) IA

Precondiciones La partida esta iniciada la oveja instanciada y posicionada

Postcondiciones La oveja se mueve hacia el escenario empieza a pastar

Flujo normal 1 La oveja se mueve hacia el escenario

Flujos alternativos Ninguno

Inclusiones IA034

Extensiones IA033 Oveja PastandoIA037 Parar oveja

214124 IA033 Oveja pastando

Identificador IA033

Nombre Oveja pastando

Autor Xavier Figuera

Resumen La ovejas permanecen en un espacio determinado de coordenadas depantalla mientras no sean lanzadas al escenario por el usuario

Actor(es) IA

Paacutegina 21 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Precondiciones La oveja ha salido al escenario

Postcondiciones La oveja se mueve dentro de un espacio determinado de forma indefinida

Flujo normal 1 La oveja se mueve de forma indefinida hasta que sea lanzada por elusuario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA034 Lanzamiento oveja

214125 IA034 Lanzamiento oveja

Identificador IA034

Nombre Lanzamiento oveja

Autor Xavier Figuera

Resumen La oveja es lanzada por el usuario y se acelera en funcioacuten de la fuerza delanzamiento

Actor(es) IA

Precondiciones La oveja se mueve

Postcondiciones La oveja ha sido lanzada

Flujo normal 1 La oveja se mueve de forma indefinida2 La oveja es lanzada3 La oveja acelera en funcioacuten de la fuerza de lanzamiento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214126 IA035 Rebotes de la oveja

Identificador IA035

Nombre Rebotes de la oveja

Autor Xavier Figuera

Resumen La oveja ha sido lanzada y rebota por el escenario

Actor(es) IA

Precondiciones La oveja ha sido lanzada

Postcondiciones La oveja rebota por el escenario

Flujo normal 1 La oveja ha sido lanzada y rebota por el escenario 2 La oveja entra en el establo si colisiona con la puerta y esta abierta

Paacutegina 22 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA036 La oveja entra en el establo

214127 IA036 La oveja entra en el establo

Identificador IA036

Nombre La oveja entra en el establo

Autor Xavier Figuera

Resumen La oveja entra en el establo

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario y la puerta del establo estaabierta

Postcondiciones La oveja entra en el establo

Flujo normal 1 La oveja entra en el establo si colisiona con la puerta y esta abierta

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214128 IA037 Parar oveja

Identificador IA037

Nombre Parar oveja

Autor Xavier Figuera

Resumen La oveja para si se hacen dos pulsaciones encima de ella

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario

Postcondiciones La oveja se para

Flujo normal 1 La oveja esta rebotando2 El usuario pulsa dos veces encima de ella3 La oveja se para

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 23 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2142 Diagrama casos de uso IA enemigos (lobo)

ilustracioacuten 5 Diagrama de casos de usos enemigos

21421 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA02 Salida lobo al escenario IA

IA021 Ojos por la derecha o por la izquierda IA

IA022 Escoje el tipo de lobo IA

IA023 Lobo por la derecha o por la izquierda IA

IA024 Salta a escena IA

IA025 Movimento lobo IA

Paacutegina 24 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21422 Descripcioacuten textual de los casos de uso

214221 IA02 Salida lobo al escenario

Identificador IA02

Nombre Salida lobo al escenario

Autor Xavier Figuera

Resumen Salida lobo al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones El lobo es instanciado de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Los lobos se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA02 IA021 IA022 IA023 IA024

214222 IA021 Ojos por la derecha o por la izquierda

Identificador IA021

Nombre Ojos por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Salida de ojos al escenario paso previo a que salte el lobo

Actor(es) IA

Precondiciones El lobo ha sido instanciado

Postcondiciones Aparecen unos ojos que se cierra y se abren por la derecha o izquierda dela pantalla de forma aleatoria

Flujo normal 1 El lobo ha sido instanciado2 Aparecen unos ojos que se cierran y se abren 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 25 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214223 IA022 Escoge el tipo de lobo

Identificador IA022

Nombre Escoge el tipo de lobo

Autor Xavier Figuera

Resumen Escoge el tipo de lobo de forma aleatoria de los tres definidos

Actor(es) IA

Precondiciones Han aparecido los ojos

Postcondiciones Ha escogido el tipo de lobo que saltara al escenario

Flujo normal 1 Han aparecido los ojos2 Ha escogido el tipo de lobo que saltara al escenario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214224 IA023 Lobo por la derecha o por la izquierda

Identificador IA023

Nombre Lobo por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Escoge de forma aleatoria el lado por donde debe aparecer el lobo

Actor(es) IA

Precondiciones Se ha seleccionado el tipo de lobo

Postcondiciones Se ha escogido el lado por donde apareceraacute

Flujo normal 1 Se ha escogido el lado por donde apareceraacute

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 26 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214225 IA024 Salta a escena

Identificador IA024

Nombre Salta a escena

Autor Xavier Figuera

Resumen El lobo salta a escena

Actor(es) IA

Precondiciones Se ha seleccionado el lado por donde debe aparecer y salta

Postcondiciones El lobo esta en escena

Flujo normal 1 Se ha seleccionado el lado por donde debe aparecer y salta2 El lobo esta en escena

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones A025

214226 IA025 Movimiento lobo

Identificador IA025

Nombre Movimiento lobo

Autor Xavier Figuera

Resumen El lobo esta en escena y se mueve

Actor(es) IA

Precondiciones El lobo ha saltado a la escena

Postcondiciones El lobo se mueve

Flujo normal 1 El lobo ha saltado a la escena2 El lobo se mueve

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 27 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

22 Disentildeo inicial diagrama de clases

221 Diagrama de clases inicial ldquoFling the sheeprdquo

ilustracioacuten 6 Diagrama de clases videojuego

En este apartado se define la estructura inicial de la aplicacioacuten a traveacutes del diagrama de clasesmostrado en la ilustracioacuten 6 Esto serviraacute como punto de partida para el completo disentildeo de laaplicacioacuten para su posterior implementacioacuten A continuacioacuten se pasan a detallar a modo resumidoque funcionalidad tiene cada una de las clases definidas en este diagrama

2211 Resumen clases videojuego

FlingTheSheepMain Clase principal desde donde se inicializaraacute la aplicacioacuten

Assets Esta clase contendraacute todos los recursos necesarios del juego texturas sonidos etcEstos seraacuten inicializados en el momento de iniciar el juego Existe una dependencia entre la claseFlingTheSheepMain y Assets ya que la instanciacioacuten de Assets esta condicionada por lainstanciacioacuten de la clase principal FlingTheSheepMain cuando se pone en marcha el videojuego

Paacutegina 28 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaWorldGameController Esta clase contendraacute la loacutegica del videojuego

AudioManager Clase destinada para controlar la reproduccioacuten de efectos de sonido y audio delvideojuego

Charcater Es la superclase que describe los comportamientos comunes de los personajes deella se extienden los personajes principales y los enemigos

Sheep Clase que representa el personaje principal

Wolf Clase que representa a los enemigos

AbstractGameObject Esta superclase recoge todos los comportamientos comunes de losobjetos del juego por objetos se entiende todos los componentes que forman el escenario delvideojuego De esta clase se extienden todos los objetos del videojuego

Grass Hierba que apareceraacute en el escenario

Flower Flores que apareceraacuten en el escenario

ThePen Establo donde hay que hacer llegar las ovejas

DoorPen Puerta del establo esta se abriraacute y se cerrara aleatoriamente

Hole Agujeros en el escenario

WoodFenceForest Valla de madera que apareceraacute en el escenario

Como se ha comentado este diagrama de clases es un diagrama inicial por tanto lo maacutesprobable es que durante el desarrollo del videojuego se antildeadan maacutes clases al disentildeo inicialmostrado en la ilustracioacuten 6 En el apartado 55 de este documento se muestran los diagramas declases definitivos

Paacutegina 29 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria222 Diagrama de clases inicial de pantallas

ilustracioacuten 7 Diagrama de clases de pantallas

Este diagrama recoge en forma de clases las pantallas iniciales definidas del videojuego Separte de una superclase llamada AbstractGameScreen que recogeraacute las operaciones comunes detodas ellas y de esta se extienden las pantallas concretas este diagrama solo muestra laspantallas maacutes baacutesicas definidas inicialmente estas serviraacuten como base para desarrollar elconjunto de pantallas total necesarias para este proyecto y que quedan recogidas en su totalidaden el apartado 4 ldquoDisentildeordquo de esta documento

A continuacioacuten se pasan a detallar a modo resumido cada una de ellas

2221 Resumen clases pantallas

IntroScreen Clase para la pantalla de intro

MenuScreen Clase que contiene el menuacute principal del videojuego GameScreen La clase game screen es la que contiene la pantalla donde se desarrolla todo elvideojuego

Paacutegina 30 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

23 Definicioacuten de maacutequinas de estado finitas

Como ya se ha introducido en el punto 212 la IA aplicada a los videojuegos dota a estos derealismo Existen distintas teacutecnicas para la implementacioacuten de esta Una de las maacutes consolidadases el uso de maacutequinas de estados finitas ya que tienen un coste computacional casi inexistenteya que no tienen ninguacuten coste de procesamiento asignado Las maacutequinas de estados permiten deforma faacutecil definir comportamientos Es por este motivo que han sido utilizadas no solamente para definir los comportamientos de laIA del videojuego sino tambieacuten para definir los distintos estados en que se puede encontrar elvideojuego durante su tiempo de vida A continuacioacuten se detallan los distintos diagramas de lasmaacutequinas de estados utilizadas para este proyecto conjuntamente con una explicacioacuten de cadauna de ellas

231 Maacutequina de estados del videojuego

ilustracioacuten 8 Maacutequina de estados del videojuego

La ilustracioacuten 8 nos muestra los estados que puede tomar el videojuego durante su tiempo devida

Este diagrama define los estados que puede tomar el videojuego una vez iniciado inicialmente eljuego se encuentra en el estado READY de este estado existe una transicioacuten al estado GAMEcuando el tiempo de READY finaliza READY lt=0 El estado game sera el estado en donde se

Paacutegina 31 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriadesarrollara todo el juego Des de este estado podemos pasar al estado PAUSE si pulsamos elbotoacuten de pausa del juego y desde el estado PUASE volvemos al estado GAME si volvemos apulsar el botoacuten pause Finalmente desde el estado GAME haremos la transicioacuten al estado GAMEOVER si nos arrebatan todas las vidas durante la partida Desde el estado GAME OVERpodremos volver a READY si decidimos hacer una nueva partida

232 Maacutequina de estados comportamiento oveja

ilustracioacuten 9 Maacutequina de estados comportamiento oveja La ilustracioacuten 9 muestra el comportamiento del personaje principal del videojuego que en estecaso es la oveja Se define el ciclo de vida de la oveja a traveacutes de sus comportamientos

APPEAR SHEEP La oveja aparece fuera del rango visual de la pantalla y empieza a moversepara que suceda la transicioacuten hacia el siguiente estado FOREST START la coordenada x debeser menor que 220

FOREST START La oveja seguiraacute movieacutendose en un espacio determinado de la pantalla hastaque sea lanzada en unas determinadas direcciones la direccioacuten queda determinada por lasvariables velocityX velocityY estas tomaran valores positivos o negativos determinando ladireccioacuten de lanzamiento esto queda reflejado en la condicioacuten de transicioacuten del estado FORESTSTART a FOREST DEEP Si realizamos el lanzamiento en esas determinadas direccionesharemos la transicioacuten al un nuevo estado FOREST DEEP

FOREST DEEP La oveja rebota por el escenario si colisiona con la puerta del corral y estaabierta hacemos la transicioacuten al estado ON THE PEN

Paacutegina 32 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ON THE PEN Finaliza el ciclo de vida de la oveja dentro del juego esta es devuelta al corral seincrementan puntos en el marcador de puntuacioacuten y se incrementa una unidad en el contador deovejas salvadas

233 Maacutequina de estados comportamiento lobo

ilustracioacuten 10 Maacutequina de estados comportamiento lobo La ilustracioacuten 10 muestra el comportamiento de los enemigos del videojuego que en este casoson los lobos Se define el ciclo de vida del lobo a traveacutes de sus comportamientos

APPEAR EYES Antes de aparecer los lobos a escena apareceraacuten sus ojos entre los matorralesdel bosque Cuando acaba el tiempo pasa al siguiente estado tiempo ojos lt= 0

APPEAR WOLF En este estado se seleccionara el tipo de lobo (habraacute 3 tipos distintos) el ladode la pantalla por donde apareceraacute posicioacuten y velocidad de salto como tambieacuten el tiempo ensegundos que tardara a saltar al escenario Una vez seleccionados todos estos paraacutemetros haraacutela transicioacuten al estado WHEN JUMP

WHEN JUMP Este estado simplemente esperara que pase el tiempo para que el lobo salte alescenario Un vez pase el tiempo el lobo apareceraacute en el escenario pasando a la transicioacuten JUMPON SCENE

JUMP ON SCENE En este estado se efectuara el salto a escena del lobo este saltara desde los

Paacutegina 33 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriamatorrales laterales de la pantallahacia el escenario dibujando un arco convexo Para realizar elsalto nos apoyaremos en la representacioacuten del calculo de la funcioacuten trigonomeacutetrica cosenosolamente en sus valores positivos por tanto cuando cosy lt 0 haremos la transicioacuten al estadoMOVE ya que el salto habraacute finalizado

MOVE En este estado los lobos se moveraacuten y podraacuten ser ahuyentados pulsando repetidas vecesencima de ellos las veces a pulsar queda sujeta al tipo de lobo que sea Des de este estadopodremos hacer a dos estado distintos dependiendo de lo que suceda Si conseguimos ahuyentaral lobo pasaremos al estado WOLF SCARED Si por el contrario el lobo atrapa a la ovejaharemos la transicioacuten al estado SHEEP TRAPPED en ambos estados finalizara el ciclo de vidadel lobo

WOLF SCARED Se habraacute ahuyentado el lobo se incrementa en uno el contador de lobosahuyentados y se suman puntos a la puntuacioacuten total En este estado finaliza el ciclo de vida dellobo

SHEEP TRAPPED El lobo habraacute atrapado una oveja se nos restara una vida En este estadofinaliza el ciclo de vida del lobo

234 Maacutequina de estados tutorial in game

ilustracioacuten 11 Maacutequina de estados tutorial in game La ilustracioacuten 11 muestra los distintos estados que toma el mini tutorial in game que apareceraacute laprimera vez que se juega En este las transiciones entre estados suceden de forma automaacutetica

Paacutegina 34 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriacada 5 segundos desde que se ha activado el primer estado Cada estado corresponderaacute a unacaja de texto mostrada en pantalla

3 Disentildeo

31 Estudio comparativo

Un estudio realizado en 2011 por la empresa Newzoo httpwwwnewzoocom empresainternacional dedicada a los estudios de mercado y enfocada por completo a la industria de losvideojuegos Ha realizado la primera encuesta a jugadores espantildeoles y una de las cosas que dicees La suma del volumen de negocio de juegos online (redes sociales juegos casualesjuegos para moacuteviles juegos MMO) superaraacute al del consumo en juegos para consolas en2011 Se puede ver un resumen del estudio en liacutenea en

httpwwweurogameresarticles2011-10-26-espana-gastara-1-600-millones-de-euros-en-videojuegos-en-2011

Con esta informacioacuten se puede ver que hacer un videojuego casual para una plataforma moacutevilcomo Android puede ser muy viable

Para este proyecto se realizaraacute un estudio comparativo (benchmarking) En la industria de losvideojuegos es habitual sacar tiacutetulos fijaacutendose en otros tiacutetulos que han conseguido gran eacutexito enel mercado La operativa consiste en mejorarlos dentro de otro contexto o hacer un videojuegocompletamente diferente pero basaacutendose en ocasiones en mecaacutenicas de alguacuten otro tiacutetulo que haconseguido un gran eacutexito

Existen en Google Play gran cantidad de juegos casuales que pueden servir como inspiracioacuten ycomo punto de inicio para hacer un planteamiento general de coacutemo disentildear el producto que sequiere desarrollar partiendo de los requisitos definidos en el apartado 131 de este documento Setomaraacuten como referencia algunos tiacutetulos para identificar patrones para ver coacutemo otros hansolucionado ciertas situaciones como pueden ser problemas de disentildeo o interaccioacuten entre otrosEn ninguacuten caso deberaacuten ser exactamente de la misma temaacutetica pero si que se miraraacute que seandel mismo tipo es decir casual games

El primer paso para realizar este estudio a sido ir a Google play y verificar si hay alguacuten juego conel mismo nombre que el que se pretende desarrollar ldquoFling the sheeprdquo No existe ninguacuten juego adiacutea de hoy con este nombre

El segundo paso a sido buscar tambieacuten en Google play videojuegos en los que aparezcanovejas solo poniendo en el buscador la palabra sheep nos aparecen muchiacutesimos juegos quetienen una temaacutetica donde aparecen ovejas Se ha verificado tambieacuten poniendo combinaciones depalabras relacionadas con el juego que se quiere implementar palabras como sheep wolves o sheep farm etc los resultados obtenidos son bastante elevados

Por la cantidad de juegos encontrados y los recursos de que se dispone como por ejemplo eltiempo no es posible analizarlos todos Si que se tomaran algunos juegos despueacutes de hacer unrepaso de los maacutes destacados Hay que decir que despueacutes de haber instalado algunos alguno deellos no ha acabado de funcionar correctamente en el dispositivo moacutevil

Tras estos pasos se escogeraacuten dos videojuegos de temaacutetica similar y dos videojuegos detemaacutetica diferente Los videojuegos escogidos para realizar el anaacutelisis comparativo son

Paacutegina 35 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria311 Sheep amp Wolf

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 12 y 13 pantallas juego Sheep amp Wolf Link httpsplaygooglecomstoreappsdetailsid=jscompanygamesSheepAndWolf_enter3

El juego consta de una mecaacutenica muy simple disponemos de un boomerang y un corazoacuten laperspectiva del juego es elevada y vemos coacutemo van bajando ovejas y lobos de forma aleatoria setrata de forma taacutectil dibujar la trayectoria del boomerang para eliminar los lobos sin tocar lasovejas y con el corazoacuten dibujar una trayectoria de forma taacutectil para tocar las ovejas y no los lobosconforme vamos tocando los lobos y las ovejas con el correspondiente objeto iremos sumandopuntos

Tiene cierta similitud con el que se quiere implementar ya que salen tambieacuten lobosovejas ytambieacuten que lo que se pretende implementar funcionara de forma taacutectil para lanzar las ovejas alcorral y ahuyentar a los lobos que amenazan a las ovejas

Tiene una perspectiva de caacutemara igual a la que se quiere implementar Tiene una mecaacutenica dejuego muy sencilla las opciones que ofrece son muy definidas y claras 3 botones al inicio deljuego grandes que nos indican las posibles opciones que tenemos dentro del juego Game StartGame Record Exit Un punto interesante de este juego es que las puntuaciones no se guardan anivel local de la aplicacioacuten sino que son compartidas en una pagina web asiacute se pueden ver laspuntuaciones a nivel mundial La navegacioacuten por las diferentes pantallas es correcta

Quizaacute un aspecto negativo del juego seriacutea que visualmente esta muy poco cuidado Aunque aveces si el juego produce mucha adiccioacuten el aspecto visual puede quedar en segundo teacutermino enjuegos para dispositivos moacuteviles En otros tipos de plataformas como consolas o PC el aspectovisual es un punto muy importante y que se debe trabajar mucho maacutes a fondo no obstante estono significa que en un dispositivo moacutevil no deba estarlo

Paacutegina 36 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez adictivo puntuaciones a nivel mundial Navegacioacuten correctaPuntos Negativos Poco cuidado visualmente no tiene pausaObservaciones No tiene un final definido a medida que avanzamos la dificultad aumenta

312 Sheep Up

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 14 y 15 pantallas juego Sheep Up Linkhttpsplaygooglecomstoreappsdetailsid=compgpublishandroidsheepuplive

A diferencia del anterior este visualmente esta mucho maacutes cuidado Es un juego en 3D dondeuna oveja de juguete esta guardada dentro de una caja de cartoacuten Va botando y tiene que irrecogiendo botones e ir subiendo por diferentes niveles para poder salir de la caja es un juego deplataformas tambieacuten con una mecaacutenica bastante sencilla

Este dispone de una pantalla que dura unos segundos y seguidamente sale el menuacute de opcionesdel juego a diferencia de lo visto anteriormente donde directamente saliacutea el menuacute de opcionesde juego El menuacute de opciones de juego tambieacuten es muy directo y claro Aparte del botoacuten playpara iniciar el juego el botoacuten opciones para configurar el audio del juego los efectos el idioma yver los creacuteditos Tiene el botoacuten store donde este juego tiene implementada la modalidad freemiumpara ir comprando diferentes objetos dentro de el que nos daraacuten ciertas ventajas dentro delgameplay La compra se podraacute realizar con monedas virtuales (los botones) que los habremos idorecogiendo durante los diferentes niveles jugados o tambieacuten podemos comprar cantidadesdeterminadas de botones a cambio de dinero de verdad Dispone de vinculacioacuten a redes socialescomo Twitter y Facebook

Puntos Positivos Sencillez adictivo vinculado a Twitter y el Facebook el juego se puede pararNavegacioacuten correctaPuntos Negativos La pantalla inicial tarda demasiado en desaparecer y no da ninguacuten tipo de

Paacutegina 37 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriainformacioacuten al usuario puede llegar a parecer que se a colgado debido al largo tiempo que tardaal menos con el dispositivo que se ha verificado

313 Temple Run

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 16 y 17 pantallas juego Temple runLinkhttpsplaygooglecomstoreappsdetailsid=comimangitemplerun Es un juego que no tiene final donde un explorador tiene que evitar la muerte superandodiferentes obstaacuteculos a traveacutes de diferentes pasillos tendremos que dibujar diferentes trazos deforma taacutectil para que el personaje gire salte o se deslice por el suelo al mismo tiempo tendremosque inclinar el teleacutefono para que el personaje vaya recogiendo monedas que podremos utilizarpara adquirir objetos y mejoras en la partida A medida que vamos recorriendo maacutes y maacutes metrosla dificultad aumenta y nos obligara a realizar maacutes acciones en un espacio de tiempo maacutes cortoasiacute pues los reflejos juegan un papel importante

Tambieacuten dispone de una pantalla que dura unos segundos seguida de un menuacute de opciones muyclaro y definido Este igual que el anterior dispone de una tienda donde se pueden comprarmejoras (potenciadores) con dinero virtual o real Los botones de inicio son muy similares al delanterior juego visto Dispone de vinculacioacuten a redes sociales como Twitter

Puntos Positivos Sencillez Adictivo vinculado a Twitter el juego se puede parar NavegacioacutencorrectaPuntos Negativos -

Paacutegina 38 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria314 Attack of the Spooklings

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 18 y 19 pantallas juego Attack of the SpooklingsLinkhttpsplaygooglecomstoreappsdetailsid=compicarogamesspooklings_free

Finalmente nos centramos en este casual con aspecto visual retro Otro juego que no disponede final y donde la dificultad va aumentando conforme el tiempo de juego aumenta El objetivo deljuego es matar a todos los Spooklings que quieren atacar nuestro poblado La forma de matar alos Spooklings es con el dedo deslizaacutendolo sobre la pantalla soacutelo que un Spookling llegue anuestro poblado en la parte inferior de la pantalla la partida finaliza Debemos evitar de todas lasformas posibles que lleguen a la parte inferior de la pantalla

Tambieacuten dispone de una pantalla de inicio y un menuacute inicial de juego claro y directo no disponede ninguna vinculacioacuten a redes sociales El juego no se puede parar La navegacioacuten por todas laspantallas es correcta teniendo pantalla de puntuaciones maacutes altas pantalla con mini tutorial decoacutemo jugar y unas opciones para configurar el audio y ver los creacuteditos del juego Sin embargo adiferencia de los otros tiene algunas fallas de disentildeo a nivel de transiciones entre pantallas yfuncionalidades baacutesicas que aparentemente no tienen mucho sentido Fuera de la pantalla dejuego no es posible abandonar la aplicacioacuten de ninguna de las maneras no hay botoacuten de salida yla tecla de ir hacia atraacutes no funciona la uacutenica manera de salir es matando el proceso Por otrolado durante la partida con el botoacuten de ir atraacutes conseguimos hacer pausa del juego pero de unaforma que no estaacute anunciada al usuario de ninguna manera con alguacuten icono visual que informa alusuario de la funcionalidad Una vez parado el juego con una tecla que no estaacute indicada enninguna parte como tal nos da dos opciones RESTART y QUIT con QUIT salimos de la aplicacioacutenalgo que no se puede hacer en ninguacuten otro punto de la aplicacioacuten Con RESTART vuelve aempezar la partida y se pierde la que teniacuteamos empezada En resumen si pulsamos este botoacuten noestaacute anunciado en ninguna parte por accidente durante una partida perdemos la partida ya que notenemos la opcioacuten de continuar puesto que o volvemos a empezar o salimos de la aplicacioacuten

Paacutegina 39 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez Muy adictivoPuntos Negativos Errores en el disentildeo de menuacutes y transiciones entre pantallas no tienevinculacioacuten a redes sociales no tiene pausa

Todo lo que se ha visto en este estudio comparativo nos da una idea de que el disentildeo que selleve a cabo debe cumplir las siguientes metas tener una mecaacutenica de juego adictiva y sencillaque la disposicioacuten de opciones e iconos han ser claras y dejar claro al usuario de forma visual queacutefuncionalidad tienen las transiciones y operativas baacutesicas deben estar bien indicadas eimplementadas El disentildeo visual debe ser lo mas cuidado posible aunque a veces en juegos paraeste tipo de dispositivos no es el que maacutes domina sobre todo si el juego tiene una mecaacutenica muyadictiva aunque si se consiguen las dos cosas mucho mejor Otro punto importante es tener unamecaacutenica freemium implementada dentro del juego con una tienda para comprar mejorasaplicables a la mecaacutenica de juego Otro punto importante es la vinculacioacuten del juego a redessociales y que recoja puntuaciones a nivel mundial y no locales del dispositivo todos estosingredientes le pueden dar al juego un plus que haga que el usuario vea el juego maacutes atractivo

Debido a temas de tiempo inicialmente se descarta para este proyecto la implementacioacuten de lassiguientes funcionalidades dentro del videojuego las puntuaciones a nivel mundial estas demomento quedaraacuten sujetas a nivel local del dispositivo tambieacuten se descarta la vinculacioacuten a redessociales y mecaacutenicas freemium

El resto de puntos comentados como las mecaacutenicas sencillas y adictivas aspecto visual lo maacutescuidado posible dentro de los recursos de que se dispone y la navegacioacuten entre pantallas ymenuacutes claros y sencillos seraacute lo que se transportaraacute al disentildeo y la posterior implementacioacuten delproyecto Es posible que durante la implementacioacuten del disentildeo mostrado en este documento semodifiquen algunos puntos por temas de balanceo y equilibrio del producto final

32 Perfiles de usuarios identificados

Los juegos casuales son juegos con mecaacutenicas simples Este hecho hace que esteacuten al alcancede cualquier usuario aunque eacuteste no sea un jugador experimentado acostumbrado a utilizar juegoscon mecaacutenicas maacutes complicadas que requieren de cierta experiencia previa Al mismo tiempo sonjuegos que pueden ser jugados en cortos espacios de tiempo Por tanto el tipo de usuario deestos juegos sera muy variado Podemos encontrar el perfil de usuario experimentado tanto enlas tecnologiacuteas como en los videojuegos y que tiene intereacutes por cualquier tipo de juego Y por otrolado encontramos el usuario poco experimentado pero que gracias a los smarphones y lasencillez de las mecaacutenicas de juego provoca que tambieacuten juegue

Todos tendraacuten un objetivo comuacuten pasar un rato jugando al juego Para mejorar su uacuteltimo reacutecordAunque en este tipo de juegos el usuario tambieacuten puede jugar sin buscar ninguacuten tipo de metaconcreta simplemente pasar un rato divertido sin necesidad de alcanzar ninguacuten tipo de reacutecord niobjetivo concreto Tambieacuten es importante mencionar que aunque los perfiles de usuarios son muyvariados existe una fuerte tendencia a que los jugadores de este tipo de juegos tiendan a sermaacutes grandes que los jugadores de otros tipos de videojuegos y suelen tener un intereacutes y tiempolimitado tanto para jugar como los videojuegos en general siendo normalmente del sexofemenino

Se detectan dos grandes grupos de perfiles de usuario los experimentados en jugar avideojuegos y los no experimentados en jugar videojuegos edades diferentes profesionesvariadas educacioacuten variada sexo variado Los usuarios de Android en general suelen pagarmucho menos por aplicaciones que otros grupos de usuarios como los de iphone por ejemplo

Paacutegina 40 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Los haacutebitos de consumo en los estados unidos ya no de los usuarios de juegos casuales sinode los usuarios de Android en general se definen de la siguiente manera soacutelo un 4 de estospaga por descargar una aplicacioacuten contra un 23 y un 31 de los usuarios de la App Store paraiPhone y iPad respectivamente tal y como muestra un estudio realizado por la empresa Statistacon las 100 aplicaciones maacutes descargadas

ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitasSe puede ver en linea en el link httpwwwstatistacomtopics983mobile-app-monetizationchart1400paid-apps-don-t-stand-a-chance-on-google-play

Se puede ver otro articulo similar en el siguiente link

httpwwwwayerlesscom201307usuarios-de-android-pagan-menos-por-apps-que-los-de-ios

La mayoriacutea de aplicaciones gratuitas utilizan la modalidad freemium que no es maacutes que ofrecerun producto baacutesico de forma gratuita y cobrar a los usuarios por opciones maacutes avanzadas oespeciales dentro de la misma aplicacioacuten No obstante tambieacuten es posible encontrar aplicacionescompletamente gratuitas sin la modalidad freemium

Como ya se ha dicho se han detectado inicialmente dos grandes grupos dentro de la masa deusuarios que son consumidores potenciales de juegos casuales Estos son los usuarios asiduos ajugar videojuegos de todo tipo y con experiencia en el uso de tecnologiacuteas en general es decirusuarios experimentados Por otro lado encontramos los que no tienen costumbre de jugar muchoy normalmente tampoco tienen una gran experiencia en el uso de tecnologiacuteas en general pero

Paacutegina 41 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debido a la simpleza de los videojuegos casuales eacutestos tambieacuten se convierten en jugadores yen muchas ocasiones se convierten en los usuarios que consumen maacutes este tipo de juegos Asiacutepues encontramos dos grandes grupos seguacuten unas caracteriacutesticas comunes experiencia previa osin experiencia ante los videojuegos y las tecnologiacuteas

33 Contextos de uso

331 iquest Doacutende

Al tratarse de un casual game para un dispositivo moacutevil el espacio de utilizacioacuten seraacute muyvariado Por tanto los usuarios podraacuten encontrarse en muchos lugares distintos como puedenser en casa en el tren en el metro en el autobuacutes al aire libre etc En definitiva el usuario podraacuteencontrarse en cualquier lugar

332 iquest Cuaacutendo

El tipo de juegos casuales tienden a ser juegos donde los usuarios realizan partidas cortas peroal mismo tiempo la naturaleza adictiva de estos hace que los usuarios puedan quedar atrapadosdurante varias horas repartidas en ratos diferentes o continuados dependiendo de la situacioacuten decada usuario Por tanto el cuaacutendo de este tipo de juegos puede ser muy variado casi en cualquiermomento que el usuario pueda dedicarle unos minutos o ratos maacutes largos durante su tiempolibre mientras se desplaza ya sea en tren en metro o en alguacuten otro medio de transporte que nonecesite estar pendiente del vehiacuteculo cuando esta en la cama etc

333 iquest En que entorno

Los entornos de utilizacioacuten pueden tambieacuten ser muy variados promovidos por doacutende y el cuaacutendoPor lo tanto el entorno tecnoloacutegico podraacute tambieacuten ser variado puede existir o no conexioacuten a lared en un entorno social muy diferente que podraacute ser maacutes privado o maacutes puacuteblico yconsecuentemente se dibujaraacute un entorno ambiental variado seguacuten el momento

4Disentildeo y ldquoConcept Artrdquo

41 Elementos presentes en la interfaz de la aplicacioacuten

Con todo lo que se ha visto en el apartado 31 estudio comparativo queda patente que la interfazde usuario debe ser clara y sencilla Seraacute necesario que contenga las siguientes pantallas

bull Pantalla de intro inicial que apareceraacute durante un segundobull Pantalla menuacute inicial del juego con las opciones Play Scores Options () How to play bull Pantalla de nivel donde se desarrolla el videojuegobull Pantalla high scores que mostrara la tabla de reacutecords con las 10 puntuaciones maacutes altasbull Pantalla how to play instrucciones de como jugar tambieacuten se integraran dentro del

videojuego y apareceraacuten durante la primera partida que se jueguebull Pantalla opciones podremos activar y desactivar el sonido y los efectos de audio A su vez

desde esta pantalla podremos acceder a la pantalla de creacuteditosbull Pantalla de creacuteditos pantalla doacutende se mostraran lo creacuteditos del videojuego bull Pantalla Ready pantalla de juego con el mensaje sobre impreso antes de empezar a

jugar apareceraacute durante 3 segundosbull Pantalla con los botones resume quit sobreimpresos en la pantalla de juego se accederaacute

Paacutegina 42 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaa ella con el botoacuten de pausa pausando el juego Desde ella podremos reanudar el juego oabandonar el juego

bull Pantalla game over con el resumen de los reacutecords conseguidos durante la partidapuntostiempo jugado numero de lobos ahuyentados y ovejas colocadas en el corralDesde esta pantalla tendremos dos botones Play again y Exit uno nos permitiraacute volver ajugar y el otro nos permitiraacute abandonar el juego tal y como su nombre indica

42 Flujos de interaccioacuten

En la siguiente ilustracioacuten se muestran los flujos de interaccioacuten definidos con las pantallasenumeradas en el apartado anterior Los flujos muestran la navegacioacuten que debe existir entre laspantallas del videojuego

ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintaspantallas

Paacutegina 43 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

43 Prototipaje

431 Sketches

En este apartado se muestran los primeros esbozos realizados a mano alzada estos intentanplasmar el disentildeo del juego en su totalidad Estos esbozos serviraacuten como punto de partida en unasegunda fase para realizar el prototipaje de todas las pantallas que intervienen en el videojuegoutilizando todo el material recopilado en la red

Tal y como ya se ha dicho en este mismo documento anteriormente no se dispone deconocimientos de disentildeo suficientes como para abordar un disentildeo de arte desde cero Por lo tantose han utilizado recursos ya disponibles en la red para el montaje de todos los graacuteficos delvideojuego Todos los recursos utilizados estaacuten bajo licencias creative commons o dominio puacuteblico A continuacioacuten se muestran los bocetos

ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 44 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 45 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada

En la siguiente paacutegina se muestran las transiciones definidas entre pantallas con los sketchesrealizados ilustracioacuten 241 Las transiciones toman como base el diagrama de flujos deinteraccioacuten definido en el apartado 42 de este documento ver ilustracioacuten 21

Paacutegina 46 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria432 Transiciones definidas entre pantallas

ilustracioacuten 241 Transiciones definidas entre pantallas

Paacutegina 47 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria433 Prototipo horizontal de alta fidelidad

4331 Pantalla inicial

Pantalla de inicio al ejecutar el juego apareceraacute esta pantalladurante un segundo

4332 Pantalla menuacute principal del juego

Pantalla de menuacute principal del juego desde esta pantallapodremos empezar a jugar (botoacuten Play) consultar la tabla depuntuaciones (botoacuten Scores) e ir a la pantalla de opciones deljuego (botoacuten Options) El interrogante de la parte inferiorderecha nos serviraacute para ir a la pantalla de instruccionesHOW TO PLAY para saber coacutemo se juega

Paacutegina 48 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4333 Pantalla de opciones

La pantalla de opciones nos permitiraacute deshabilitar la muacutesicadel juego y los efectos sonoros pasando el dedo sobre losiconos del altavoz y las notas musicales con el altavozdeshabilitaremos la muacutesica y con las notas musicalesdesactivaremos los efectos de audio La flecha naranja nosconduciraacute de nuevo a la pantalla de inicio del juego el botoacutencreacuteditos nos llevara a la pantalla de creacuteditos

4334 Pantalla de creacuteditos

Pantalla de creacuteditos en ella se muestran los nombres dequienes han disentildeado y programado el juego con la flechanaranja inferior volvemos a la pantalla de opcionesDeslizando el dedo sobre el texto se podraacute desplazar haciaarriba y hacia abajo

Paacutegina 49 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4335 Pantalla tabla de puntuaciones

Pantalla tabla de puntuaciones nos mostrara una tabla conlas 10 puntuaciones maacutes altas de todas las partidas jugadasEsta tabla se guardara de forma local en el dispositivo

4336 Pantalla de juego READY

Pantalla de juego READY Apareceraacute durante unossegundos una vez iniciada la partida Despueacutes de 3segundos pasara a la pantalla de juego que se muestra en elsiguiente apartado

Paacutegina 50 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4337 Pantalla de juego

La pantalla de la izquierda es donde se desarrollaraacute todo el gameplay en la parte superiorizquierda de la pantalla se muestran los puntos conseguidos y las vidas En la parte superiorderecha hay un botoacuten que permitiraacute pausar el juego una vez pausado mostraraacute la pantalla depausa con los botones RESUME y QUIT la pantalla se muestra en el apartado siguiente En laparte derecha se muestra otra pantalla ideacutentica a la de la izquierda donde se puede ver elgameplay baacutesico representado con flechas los lobos saldraacuten de los extremos de la pantalla yendohacia las ovejas las ovejas al mismo tiempo saldraacuten de la derecha de la pantalla y las tendremosque lanzarlas deslizando el dedo sobre ellas y lanzandolas hacia el establo La puerta se iraacuteabriendo y cerrando aleatoriamente los lobos una vez puestos en escena los podremos ahuyentardeslizando el dedo sobre ellos un nuacutemero de veces determinado en funcioacuten del color del lobocomo esta indicado en el apartado 131 de este documento

Paacutegina 51 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4338 Pantalla de pausa botones RESUME y QUIT

Pantalla de pausa que apareceraacute cuando se pause el juegoCon la opcioacuten RESUME continuaremos jugando con laopcioacuten QUIT se saldraacute de la partida y pasaraacute a la pantalla delmenuacute principal del juego descrita en el punto 322

4339 Pantalla GAME OVER

Pantalla GAME OVER apareceraacute cuando se hayanagotado todas las vidas Mostraraacute un resumen de los puntosconseguidos en la partida actual tiempo invertido en lapartida lobos ahuyentados y ovejas salvadas Con losbotones de la parte inferior podremos volver a jugar (botoacutenplay again) o salir del juego con el botoacuten exit este botoacuten nosconduciraacute a la pantalla de inicio de juego descrita en elapartado 322

Paacutegina 52 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria43310 Pantalla de instrucciones de juego HOW TO PLAY

Pantalla de instrucciones del juego nos haraacute una breveexplicacioacuten de coacutemo jugar Deslizando el dedo sobre el textose podraacute desplazar hacia arriba y hacia abajo El juegodispondraacute de unas mini instrucciones in game queapareceraacuten en la primera partida que se juegue en forma decajas de texto esta pantalla se muestra en el siguienteapartado

43311 Pantalla de instrucciones in game

Esta pantalla muestra el modo como quedaraacuten integradaslas instrucciones de juego dentro del gameplay Estasinstrucciones apareceraacuten solamente la primera vez que sejuegue

Paacutegina 53 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Todo el disentildeo mostrado en este apartado ha sido realizado con todos los recursos encontradosen la red todos ellos quedan recogidos en el apartado 6 Con el programa Gimp se ha montadotodo el disentildeo de alta fidelidad mostrado en este apartado Se ha trabajado con capas paradisponer de flexibilidad en la construccioacuten del disentildeo A su vez el hecho de tener los disentildeos porcapas nos permitiraacute poderlo exportar a la implementacioacuten del videojuego de una manera coacutemoday raacutepida en el apartado 5 implementacioacuten se hace referencia a como convertir el disentildeo realizadoen capas a recursos graacuteficos del videojuego

En la siguiente ilustracioacuten se muestra una captura del disentildeo de la pantalla de juego descrita enel apartado 4337 realizado con Gimp

ilustracioacuten 242 Disentildeo pantallas con Gimp

Paacutegina 54 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

5Implementacioacuten

51 Arquitectura global

511 Arquitectura del framework libGDX

LibGDX es un framework multiplataforma que actualmente soporta WindowsLinuxMac OS XAndroid iOS y HTML5 Esto permite escribir el coacutedigo una sola vez y desplegarlo en las distintasplataformas comentadas sin tener que modificar el coacutedigo LibGDX permite bajar a maacutes bajonivel si se desea ya que da acceso directo al sistema de ficheros dispositivos de entrada desonido y a OpenGL a traveacutes de la interfaz unificada OpenGL ES11 y 20

LibGDX ofrece a su vez un conjunto de APIs que ayudan en las tareas comunes de desarrollode videojuegos como son la presentacioacuten de sprites texto la creacioacuten de interfaces de usuario lareproduccioacuten de efectos de sonido y secuencias musicales y los distintos tipos de caacutelculosnecesarios en la programacioacuten de videojuegos

En algunas ocasiones LibGDX deja de lado el lenguaje Java y recurre a coacutedigo nativo paraconseguir un mejor rendimiento No obstante todas estas funciones quedan ocultas detraacutes de lasAPIs de Java De manera que en el momento de desarrollar un videojuego no hay quepreocuparse de realizar una compilacioacuten cruzada entre Java y C++

LibGDX es un framework maacutes que un motor de videojuegos que ayuda al desarrollo de estosgracias a las abstracciones de gran alcance que ofrece y deja en manos del programador elegircomo escribir su videojuego o aplicacioacuten

512 Visioacuten de los moacutedulos de libGDX

LibGDX comprende varios moacutedulos que proporcionan los servicios necesarios para crear laarquitectura tiacutepica de un videojuego

ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en unvideojuego

Paacutegina 55 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaA continuacioacuten de describen los moacutedulos mostrados en la ilustracioacuten 25

Input Proporciona un modelo de entrada unificado para todas las plataformas Soporta tecladopantalla taacutectil aceleroacutemetro y ratoacuten si esta disponible

Graphics Permite el dibujo de las imaacutegenes en pantalla usando el hardware proporcionado por laimplementacioacuten de Open GL ES las versiones soportadas son GL versioacuten 10 11 20

Files Proporciona los meacutetodos necesarios para las operaciones de lectura escritura totalmenteindependientes a los medios de comunicacioacuten existente

Audio Proporciona las herramientas necesarias para la reproduccioacuten de sonido para todas lasplataformas

Math Moacutedulo que proporciona los caacutelculos matemaacuteticos necesarios orientados al desarrollo devideojuegos

Physics LibGDX proporciona un wrapper completo al motor de fiacutesicas en 2D open sourcedesarrollado en C++ llamado Box2D

52 Arquitectura de un videojuego

521 Programa vs Aplicacioacuten

Una aplicacioacuten convencional sigue una secuencia loacutegica lineal reacciona cuando sucede alguacutenevento es decir responde a eventos como por ejemplo cuando se pulsa una tecla Por el contrarioun videojuego es maacutes complejo hace caacutelculos y dibuja en pantalla constantemente aunque no seproduzca ninguacuten evento

522 Estructura baacutesica de un videojuego

Programar videojuegos es una forma completamente diferente de programar software Ladiferencia principal entre una aplicacioacuten convencional y un videojuego radica en la gestioacuten deeventos tal y como se ha indicado anteriormente un programa ofrece respuestas a eventos y unavez son servidos permanece a la espera de una nueva orden en cambio un videojuego es unprograma que debe actuar en tiempo real tiene que estar haciendo caacutelculos y dibujando enpantalla constantemente No se puede esperar a que suceda un evento para poder actuaraunque el jugador no haga nada no presione una sola tecla no mueva el ratoacuten el juego tiene quecalcular el tiempo que lleva jugando en ese nivel si le va a atacar alguacuten enemigo si estaacute cargandoenergiacutea y por supuesto dibujar en pantalla todo lo que va sucediendo

La mayoriacutea de videojuegos estaacuten construidos bajo la misma estructura baacutesica sobre la cual correel programa Esta estructura puede tener variaciones pero de forma general se presenta de lasiguiente manera

Inicializacioacuten En esta primera etapa el juego se situacutea en su estado inicial Se realizan lasinicializaciones por lo que respecta a las libreriacuteas o motores que vayan a utilizarse de variables yestructuras de datos referentes a los atributos de las entidades o personajes escenariosconfiguraciones etc y de los diferentes recursos fiacutesicos que vayan a emplearse tales comograacuteficos o sonidos

Paacutegina 56 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Ciclo de juego En esta parte esta toda la accioacuten este ciclo se repite de manera indefinida hastaque el jugador pierda gane o salga del juego Este punto se puede dividir en tres partes quepodemos llamarlas entrada proceso y salida

Como entrada se entiende el punto donde se captura todo lo que hace el jugador comopresionar los botones de control mover el ratoacuten presionar las flechas del teclado tocar la pantallataacutectil y el resto de informacioacuten que recibe el juego

En la parte de proceso es donde se procesa toda la informacioacuten que se recibioacute en la entrada ytiene lugar la loacutegica del videojuego Por tanto es donde se realizan los caacutelculos de fiacutesicas si eljuego los requiere asiacute como tambieacuten los caacutelculos de la inteligencia artificial de esteconjuntamente con el tratamiento graacutefico

La salida es la encargada de enviar al jugador toda la informacioacuten que se ha procesado en laetapa anterior proceso Se muestra al jugador el resultado de lo que hizo con la visualizacioacuten enpantalla del estado actual del videojuego Tambieacuten es en este punto donde se hace sonar lamuacutesica y efectos de sonido

Por uacuteltimo y fuera del ciclo de juego esta la parte de finalizacioacuten esta parte es la encargada deliberar todos los recursos y memoria utilizada durante el transcurso del videojuego

Es importante diferenciar estas tres etapas del ciclo del videojuego y ver queacute tarea se delega encada una de ellas en la entrada tan soacutelo nos ocupamos de captar los posibles eventos el procesose encarga en primer lugar de procesar la entrada y maacutes adelante de la loacutegica del videojuego ypor uacuteltimo la capa de salida se encarga de visualizar y reproducir la muacutesica

Con estos puntos claros se puede mostrar la estructura principal de un videojuego En elsiguiente apartado se muestra esta estructura baacutesica a modo de esquema

Paacutegina 57 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

53 Esquema de la estructura baacutesica de un videojuego

Inicializacioacuten Creacioacuten de estructuras dedatos carga de recursos graacuteficos y sonidos

Entrada Gestioacuten de pantalla taacutectiljoystick teclado

Proceso Lanzamos una oveja al corralrebota la oveja salta un lobo al escenarioetc

Salida Mostrar graacuteficos y reproducirsonidos

ilustracioacuten 26 Estructura baacutesica de unvideojuego

Finalizacioacuten Liberar recursos

Paacutegina 58 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

54 Patrones de disentildeo

541 Introduccioacuten

En el disentildeo de cualquier aplicacioacuten como por ejemplo un videojuegono es posible abordarlo porcompleto El proceso de disentildeo de una aplicacioacuten suele ser iterativo y se realiza en diferentesetapas de forma que se vaya refinando con el tiempo Conseguir un disentildeo perfecto a la primeraes muy difiacutecil de conseguir El disentildeo de aplicaciones es complejo y la maacutes importante y que maacutesimpacto tiene no soacutelo sobre el producto final sino tambieacuten sobre su vida futura Ya que es en eldisentildeo en donde se definen las estructuras y entidades que se van a encargar de resolver elproblema planteado Como de bien se definan estas estructuras y entidades influiraacute en granmedida en el eacutexito o fracaso del proyecto y en la viabilidad de su mantenimiento

Los patrones de disentildeo son formas reconocidas y probadas de resolver problemas de disentildeo queson recurrentes en el tiempo No es maacutes que basarse en experiencias anteriores en problemassimilares aplicado soluciones probadas anteriormente en determinados contextos para alcanzarun mejor disentildeo maacutes raacutepidamente

Existen distintos patrones para distintos problemas de disentildeo No obstante en este documentosoacutelo se haraacute hincapieacute en los patrones utilizados para este proyecto Quedando fuera del alcancede este documento los demaacutes patrones existentes

542 Patrones de creacioacuten

Estos patrones nos proporcionan una solucioacuten relacionada con la construccioacuten de clases objetosy otras estructuras de datos Algunos ejemplos de patrones pueden ser Abstract Factory BuilderSingleton estos ofrecen mecanismos de creacioacuten de instancias de objetos y estructurasescalables dependiendo de las necesidades

543 Singleton

Para este proyecto se ha utilizado este patroacuten ya que era necesario tener una uacutenica instancia dealgunas determinadas clases En java cuando se utiliza el operador new es posible crear unainstancia de un objeto No obstante a veces es necesario tener una uacutenica instancia de un objetopor ejemplo para poder acceder a ella des de cualquier punto de la aplicacioacuten Seria un ejemplolapelota de un juego de pinball en donde podriacutea ser conveniente mantener una uacutenica instancia deeste objeto

La solucioacuten para garantizar que solo existe una instancia de un objeto se consigue impidiendoque ninguna otra clase pueda acceder al constructor por este motivo de declara el constructorcomo miacutenimo de forma protegida o privada y se proporciona un uacutenico punto (controlado) en dondese proporciona la uacutenica instancia En la siguiente ilustracioacuten se muestra el diagrama de clases delpatroacuten Singleton

ilustracioacuten 27 Singleton

Paacutegina 59 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria A continuacioacuten en el listado 543 se muestra una implementacioacuten baacutesica del patroacuten Singletonutilizada en el proyecto para la clase que maneja el audio del videojuego

Listado 543

1 package comthreecometflingthesheeputil23 import combadlogicgdxaudioMusic 4 import combadlogicgdxaudioSound56 public class AudioManager 7 8 public static final AudioManager instance = new AudioManager()910 private Music playingMusic11 private Sound playingSound1213 Singleton14 private AudioManager() 15 1617 1819 public void ResunmeMusic()20 21 if(playingMusic = null) playingMusicplay()22 2324 public void PlayMusic(Music musicfloat volumeboolean loop) 25 26 if(GamePreferencesinstancemusic) return27 playingMusic = music28 musicsetLooping(loop)29 musicsetVolume(volume)30 musicplay()31 3233 public void StopMusic()34 35 if(playingMusic = null) playingMusicstop()36 3738 public void PauseMusic()39 40 if(playingMusic = null) 41 if(playingMusicisPlaying()) 42 playingMusicpause()43 44 45 4647 public void PlaySound(Sound soundfloat volume) 48 49 if(GamePreferencesinstancesound) return50 playingSound = sound51 soundplay(volume)52 5354 public void PlaySound(Sound soundfloat volumefloat pitchfloat pan) 55 56 if(GamePreferencesinstancesound) return57 playingSound = sound58 soundplay(volume pitch pan)59 60

Esta clase maneja el audio del videojuego tanto efectos de sonido como la muacutesica es una clase

Paacutegina 60 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debe estar accesible des de cualquier punto de la aplicacioacuten y no tiene ninguacuten sentido que seinstancie repetidas veces soacutelo sera necesaria una instancia de dicha clase para poder manejar losaudios y muacutesicas Como se puede ver en la linea 14 del listado 543 se declara el constructorprivado y en la linea 8 se proporciona el punto donde se proporciona la uacutenica instancia de dichaclase a traveacutes de la variable instance declarada de forma publica para que se accesible desdecualquier otra clase y a su vez declarada de forma static y final Con final le decimos que estavariable ya no puede ser modificada una vez declarada es decir sera una constante Con static leindicamos que podremos utilizar la variable instance sin la necesidad de hacer ninguna instanciacon el operador new de la clase AudioManager

Existen varias clases en el videojuego que son singleton A continuacioacuten se nombran todas ellasAudioManager Assets WorldGameController CounterTime GamePreferences

55 Diagramas de clases definitivos

Se ha dividido en varios diagramas para facilitar su lectura se pueden ver los diagramas en lossiguientes apartados de este documento A continuacioacuten se pasan a comentar las clases descritasen ellos

56 Diagramas nuacutecleo videojuego

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep-android encontramoslas siguientes clases

MainActivity Hereda de AndroidAplication que a su vez hereda de Activity es donde se crea laaplicacioacuten crea una instancia de FlingTheSheepMain

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep encontramos laclase FlingTheSheepMain donde se instancia la pantalla de intro del juego dentro del meacutetodocreate

Siguiendo el esquema estructural de un videojuego descrito en el punto 53 de este documentola ilustracioacuten 28 detalla el diagrama de clases que engloba la inicializacioacuten del juego y el ciclo devida

La Inicializacioacuten queda recogida en la clase Assets esta clase es un singleton que instanciaotras clases que a su vez guardan todos los recursos del videojuego por recursos se entiendetexturas para los graacuteficos archivos de audio ficheros con informacioacuten necesaria para el juegoUna vez inicializado el hecho de ser un singleton nos permite acceder a estas clases a traveacutes dela clase assets des de cualquier punto de la aplicacioacuten En la ilustracioacuten 29 se detallan todas estasclases que engloba la clase assets Esta clase se encuentra el el paquetecomthreecometflingthesheepgame A continuacioacuten se comenta cada una de ellas con una brevedescripcioacuten

LevelDecoration Enumera todas las texturas de los objetos de decoracioacuten del videojuego floreshierba etc Son objetos que no tienen ninguna interaccioacuten con el juego simplemente decoran

AssetFontsScene2D Engloba los tipos distintos de fuente que se utilizan en el videojuego tipode letra medida y color

AssetSound Enumera todos los efectos de sonido del juego

Paacutegina 61 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAssetMusic Contiene todas las muacutesicas del juego

FileHandleHighScores Inicializa la tabla de puntuaciones local y la actualiza cada vez que serealiza una partida de juego

LevelObjects Engloba todos los objetos que tienen interaccioacuten con el videojuego por interaccioacutense entiende objetos que pueden colisionar con otros o que tienen alguacuten papel importante dentrode videojuego no son solo objetos de decoracioacuten

Character Contiene el protagonista del juego el personaje que lleva el jugador en esta caso lasovejas

NPCs En esta clase quedan englobadas las texturas de los enemigos en esta caso los lobos

GUI En esta clase se engloban todas las texturas utilizadas para la creacioacuten de la interfaz deusuario botones imaacutegenes

La clase Constants es una clase que declara varias constates estaacuteticas que son accesibles desde cualquier punto de la aplicacioacuten y se utilizan tanto en la inicializacioacuten como en el ciclo de vidadel videojuego La podemos encontrar en el paquete comthreecometflingthesheeputil

El ciclo de vida del videojuego entrada proceso y salida queda repartido en las siguientes clases

Entrada Gestioacuten pantalla taacutectil se realiza en la clase WorldGameController en el meacutetodollamado handleInput a su vez cada personaje(character) y enemigo(NPC) gestiona su propiaentrada de eventos a traveacutes de los meacutetodos sobre escritos touchDown fling y tap Ver ilustracioacuten30 clases Sheep y Wolf

Proceso Este apartado realiza la loacutegica del videojuego y es responsable de esto el meacutetodoupdate de la clase WorldGameController Dentro de este meacutetodo existe implementada lamaquina de estados descrita en el apartado 231 con todos los estados posibles que el juegopuede tener durante su ciclo de vida los estados son READYGAMEPAUSEGAME OVER Cadapersonaje y enemigo lleva implementado su propia loacutegica y maquina de estados dentro de susclases correspondientes Ver ilustracioacuten 30 clases Sheep y Wolf estas maacutequinas de estados sonlas descritas en los apartados 232 y 233 respectivamente

Salida La salida descrita en el apartado 53 queda recogida en la clase GameScreen Verilustracioacuten 31

Finalizacioacuten La finalizacioacuten liberacioacuten de recursos queda a cargo del meacutetodo sobre escrito hiderepartido por las distintas clases de la aplicacioacuten

Otras clases que intervienen en el ciclo de juego recogidas en la ilustracioacuten 28 sonCounterTime GamePreferences AudioManager a continuacioacuten se detalla la funcionalidad decada una de ellas

CounterTime Esta clase engloba el calculo de tiempo transcurrido desde que empieza el juegohasta que termina hace la funcioacuten de contador de tiempo interno

GamePreferences Esta clase hace persistente la configuracioacuten escogida por el usuario en lasopciones Es posible configurar el juego con o sin sonido al igual que los efectos de audio estaclase es la encargada de guardar esta configuracioacuten aunque abandonemos la aplicacioacuten

Paacutegina 62 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

AudioManager Clase que se encarga tanto de la reproduccioacuten de audio como los efectos desonido es su responsabilidad interrogar la configuracioacuten actual del sonido y efectos paradeterminar si tiene que realizar la reproduccioacuten de audio o efectos asiacute como tambieacuten determinarel volumen del sonido o si un audio hay que reproducirlo de forma ciacuteclica En el listado 543 deeste documento se puede ver el coacutedigo de esta clase como ejemplo de singleton

ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego

Paacutegina 63 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 29 Diagrama de clases Assets

57 Diagrama de clases objetos videojuego

En la ilustracioacuten 30 de este documento se detalla el diagrama de clases referente a los objetosdel videojuego Por objetos se entiende personaje principal enemigos juntamente con todos loselementos que forman el conjunto del escenario del videojuego

En primer lugar cabe destacar la existencia de la clase abstracta AbstractGameObject Estaclase abstracta define los meacutetodos comunes de todos los objetos del juego Por las necesidadesde implementacioacuten no se han definido meacutetodos abstractos no obstante la clase se define comoabstracta ya que va a ser la superclase de todos los objetos del videojuego y por tanto no se van arealizar instancias de esta A continuacioacuten se enumeran las clases que se extienden de esta y querecogen todos los objetos del juego ya sean con o sin interaccioacuten en el

Paacutegina 64 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaGrass Hole Flower Flowers Stump ForestLeft ForestRight ThePen WoodFenceForestWoodFencePen DoorPen BorderGrassLeft BorderGrassRight PotionPurple AubergineRedPuddle Tree GrassField

Estas clases corresponden a los objetos que constituyen el escenario del videojuego Las clasesSheep y Wolf corresponden al personaje del videojuego y a los enemigos respectivamente estasclases no solamente contienen el meacutetodo para ser dibujadas en pantalla igual que las anterioressino que tambieacuten poseen toda la loacutegica para el comportamiento de cada una de ellas este puntocorresponderiacutea a la fase de proceso de la estructura baacutesica de un videojuego detallada en elpunto 53 de este documento Existe para cada personaje y enemigo una maquina de estadosimplementada que indica en que estado se encuentra en cada momento aplicando la loacutegicacorrespondiente para ese estado Ver las enumeraciones SHEEP_STATE y WOLF_STATE de lailustracioacuten 30 estas corresponden a las maacutequinas de estado definidas en los apartados 232 y233 respectivamente

Finalmente en la ilustracioacuten 30 aparecen las clases GameScreen y WorldGameController

La clase GameScreen como se vera en el apartado 58 es la clase que engloba todo lorelacionado con la pantalla del juego o nivel En ella se instancian todos los objetos descritosanteriormente para la creacioacuten del nivel asiacute como tambieacuten la creacioacuten de la GUI del videojuegobotones textos sobreimpresos y cajas de textos Es por este motivo que en la clase GameScreenexisten dependencias u asociaciones hacia todos los objetos dependiendo del tipo de declaracioacutende estos

La clase WorldGameController contiene la implementacioacuten de gran parte de la loacutegica delvideojuego esta clase formariacutea parte de la etapa de proceso dentro de la estructura baacutesica de unvideojuego descrita en el apartado 53 de este documento

Existe tambieacuten en esta clase una asociacioacuten hacia la clase GameScreen ya que des de la claseWorldGameController que es donde se encuentra gran parte de la loacutegica es necesario accedera la instancia de GameScreen para interactuar con varios elementos visuales que manipulan laloacutegica del videjuego

En la siguiente hoja se muestra la ilustracioacuten 30 correspondiente a todo los descrito en esteapartado

Paacutegina 65 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 30 Diagrama de clases objetos

Paacutegina 66 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

58 Diagrama de clases pantallas videojuego

En la ilustracioacuten 31 quedan recogidas todas las clases que intervienen en la creacioacuten depantallas del videjuego por pantallas se entine la pantalla de intro la del menuacute principal la deopciones etc Estas clases engloban todo lo necesario para la construccioacuten y visualizacioacuten deestas A continuacioacuten se detallan cada una de las clases

AbstractGameScreen Esta clase abstracta recoge todos los meacutetodos abstractos que sonimplementados en cada una de las clases que a continuacioacuten se detallan(pantallas) con la loacutegicanecesaria seguacuten las necesidades de cada pantalla No se crea ninguna instancia de esta clase

IntroScreen Corresponde a la pantalla de intro del videojuego descrita en el apartado 4331

MenuScreen Corresponde a la pantalla del menuacute inicial del juego des de aquiacute podemos escogersi jugar consultar la tabla de puntuaciones local ir a las opciones o a la pantalla de ayuda delvideojuego descrita en el apartado 4332 OptionsScreenPantalla de opciones descrita en el apartado 4333

CreditsScreen Pantalla de creacuteditosdescrita en el apartado 4334

HighScoresScreen Pantalla en donde se recoge la puntuacioacuten local del videojuegodescrita en elapartado 4335

GameScreen Pantalla general esta clase engloba toda la loacutegica del nivel del juego a su vezengloba la pantalla inicial de nivel READY la pantalla de pausa del juego y la de game overdescritas en los apartados 4336 4337 4338 4339

HowToPlayScreen El videojuego dispone de un tutorial in game que solo aparece la primera vezque jugamos a el y en las siguientes partidas ya no vuelve aparecer maacutes descrita en el apartado43311 No obstante existe una pantalla en donde podemos ver este tutorial fuera del juego estaclase esta destinada a contener los datos de esta pantalla descrita en el apartado 43310

TextGUI Esta clase contiene todos los textos sobreimpresos que existen en el videojuego En ellaesta la loacutegica de cada uno de estos textos para que sean posicionados y visualizados desde lasdistintas partes del videojuego

TUTORIAL_INGAME_STATE Esta enumeracioacuten enumera los estados de la maquina de estadosutilizada para mostrar el tutorial in game dentro del videojuego la primera vez que jugamos lamaacutequina de estados esta implementada dentro de la clase TextGUI la maacutequina corresponde a ladescrita en el apartado 234

En la siguiente hoja se muestra la ilustracioacuten correspondiente a todo los descrito en esteapartado

Paacutegina 67 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 31 Diagrama de clases pantallas

Paacutegina 68 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

59 Configurar el entorno de desarrollo

Antes de empezar a desarrollar juegos con libGDX es necesario instalar y configurar el entornode desarrollo Para ello se utilizaraacute Eclipse como entorno de desarrollo integrado IDE A su vez secreara un proyecto que nos serviraacute como base para el desarrollo de este

Es posible desarrollar con otros entornos distintos a Eclipse pero el hecho que Eclipse sea elentrono de desarrollo soportado oficialmente ha sido motivo suficiente para escogerlo para esteproyecto como entorno de desarrollo

591 Instalacioacuten

Para poder instalar el entorno de desarrollo nos haraacute falta primero instalar el Java DevelopmentKit(JDK) para posteriormente poder instalar eclipse

Una vez instalados seraacute necesario bajar el framework libGDX del siguiente enlace

httplibgdxbadlogicgamescomdownloadhtml

Tambieacuten sera necesario instalar el Android SDK seguidamente tendremos que ejecutar eclipse yinstalar los plugins necesarios para poder desarrollar con Android El plugin necesario paradesarrollar con Eclipse sobre Android de llama ADT (Android Developer Tools) Para instalar esteplugin debemos dirigirnos a Help--gtInstall new software tal y como muestra la siguiente ilustracioacuten

ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse

Paacutegina 69 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez el entorno de desarrollo preparado seraacute el momento de descomprimir el frameworklibGDX se recomienda descomprimirlo en la raiacutez ClibGDX en esta caso ya que trabajamos bajoWindows

Una vez descomprimido dentro de la la carpeta encontramos una aplicacioacuten llamada gdx-setup-uijar Esta aplicacioacuten nos ayuda a crear un proyecto ya configurado con las libreriacuteas necesariaslisto para ser importado a Eclipse y empezar a desarrollar con libGDX para Android O paracualquier otra de las plataformas soportadas por el framework En este caso se configura elproyecto para Android y para Escritorio de esta manera podremos verificar durante el desarrollodel proyecto los avances sin necesidad de instalarlo en un dispositivo Android ya sea fiacutesico ovirtual

Las siguientes ilustraciones muestran la configuracioacuten a realizar

ilustracioacuten 33 Creacioacuten proyecto libGDX Habraacute que pulsar en el botoacuten Create y con ello accederemos a la siguiente ilustracioacuten

ilustracioacuten 34 Creacioacuten proyecto libGDX

Paacutegina 70 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez configuradas todas las opciones le daremos al paso 4 Open the generation screen ygeneraremos el proyecto Esto proyecto sera importable a eclipse desde la opcioacuten Import delpropio IDE La configuracioacuten del proyecto tambieacuten es posible hacerla a mano no obstante esta aplicacioacutennos ahorra tiempo y posibles errores en el momento de configurarlo dentro del entorno ya quepara hacerlo a mano existen distintos pasos a seguir para conseguir lo mismo que se consiguecon esta aplicacioacuten con escasos clicks de ratoacuten

510 Traspaso del disentildeo a texturas

Todo el disentildeo realizado en el apartado 4 seraacute necesario pasarlo a texturas para posteriormenteutilizarlo en la implementacioacuten del juego como recursos graacuteficos

Una textura es una imagen digital cualquiera en cualquiera de los formatos habituales jpg pnggif tga etc Para poderla cargar dentro de un videojuego y manipularla haraacute falta una libreriacuteaespecializada para ello esto se podria programar para para el caso de este proyecto utilizamos elpropio framework libGDX para realizar esta tarea que a su vez envuelve el uso de OpenGL

Las texturas en OpenGL deben ser siempre potencias de 2163264128256 etc del contrarionos daraacute problemas y no funcionaraacute

El primer paso sera desmontar todas las capas pieza por pieza por decirlo de alguna manera ycrear ficheros de cada una de las capas de forma separada para guardarlas todas en una carpetacon un nombre identificativo Ver la siguiente ilustracioacuten

ilustracioacuten 35 Capas separadas por imaacutegenes

Paacutegina 71 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez realizado este paso deberemos juntarlas todas de nuevo en una uacutenica textura que seapotencia de 2 Trataacutendose de un juego para moacutevil las texturas no deberiacutean ser mayores de1024x1024 y no se podraacuten cargar muchas de ellas en memoria por razones obvias de recursosdel tipo de dispositivo

Para juntarlas utilizaremos una aplicacioacuten llamada Texture Packer esta nos juntara las texturasde repartieacutendola de forma que quepan en una tamantildeo de textura definido que en este caso serade 1024x1024 en caso de caber en una uacutenica textura el programa generara 2 texturas siempreoptimizadas a potencias de 2 La siguiente ilustracioacuten muestra el programa Texture packer

Ilustracioacuten 36 Texture packer El formato de salida de las textura sera png ya que necesitamos mantener el canal alpha deestas activado para los objetos sean correctamente dibujados en la escena del videojuego

Conjuntamente con la textura la aplicacioacuten nos generara un archivo de texto que contendraacute elnombre de la textura y la posicioacuten donde se encuentra dentro de la textura generada de1024x1024 Ver la siguiente ilustracioacuten en la siguiente paacutegina

Paacutegina 72 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 37 Posicioacuten texturas De esta manera podremos cargar las texturas en la fase inicializacioacuten en la clase Assets descritaen la ilustracioacuten 29 en forma de diagrama de clases

511 Implementacioacuten de las maacutequinas de estado

La implementacioacuten de las maacutequinas de estado se realiza con una estructura enumconjuntamente con una estructura switch case El siguiente listado muestra la declaracioacuten del laestructura enum implementada en la clase WorldGameController la implementacioacuten de todas lasmaacutequinas se realiza del mismo modo por tanto se toma esta como ejemplo en representacioacuten detodas las implementadas en el videojuego

Listado 5111

1 private enum GAME_STATE READYGAMEPAUSEGAME_OVER2 private GAME_STATE gameState34 gameState = GAME_STATEREADY

Paacutegina 73 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLa siguiente tabla muestra un trozo de la estructura switch case implementada en el meacutetodoupdate de la clase WorldGameController

Listado 5112

1 public void update(float deltaTime)2 3 switch(gameState)4 5 case READY6 if(audioReady) 7 AudioManagerinstancePlaySound(Assetsinstancesoundready 8 ConstantsVOLUME_AUDIO_EFFECTS)9 audioReady = false10 11 if(timeLeftShowReadyScreen gt 0)12 13 if(deltaTime lt 03f ) 14 timeLeftShowReadyScreen -=deltaTime15 16 if(timeLeftShowReadyScreen lt 0)17 18 gameScreensetVisibilityGUI()19 timeLeftShowReadyScreen = 020 CounterTimeinstancestartTime()21 22 AudioManagerinstancePlayMusic(Assetsinstancemusiclevel01 23 ConstantsVOLUME_MUSIC_GAME true)24 gameState = GAME_STATEGAME 2526 27 28 break 29 case GAME30 updateGame() 31 if(timeOpenDoorPen gt 0)32 33 if(deltaTime lt 03f ) 34 timeOpenDoorPen -= deltaTime35 36 if(timeOpenDoorPen lt= 0) 37 gameScreengetDoorPen()setVisibility(gameScreengetDoorPen()getVisibility())38

En este listado podemos ver el estado READY y un trozo del estado GAME de la maacutequina deestados definida en el apartado 231 de este documento inicialmente la maacutequina toma el estadoREADY como se puede ver en la linea 4 del listado 5111 este estado se ira repitiendo a cadavuelta del ciclo de vida del videojuego hasta que cambie el estado de juego a GAME estosucederaacute una vez transcurridos 3 segundos tal y como se puede ver en la linea 24 del listado5112 Hay que tener en cuenta que un videojuego tal y como se ha definido en el apartado 522de este documento forma un bucle infinito por tanto la funcioacuten update de la linea 1 de este listadose repetiraacute de forma indefinida durante la ejecucioacuten del nivel de juego y cada vuelta ejecutaraacute elestado en que se encuentre la maacutequina de estados

Paacutegina 74 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6Conclusiones El desarrollo del proyecto ha sido tal y como se esperaba en lineas generales no han habidograndes desviaciones de tiempo ni durante el disentildeo ni en el posterior desarrollo de este Cabedestacar que el hecho de poder probar el proyecto ejecutaacutendolo en la propia maacutequina donde se hadesarrollado sin tener que utilizar un dispositivo real o virtual cada vez que se ha querido verificarha hecho que el desarrollo sea mucho maacutes fluido que sino se hubiera contado con el escenariodescrito Esto no significa que en ciertos momentos del desarrollo no se haya probado con undispositivo real Android Dejando a parte la gran ventaja que esto significa ya que una vezdesarrollado el esfuerzo realizado nos sirve para distintas plataformas casi sin tener que tocarnada del coacutedigo

Por tanto el hecho de haber escogido libGDX para el desarrollo ha sido una buena eleccioacuten Estambieacuten una buena eleccioacuten escoger un framework o un motor focalizado al desarrollo devideojuegos si se quiere implementar uno ya sea para Android o para cualquier plataforma

Existe la posibilidad de desarrollarlo sin ninguacuten tipo de framework o motor pero hay que tenerclaro que se quiere hacer exactamente y a donde se quiere llegar es decir si lo que se quiere escentrarse en la programacioacuten de videojuegos es mucho mejor partir de un framework o motor yaque de esta forma nos desligamos de programar ciertos apartados que estaacuten maacutes focalizados a laprogramacioacuten de frameworks o motores para videojuegos que no a la programacioacuten devideojuegos en si

Yendo maacutes allaacute de donde el programador se quiere centrar existe otro factor importante a teneren cuenta en el momento de plantear un proyecto llamado tiempo con el tiempo de que se hadispuesto para este proyecto queda auacuten maacutes justificado la eleccioacuten de este framework pararealizarlo Ya que probablemente sin el debido al esfuerzo mayor en programar apartados que noson exclusivos del videojuego pudieran haber existido desviaciones de tiempo importantes enrelacioacuten al calendario propuesto

Ha quedado fuera del proyecto por temas de tiempo realizar animaciones a todos los personajesdel videojuego para conseguir una mejor experiencia de usuario y un nivel de acabado superiorFuera del proyecto tambieacuten ha quedado la implementacioacuten no solo de unas puntuacionesmaacuteximas a nivel local sino tambieacuten unas a nivel mundial consultables a traveacutes de una paacutegina webA su vez no solo guardariacutea la puntuacioacuten maacutexima sino tambieacuten el tiempo jugado las ovejassalvadas y los lobos ahuyentados Tambieacuten ha quedado fuera de este proyecto la realizacioacuten deun blog dedicado al videojuego Todos estos apartados se implementaran en breve fuera de esteTFC

7Recursos utilizados

71 Portada documento

Jake Maymar httpwwwflickrcomphotosmaymar5334789030httpcreativecommonsorglicensesby-sa20deeden

72 Recursos utilizados para el disentildeo del videojuego

Para realizar todo el disentildeo visual del videojuego se ha recurrido a diferentes fuentes de arte

Paacutegina 75 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriasujetas a licencias creative commons y dominio puacuteblico A continuacioacuten se detalla una lista decada recurso con su autor en el caso de que no haya sido publicado de forma anoacutenimajuntamente con el link donde se ha encontrado

721 Fotografiacutea pantalla intro videojuego y usuarios

Michael Karrerhttpwwwflickrcomphotosmichael_karrer78438470httpcreativecommonsorglicensesby-nc20deeden

Jodi Womackhttpwwwflickrcomphotosjodiwomack6217578512httpcreativecommonsorglicensesby20deeden

Tony Alterhttpwwwflickrcomphotos78428166N008279647916httpcreativecommonsorglicensesby20deeden

Gage Skidmore (Nina Dobrev)httpwwwflickrcomphotosgageskidmore5980906910httpcreativecommonsorglicensesby-sa20deeden

722 Iconos y botones

7221 Altavoz

Autor httpwwwiconshockcom Link httpswwwiconfindercomicons67771audio_speaker_iconsize=128Licencia Free for commercial use

7222 Nota Musical

Autor httpwwwdezinerfoliocomLink httpswwwiconfindercomicons58679music_iconsize=128Licencia Free for commercial use

7223 Flecha salida

Autorhttptayteldeviantartcom Linkhttpswwwiconfindercomicons41696arrow_back_grey_left_orange_iconsize=128LicenciaFree for commercial use (Include link to authors website) 7224 Icono de pausa

AutorhttpwwwwebdesignerdepotcomLink httpswwwiconfindercomicons40716blue_button_pause_iconsize=64Licencia Free for commercial use

7225 Icono interrogante (help)

AutorhttpwwwdoublejdesigncoukLinkhttpwwwiconarchivecomshowravenna-3d-icons-by-double-j-designHelp-iconhtml

Paacutegina 76 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLicencia httpcreativecommonsorglicensesby30

7226 Botones (Play Score Options)

AutorydLinkhttpopengameartorgcontentbuttons-variationsLicenciahttp creativecommonsorgpublicdomainzero10

723 Recursos graacuteficos 2D componentes escenario

7231 Ojos lobos

AutorCreek23Link httpopengameartorgcontentgnu-the-gnu-mascotLicencia httpcreativecommonsorglicensesby-sa30

7232 Ovejas y lobos

Autor lemmlingLink httpopenclipartorguser-clipartslemmlingLicencia httpopenclipartorgshare

7233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY

AutorSamLink httpopengameartorgcontentcountry-fieldLicencia httpcreativecommonsorgpublicdomainzero10

7234 Escenario

Daniel EddelandLinkhttpopengameartorgcontentlpc-farming-tilesets-magic-animations-and-ui-elementsLicenciahttpcreativecommonsorglicensesby-sa30

724 Fuentes

7241 ThinckheadAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10 7242 MisfortuneAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7243 TabaqueraAutor deFharoLink httpwwwdafontcomesfernando-harod3419l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7244 Press Start Font

Paacutegina 77 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAutor desconegutLink httpwwwzone38netfontpressstartLicencia httpscriptssilorgcmsscriptspagephpsite_id=nrsiampid=OFL

725 Otros

Todos los demaacutes recursos no nombrados en esta lista como el fondo de pantalla del menuacuteprincipal de inicio del juego y las letras del titulo del juego Fling the sheep impresas sobre lapantalla del menuacute inicial son de elaboracioacuten propia

726 Audio y efectos de sonido

7261 Menu

Autor mrpolyLinkhttpopengameartorgcontentmenu-musicLicencia httpcreativecommonsorgpublicdomainzero10

7262 Game Over

Autor MacroLinkhttpopengameartorgcontentrest-outro-loopLicenciahttpcreativecommonsorglicensesby30

7263 Game Play

AutorRezonerLinkhttpopengameartorgcontenttrance-menuLicenciahttpcreativecommonsorglicensesby30

7264 Creacutedits

Autor -Linkhttpopengameartorgcontent1-minute Licenciahttpcreativecommonsorgpublicdomainzero10

7265 Ready

httpopengameartorgcontentui-accept-or-forwardhttpcreativecommonsorglicensesby30

7266 Pause_Resume

httpopengameartorgcontentcompletion-sound httpcreativecommonsorglicensesby30

7267 Quit

httpopengameartorgcontentfly-swatter-squish-sound httpcreativecommonsorgpublicdomainzero10

7268 Sheep

Paacutegina 78 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

httpopengameartorgcontentsheep-sound-bleats-yo-frankiehttpcreativecommonsorglicensesby30

El resto de efectos de audio han sido obtenidos de la siguiente paacutegina httpwwwpond5com

8Lineas abiertas del proyecto Se haraacute un repaso del proyecto por si existe alguacuten bug para solucionarlo Posteriormente deadaptara para que sea funcional en distintas resoluciones de pantalla Se antildeadiraacuten los power-upsque se definieron al principio del proyecto por temas de tiempo han quedado fuera de la entregaA su vez se balanceara el gameplay antildeadiendo alguna mecaacutenica de juego extra si procede

Se publicara el juego en Google Play y se creara un blog del juego se mirara la posibilidad dehacer funcionar el juego en el blog con webGL httpprojects3cometcom

Se ampliara la tabla de puntuaciones de la siguiente manera la tabla no solamente guardara lospuntos tambieacuten guardara el tiempo jugado nuacutemero de lobos ahuyentados nuacutemero de ovejassalvadas y nombre del usuario con 5 caracteres Se creara un un registro de puntuaciones globalconsultable desde el blog del videojuego

Finalmente se crearan maacutes niveles de juego con distribuciones diferentes alguacuten nivel podriacuteatambieacuten tener mecaacutenicas diferentes de juego con los mismos personajeshellip

9Bibliografiacutea utilizada

Titulo Beginning Android Games (Second Edition) ISBN 978-1-43024-677-0

Autor Mario Zechner Robert Green

Editorial Apress

Contenido Desarrollo de videojuegos para Android

Titulo Learning libGDX Game Development ISBN 978-1-78216-604-7

Autor Andreas Oehlke

Editorial PACKT Publishing

Contenido Desarrollo de videojuegos para Android con libGDX

Paacutegina 79 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

10Otros proyectos realizados

101 Remake Gradius Konami

Remake del famoso shooter de Konami lanzado para ordenadores MSX en 1986 programadocon C++ con SDL Aunque este juego existe para multitud de plataformas Ver articulo wikipedia

httpeswikipediaorgwikiGradius_videojuego

Blog del proyecto httpprojects3cometcom

102 Tales of Nimria mini RPG

Mini RPG en 2D programado en C++ con DirectX este mini RPG trata de salvar a una princesacapturada por unas malvadas criaturas

Blog del proyecto httpprojects3cometcom

102 Motocalipsis Bar 66 RTS RTS en 3D con ambiente motero los hechos de la historia suceden en un pequentildeo pueblo deTexas Programado en Unity con C

Blog del proyecto httpmotocalipsisbar66blogspotcomes

Paacutegina 80 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Creative Commons 40 license by-nc-sa

Attribution-NonCommercial-ShareAlike 40 International

===========================================================

Creative Commons Corporation (Creative Commons) is not a law firm anddoes not provide legal services or legal advice Distribution ofCreative Commons public licenses does not create a lawyer-client orother relationship Creative Commons makes its licenses and relatedinformation available on an as-is basis Creative Commons gives nowarranties regarding its licenses any material licensed under theirterms and conditions or any related information Creative Commonsdisclaims all liability for damages resulting from their use to thefullest extent possible

Using Creative Commons Public Licenses

Creative Commons public licenses provide a standard set of terms andconditions that creators and other rights holders may use to shareoriginal works of authorship and other material subject to copyrightand certain other rights specified in the public license below Thefollowing considerations are for informational purposes only are notexhaustive and do not form part of our licenses

Considerations for licensors Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights Our licenses are irrevocable Licensors should read and understand the terms and conditions of the license they choose before applying it Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected Licensors should clearly mark any material not subject to the license This includes other CC- licensed material or material used under an exception or limitation to copyright More considerations for licensors wikicreativecommonsorgConsiderations_for_licensors

Considerations for the public By using one of our public licenses a licensor grants the public permission to use the licensed material under specified terms and conditions If the licensors permission is not necessary for any reason--for example because of any applicable exception or limitation to copyright--then that use is not regulated by the license Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant Use of

Paacutegina 81 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria the licensed material may still be restricted for other reasons including because others have copyright or other rights in the material A licensor may make special requests such as asking that all changes be marked or described Although not required by our licenses you are encouraged to respect those requests where reasonable More_considerations for the public wikicreativecommonsorgConsiderations_for_licensees

===========================================================

Creative Commons Attribution-NonCommercial-ShareAlike 40 InternationalPublic License

By exercising the Licensed Rights (defined below) You accept and agreeto be bound by the terms and conditions of this Creative CommonsAttribution-NonCommercial-ShareAlike 40 International Public License(Public License) To the extent this Public License may beinterpreted as a contract You are granted the Licensed Rights inconsideration of Your acceptance of these terms and conditions and theLicensor grants You such rights in consideration of benefits theLicensor receives from making the Licensed Material available underthese terms and conditions

Section 1 -- Definitions

a Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated altered arranged transformed or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor For purposes of this Public License where the Licensed Material is a musical work performance or sound recording Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image

b Adapters License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License

c BY-NC-SA Compatible License means a license listed at creativecommonsorgcompatiblelicenses approved by Creative Commons as essentially the equivalent of this Public License

d Copyright and Similar Rights means copyright andor similar rights closely related to copyright including without limitation performance broadcast sound recording and Sui Generis Database

Paacutegina 82 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Rights without regard to how the rights are labeled or categorized For purposes of this Public License the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights

e Effective Technological Measures means those measures that in the absence of proper authority may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20 1996 andor similar international agreements

f Exceptions and Limitations means fair use fair dealing andor any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material

g License Elements means the license attributes listed in the name of a Creative Commons Public License The License Elements of this Public License are Attribution NonCommercial and ShareAlike

h Licensed Material means the artistic or literary work database or other material to which the Licensor applied this Public License

i Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license

j Licensor means the individual(s) or entity(ies) granting rights under this Public License

k NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation For purposes of this Public License the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange

l Share means to provide material to the public by any means or process that requires permission under the Licensed Rights such as reproduction public display public performance distribution dissemination communication or importation and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them

Paacutegina 83 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria m Sui Generis Database Rights means rights other than copyright resulting from Directive 969EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases as amended andor succeeded as well as other essentially equivalent rights anywhere in the world

n You means the individual or entity exercising the Licensed Rights under this Public License Your has a corresponding meaning

Section 2 -- Scope

a License grant

1 Subject to the terms and conditions of this Public License the Licensor hereby grants You a worldwide royalty-free non-sublicensable non-exclusive irrevocable license to exercise the Licensed Rights in the Licensed Material to

a reproduce and Share the Licensed Material in whole or in part for NonCommercial purposes only and

b produce reproduce and Share Adapted Material for NonCommercial purposes only

2 Exceptions and Limitations For the avoidance of doubt where Exceptions and Limitations apply to Your use this Public License does not apply and You do not need to comply with its terms and conditions

3 Term The term of this Public License is specified in Section 6(a)

4 Media and formats technical modifications allowed The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created and to make technical modifications necessary to do so The Licensor waives andor agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights including technical modifications necessary to circumvent Effective Technological Measures For purposes of this Public License simply making modifications authorized by this Section 2(a) (4) never produces Adapted Material

5 Downstream recipients

a Offer from the Licensor -- Licensed Material Every recipient of the Licensed Material automatically

Paacutegina 84 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License

b Additional offer from the Licensor -- Adapted Material Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapters License You apply

c No downstream restrictions You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material

6 No endorsement Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are or that Your use of the Licensed Material is connected with or sponsored endorsed or granted official status by the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i)

b Other rights

1 Moral rights such as the right of integrity are not licensed under this Public License nor are publicity privacy andor other similar personality rights however to the extent possible the Licensor waives andor agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights but not otherwise

2 Patent and trademark rights are not licensed under this Public License

3 To the extent possible the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme In all other cases the Licensor expressly reserves any right to collect such royalties including when the Licensed Material is used other than for NonCommercial purposes

Paacutegina 85 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 3 -- License Conditions

Your exercise of the Licensed Rights is expressly made subject to thefollowing conditions

a Attribution

1 If You Share the Licensed Material (including in modified form) You must

a retain the following if it is supplied by the Licensor with the Licensed Material

i identification of the creator(s) of the Licensed Material and any others designated to receive attribution in any reasonable manner requested by the Licensor (including by pseudonym if designated)

ii a copyright notice

iii a notice that refers to this Public License

iv a notice that refers to the disclaimer of warranties

v a URI or hyperlink to the Licensed Material to the extent reasonably practicable

b indicate if You modified the Licensed Material and retain an indication of any previous modifications and

c indicate the Licensed Material is licensed under this Public License and include the text of or the URI or hyperlink to this Public License

2 You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium means and context in which You Share the Licensed Material For example it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information 3 If requested by the Licensor You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable

Paacutegina 86 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria b ShareAlike

In addition to the conditions in Section 3(a) if You Share Adapted Material You produce the following conditions also apply

1 The Adapters License You apply must be a Creative Commons license with the same License Elements this version or later or a BY-NC-SA Compatible License

2 You must include the text of or the URI or hyperlink to the Adapters License You apply You may satisfy this condition in any reasonable manner based on the medium means and context in which You Share Adapted Material

3 You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to Adapted Material that restrict exercise of the rights granted under the Adapters License You apply

Section 4 -- Sui Generis Database Rights

Where the Licensed Rights include Sui Generis Database Rights thatapply to Your use of the Licensed Material

a for the avoidance of doubt Section 2(a)(1) grants You the right to extract reuse reproduce and Share all or a substantial portion of the contents of the database for NonCommercial purposes only

b if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material including for purposes of Section 3(b) and

c You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database

For the avoidance of doubt this Section 4 supplements and does notreplace Your obligations under this Public License where the LicensedRights include other Copyright and Similar Rights

Paacutegina 87 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 5 -- Disclaimer of Warranties and Limitation of Liability

a UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR TO THE EXTENT POSSIBLE THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL WHETHER EXPRESS IMPLIED STATUTORY OR OTHER THIS INCLUDES WITHOUT LIMITATION WARRANTIES OF TITLE MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE NON-INFRINGEMENT ABSENCE OF LATENT OR OTHER DEFECTS ACCURACY OR THE PRESENCE OR ABSENCE OF ERRORS WHETHER OR NOT KNOWN OR DISCOVERABLE WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART THIS DISCLAIMER MAY NOT APPLY TO YOU

b TO THE EXTENT POSSIBLE IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING WITHOUT LIMITATION NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT SPECIAL INDIRECT INCIDENTAL CONSEQUENTIAL PUNITIVE EXEMPLARY OR OTHER LOSSES COSTS EXPENSES OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES COSTS EXPENSES OR DAMAGES WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART THIS LIMITATION MAY NOT APPLY TO YOU

c The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that to the extent possible most closely approximates an absolute disclaimer and waiver of all liability

Section 6 -- Term and Termination

a This Public License applies for the term of the Copyright and Similar Rights licensed here However if You fail to comply with this Public License then Your rights under this Public License terminate automatically

b Where Your right to use the Licensed Material has terminated under Section 6(a) it reinstates

1 automatically as of the date the violation is cured provided it is cured within 30 days of Your discovery of the violation or

2 upon express reinstatement by the Licensor

For the avoidance of doubt this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License

Paacutegina 88 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

c For the avoidance of doubt the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time however doing so will not terminate this Public License

d Sections 1 5 6 7 and 8 survive termination of this Public License

Section 7 -- Other Terms and Conditions

a The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed

b Any arrangements understandings or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License

Section 8 -- Interpretation

a For the avoidance of doubt this Public License does not and shall not be interpreted to reduce limit restrict or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License

b To the extent possible if any provision of this Public License is deemed unenforceable it shall be automatically reformed to the minimum extent necessary to make it enforceable If the provision cannot be reformed it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions

c No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor

d Nothing in this Public License constitutes or may be interpreted as a limitation upon or waiver of any privileges and immunities that apply to the Licensor or You including from the legal processes of any jurisdiction or authority

===========================================================

Paacutegina 89 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaCreative Commons is not a party to its public licensesNotwithstanding Creative Commons may elect to apply one of its publiclicenses to material it publishes and in those instances will beconsidered the Licensor Except for the limited purpose of indicatingthat material is shared under a Creative Commons public license or asotherwise permitted by the Creative Commons policies published atcreativecommonsorgpolicies Creative Commons does not authorize theuse of the trademark Creative Commons or any other trademark or logoof Creative Commons without its prior written consent includingwithout limitation in connection with any unauthorized modificationsto any of its public licenses or any other arrangementsunderstandings or agreements concerning use of licensed material Forthe avoidance of doubt this paragraph does not form part of the publiclicenses

Creative Commons may be contacted at creativecommonsorg

Paacutegina 90 de 102

Page 6: Universitat Oberta de Catalunya UOC Ingeniería técnica en

dado un nombre de postres en ingles por orden alfabeacutetico

En la siguiente tabla se enumeran las distintas versiones salidas a la luz desde su lanzamientoinicial en el antildeo 2008

Letra Nombre del Postre - Versioacuten

A Apple Pie (v10) Tarta de manzana

B Banana Bread (v11) Pan de plaacutetano

C Cupcake (v15) Panque

D Donut (v16) Rosquilla

E Eacuteclair (v20v21) Pastel franceacutes

F Froyo (v22) (Abreviatura de laquofrozen yogurtraquo) Yogur helado

G Gingerbread (v23) Pan de jengibre

H Honeycomb (v30v31v32) Panal de miel

I Ice Cream Sandwich (v40) Saacutendwich de helado

J Jelly BeanGummy Bear (v41v42v43) Gominola (versioacuten actual)

K KitKat (v44) Kit Kat (versioacuten en desarrollo)

Iacutendice de contenidos1Introduccioacuten1

11 Justificacioacuten y contexto del proyecto112 Descripcioacuten del Proyecto113 Objetivos2

131 Definicioacuten del videojuego 214 Planificacioacuten4

141 Ciclo de vida4142 Planificacioacuten detallada del proyecto4

1411 Anaacutelisis previo planificacioacuten41412 Anaacutelisis de requisitos51413 Disentildeo51414 Implementacioacuten y pruebas61415 Finalizacioacuten6

143 Temporalizacioacuten del proyecto 715 Herramientas y tecnologiacuteas utilizadas916 Riesgos del proyecto10

2 Anaacutelisis funcional1121 Requisitos funcionales casos de uso11

211 Diagrama casos de uso actor ldquoJugadorrdquo11212 Tabla resumen casos de uso12213 Descripcioacuten textual de los casos de uso12

2131 VJ01 Inicio videojuego 122132 VJ02 Jugar 132133 VJ03 Acceder puntuaciones maacuteximas locales 132134 VJ31 Consultar puntuaciones locales 142135 VJ32 Salir puntuaciones locales 142136 VJ04 Acceder a las opciones 152137 VJ41 Activar o desactivar muacutesica o efectos 152138 VJ42 Acceder a la pantalla de creacuteditos 162139 VJ421 Salir de la pantalla de creacuteditos 1621310 VJ05 Acceder a las instrucciones 1721311 VJ51 Salir de las instrucciones 1721312 VJ06 Salir del videojuego 18

214 Diagrama casos de uso actor ldquoIArdquo192141 Diagrama casos de uso IA personaje principal (oveja)19

21411 Tabla resumen casos de uso2021412 Descripcioacuten textual de los casos de uso20

214121 IA03 Salida ovejas al escenario 20214122 IA031 Posicionamiento en pantalla de las oveja 20214123 IA032 Movimiento oveja 21214124 IA033 Oveja pastando21214125 IA034 Lanzamiento oveja22214126 IA035 Rebotes de la oveja 22214127 IA036 La oveja entra en el establo 23214128 IA037 Parar oveja 23

2142 Diagrama casos de uso IA enemigos (lobo)2421421 Tabla resumen casos de uso2421422 Descripcioacuten textual de los casos de uso25

214221 IA02 Salida lobo al escenario 25

i

214222 IA021 Ojos por la derecha o por la izquierda25214223 IA022 Escoge el tipo de lobo26214224 IA023 Lobo por la derecha o por la izquierda26214225 IA024 Salta a escena27214226 IA025 Movimiento lobo27

22 Disentildeo inicial diagrama de clases28221 Diagrama de clases inicial ldquoFling the sheeprdquo 28

2211 Resumen clases videojuego28222 Diagrama de clases inicial de pantallas30

2221 Resumen clases pantallas3023 Definicioacuten de maacutequinas de estado finitas31

231 Maacutequina de estados del videojuego 31232 Maacutequina de estados comportamiento oveja32233 Maacutequina de estados comportamiento lobo33234 Maacutequina de estados tutorial in game34

3 Disentildeo3531 Estudio comparativo35

311 Sheep amp Wolf36312 Sheep Up 37313 Temple Run38314 Attack of the Spooklings39

32 Perfiles de usuarios identificados4033 Contextos de uso42

331 iquest Doacutende 42332 iquest Cuaacutendo 42333 iquest En que entorno 42

4Disentildeo y ldquoConcept Artrdquo4241 Elementos presentes en la interfaz de la aplicacioacuten4242 Flujos de interaccioacuten4343 Prototipaje44

431 Sketches44432 Transiciones definidas entre pantallas47433 Prototipo horizontal de alta fidelidad 48

4331 Pantalla inicial484332 Pantalla menuacute principal del juego484333 Pantalla de opciones494334 Pantalla de creacuteditos494335 Pantalla tabla de puntuaciones504336 Pantalla de juego READY 504337 Pantalla de juego514338 Pantalla de pausa botones RESUME y QUIT524339 Pantalla GAME OVER5243310 Pantalla de instrucciones de juego HOW TO PLAY5343311 Pantalla de instrucciones in game 53

5Implementacioacuten5551 Arquitectura global55

511 Arquitectura del framework libGDX55512 Visioacuten de los moacutedulos de libGDX55

52 Arquitectura de un videojuego56521 Programa vs Aplicacioacuten56

ii

522 Estructura baacutesica de un videojuego5653 Esquema de la estructura baacutesica de un videojuego5854 Patrones de disentildeo59

541 Introduccioacuten59542 Patrones de creacioacuten59543 Singleton59

55 Diagramas de clases definitivos6156 Diagramas nuacutecleo videojuego 6157 Diagrama de clases objetos videojuego6458 Diagrama de clases pantallas videojuego6759 Configurar el entorno de desarrollo69

591 Instalacioacuten 69510 Traspaso del disentildeo a texturas 71511 Implementacioacuten de las maacutequinas de estado 73

6Conclusiones757Recursos utilizados 75

71 Portada documento 7572 Recursos utilizados para el disentildeo del videojuego 75

721 Fotografiacutea pantalla intro videojuego y usuarios 76722 Iconos y botones76

7221 Altavoz767222 Nota Musical767223 Flecha salida767224 Icono de pausa767225 Icono interrogante (help)767226 Botones (Play Score Options)77

723 Recursos graacuteficos 2D componentes escenario777231 Ojos lobos777232 Ovejas y lobos777233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY777234 Escenario77

724 Fuentes777241 Thinckhead777242 Misfortune777243 Tabaquera777244 Press Start Font77

725 Otros78726 Audio y efectos de sonido78

7261 Menu 787262 Game Over787263 Game Play787264 Creacutedits787265 Ready787266 Pause_Resume787267 Quit787268 Sheep78

8Lineas abiertas del proyecto799Bibliografiacutea utilizada 7910Otros proyectos realizados80

101 Remake Gradius Konami80

iii

102 Tales of Nimria mini RPG80102 Motocalipsis Bar 66 RTS80

Creative Commons 40 license by-nc-sa81

Iacutendice de ilustracionesilustracioacuten 1 Ciclo de vida en cascada4ilustracioacuten 11 Calendario proyecto7ilustracioacuten 2 Diagrama de gantt8ilustracioacuten 3 Diagrama de casos de usos actor jugador11ilustracioacuten 4 Diagrama de casos de usos personaje principal19ilustracioacuten 5 Diagrama de casos de usos enemigos24ilustracioacuten 6 Diagrama de clases videojuego28ilustracioacuten 7 Diagrama de clases de pantallas30ilustracioacuten 8 Maacutequina de estados del videojuego 31ilustracioacuten 9 Maacutequina de estados comportamiento oveja 32ilustracioacuten 10 Maacutequina de estados comportamiento lobo 33ilustracioacuten 11 Maacutequina de estados tutorial in game 34ilustraciones 12 y 13 pantallas juego Sheep amp Wolf 36ilustraciones 14 y 15 pantallas juego Sheep Up 37ilustraciones 16 y 17 pantallas juego Temple run38ilustraciones 18 y 19 pantallas juego Attack of the Spooklings39ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitas41ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintas pantallas43ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada44ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada45ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada46ilustracioacuten 241 Transiciones definidas entre pantallas47ilustracioacuten 242 Disentildeo pantallas con Gimp54ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en un videojuego55ilustracioacuten 26 Estructura baacutesica de un videojuego 58ilustracioacuten 27 Singleton59ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego 63ilustracioacuten 29 Diagrama de clases Assets 64ilustracioacuten 30 Diagrama de clases objetos 66ilustracioacuten 31 Diagrama de clases pantallas 68ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse69ilustracioacuten 33 Creacioacuten proyecto libGDX70ilustracioacuten 34 Creacioacuten proyecto libGDX70ilustracioacuten 35 Capas separadas por imaacutegenes71Ilustracioacuten 36 Texture packer 72ilustracioacuten 37 Posicioacuten texturas 73

iv

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

1Introduccioacuten

11 Justificacioacuten y contexto del proyecto

Este trabajo de fin de carrera en adelante TFC se centra en el desarrollo de aplicaciones paradispositivos moacuteviles con sistema operativo Android Actualmente existen multitud de aplicacionesNo obstante este TFC se quiere centrar en un subconjunto de aplicaciones focalizadas alentretenimiento conocidas por todo el mundo como videojuegos

Un videojuego es un software creado para el entretenimiento en general y basado en lainteraccioacuten entre una o varias personas y un aparato electroacutenico que ejecuta dicho videojuego Asiacutepues un videojuego es considerado un software cuyo fin directo es el entretenimiento

En estos uacuteltimos antildeos los smartphones y tabletas se han convertido en las nuevas plataformasmoacuteviles para juegos que compiten con los sistemas portaacutetiles claacutesicos que generalmente tienden aser maacutes cerrados

Los videojuegos se pueden clasificar en distintos geacuteneros estos son una forma de clasificacioacutenque designan un conjunto de videojuegos que poseen una serie de elementos comunes A lo largode la historia de los videojuegos aquellos elementos que han compartido varios de los mismos hanservido para clasificar como un geacutenero a aquellos que les han seguido en estilo y forma de lamisma manera que ha pasado con la muacutesica o el cine Como ejemplo se enumeran algunos de losgeacuteneros maacutes populares Lucha Disparos conocidos como Shooters Sigilo Plataformas ArcadeDeporte etc

Durante mucho tiempo los videojuegos estuvieron reservados para un tipo de usuario muyconcreto con un perfil muy especiacutefico la gran mayoriacutea eran hombres entre 15 y 25 antildeos Saliendode este perfil si se buscaban mujeres o personas mayores de 25 antildeos el nuacutemero de usuarioscaiacutea en picado y es que los videojuegos eran percibidos como el hobby de los adolescentesmasculinos No obstante en los uacuteltimos antildeos se ha visto coacutemo todo esto ha ido cambiando con unaumento tanto del puacuteblico femenino como la aparicioacuten en escena de usuarios con edades maacutesavanzadas

Este cambio ha venido motivado por diferentes motivos evolutivos dentro de la industria delvideojuego Uno de los motivos que ha provocado esto es la aparicioacuten de los teleacutefonos moacutevilesinteligentes tabletas y juegos online junto con gran cantidad de videojuegos de tipo casual Otroclaro motivo es que la mayoriacutea de los que jugaacutebamos hace 25 antildeos pues hoy seguimos jugandoya que hemos crecido con esta cultura y claro esta que a diacutea de hoy ya no tenemos la edad deentonces

12 Descripcioacuten del Proyecto Este proyecto se quiere centrar en el desarrollo de un videojuego de tipo casual para moacutevilesAndroid Estos son un tipo de videojuegos dirigidos a un puacuteblico de jugadores casuales Losvideojuegos casuales pueden tener cualquier tipo de mecaacutenica de juego y ser clasificados dentrode cualquier otro geacutenero Son diferenciados por sus reglas simples y de no requerir un excesivocompromiso en contraste con la mayoriacutea de juegos maacutes complejos No requieren una dedicacioacutende tiempo a largo plazo o habilidades especiales para jugar

Paacutegina 1 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Durante la realizacioacuten del proyecto se realizara el disentildeo del juego por disentildeo se entienderealizar un documento que defina el juego de forma generalizada mecaacutenicas personajes etceste documento es conocido como el ldquogame designrdquo el disentildeo de arte conocido como ldquoConcepartrdquo engloba todo lo relacionado con el aspecto graacutefico del juego estilos de personajes estilos degraacuteficos etc Finalmente se realizara el anaacutelisis disentildeo e implementacioacuten de laaplicacioacuten(videojuego) con las tecnologiacuteas escogidas para este proyecto

13 Objetivos

El objetivo principal de este TFC es adquirir experiencia en el desarrollo de videojuegos paraAndroid Sin embargo yendo maacutes allaacute de la plataforma tambieacuten existe un intereacutes por ampliarconocimientos en cuanto a programacioacuten y disentildeo de videojuegos en general

En cuanto al disentildeo y desarrollo del videojuego se pretende realizar un casual game con lassiguientes caracteriacutesticas

El juego consistiraacute en conducir unas ovejas descarriadas a su corral eacutestas con nuestra ayudadeberaacuten sortear los peligros que iraacuten apareciendo durante el camino hacia el deseado corral Elprincipal peligro que amenaza las ovejas son unos lobos malvados que quieren comeacuterselas Elvideojuego soacutelo dispondraacute de una uacutenica modalidad de juego para un uacutenico jugador Al tratarse deun juego casual el publico objetivo es muy amplio Se pretende conseguir un ldquolook amp feelrdquo conesteacutetica tipo cartoon en clave de humor El juego sera desarrollado en 2D con perspectiva cenital

131 Definicioacuten del videojuego

El nivel se describe como una pantalla estaacutetica con vista cenital en posicioacuten vertical Con estaacuteticase entiende que no hay ninguacuten tipo de scroll que haga desplazar la pantalla Siempre veremos lomismo

En la parte de arriba del todo apareceraacute un corral con una puerta la puerta se iraacute abriendo ycerrando de forma aleatoria Por los extremos de la pantalla habraacute arbustos que representaran loslimites del bosque De estos limites iraacuten saliendo lobos a la escena que se querraacuten comer a laspobres ovejas Estas ovejas permaneceraacuten en la parte de abajo de la pantalla e iraacuten saliendo a laescena ellas solas sin saber demasiado donde van(son ovejas descarriadas) nuestra misioacutenconsistiraacute en tirarlas hacia el corral para salvarlas de los malvados lobos metiendolas por lapuerta en los momentos que este abierta para lanzarlas tendremos que deslizar el dedo encimade ellas para darles impulso hacia el corral si no acertamos en meter la oveja en la puerta estarebotara como si de un pelota se tratase Los lobos iraacuten saliendo para sacarnos los lobos deencima deberemos deslizar nuestro dedo encima de ellos o tocarlos para ahuyentarlos De lobos habraacute de diferentes colores marrones grises y azulados Cada lobo loahuyentaremos de manera distinta

bull Marrones 1 pulsacioacuten o deslizar 1 vez el dedo sobre el lobobull Grises 2 pulsaciones o deslizar 2 veces el dedo sobre el lobobull Azulados 3 pulsaciones o deslizar 3 veces el dedo sobre el lobo

A parte de impedir que se coman las ovejas que estaacuten en camino hacia el corral tambieacutentendremos que evitar que los lobos lleguen a la parte de abajo donde estaacute el grupo de ovejas yaque esto nos haraacute perder vidas el juego inicialmente empezara con 3 vidas pudiendo alcanzar unmaacuteximo de 6 vidas en total cada 10000 puntos obtendremos un vida extra

Paacutegina 2 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Conforme el juego se va desarrollando eacuteste iraacute acumulando

bull Puntosbull Tiempo jugadobull Numero de lobos ahuyentadosbull Ovejas colocadas en el corral

Se tratara pues de ir mejorando nuestro propio reacutecord partida tras partida El juego iraacuteaumentando de dificultad durante el transcurso de la partida

Como apunte final el juego recibe el nombre de ldquoFling the sheeprdquo que traducido al espantildeolvendriacutea a ser algo como ldquolanzar las ovejasrdquo

Paacutegina 3 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

14 Planificacioacuten

141 Ciclo de vida

Un videojuego no deja de ser un proyecto de software por tanto para la realizacioacuten de esteproyecto se ha tomado como base el ciclo de vida claacutesico de cualquier proyecto de softwaremodificado ligeramente a las necesidades del proyecto Este ciclo de vida que tambieacuten sedenomina ciclo de vida en cascada se compone de las siguientes etapas

ilustracioacuten 1 Ciclo de vida en cascada

142 Planificacioacuten detallada del proyecto

En los siguientes apartados se recogen por cada etapa que compone el ciclo de vida las principales actividades realizadas con el objetivo de alcanzar el producto deseado dentro delos plazos definidos

1411 Anaacutelisis previo planificacioacuten

En este punto se ha abordado la visioacuten global del proyecto comprendida en establecer lospuntos iniciales necesarios para crear una planificacioacuten de tareas en funcioacuten de las actividades arealizar

Actividad Descripcioacuten

Disentildeo conceptual del videojuego Mecaacutenicas del videojuego

Definicioacuten de las tecnologiacuteas Tecnologiacuteas que se utilizaran en el desarrollo delvideojuego

Anaacutelisis de riesgos Posibles riesgos del proyecto

Planificacioacuten del proyecto Crear una planificacioacuten adaptada a los plazos de entregade este TFC

Paacutegina 4 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Redaccioacuten del documento Generacioacuten del plan de trabajo

Entrega de la PEC1 Entrega del documento

1412 Anaacutelisis de requisitos

En esta fase se ha detallado que necesidades debe cubrir el videojuego tanto desde un puntode vista funcional como desde un punto de vista arquitectoacutenico de la aplicacioacuten a disentildear se hadisentildeado un modelo troncal de clases para posteriormente desarrollar en base a estas todo elvideojuego No obstante en ninguacuten caso se ha entrado en detalle en las tecnologiacuteas a utilizar yadefinidas previamente

Actividad Descripcioacuten

Especificacioacuten de requisitos funcionales Definicioacuten de casos de usos

Disentildeo baacutesico estructura aplicacioacuten Diagrama baacutesico de clases

Especificacioacuten de requisitos funcionales Definicioacuten de maacutequinas de estado

1413 Disentildeo

En este apartado teniendo en cuenta que en este proyecto se va a desarrollar un videojuego seha realizado la recopilacioacuten conceptual de arte conjuntamente con el disentildeo de todas laspantallas que intervienen en el Conjuntamente con la seleccioacuten de los tipos de fuente que seutilizaran para el videojuego seleccioacuten de personajes y enemigos

Actividad Descripcioacuten

Definicioacuten de usuarios y contexto de uso delvideojuego

Conocer las caracteriacutesticas de los usuarios susnecesidades y objetivos asiacute como los contextosde uso

Disentildeo conceptual Un escenario de uso describe desde el puntode vista del usuario como seraacute utilizado unproducto determinado (es este caso unvideojuego) en un escenario determinado

Seleccioacuten de arte Seleccioacuten de arte ya hecho con licencias libresya que no se disponen de conocimientos dearte para abordar el disentildeo

Seleccioacuten de fuentes Seleccioacuten de los tipos de fuente adecuadospara el disentildeo del videojuego

Seleccioacuten de personajes y enemigos Seleccioacuten de personajes y enemigosdisponibles en la red con licencias libres ya queno se disponen de conocimientos de arte paraabordar el disentildeo

Disentildeo de pantallas que intervienen(prototipo) Con todo el arte fuentes y personajes serealizara el disentildeo de todas las pantallas queintervienen en el juego Realizacioacuten de unboceto a mano alzada Sketches y prototipo dealta fidelidad

Redaccioacuten del documento Generacioacuten del documento de disentildeo

Paacutegina 5 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Entrega de la PEC2 Entrega del documento

1414 Implementacioacuten y pruebas

En este punto se ha desarrollado la implementacioacuten del videojuego partiendo de todas lasdefiniciones de los apartados anteriores y las verificaciones oportunas para asegurar el correctofuncionamiento del videojuego

Actividad Descripcioacuten

Implementacioacuten de navegables y contenidos Implementacioacuten de la estructura de todas lapantallas del video juego y la navegabilidadentre ellas y las funciones principales de cadauna de ellas

Implementacioacuten del gameplay Implementacioacuten de la logica de juego

Implementacioacuten de sonido y efectos Implementacioacuten de los efectos de sonido y lamusica

Version alpha del videojuego En este punto se dispone de un videojuegofuncional listo para ser revisado y refinado

Pruebas y refinamiento de la implementacioacuten Pruebas y correcioacutenes de posibles errores

Preparacioacuten del paquete entregable y laredaccioacuten del documento

Testeo final y preparacioacuten del apk a entregarmas la redaccioacuten del documento estrutural delaplicacioacuten

Entrega de la PEC3 Entrega del documento

1415 Finalizacioacuten

En un proyecto de software esta parte quedariacutea focalizada en la fase de implantacioacuten y puesta enmarcha Sin embargo al tratarse de un videojuego esta fase quedariacutea focalizada en la fase delanzamiento del producto No obstante en este caso se ha utilizado para documentar todo eltrabajo realizado a lo largo de este TFC

Actividad Descripcioacuten

Redaccioacuten memoria final proyecto Redaccioacuten memoria final

Montaje presentacioacuten diapositivas Montaje presentacioacuten diapositivas

Montaje del video final presentacioacuten proyecto Montaje del video final presentacioacuten proyecto

Entrega final Entega final

Paacutegina 6 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria143 Temporalizacioacuten del proyecto

La siguiente ilustracioacuten muestra el calendario definido para el proyecto

ilustracioacuten 11 Calendario proyecto

Paacutegina 7 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

En la siguiente pagina se muestra una ilustracioacuten del diagrama de gantt correspondiente alcalendario mostrado en la ilustracioacuten 1

ilustracioacuten 2 Diagrama de gantt

Paacutegina 8 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

15 Herramientas y tecnologiacuteas utilizadas

Actualmente existen varios frameworks para desarrollar videojuegos sobre plataformas moacutevilesSe ha hecho un anaacutelisis comparativo preliminar entre Cocos2D-android1 Cocos2D-x y libGDXaunque existen otros estos tres son los maacutes nombrados y utilizados

Cocos2d-android1 Es un framework en Java basado en la versioacuten de cocos2d-android queesta basado en la versioacuten de cocos2d para iphone Este framework permite el desarrollo devideojuegos en 2D y se programa en Java en lugar de objective-c Para la versioacuten Cocos2d deiphone Actualmente este framework no parece tener mucha continuidad por parte de lacomunidad de desarrolladores aunque no estaacute discontinuado del todo

Cocos2D-x Es un framework en C++ multi-plataforma permite desarrollar para diferentesplataformas a la vez con el mismo coacutedigo Android iOS Bada Marmalade Windows Linux etcSin embargo aunque es un framework con una comunidad muy activa su documentacioacuten esbastante mejorable Se programa en C++ y es posible trabajar con distintos entornos de desarrollocomo Visual Studio o Eclipse El proceso de depuracioacuten con eclipse es algo complejo con C++JNIcon varios pasos a seguir para poder depurar A la vez su configuracioacuten en el entorno Eclipse noes trivial Finalmente tiene relativamente todaviacutea poco tiempo de vida

LibGDX Es un framework escrito en Java sobre C++ ya que las partes criacuteticas estaacuten escritascon coacutedigo nativo para conseguir el mejor rendimiento posible Tiene una comunidad dedesarrolladores muy activa y una documentacioacuten muy extensa Se programa con Java y permite ladepuracioacuten ejecutando la aplicacioacuten en el escritorio de la maacutequina sin tener que pasar por undispositivo real o uno virtual En caso de que se quiera probar en un dispositivo real es posiblehacerlo sin ninguacuten cambio sobre el coacutedigo Este hecho hace que el desarrollo sea maacutes fluidoTiene un rendimiento bastante alto ante cocos2d-x y otros frameworks existentes para eldesarrollo de videojuegos

Todo lo expuesto anteriormente provoca una inclinacioacuten definitiva a utilizar libGDX paraimplementar el videojuego Asiacute pues el videojuego seraacute escrito en Java utilizando el IDE Eclipseque es el soportado oficialmente para Android utilizando el framework libGDX

Para la realizacioacuten de este proyecto se han utilizado las siguientes herramientas

bull Planificacioacuten proyecto

Microsoft Project Professional 2010

bull Disentildeo

Gimp 28 Inkscape 048 TexturePacker 320 Microsoft Visio Professional 2010

bull Programacioacuten

Entorno de desarrollo Eclipse 421 Juno Android develompment tools ADT Android SDK

Paacutegina 9 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Framework libGDX 098 ObjectAid herramienta de visualizacioacuten de coacutedigo en UML para Eclipse Control de versiones Git utilizando como plataforma GitHub

bull Edicioacuten de audio

Audacity 203 GoldWave 569

bull Redaccioacuten de documentos

OpenOffice 401

bull Edicioacuten de viacutedeo

Adobe Premiere Pro CS55

16 Riesgos del proyecto

Se parte de una experiencia previa en desarrollo de videojuegos ver apartado 9 otros proyectosrealizados al final de este documento Aunque no se dispone de experiencia con la libreriacuteaescogida ni tampoco con programacioacuten sobre Android A nivel teacutecnico no se preveacute que puedansurgir muchos riesgos en liacuteneas generales No obstante existe la posibilidad de gastar maacutestiempo del previsto consultando documentacioacuten para lograr los objetivos establecidos

Existe un riesgo maacutes alto a nivel artiacutestico ya que no se dispone de ninguacuten conocimiento de artede ninguacuten tipo Por lo tanto muy probablemente a nivel artiacutestico el juego sea un poco justo Es poreste motivo que durante la realizacioacuten de este proyecto no se va a profundizar en temas de disentildeoartiacutestico en su lugar se utilizaran recursos de arte existentes en la red con licencias libres tipocreative commons o dominio puacuteblico Al final de este documento en el apartado 6 se puede ver unlistado de los recursos utilizados juntamente con un link a la obra y el nombre del autor si esteesta disponible Se haraacute una seleccioacuten de distintos tipos de recursos graacuteficos para posteriormentehacer el montaje de toda la parte graacutefica del videojuego En cuanto a la parte de audio la situacioacuten es exactamente la misma no se dispone de ninguacutenconocimiento para componer muacutesica ni efectos Por lo tanto se buscaraacuten sonidos y temasmusicales con licencias libres Intentando que estos queden integrados de la mejor maneraposible al videojuego

Finalmente existe el riesgo de que el gameplay definido en el disentildeo conceptual del videojuegouna vez puesto en praacutectica no sea del todo funcional o necesite de un balanceo para conseguirun juego equilibrado y jugable

Paacutegina 10 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2 Anaacutelisis funcional Basaacutendonos en el aparatado ldquo131 Definicioacuten del videojuegordquo se han definido los requisitosfuncionales necesarios para este con la definicioacuten de casos de uso Posteriormente se ha definidoun diagrama de clases inicial el cual ha servido como punto de partida para el desarrollo completodel videojuego A su vez se definen las maacutequinas de estado finitas utilizadas para el desarrollo

21 Requisitos funcionales casos de uso

En este apartado se presentan tres diagramas de casos de uso El primer diagrama engloba lavista generalizada del actor ldquojugadorrdquo y los casos de uso que describen los requisitos funcionalesdel sistema En los dos diagramas restantes se describen la vista generalizada del actor ldquoIArdquo porIA se entiende la inteligencia artificial del videojuego Los diagramas muestran los requisitosfuncionales de la IA para el personaje principal y los enemigos La IA interactuacutea con el sistema ypor tanto seraacute susceptible de analizar su uso de la aplicacioacuten

211 Diagrama casos de uso actor ldquoJugadorrdquo

ilustracioacuten 3 Diagrama de casos de usos actor jugador

Paacutegina 11 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Como se puede observar en la ilustracioacuten 3 el sistema solo dispone de un uacutenico actor Que eneste caso es el jugador del videojuego es decir representa todos los posibles usuarios quepueden jugar al videojuego

En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 3estos seraacuten desarrollados en la seccioacuten posterior

212 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

VJ01 Inicio videojuego Jugador

VJ02 Jugar Jugador

VJ03 Acceder puntuaciones maacuteximas Jugador

VJ31 Consultar puntuacione locales Jugador

VJ32 Salir puntuacione locales Jugador

VJ04 Acceder a las opciones Jugador

VJ41 Activar o desactivar muacutesica o efectos Jugador

VJ42 Acceder a la pantalla de creacuteditos Jugador

VJ421 Salir de la pantalla de creacuteditos Jugador

VJ43 Salir de las opciones Jugador

VJ05 Acceder a las instrucciones Jugador

VJ51 Salir de las intrucciones Jugador

VJ06 Salir del videojuego Jugador

213 Descripcioacuten textual de los casos de uso

2131 VJ01 Inicio videojuego

Identificador VJ01

Nombre Inicio videojuego

Autor Xavier Figuera

Resumen El usuario inicia el videojuego

Actor(es) Jugador

Precondiciones Ninguna el videojuego no habiacutea sido iniciado auacuten

Postcondiciones El usuario a iniciado el videojuego a visualizado la pantalla de introdurante un segundo y se encuentra en la pantalla del menuacute principal

Flujo normal 1 El usuario accede a la lista de aplicaciones de su dispositivo 2 Busca el acceso al videojuego3 Ejecuta el programa4 Se carga la aplicacioacuten5 El videojuego muestra la pantalla de intro

Paacutegina 12 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6 Se muestra el menuacute principal al jugador

Flujos alternativos Se podriacutea dar el caso que el usuario accediera al videojuego desde algunacceso directo en alguno de los escritorios del dispositivo

Inclusiones Ninguna

Extensiones Ninguna

2132 VJ02 Jugar

Identificador VJ02

Nombre Jugar

Autor Xavier Figuera

Resumen Jugar al videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario empieza a jugar

Flujo normal 1 El usuario pulsa el botoacuten play del menuacute principal 2 El usuario juega3 El usuario puede volver a jugar una vez finalizada la partida 4 El usuario puede salir del juego en cualquier momento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2133 VJ03 Acceder puntuaciones maacuteximas locales

Identificador VJ03

Nombre Acceder puntuaciones maacuteximas locales

Autor Xavier Figuera

Resumen Acceder a la pantalla de puntuaciones maacuteximas locales de las partidasrealizadas en el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla con la tabla de las 10 puntuacionesmaacuteximas

Flujo normal 1 El usuario pulsa el botoacuten Scores del menuacute principal 2 Al usuario le aparece la pantalla de puntuacioacuten

Paacutegina 13 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ31 Consultar puntuaciones localesVJ32 Salir de la puntuaciones locales

2134 VJ31 Consultar puntuaciones locales

Identificador VJ31

Nombre Consultar puntuaciones locales

Autor Xavier Figuera

Resumen Consulta de las puntuaciones maacuteximas locales de las partidas realizadasen el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Scores delmenuacute principal

Postcondiciones El usuario visualiza la tabla de las 10 puntuaciones maacuteximas

Flujo normal 1 El usuario visualiza una tabla con las 10 puntuaciones maacuteximas

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2135 VJ32 Salir puntuaciones locales

Identificador VJ32

Nombre Salir puntuaciones locales

Autor Xavier Figuera

Resumen Salir de las puntuaciones maacuteximas locales

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulso el botoacuten Scores

Postcondiciones El usuario sale de la tabla de puntuaciones

Flujo normal 1 El usuario pulsa el botoacuten salir en la pantalla tabla de puntuaciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 14 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2136 VJ04 Acceder a las opciones

Identificador VJ04

Nombre Acceder a la pantalla de opciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de opciones del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla de opciones

Flujo normal 1 El usuario pulsa el botoacuten Options del menuacute principal 2 Al usuario le aparece la pantalla de opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ41 Activar o desactivar muacutesica o efectos VJ42 Acceder a la pantalla de creacuteditosVJ43 Salir de las opciones

2137 VJ41 Activar o desactivar muacutesica o efectos

Identificador VJ041

Nombre Activar o desactivar muacutesica o efectos

Autor Xavier Figuera

Resumen Activar o desactivar muacutesica o efectos de audio del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal

Postcondiciones El usuario activa o desactiva la muacutesica o efectos del videojuego

Flujo normal 1 El usuario pulsa el botoacuten altavoz para activar o desactivar la muacutesica delvideojuego 2 El usuario pulsa el botoacuten notas musicales para activar o desactivar losefectos de audio del videojuego

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 15 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2138 VJ42 Acceder a la pantalla de creacuteditos

Identificador VJ42

Nombre Acceder a la pantalla de creacuteditos

Autor Xavier Figuera

Resumen Acceder a la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario se encuentra en la pantalla de opciones

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten credits para acceder a los creacuteditos2 El usuario puede desplazar el texto de los creacuteditos deslizando el dedosobre el texto hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ421 Salir de la pantalla de creacuteditos

2139 VJ421 Salir de la pantalla de creacuteditos

Identificador VJ421

Nombre Salir de la pantalla de creditos

Autor Xavier Figuera

Resumen Salir de la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal y ha accedido a la pantalla creacuteditos

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten salir para abandonar la pantalla para accedera los creacuteditos2 El usuario se encuentra de nuevo en la pantalla opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 16 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21310 VJ05 Acceder a las instrucciones

Identificador VJ05

Nombre Acceder a la pantalla de instrucciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten del menuacuteprincipal

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a las instrucciones2 El usuario puede desplazar el texto de las instrucciones deslizando eldedo sobre el hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ51 Salir de las instrucciones

21311 VJ51 Salir de las instrucciones

Identificador VJ51

Nombre Salir de las intrucciones

Autor Xavier Figuera

Resumen Salir de la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten en el menuacuteprincipal y ha accedido a la pantalla de instrucciones

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a la pantalla de instrucciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 17 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21312 VJ06 Salir del videojuego

Identificador VJ06

Nombre Salir del videojuego

Autor Xavier Figuera

Resumen Salir del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego

Postcondiciones El usuario abandona el videojuego

Flujo normal 1 El usuario pulsa el botoacuten exit de la aplicacioacuten para salir del videojuego oel botoacuten salir del dispositivo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 18 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214 Diagrama casos de uso actor ldquoIArdquo

Por IA se entiende inteligencia artificial es un elemento fundamental para dotar de realismo a unvideojuego Uno de los retos principales que se plantean a la hora de integrar comportamientosinteligentes es alcanzar un equilibrio entre la sensacioacuten de inteligencia y el tiempo de coacutemputoempleado por este subsistema Este equilibrio es de gran importancia en el caso de losvideojuegos Este planteamiento gira generalmente en torno a la generacioacuten de soluciones quesin ser oacuteptimas proporcionen una cierta sensacioacuten de inteligencia En concreto dichas solucionesdeberiacutean tener como meta que el jugador se enfrente a un reto que sea factible de manera quesuponga un estiacutemulo emocional y que consiga engancharlo al videojuego

En estos uacuteltimos antildeos la IA ha pasado de ser un componente secundario en el proceso dedesarrollo de videojuegos a convertirse en uno de los aspectos maacutes importantes Actualmentelograr un alto nivel de IA en un juego sigue siendo uno de los retos maacutes emocionantes y complejosy en ocasiones sirve para diferenciar un juego normal de uno realmente espectacular

Dentro de este proyecto de ha definido una IA baacutesica para dotar del realismo necesario alvideojuego propuesto En los siguientes diagramas se define esta IA en forma de casos de usospara su posterior implementacioacuten

2141 Diagrama casos de uso IA personaje principal (oveja)

ilustracioacuten 4 Diagrama de casos de usos personaje principal

Paacutegina 19 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 4estos seraacuten desarrollados en la seccioacuten posterior

21411 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA03 Salida oveja al escenario IA

IA031 Posicionamiento en pantalla de la oveja IA

IA032 Movimiento oveja IA

IA033 Oveja pastando IA

IA034 Lanzamiento oveja IA

IA035 Rebotes de la oveja IA

IA036 La oveja entra en el establo IA

IA037 Parar oveja IA

21412 Descripcioacuten textual de los casos de uso

214121 IA03 Salida ovejas al escenario

Identificador IA03

Nombre Salida oveja al escenario

Autor Xavier Figuera

Resumen Salida oveja al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones La oveja es instanciada de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Las ovejas se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA031 Posicionamiento en pantalla de las oveja

214122 IA031 Posicionamiento en pantalla de las oveja

Identificador IA031

Nombre Posicionamiento en pantalla de las oveja

Paacutegina 20 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Autor Xavier Figuera

Resumen Asignacioacuten inicial posicioacuten de las ovejas en pantalla siempre es la mismaposicioacuten esta queda fuera del rango visual de la pantalla

Actor(es) IA

Precondiciones La partida esta iniciada y la oveja instanciada

Postcondiciones La oveja queda posicionada en unas coordenadas fuera de la pantalla

Flujo normal 1 Se instancia la oveja2 La oveja queda posicionada en unas coordenadas uacutenicas fuera delrango visual de pantalla

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214123 IA032 Movimiento oveja

Identificador IA032

Nombre Movimiento oveja

Autor Xavier Figuera

Resumen Movimiento de las ovejas hacia el escenario

Actor(es) IA

Precondiciones La partida esta iniciada la oveja instanciada y posicionada

Postcondiciones La oveja se mueve hacia el escenario empieza a pastar

Flujo normal 1 La oveja se mueve hacia el escenario

Flujos alternativos Ninguno

Inclusiones IA034

Extensiones IA033 Oveja PastandoIA037 Parar oveja

214124 IA033 Oveja pastando

Identificador IA033

Nombre Oveja pastando

Autor Xavier Figuera

Resumen La ovejas permanecen en un espacio determinado de coordenadas depantalla mientras no sean lanzadas al escenario por el usuario

Actor(es) IA

Paacutegina 21 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Precondiciones La oveja ha salido al escenario

Postcondiciones La oveja se mueve dentro de un espacio determinado de forma indefinida

Flujo normal 1 La oveja se mueve de forma indefinida hasta que sea lanzada por elusuario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA034 Lanzamiento oveja

214125 IA034 Lanzamiento oveja

Identificador IA034

Nombre Lanzamiento oveja

Autor Xavier Figuera

Resumen La oveja es lanzada por el usuario y se acelera en funcioacuten de la fuerza delanzamiento

Actor(es) IA

Precondiciones La oveja se mueve

Postcondiciones La oveja ha sido lanzada

Flujo normal 1 La oveja se mueve de forma indefinida2 La oveja es lanzada3 La oveja acelera en funcioacuten de la fuerza de lanzamiento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214126 IA035 Rebotes de la oveja

Identificador IA035

Nombre Rebotes de la oveja

Autor Xavier Figuera

Resumen La oveja ha sido lanzada y rebota por el escenario

Actor(es) IA

Precondiciones La oveja ha sido lanzada

Postcondiciones La oveja rebota por el escenario

Flujo normal 1 La oveja ha sido lanzada y rebota por el escenario 2 La oveja entra en el establo si colisiona con la puerta y esta abierta

Paacutegina 22 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA036 La oveja entra en el establo

214127 IA036 La oveja entra en el establo

Identificador IA036

Nombre La oveja entra en el establo

Autor Xavier Figuera

Resumen La oveja entra en el establo

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario y la puerta del establo estaabierta

Postcondiciones La oveja entra en el establo

Flujo normal 1 La oveja entra en el establo si colisiona con la puerta y esta abierta

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214128 IA037 Parar oveja

Identificador IA037

Nombre Parar oveja

Autor Xavier Figuera

Resumen La oveja para si se hacen dos pulsaciones encima de ella

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario

Postcondiciones La oveja se para

Flujo normal 1 La oveja esta rebotando2 El usuario pulsa dos veces encima de ella3 La oveja se para

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 23 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2142 Diagrama casos de uso IA enemigos (lobo)

ilustracioacuten 5 Diagrama de casos de usos enemigos

21421 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA02 Salida lobo al escenario IA

IA021 Ojos por la derecha o por la izquierda IA

IA022 Escoje el tipo de lobo IA

IA023 Lobo por la derecha o por la izquierda IA

IA024 Salta a escena IA

IA025 Movimento lobo IA

Paacutegina 24 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21422 Descripcioacuten textual de los casos de uso

214221 IA02 Salida lobo al escenario

Identificador IA02

Nombre Salida lobo al escenario

Autor Xavier Figuera

Resumen Salida lobo al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones El lobo es instanciado de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Los lobos se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA02 IA021 IA022 IA023 IA024

214222 IA021 Ojos por la derecha o por la izquierda

Identificador IA021

Nombre Ojos por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Salida de ojos al escenario paso previo a que salte el lobo

Actor(es) IA

Precondiciones El lobo ha sido instanciado

Postcondiciones Aparecen unos ojos que se cierra y se abren por la derecha o izquierda dela pantalla de forma aleatoria

Flujo normal 1 El lobo ha sido instanciado2 Aparecen unos ojos que se cierran y se abren 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 25 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214223 IA022 Escoge el tipo de lobo

Identificador IA022

Nombre Escoge el tipo de lobo

Autor Xavier Figuera

Resumen Escoge el tipo de lobo de forma aleatoria de los tres definidos

Actor(es) IA

Precondiciones Han aparecido los ojos

Postcondiciones Ha escogido el tipo de lobo que saltara al escenario

Flujo normal 1 Han aparecido los ojos2 Ha escogido el tipo de lobo que saltara al escenario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214224 IA023 Lobo por la derecha o por la izquierda

Identificador IA023

Nombre Lobo por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Escoge de forma aleatoria el lado por donde debe aparecer el lobo

Actor(es) IA

Precondiciones Se ha seleccionado el tipo de lobo

Postcondiciones Se ha escogido el lado por donde apareceraacute

Flujo normal 1 Se ha escogido el lado por donde apareceraacute

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 26 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214225 IA024 Salta a escena

Identificador IA024

Nombre Salta a escena

Autor Xavier Figuera

Resumen El lobo salta a escena

Actor(es) IA

Precondiciones Se ha seleccionado el lado por donde debe aparecer y salta

Postcondiciones El lobo esta en escena

Flujo normal 1 Se ha seleccionado el lado por donde debe aparecer y salta2 El lobo esta en escena

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones A025

214226 IA025 Movimiento lobo

Identificador IA025

Nombre Movimiento lobo

Autor Xavier Figuera

Resumen El lobo esta en escena y se mueve

Actor(es) IA

Precondiciones El lobo ha saltado a la escena

Postcondiciones El lobo se mueve

Flujo normal 1 El lobo ha saltado a la escena2 El lobo se mueve

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 27 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

22 Disentildeo inicial diagrama de clases

221 Diagrama de clases inicial ldquoFling the sheeprdquo

ilustracioacuten 6 Diagrama de clases videojuego

En este apartado se define la estructura inicial de la aplicacioacuten a traveacutes del diagrama de clasesmostrado en la ilustracioacuten 6 Esto serviraacute como punto de partida para el completo disentildeo de laaplicacioacuten para su posterior implementacioacuten A continuacioacuten se pasan a detallar a modo resumidoque funcionalidad tiene cada una de las clases definidas en este diagrama

2211 Resumen clases videojuego

FlingTheSheepMain Clase principal desde donde se inicializaraacute la aplicacioacuten

Assets Esta clase contendraacute todos los recursos necesarios del juego texturas sonidos etcEstos seraacuten inicializados en el momento de iniciar el juego Existe una dependencia entre la claseFlingTheSheepMain y Assets ya que la instanciacioacuten de Assets esta condicionada por lainstanciacioacuten de la clase principal FlingTheSheepMain cuando se pone en marcha el videojuego

Paacutegina 28 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaWorldGameController Esta clase contendraacute la loacutegica del videojuego

AudioManager Clase destinada para controlar la reproduccioacuten de efectos de sonido y audio delvideojuego

Charcater Es la superclase que describe los comportamientos comunes de los personajes deella se extienden los personajes principales y los enemigos

Sheep Clase que representa el personaje principal

Wolf Clase que representa a los enemigos

AbstractGameObject Esta superclase recoge todos los comportamientos comunes de losobjetos del juego por objetos se entiende todos los componentes que forman el escenario delvideojuego De esta clase se extienden todos los objetos del videojuego

Grass Hierba que apareceraacute en el escenario

Flower Flores que apareceraacuten en el escenario

ThePen Establo donde hay que hacer llegar las ovejas

DoorPen Puerta del establo esta se abriraacute y se cerrara aleatoriamente

Hole Agujeros en el escenario

WoodFenceForest Valla de madera que apareceraacute en el escenario

Como se ha comentado este diagrama de clases es un diagrama inicial por tanto lo maacutesprobable es que durante el desarrollo del videojuego se antildeadan maacutes clases al disentildeo inicialmostrado en la ilustracioacuten 6 En el apartado 55 de este documento se muestran los diagramas declases definitivos

Paacutegina 29 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria222 Diagrama de clases inicial de pantallas

ilustracioacuten 7 Diagrama de clases de pantallas

Este diagrama recoge en forma de clases las pantallas iniciales definidas del videojuego Separte de una superclase llamada AbstractGameScreen que recogeraacute las operaciones comunes detodas ellas y de esta se extienden las pantallas concretas este diagrama solo muestra laspantallas maacutes baacutesicas definidas inicialmente estas serviraacuten como base para desarrollar elconjunto de pantallas total necesarias para este proyecto y que quedan recogidas en su totalidaden el apartado 4 ldquoDisentildeordquo de esta documento

A continuacioacuten se pasan a detallar a modo resumido cada una de ellas

2221 Resumen clases pantallas

IntroScreen Clase para la pantalla de intro

MenuScreen Clase que contiene el menuacute principal del videojuego GameScreen La clase game screen es la que contiene la pantalla donde se desarrolla todo elvideojuego

Paacutegina 30 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

23 Definicioacuten de maacutequinas de estado finitas

Como ya se ha introducido en el punto 212 la IA aplicada a los videojuegos dota a estos derealismo Existen distintas teacutecnicas para la implementacioacuten de esta Una de las maacutes consolidadases el uso de maacutequinas de estados finitas ya que tienen un coste computacional casi inexistenteya que no tienen ninguacuten coste de procesamiento asignado Las maacutequinas de estados permiten deforma faacutecil definir comportamientos Es por este motivo que han sido utilizadas no solamente para definir los comportamientos de laIA del videojuego sino tambieacuten para definir los distintos estados en que se puede encontrar elvideojuego durante su tiempo de vida A continuacioacuten se detallan los distintos diagramas de lasmaacutequinas de estados utilizadas para este proyecto conjuntamente con una explicacioacuten de cadauna de ellas

231 Maacutequina de estados del videojuego

ilustracioacuten 8 Maacutequina de estados del videojuego

La ilustracioacuten 8 nos muestra los estados que puede tomar el videojuego durante su tiempo devida

Este diagrama define los estados que puede tomar el videojuego una vez iniciado inicialmente eljuego se encuentra en el estado READY de este estado existe una transicioacuten al estado GAMEcuando el tiempo de READY finaliza READY lt=0 El estado game sera el estado en donde se

Paacutegina 31 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriadesarrollara todo el juego Des de este estado podemos pasar al estado PAUSE si pulsamos elbotoacuten de pausa del juego y desde el estado PUASE volvemos al estado GAME si volvemos apulsar el botoacuten pause Finalmente desde el estado GAME haremos la transicioacuten al estado GAMEOVER si nos arrebatan todas las vidas durante la partida Desde el estado GAME OVERpodremos volver a READY si decidimos hacer una nueva partida

232 Maacutequina de estados comportamiento oveja

ilustracioacuten 9 Maacutequina de estados comportamiento oveja La ilustracioacuten 9 muestra el comportamiento del personaje principal del videojuego que en estecaso es la oveja Se define el ciclo de vida de la oveja a traveacutes de sus comportamientos

APPEAR SHEEP La oveja aparece fuera del rango visual de la pantalla y empieza a moversepara que suceda la transicioacuten hacia el siguiente estado FOREST START la coordenada x debeser menor que 220

FOREST START La oveja seguiraacute movieacutendose en un espacio determinado de la pantalla hastaque sea lanzada en unas determinadas direcciones la direccioacuten queda determinada por lasvariables velocityX velocityY estas tomaran valores positivos o negativos determinando ladireccioacuten de lanzamiento esto queda reflejado en la condicioacuten de transicioacuten del estado FORESTSTART a FOREST DEEP Si realizamos el lanzamiento en esas determinadas direccionesharemos la transicioacuten al un nuevo estado FOREST DEEP

FOREST DEEP La oveja rebota por el escenario si colisiona con la puerta del corral y estaabierta hacemos la transicioacuten al estado ON THE PEN

Paacutegina 32 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ON THE PEN Finaliza el ciclo de vida de la oveja dentro del juego esta es devuelta al corral seincrementan puntos en el marcador de puntuacioacuten y se incrementa una unidad en el contador deovejas salvadas

233 Maacutequina de estados comportamiento lobo

ilustracioacuten 10 Maacutequina de estados comportamiento lobo La ilustracioacuten 10 muestra el comportamiento de los enemigos del videojuego que en este casoson los lobos Se define el ciclo de vida del lobo a traveacutes de sus comportamientos

APPEAR EYES Antes de aparecer los lobos a escena apareceraacuten sus ojos entre los matorralesdel bosque Cuando acaba el tiempo pasa al siguiente estado tiempo ojos lt= 0

APPEAR WOLF En este estado se seleccionara el tipo de lobo (habraacute 3 tipos distintos) el ladode la pantalla por donde apareceraacute posicioacuten y velocidad de salto como tambieacuten el tiempo ensegundos que tardara a saltar al escenario Una vez seleccionados todos estos paraacutemetros haraacutela transicioacuten al estado WHEN JUMP

WHEN JUMP Este estado simplemente esperara que pase el tiempo para que el lobo salte alescenario Un vez pase el tiempo el lobo apareceraacute en el escenario pasando a la transicioacuten JUMPON SCENE

JUMP ON SCENE En este estado se efectuara el salto a escena del lobo este saltara desde los

Paacutegina 33 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriamatorrales laterales de la pantallahacia el escenario dibujando un arco convexo Para realizar elsalto nos apoyaremos en la representacioacuten del calculo de la funcioacuten trigonomeacutetrica cosenosolamente en sus valores positivos por tanto cuando cosy lt 0 haremos la transicioacuten al estadoMOVE ya que el salto habraacute finalizado

MOVE En este estado los lobos se moveraacuten y podraacuten ser ahuyentados pulsando repetidas vecesencima de ellos las veces a pulsar queda sujeta al tipo de lobo que sea Des de este estadopodremos hacer a dos estado distintos dependiendo de lo que suceda Si conseguimos ahuyentaral lobo pasaremos al estado WOLF SCARED Si por el contrario el lobo atrapa a la ovejaharemos la transicioacuten al estado SHEEP TRAPPED en ambos estados finalizara el ciclo de vidadel lobo

WOLF SCARED Se habraacute ahuyentado el lobo se incrementa en uno el contador de lobosahuyentados y se suman puntos a la puntuacioacuten total En este estado finaliza el ciclo de vida dellobo

SHEEP TRAPPED El lobo habraacute atrapado una oveja se nos restara una vida En este estadofinaliza el ciclo de vida del lobo

234 Maacutequina de estados tutorial in game

ilustracioacuten 11 Maacutequina de estados tutorial in game La ilustracioacuten 11 muestra los distintos estados que toma el mini tutorial in game que apareceraacute laprimera vez que se juega En este las transiciones entre estados suceden de forma automaacutetica

Paacutegina 34 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriacada 5 segundos desde que se ha activado el primer estado Cada estado corresponderaacute a unacaja de texto mostrada en pantalla

3 Disentildeo

31 Estudio comparativo

Un estudio realizado en 2011 por la empresa Newzoo httpwwwnewzoocom empresainternacional dedicada a los estudios de mercado y enfocada por completo a la industria de losvideojuegos Ha realizado la primera encuesta a jugadores espantildeoles y una de las cosas que dicees La suma del volumen de negocio de juegos online (redes sociales juegos casualesjuegos para moacuteviles juegos MMO) superaraacute al del consumo en juegos para consolas en2011 Se puede ver un resumen del estudio en liacutenea en

httpwwweurogameresarticles2011-10-26-espana-gastara-1-600-millones-de-euros-en-videojuegos-en-2011

Con esta informacioacuten se puede ver que hacer un videojuego casual para una plataforma moacutevilcomo Android puede ser muy viable

Para este proyecto se realizaraacute un estudio comparativo (benchmarking) En la industria de losvideojuegos es habitual sacar tiacutetulos fijaacutendose en otros tiacutetulos que han conseguido gran eacutexito enel mercado La operativa consiste en mejorarlos dentro de otro contexto o hacer un videojuegocompletamente diferente pero basaacutendose en ocasiones en mecaacutenicas de alguacuten otro tiacutetulo que haconseguido un gran eacutexito

Existen en Google Play gran cantidad de juegos casuales que pueden servir como inspiracioacuten ycomo punto de inicio para hacer un planteamiento general de coacutemo disentildear el producto que sequiere desarrollar partiendo de los requisitos definidos en el apartado 131 de este documento Setomaraacuten como referencia algunos tiacutetulos para identificar patrones para ver coacutemo otros hansolucionado ciertas situaciones como pueden ser problemas de disentildeo o interaccioacuten entre otrosEn ninguacuten caso deberaacuten ser exactamente de la misma temaacutetica pero si que se miraraacute que seandel mismo tipo es decir casual games

El primer paso para realizar este estudio a sido ir a Google play y verificar si hay alguacuten juego conel mismo nombre que el que se pretende desarrollar ldquoFling the sheeprdquo No existe ninguacuten juego adiacutea de hoy con este nombre

El segundo paso a sido buscar tambieacuten en Google play videojuegos en los que aparezcanovejas solo poniendo en el buscador la palabra sheep nos aparecen muchiacutesimos juegos quetienen una temaacutetica donde aparecen ovejas Se ha verificado tambieacuten poniendo combinaciones depalabras relacionadas con el juego que se quiere implementar palabras como sheep wolves o sheep farm etc los resultados obtenidos son bastante elevados

Por la cantidad de juegos encontrados y los recursos de que se dispone como por ejemplo eltiempo no es posible analizarlos todos Si que se tomaran algunos juegos despueacutes de hacer unrepaso de los maacutes destacados Hay que decir que despueacutes de haber instalado algunos alguno deellos no ha acabado de funcionar correctamente en el dispositivo moacutevil

Tras estos pasos se escogeraacuten dos videojuegos de temaacutetica similar y dos videojuegos detemaacutetica diferente Los videojuegos escogidos para realizar el anaacutelisis comparativo son

Paacutegina 35 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria311 Sheep amp Wolf

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 12 y 13 pantallas juego Sheep amp Wolf Link httpsplaygooglecomstoreappsdetailsid=jscompanygamesSheepAndWolf_enter3

El juego consta de una mecaacutenica muy simple disponemos de un boomerang y un corazoacuten laperspectiva del juego es elevada y vemos coacutemo van bajando ovejas y lobos de forma aleatoria setrata de forma taacutectil dibujar la trayectoria del boomerang para eliminar los lobos sin tocar lasovejas y con el corazoacuten dibujar una trayectoria de forma taacutectil para tocar las ovejas y no los lobosconforme vamos tocando los lobos y las ovejas con el correspondiente objeto iremos sumandopuntos

Tiene cierta similitud con el que se quiere implementar ya que salen tambieacuten lobosovejas ytambieacuten que lo que se pretende implementar funcionara de forma taacutectil para lanzar las ovejas alcorral y ahuyentar a los lobos que amenazan a las ovejas

Tiene una perspectiva de caacutemara igual a la que se quiere implementar Tiene una mecaacutenica dejuego muy sencilla las opciones que ofrece son muy definidas y claras 3 botones al inicio deljuego grandes que nos indican las posibles opciones que tenemos dentro del juego Game StartGame Record Exit Un punto interesante de este juego es que las puntuaciones no se guardan anivel local de la aplicacioacuten sino que son compartidas en una pagina web asiacute se pueden ver laspuntuaciones a nivel mundial La navegacioacuten por las diferentes pantallas es correcta

Quizaacute un aspecto negativo del juego seriacutea que visualmente esta muy poco cuidado Aunque aveces si el juego produce mucha adiccioacuten el aspecto visual puede quedar en segundo teacutermino enjuegos para dispositivos moacuteviles En otros tipos de plataformas como consolas o PC el aspectovisual es un punto muy importante y que se debe trabajar mucho maacutes a fondo no obstante estono significa que en un dispositivo moacutevil no deba estarlo

Paacutegina 36 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez adictivo puntuaciones a nivel mundial Navegacioacuten correctaPuntos Negativos Poco cuidado visualmente no tiene pausaObservaciones No tiene un final definido a medida que avanzamos la dificultad aumenta

312 Sheep Up

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 14 y 15 pantallas juego Sheep Up Linkhttpsplaygooglecomstoreappsdetailsid=compgpublishandroidsheepuplive

A diferencia del anterior este visualmente esta mucho maacutes cuidado Es un juego en 3D dondeuna oveja de juguete esta guardada dentro de una caja de cartoacuten Va botando y tiene que irrecogiendo botones e ir subiendo por diferentes niveles para poder salir de la caja es un juego deplataformas tambieacuten con una mecaacutenica bastante sencilla

Este dispone de una pantalla que dura unos segundos y seguidamente sale el menuacute de opcionesdel juego a diferencia de lo visto anteriormente donde directamente saliacutea el menuacute de opcionesde juego El menuacute de opciones de juego tambieacuten es muy directo y claro Aparte del botoacuten playpara iniciar el juego el botoacuten opciones para configurar el audio del juego los efectos el idioma yver los creacuteditos Tiene el botoacuten store donde este juego tiene implementada la modalidad freemiumpara ir comprando diferentes objetos dentro de el que nos daraacuten ciertas ventajas dentro delgameplay La compra se podraacute realizar con monedas virtuales (los botones) que los habremos idorecogiendo durante los diferentes niveles jugados o tambieacuten podemos comprar cantidadesdeterminadas de botones a cambio de dinero de verdad Dispone de vinculacioacuten a redes socialescomo Twitter y Facebook

Puntos Positivos Sencillez adictivo vinculado a Twitter y el Facebook el juego se puede pararNavegacioacuten correctaPuntos Negativos La pantalla inicial tarda demasiado en desaparecer y no da ninguacuten tipo de

Paacutegina 37 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriainformacioacuten al usuario puede llegar a parecer que se a colgado debido al largo tiempo que tardaal menos con el dispositivo que se ha verificado

313 Temple Run

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 16 y 17 pantallas juego Temple runLinkhttpsplaygooglecomstoreappsdetailsid=comimangitemplerun Es un juego que no tiene final donde un explorador tiene que evitar la muerte superandodiferentes obstaacuteculos a traveacutes de diferentes pasillos tendremos que dibujar diferentes trazos deforma taacutectil para que el personaje gire salte o se deslice por el suelo al mismo tiempo tendremosque inclinar el teleacutefono para que el personaje vaya recogiendo monedas que podremos utilizarpara adquirir objetos y mejoras en la partida A medida que vamos recorriendo maacutes y maacutes metrosla dificultad aumenta y nos obligara a realizar maacutes acciones en un espacio de tiempo maacutes cortoasiacute pues los reflejos juegan un papel importante

Tambieacuten dispone de una pantalla que dura unos segundos seguida de un menuacute de opciones muyclaro y definido Este igual que el anterior dispone de una tienda donde se pueden comprarmejoras (potenciadores) con dinero virtual o real Los botones de inicio son muy similares al delanterior juego visto Dispone de vinculacioacuten a redes sociales como Twitter

Puntos Positivos Sencillez Adictivo vinculado a Twitter el juego se puede parar NavegacioacutencorrectaPuntos Negativos -

Paacutegina 38 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria314 Attack of the Spooklings

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 18 y 19 pantallas juego Attack of the SpooklingsLinkhttpsplaygooglecomstoreappsdetailsid=compicarogamesspooklings_free

Finalmente nos centramos en este casual con aspecto visual retro Otro juego que no disponede final y donde la dificultad va aumentando conforme el tiempo de juego aumenta El objetivo deljuego es matar a todos los Spooklings que quieren atacar nuestro poblado La forma de matar alos Spooklings es con el dedo deslizaacutendolo sobre la pantalla soacutelo que un Spookling llegue anuestro poblado en la parte inferior de la pantalla la partida finaliza Debemos evitar de todas lasformas posibles que lleguen a la parte inferior de la pantalla

Tambieacuten dispone de una pantalla de inicio y un menuacute inicial de juego claro y directo no disponede ninguna vinculacioacuten a redes sociales El juego no se puede parar La navegacioacuten por todas laspantallas es correcta teniendo pantalla de puntuaciones maacutes altas pantalla con mini tutorial decoacutemo jugar y unas opciones para configurar el audio y ver los creacuteditos del juego Sin embargo adiferencia de los otros tiene algunas fallas de disentildeo a nivel de transiciones entre pantallas yfuncionalidades baacutesicas que aparentemente no tienen mucho sentido Fuera de la pantalla dejuego no es posible abandonar la aplicacioacuten de ninguna de las maneras no hay botoacuten de salida yla tecla de ir hacia atraacutes no funciona la uacutenica manera de salir es matando el proceso Por otrolado durante la partida con el botoacuten de ir atraacutes conseguimos hacer pausa del juego pero de unaforma que no estaacute anunciada al usuario de ninguna manera con alguacuten icono visual que informa alusuario de la funcionalidad Una vez parado el juego con una tecla que no estaacute indicada enninguna parte como tal nos da dos opciones RESTART y QUIT con QUIT salimos de la aplicacioacutenalgo que no se puede hacer en ninguacuten otro punto de la aplicacioacuten Con RESTART vuelve aempezar la partida y se pierde la que teniacuteamos empezada En resumen si pulsamos este botoacuten noestaacute anunciado en ninguna parte por accidente durante una partida perdemos la partida ya que notenemos la opcioacuten de continuar puesto que o volvemos a empezar o salimos de la aplicacioacuten

Paacutegina 39 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez Muy adictivoPuntos Negativos Errores en el disentildeo de menuacutes y transiciones entre pantallas no tienevinculacioacuten a redes sociales no tiene pausa

Todo lo que se ha visto en este estudio comparativo nos da una idea de que el disentildeo que selleve a cabo debe cumplir las siguientes metas tener una mecaacutenica de juego adictiva y sencillaque la disposicioacuten de opciones e iconos han ser claras y dejar claro al usuario de forma visual queacutefuncionalidad tienen las transiciones y operativas baacutesicas deben estar bien indicadas eimplementadas El disentildeo visual debe ser lo mas cuidado posible aunque a veces en juegos paraeste tipo de dispositivos no es el que maacutes domina sobre todo si el juego tiene una mecaacutenica muyadictiva aunque si se consiguen las dos cosas mucho mejor Otro punto importante es tener unamecaacutenica freemium implementada dentro del juego con una tienda para comprar mejorasaplicables a la mecaacutenica de juego Otro punto importante es la vinculacioacuten del juego a redessociales y que recoja puntuaciones a nivel mundial y no locales del dispositivo todos estosingredientes le pueden dar al juego un plus que haga que el usuario vea el juego maacutes atractivo

Debido a temas de tiempo inicialmente se descarta para este proyecto la implementacioacuten de lassiguientes funcionalidades dentro del videojuego las puntuaciones a nivel mundial estas demomento quedaraacuten sujetas a nivel local del dispositivo tambieacuten se descarta la vinculacioacuten a redessociales y mecaacutenicas freemium

El resto de puntos comentados como las mecaacutenicas sencillas y adictivas aspecto visual lo maacutescuidado posible dentro de los recursos de que se dispone y la navegacioacuten entre pantallas ymenuacutes claros y sencillos seraacute lo que se transportaraacute al disentildeo y la posterior implementacioacuten delproyecto Es posible que durante la implementacioacuten del disentildeo mostrado en este documento semodifiquen algunos puntos por temas de balanceo y equilibrio del producto final

32 Perfiles de usuarios identificados

Los juegos casuales son juegos con mecaacutenicas simples Este hecho hace que esteacuten al alcancede cualquier usuario aunque eacuteste no sea un jugador experimentado acostumbrado a utilizar juegoscon mecaacutenicas maacutes complicadas que requieren de cierta experiencia previa Al mismo tiempo sonjuegos que pueden ser jugados en cortos espacios de tiempo Por tanto el tipo de usuario deestos juegos sera muy variado Podemos encontrar el perfil de usuario experimentado tanto enlas tecnologiacuteas como en los videojuegos y que tiene intereacutes por cualquier tipo de juego Y por otrolado encontramos el usuario poco experimentado pero que gracias a los smarphones y lasencillez de las mecaacutenicas de juego provoca que tambieacuten juegue

Todos tendraacuten un objetivo comuacuten pasar un rato jugando al juego Para mejorar su uacuteltimo reacutecordAunque en este tipo de juegos el usuario tambieacuten puede jugar sin buscar ninguacuten tipo de metaconcreta simplemente pasar un rato divertido sin necesidad de alcanzar ninguacuten tipo de reacutecord niobjetivo concreto Tambieacuten es importante mencionar que aunque los perfiles de usuarios son muyvariados existe una fuerte tendencia a que los jugadores de este tipo de juegos tiendan a sermaacutes grandes que los jugadores de otros tipos de videojuegos y suelen tener un intereacutes y tiempolimitado tanto para jugar como los videojuegos en general siendo normalmente del sexofemenino

Se detectan dos grandes grupos de perfiles de usuario los experimentados en jugar avideojuegos y los no experimentados en jugar videojuegos edades diferentes profesionesvariadas educacioacuten variada sexo variado Los usuarios de Android en general suelen pagarmucho menos por aplicaciones que otros grupos de usuarios como los de iphone por ejemplo

Paacutegina 40 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Los haacutebitos de consumo en los estados unidos ya no de los usuarios de juegos casuales sinode los usuarios de Android en general se definen de la siguiente manera soacutelo un 4 de estospaga por descargar una aplicacioacuten contra un 23 y un 31 de los usuarios de la App Store paraiPhone y iPad respectivamente tal y como muestra un estudio realizado por la empresa Statistacon las 100 aplicaciones maacutes descargadas

ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitasSe puede ver en linea en el link httpwwwstatistacomtopics983mobile-app-monetizationchart1400paid-apps-don-t-stand-a-chance-on-google-play

Se puede ver otro articulo similar en el siguiente link

httpwwwwayerlesscom201307usuarios-de-android-pagan-menos-por-apps-que-los-de-ios

La mayoriacutea de aplicaciones gratuitas utilizan la modalidad freemium que no es maacutes que ofrecerun producto baacutesico de forma gratuita y cobrar a los usuarios por opciones maacutes avanzadas oespeciales dentro de la misma aplicacioacuten No obstante tambieacuten es posible encontrar aplicacionescompletamente gratuitas sin la modalidad freemium

Como ya se ha dicho se han detectado inicialmente dos grandes grupos dentro de la masa deusuarios que son consumidores potenciales de juegos casuales Estos son los usuarios asiduos ajugar videojuegos de todo tipo y con experiencia en el uso de tecnologiacuteas en general es decirusuarios experimentados Por otro lado encontramos los que no tienen costumbre de jugar muchoy normalmente tampoco tienen una gran experiencia en el uso de tecnologiacuteas en general pero

Paacutegina 41 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debido a la simpleza de los videojuegos casuales eacutestos tambieacuten se convierten en jugadores yen muchas ocasiones se convierten en los usuarios que consumen maacutes este tipo de juegos Asiacutepues encontramos dos grandes grupos seguacuten unas caracteriacutesticas comunes experiencia previa osin experiencia ante los videojuegos y las tecnologiacuteas

33 Contextos de uso

331 iquest Doacutende

Al tratarse de un casual game para un dispositivo moacutevil el espacio de utilizacioacuten seraacute muyvariado Por tanto los usuarios podraacuten encontrarse en muchos lugares distintos como puedenser en casa en el tren en el metro en el autobuacutes al aire libre etc En definitiva el usuario podraacuteencontrarse en cualquier lugar

332 iquest Cuaacutendo

El tipo de juegos casuales tienden a ser juegos donde los usuarios realizan partidas cortas peroal mismo tiempo la naturaleza adictiva de estos hace que los usuarios puedan quedar atrapadosdurante varias horas repartidas en ratos diferentes o continuados dependiendo de la situacioacuten decada usuario Por tanto el cuaacutendo de este tipo de juegos puede ser muy variado casi en cualquiermomento que el usuario pueda dedicarle unos minutos o ratos maacutes largos durante su tiempolibre mientras se desplaza ya sea en tren en metro o en alguacuten otro medio de transporte que nonecesite estar pendiente del vehiacuteculo cuando esta en la cama etc

333 iquest En que entorno

Los entornos de utilizacioacuten pueden tambieacuten ser muy variados promovidos por doacutende y el cuaacutendoPor lo tanto el entorno tecnoloacutegico podraacute tambieacuten ser variado puede existir o no conexioacuten a lared en un entorno social muy diferente que podraacute ser maacutes privado o maacutes puacuteblico yconsecuentemente se dibujaraacute un entorno ambiental variado seguacuten el momento

4Disentildeo y ldquoConcept Artrdquo

41 Elementos presentes en la interfaz de la aplicacioacuten

Con todo lo que se ha visto en el apartado 31 estudio comparativo queda patente que la interfazde usuario debe ser clara y sencilla Seraacute necesario que contenga las siguientes pantallas

bull Pantalla de intro inicial que apareceraacute durante un segundobull Pantalla menuacute inicial del juego con las opciones Play Scores Options () How to play bull Pantalla de nivel donde se desarrolla el videojuegobull Pantalla high scores que mostrara la tabla de reacutecords con las 10 puntuaciones maacutes altasbull Pantalla how to play instrucciones de como jugar tambieacuten se integraran dentro del

videojuego y apareceraacuten durante la primera partida que se jueguebull Pantalla opciones podremos activar y desactivar el sonido y los efectos de audio A su vez

desde esta pantalla podremos acceder a la pantalla de creacuteditosbull Pantalla de creacuteditos pantalla doacutende se mostraran lo creacuteditos del videojuego bull Pantalla Ready pantalla de juego con el mensaje sobre impreso antes de empezar a

jugar apareceraacute durante 3 segundosbull Pantalla con los botones resume quit sobreimpresos en la pantalla de juego se accederaacute

Paacutegina 42 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaa ella con el botoacuten de pausa pausando el juego Desde ella podremos reanudar el juego oabandonar el juego

bull Pantalla game over con el resumen de los reacutecords conseguidos durante la partidapuntostiempo jugado numero de lobos ahuyentados y ovejas colocadas en el corralDesde esta pantalla tendremos dos botones Play again y Exit uno nos permitiraacute volver ajugar y el otro nos permitiraacute abandonar el juego tal y como su nombre indica

42 Flujos de interaccioacuten

En la siguiente ilustracioacuten se muestran los flujos de interaccioacuten definidos con las pantallasenumeradas en el apartado anterior Los flujos muestran la navegacioacuten que debe existir entre laspantallas del videojuego

ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintaspantallas

Paacutegina 43 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

43 Prototipaje

431 Sketches

En este apartado se muestran los primeros esbozos realizados a mano alzada estos intentanplasmar el disentildeo del juego en su totalidad Estos esbozos serviraacuten como punto de partida en unasegunda fase para realizar el prototipaje de todas las pantallas que intervienen en el videojuegoutilizando todo el material recopilado en la red

Tal y como ya se ha dicho en este mismo documento anteriormente no se dispone deconocimientos de disentildeo suficientes como para abordar un disentildeo de arte desde cero Por lo tantose han utilizado recursos ya disponibles en la red para el montaje de todos los graacuteficos delvideojuego Todos los recursos utilizados estaacuten bajo licencias creative commons o dominio puacuteblico A continuacioacuten se muestran los bocetos

ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 44 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 45 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada

En la siguiente paacutegina se muestran las transiciones definidas entre pantallas con los sketchesrealizados ilustracioacuten 241 Las transiciones toman como base el diagrama de flujos deinteraccioacuten definido en el apartado 42 de este documento ver ilustracioacuten 21

Paacutegina 46 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria432 Transiciones definidas entre pantallas

ilustracioacuten 241 Transiciones definidas entre pantallas

Paacutegina 47 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria433 Prototipo horizontal de alta fidelidad

4331 Pantalla inicial

Pantalla de inicio al ejecutar el juego apareceraacute esta pantalladurante un segundo

4332 Pantalla menuacute principal del juego

Pantalla de menuacute principal del juego desde esta pantallapodremos empezar a jugar (botoacuten Play) consultar la tabla depuntuaciones (botoacuten Scores) e ir a la pantalla de opciones deljuego (botoacuten Options) El interrogante de la parte inferiorderecha nos serviraacute para ir a la pantalla de instruccionesHOW TO PLAY para saber coacutemo se juega

Paacutegina 48 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4333 Pantalla de opciones

La pantalla de opciones nos permitiraacute deshabilitar la muacutesicadel juego y los efectos sonoros pasando el dedo sobre losiconos del altavoz y las notas musicales con el altavozdeshabilitaremos la muacutesica y con las notas musicalesdesactivaremos los efectos de audio La flecha naranja nosconduciraacute de nuevo a la pantalla de inicio del juego el botoacutencreacuteditos nos llevara a la pantalla de creacuteditos

4334 Pantalla de creacuteditos

Pantalla de creacuteditos en ella se muestran los nombres dequienes han disentildeado y programado el juego con la flechanaranja inferior volvemos a la pantalla de opcionesDeslizando el dedo sobre el texto se podraacute desplazar haciaarriba y hacia abajo

Paacutegina 49 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4335 Pantalla tabla de puntuaciones

Pantalla tabla de puntuaciones nos mostrara una tabla conlas 10 puntuaciones maacutes altas de todas las partidas jugadasEsta tabla se guardara de forma local en el dispositivo

4336 Pantalla de juego READY

Pantalla de juego READY Apareceraacute durante unossegundos una vez iniciada la partida Despueacutes de 3segundos pasara a la pantalla de juego que se muestra en elsiguiente apartado

Paacutegina 50 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4337 Pantalla de juego

La pantalla de la izquierda es donde se desarrollaraacute todo el gameplay en la parte superiorizquierda de la pantalla se muestran los puntos conseguidos y las vidas En la parte superiorderecha hay un botoacuten que permitiraacute pausar el juego una vez pausado mostraraacute la pantalla depausa con los botones RESUME y QUIT la pantalla se muestra en el apartado siguiente En laparte derecha se muestra otra pantalla ideacutentica a la de la izquierda donde se puede ver elgameplay baacutesico representado con flechas los lobos saldraacuten de los extremos de la pantalla yendohacia las ovejas las ovejas al mismo tiempo saldraacuten de la derecha de la pantalla y las tendremosque lanzarlas deslizando el dedo sobre ellas y lanzandolas hacia el establo La puerta se iraacuteabriendo y cerrando aleatoriamente los lobos una vez puestos en escena los podremos ahuyentardeslizando el dedo sobre ellos un nuacutemero de veces determinado en funcioacuten del color del lobocomo esta indicado en el apartado 131 de este documento

Paacutegina 51 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4338 Pantalla de pausa botones RESUME y QUIT

Pantalla de pausa que apareceraacute cuando se pause el juegoCon la opcioacuten RESUME continuaremos jugando con laopcioacuten QUIT se saldraacute de la partida y pasaraacute a la pantalla delmenuacute principal del juego descrita en el punto 322

4339 Pantalla GAME OVER

Pantalla GAME OVER apareceraacute cuando se hayanagotado todas las vidas Mostraraacute un resumen de los puntosconseguidos en la partida actual tiempo invertido en lapartida lobos ahuyentados y ovejas salvadas Con losbotones de la parte inferior podremos volver a jugar (botoacutenplay again) o salir del juego con el botoacuten exit este botoacuten nosconduciraacute a la pantalla de inicio de juego descrita en elapartado 322

Paacutegina 52 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria43310 Pantalla de instrucciones de juego HOW TO PLAY

Pantalla de instrucciones del juego nos haraacute una breveexplicacioacuten de coacutemo jugar Deslizando el dedo sobre el textose podraacute desplazar hacia arriba y hacia abajo El juegodispondraacute de unas mini instrucciones in game queapareceraacuten en la primera partida que se juegue en forma decajas de texto esta pantalla se muestra en el siguienteapartado

43311 Pantalla de instrucciones in game

Esta pantalla muestra el modo como quedaraacuten integradaslas instrucciones de juego dentro del gameplay Estasinstrucciones apareceraacuten solamente la primera vez que sejuegue

Paacutegina 53 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Todo el disentildeo mostrado en este apartado ha sido realizado con todos los recursos encontradosen la red todos ellos quedan recogidos en el apartado 6 Con el programa Gimp se ha montadotodo el disentildeo de alta fidelidad mostrado en este apartado Se ha trabajado con capas paradisponer de flexibilidad en la construccioacuten del disentildeo A su vez el hecho de tener los disentildeos porcapas nos permitiraacute poderlo exportar a la implementacioacuten del videojuego de una manera coacutemoday raacutepida en el apartado 5 implementacioacuten se hace referencia a como convertir el disentildeo realizadoen capas a recursos graacuteficos del videojuego

En la siguiente ilustracioacuten se muestra una captura del disentildeo de la pantalla de juego descrita enel apartado 4337 realizado con Gimp

ilustracioacuten 242 Disentildeo pantallas con Gimp

Paacutegina 54 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

5Implementacioacuten

51 Arquitectura global

511 Arquitectura del framework libGDX

LibGDX es un framework multiplataforma que actualmente soporta WindowsLinuxMac OS XAndroid iOS y HTML5 Esto permite escribir el coacutedigo una sola vez y desplegarlo en las distintasplataformas comentadas sin tener que modificar el coacutedigo LibGDX permite bajar a maacutes bajonivel si se desea ya que da acceso directo al sistema de ficheros dispositivos de entrada desonido y a OpenGL a traveacutes de la interfaz unificada OpenGL ES11 y 20

LibGDX ofrece a su vez un conjunto de APIs que ayudan en las tareas comunes de desarrollode videojuegos como son la presentacioacuten de sprites texto la creacioacuten de interfaces de usuario lareproduccioacuten de efectos de sonido y secuencias musicales y los distintos tipos de caacutelculosnecesarios en la programacioacuten de videojuegos

En algunas ocasiones LibGDX deja de lado el lenguaje Java y recurre a coacutedigo nativo paraconseguir un mejor rendimiento No obstante todas estas funciones quedan ocultas detraacutes de lasAPIs de Java De manera que en el momento de desarrollar un videojuego no hay quepreocuparse de realizar una compilacioacuten cruzada entre Java y C++

LibGDX es un framework maacutes que un motor de videojuegos que ayuda al desarrollo de estosgracias a las abstracciones de gran alcance que ofrece y deja en manos del programador elegircomo escribir su videojuego o aplicacioacuten

512 Visioacuten de los moacutedulos de libGDX

LibGDX comprende varios moacutedulos que proporcionan los servicios necesarios para crear laarquitectura tiacutepica de un videojuego

ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en unvideojuego

Paacutegina 55 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaA continuacioacuten de describen los moacutedulos mostrados en la ilustracioacuten 25

Input Proporciona un modelo de entrada unificado para todas las plataformas Soporta tecladopantalla taacutectil aceleroacutemetro y ratoacuten si esta disponible

Graphics Permite el dibujo de las imaacutegenes en pantalla usando el hardware proporcionado por laimplementacioacuten de Open GL ES las versiones soportadas son GL versioacuten 10 11 20

Files Proporciona los meacutetodos necesarios para las operaciones de lectura escritura totalmenteindependientes a los medios de comunicacioacuten existente

Audio Proporciona las herramientas necesarias para la reproduccioacuten de sonido para todas lasplataformas

Math Moacutedulo que proporciona los caacutelculos matemaacuteticos necesarios orientados al desarrollo devideojuegos

Physics LibGDX proporciona un wrapper completo al motor de fiacutesicas en 2D open sourcedesarrollado en C++ llamado Box2D

52 Arquitectura de un videojuego

521 Programa vs Aplicacioacuten

Una aplicacioacuten convencional sigue una secuencia loacutegica lineal reacciona cuando sucede alguacutenevento es decir responde a eventos como por ejemplo cuando se pulsa una tecla Por el contrarioun videojuego es maacutes complejo hace caacutelculos y dibuja en pantalla constantemente aunque no seproduzca ninguacuten evento

522 Estructura baacutesica de un videojuego

Programar videojuegos es una forma completamente diferente de programar software Ladiferencia principal entre una aplicacioacuten convencional y un videojuego radica en la gestioacuten deeventos tal y como se ha indicado anteriormente un programa ofrece respuestas a eventos y unavez son servidos permanece a la espera de una nueva orden en cambio un videojuego es unprograma que debe actuar en tiempo real tiene que estar haciendo caacutelculos y dibujando enpantalla constantemente No se puede esperar a que suceda un evento para poder actuaraunque el jugador no haga nada no presione una sola tecla no mueva el ratoacuten el juego tiene quecalcular el tiempo que lleva jugando en ese nivel si le va a atacar alguacuten enemigo si estaacute cargandoenergiacutea y por supuesto dibujar en pantalla todo lo que va sucediendo

La mayoriacutea de videojuegos estaacuten construidos bajo la misma estructura baacutesica sobre la cual correel programa Esta estructura puede tener variaciones pero de forma general se presenta de lasiguiente manera

Inicializacioacuten En esta primera etapa el juego se situacutea en su estado inicial Se realizan lasinicializaciones por lo que respecta a las libreriacuteas o motores que vayan a utilizarse de variables yestructuras de datos referentes a los atributos de las entidades o personajes escenariosconfiguraciones etc y de los diferentes recursos fiacutesicos que vayan a emplearse tales comograacuteficos o sonidos

Paacutegina 56 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Ciclo de juego En esta parte esta toda la accioacuten este ciclo se repite de manera indefinida hastaque el jugador pierda gane o salga del juego Este punto se puede dividir en tres partes quepodemos llamarlas entrada proceso y salida

Como entrada se entiende el punto donde se captura todo lo que hace el jugador comopresionar los botones de control mover el ratoacuten presionar las flechas del teclado tocar la pantallataacutectil y el resto de informacioacuten que recibe el juego

En la parte de proceso es donde se procesa toda la informacioacuten que se recibioacute en la entrada ytiene lugar la loacutegica del videojuego Por tanto es donde se realizan los caacutelculos de fiacutesicas si eljuego los requiere asiacute como tambieacuten los caacutelculos de la inteligencia artificial de esteconjuntamente con el tratamiento graacutefico

La salida es la encargada de enviar al jugador toda la informacioacuten que se ha procesado en laetapa anterior proceso Se muestra al jugador el resultado de lo que hizo con la visualizacioacuten enpantalla del estado actual del videojuego Tambieacuten es en este punto donde se hace sonar lamuacutesica y efectos de sonido

Por uacuteltimo y fuera del ciclo de juego esta la parte de finalizacioacuten esta parte es la encargada deliberar todos los recursos y memoria utilizada durante el transcurso del videojuego

Es importante diferenciar estas tres etapas del ciclo del videojuego y ver queacute tarea se delega encada una de ellas en la entrada tan soacutelo nos ocupamos de captar los posibles eventos el procesose encarga en primer lugar de procesar la entrada y maacutes adelante de la loacutegica del videojuego ypor uacuteltimo la capa de salida se encarga de visualizar y reproducir la muacutesica

Con estos puntos claros se puede mostrar la estructura principal de un videojuego En elsiguiente apartado se muestra esta estructura baacutesica a modo de esquema

Paacutegina 57 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

53 Esquema de la estructura baacutesica de un videojuego

Inicializacioacuten Creacioacuten de estructuras dedatos carga de recursos graacuteficos y sonidos

Entrada Gestioacuten de pantalla taacutectiljoystick teclado

Proceso Lanzamos una oveja al corralrebota la oveja salta un lobo al escenarioetc

Salida Mostrar graacuteficos y reproducirsonidos

ilustracioacuten 26 Estructura baacutesica de unvideojuego

Finalizacioacuten Liberar recursos

Paacutegina 58 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

54 Patrones de disentildeo

541 Introduccioacuten

En el disentildeo de cualquier aplicacioacuten como por ejemplo un videojuegono es posible abordarlo porcompleto El proceso de disentildeo de una aplicacioacuten suele ser iterativo y se realiza en diferentesetapas de forma que se vaya refinando con el tiempo Conseguir un disentildeo perfecto a la primeraes muy difiacutecil de conseguir El disentildeo de aplicaciones es complejo y la maacutes importante y que maacutesimpacto tiene no soacutelo sobre el producto final sino tambieacuten sobre su vida futura Ya que es en eldisentildeo en donde se definen las estructuras y entidades que se van a encargar de resolver elproblema planteado Como de bien se definan estas estructuras y entidades influiraacute en granmedida en el eacutexito o fracaso del proyecto y en la viabilidad de su mantenimiento

Los patrones de disentildeo son formas reconocidas y probadas de resolver problemas de disentildeo queson recurrentes en el tiempo No es maacutes que basarse en experiencias anteriores en problemassimilares aplicado soluciones probadas anteriormente en determinados contextos para alcanzarun mejor disentildeo maacutes raacutepidamente

Existen distintos patrones para distintos problemas de disentildeo No obstante en este documentosoacutelo se haraacute hincapieacute en los patrones utilizados para este proyecto Quedando fuera del alcancede este documento los demaacutes patrones existentes

542 Patrones de creacioacuten

Estos patrones nos proporcionan una solucioacuten relacionada con la construccioacuten de clases objetosy otras estructuras de datos Algunos ejemplos de patrones pueden ser Abstract Factory BuilderSingleton estos ofrecen mecanismos de creacioacuten de instancias de objetos y estructurasescalables dependiendo de las necesidades

543 Singleton

Para este proyecto se ha utilizado este patroacuten ya que era necesario tener una uacutenica instancia dealgunas determinadas clases En java cuando se utiliza el operador new es posible crear unainstancia de un objeto No obstante a veces es necesario tener una uacutenica instancia de un objetopor ejemplo para poder acceder a ella des de cualquier punto de la aplicacioacuten Seria un ejemplolapelota de un juego de pinball en donde podriacutea ser conveniente mantener una uacutenica instancia deeste objeto

La solucioacuten para garantizar que solo existe una instancia de un objeto se consigue impidiendoque ninguna otra clase pueda acceder al constructor por este motivo de declara el constructorcomo miacutenimo de forma protegida o privada y se proporciona un uacutenico punto (controlado) en dondese proporciona la uacutenica instancia En la siguiente ilustracioacuten se muestra el diagrama de clases delpatroacuten Singleton

ilustracioacuten 27 Singleton

Paacutegina 59 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria A continuacioacuten en el listado 543 se muestra una implementacioacuten baacutesica del patroacuten Singletonutilizada en el proyecto para la clase que maneja el audio del videojuego

Listado 543

1 package comthreecometflingthesheeputil23 import combadlogicgdxaudioMusic 4 import combadlogicgdxaudioSound56 public class AudioManager 7 8 public static final AudioManager instance = new AudioManager()910 private Music playingMusic11 private Sound playingSound1213 Singleton14 private AudioManager() 15 1617 1819 public void ResunmeMusic()20 21 if(playingMusic = null) playingMusicplay()22 2324 public void PlayMusic(Music musicfloat volumeboolean loop) 25 26 if(GamePreferencesinstancemusic) return27 playingMusic = music28 musicsetLooping(loop)29 musicsetVolume(volume)30 musicplay()31 3233 public void StopMusic()34 35 if(playingMusic = null) playingMusicstop()36 3738 public void PauseMusic()39 40 if(playingMusic = null) 41 if(playingMusicisPlaying()) 42 playingMusicpause()43 44 45 4647 public void PlaySound(Sound soundfloat volume) 48 49 if(GamePreferencesinstancesound) return50 playingSound = sound51 soundplay(volume)52 5354 public void PlaySound(Sound soundfloat volumefloat pitchfloat pan) 55 56 if(GamePreferencesinstancesound) return57 playingSound = sound58 soundplay(volume pitch pan)59 60

Esta clase maneja el audio del videojuego tanto efectos de sonido como la muacutesica es una clase

Paacutegina 60 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debe estar accesible des de cualquier punto de la aplicacioacuten y no tiene ninguacuten sentido que seinstancie repetidas veces soacutelo sera necesaria una instancia de dicha clase para poder manejar losaudios y muacutesicas Como se puede ver en la linea 14 del listado 543 se declara el constructorprivado y en la linea 8 se proporciona el punto donde se proporciona la uacutenica instancia de dichaclase a traveacutes de la variable instance declarada de forma publica para que se accesible desdecualquier otra clase y a su vez declarada de forma static y final Con final le decimos que estavariable ya no puede ser modificada una vez declarada es decir sera una constante Con static leindicamos que podremos utilizar la variable instance sin la necesidad de hacer ninguna instanciacon el operador new de la clase AudioManager

Existen varias clases en el videojuego que son singleton A continuacioacuten se nombran todas ellasAudioManager Assets WorldGameController CounterTime GamePreferences

55 Diagramas de clases definitivos

Se ha dividido en varios diagramas para facilitar su lectura se pueden ver los diagramas en lossiguientes apartados de este documento A continuacioacuten se pasan a comentar las clases descritasen ellos

56 Diagramas nuacutecleo videojuego

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep-android encontramoslas siguientes clases

MainActivity Hereda de AndroidAplication que a su vez hereda de Activity es donde se crea laaplicacioacuten crea una instancia de FlingTheSheepMain

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep encontramos laclase FlingTheSheepMain donde se instancia la pantalla de intro del juego dentro del meacutetodocreate

Siguiendo el esquema estructural de un videojuego descrito en el punto 53 de este documentola ilustracioacuten 28 detalla el diagrama de clases que engloba la inicializacioacuten del juego y el ciclo devida

La Inicializacioacuten queda recogida en la clase Assets esta clase es un singleton que instanciaotras clases que a su vez guardan todos los recursos del videojuego por recursos se entiendetexturas para los graacuteficos archivos de audio ficheros con informacioacuten necesaria para el juegoUna vez inicializado el hecho de ser un singleton nos permite acceder a estas clases a traveacutes dela clase assets des de cualquier punto de la aplicacioacuten En la ilustracioacuten 29 se detallan todas estasclases que engloba la clase assets Esta clase se encuentra el el paquetecomthreecometflingthesheepgame A continuacioacuten se comenta cada una de ellas con una brevedescripcioacuten

LevelDecoration Enumera todas las texturas de los objetos de decoracioacuten del videojuego floreshierba etc Son objetos que no tienen ninguna interaccioacuten con el juego simplemente decoran

AssetFontsScene2D Engloba los tipos distintos de fuente que se utilizan en el videojuego tipode letra medida y color

AssetSound Enumera todos los efectos de sonido del juego

Paacutegina 61 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAssetMusic Contiene todas las muacutesicas del juego

FileHandleHighScores Inicializa la tabla de puntuaciones local y la actualiza cada vez que serealiza una partida de juego

LevelObjects Engloba todos los objetos que tienen interaccioacuten con el videojuego por interaccioacutense entiende objetos que pueden colisionar con otros o que tienen alguacuten papel importante dentrode videojuego no son solo objetos de decoracioacuten

Character Contiene el protagonista del juego el personaje que lleva el jugador en esta caso lasovejas

NPCs En esta clase quedan englobadas las texturas de los enemigos en esta caso los lobos

GUI En esta clase se engloban todas las texturas utilizadas para la creacioacuten de la interfaz deusuario botones imaacutegenes

La clase Constants es una clase que declara varias constates estaacuteticas que son accesibles desde cualquier punto de la aplicacioacuten y se utilizan tanto en la inicializacioacuten como en el ciclo de vidadel videojuego La podemos encontrar en el paquete comthreecometflingthesheeputil

El ciclo de vida del videojuego entrada proceso y salida queda repartido en las siguientes clases

Entrada Gestioacuten pantalla taacutectil se realiza en la clase WorldGameController en el meacutetodollamado handleInput a su vez cada personaje(character) y enemigo(NPC) gestiona su propiaentrada de eventos a traveacutes de los meacutetodos sobre escritos touchDown fling y tap Ver ilustracioacuten30 clases Sheep y Wolf

Proceso Este apartado realiza la loacutegica del videojuego y es responsable de esto el meacutetodoupdate de la clase WorldGameController Dentro de este meacutetodo existe implementada lamaquina de estados descrita en el apartado 231 con todos los estados posibles que el juegopuede tener durante su ciclo de vida los estados son READYGAMEPAUSEGAME OVER Cadapersonaje y enemigo lleva implementado su propia loacutegica y maquina de estados dentro de susclases correspondientes Ver ilustracioacuten 30 clases Sheep y Wolf estas maacutequinas de estados sonlas descritas en los apartados 232 y 233 respectivamente

Salida La salida descrita en el apartado 53 queda recogida en la clase GameScreen Verilustracioacuten 31

Finalizacioacuten La finalizacioacuten liberacioacuten de recursos queda a cargo del meacutetodo sobre escrito hiderepartido por las distintas clases de la aplicacioacuten

Otras clases que intervienen en el ciclo de juego recogidas en la ilustracioacuten 28 sonCounterTime GamePreferences AudioManager a continuacioacuten se detalla la funcionalidad decada una de ellas

CounterTime Esta clase engloba el calculo de tiempo transcurrido desde que empieza el juegohasta que termina hace la funcioacuten de contador de tiempo interno

GamePreferences Esta clase hace persistente la configuracioacuten escogida por el usuario en lasopciones Es posible configurar el juego con o sin sonido al igual que los efectos de audio estaclase es la encargada de guardar esta configuracioacuten aunque abandonemos la aplicacioacuten

Paacutegina 62 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

AudioManager Clase que se encarga tanto de la reproduccioacuten de audio como los efectos desonido es su responsabilidad interrogar la configuracioacuten actual del sonido y efectos paradeterminar si tiene que realizar la reproduccioacuten de audio o efectos asiacute como tambieacuten determinarel volumen del sonido o si un audio hay que reproducirlo de forma ciacuteclica En el listado 543 deeste documento se puede ver el coacutedigo de esta clase como ejemplo de singleton

ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego

Paacutegina 63 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 29 Diagrama de clases Assets

57 Diagrama de clases objetos videojuego

En la ilustracioacuten 30 de este documento se detalla el diagrama de clases referente a los objetosdel videojuego Por objetos se entiende personaje principal enemigos juntamente con todos loselementos que forman el conjunto del escenario del videojuego

En primer lugar cabe destacar la existencia de la clase abstracta AbstractGameObject Estaclase abstracta define los meacutetodos comunes de todos los objetos del juego Por las necesidadesde implementacioacuten no se han definido meacutetodos abstractos no obstante la clase se define comoabstracta ya que va a ser la superclase de todos los objetos del videojuego y por tanto no se van arealizar instancias de esta A continuacioacuten se enumeran las clases que se extienden de esta y querecogen todos los objetos del juego ya sean con o sin interaccioacuten en el

Paacutegina 64 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaGrass Hole Flower Flowers Stump ForestLeft ForestRight ThePen WoodFenceForestWoodFencePen DoorPen BorderGrassLeft BorderGrassRight PotionPurple AubergineRedPuddle Tree GrassField

Estas clases corresponden a los objetos que constituyen el escenario del videojuego Las clasesSheep y Wolf corresponden al personaje del videojuego y a los enemigos respectivamente estasclases no solamente contienen el meacutetodo para ser dibujadas en pantalla igual que las anterioressino que tambieacuten poseen toda la loacutegica para el comportamiento de cada una de ellas este puntocorresponderiacutea a la fase de proceso de la estructura baacutesica de un videojuego detallada en elpunto 53 de este documento Existe para cada personaje y enemigo una maquina de estadosimplementada que indica en que estado se encuentra en cada momento aplicando la loacutegicacorrespondiente para ese estado Ver las enumeraciones SHEEP_STATE y WOLF_STATE de lailustracioacuten 30 estas corresponden a las maacutequinas de estado definidas en los apartados 232 y233 respectivamente

Finalmente en la ilustracioacuten 30 aparecen las clases GameScreen y WorldGameController

La clase GameScreen como se vera en el apartado 58 es la clase que engloba todo lorelacionado con la pantalla del juego o nivel En ella se instancian todos los objetos descritosanteriormente para la creacioacuten del nivel asiacute como tambieacuten la creacioacuten de la GUI del videojuegobotones textos sobreimpresos y cajas de textos Es por este motivo que en la clase GameScreenexisten dependencias u asociaciones hacia todos los objetos dependiendo del tipo de declaracioacutende estos

La clase WorldGameController contiene la implementacioacuten de gran parte de la loacutegica delvideojuego esta clase formariacutea parte de la etapa de proceso dentro de la estructura baacutesica de unvideojuego descrita en el apartado 53 de este documento

Existe tambieacuten en esta clase una asociacioacuten hacia la clase GameScreen ya que des de la claseWorldGameController que es donde se encuentra gran parte de la loacutegica es necesario accedera la instancia de GameScreen para interactuar con varios elementos visuales que manipulan laloacutegica del videjuego

En la siguiente hoja se muestra la ilustracioacuten 30 correspondiente a todo los descrito en esteapartado

Paacutegina 65 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 30 Diagrama de clases objetos

Paacutegina 66 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

58 Diagrama de clases pantallas videojuego

En la ilustracioacuten 31 quedan recogidas todas las clases que intervienen en la creacioacuten depantallas del videjuego por pantallas se entine la pantalla de intro la del menuacute principal la deopciones etc Estas clases engloban todo lo necesario para la construccioacuten y visualizacioacuten deestas A continuacioacuten se detallan cada una de las clases

AbstractGameScreen Esta clase abstracta recoge todos los meacutetodos abstractos que sonimplementados en cada una de las clases que a continuacioacuten se detallan(pantallas) con la loacutegicanecesaria seguacuten las necesidades de cada pantalla No se crea ninguna instancia de esta clase

IntroScreen Corresponde a la pantalla de intro del videojuego descrita en el apartado 4331

MenuScreen Corresponde a la pantalla del menuacute inicial del juego des de aquiacute podemos escogersi jugar consultar la tabla de puntuaciones local ir a las opciones o a la pantalla de ayuda delvideojuego descrita en el apartado 4332 OptionsScreenPantalla de opciones descrita en el apartado 4333

CreditsScreen Pantalla de creacuteditosdescrita en el apartado 4334

HighScoresScreen Pantalla en donde se recoge la puntuacioacuten local del videojuegodescrita en elapartado 4335

GameScreen Pantalla general esta clase engloba toda la loacutegica del nivel del juego a su vezengloba la pantalla inicial de nivel READY la pantalla de pausa del juego y la de game overdescritas en los apartados 4336 4337 4338 4339

HowToPlayScreen El videojuego dispone de un tutorial in game que solo aparece la primera vezque jugamos a el y en las siguientes partidas ya no vuelve aparecer maacutes descrita en el apartado43311 No obstante existe una pantalla en donde podemos ver este tutorial fuera del juego estaclase esta destinada a contener los datos de esta pantalla descrita en el apartado 43310

TextGUI Esta clase contiene todos los textos sobreimpresos que existen en el videojuego En ellaesta la loacutegica de cada uno de estos textos para que sean posicionados y visualizados desde lasdistintas partes del videojuego

TUTORIAL_INGAME_STATE Esta enumeracioacuten enumera los estados de la maquina de estadosutilizada para mostrar el tutorial in game dentro del videojuego la primera vez que jugamos lamaacutequina de estados esta implementada dentro de la clase TextGUI la maacutequina corresponde a ladescrita en el apartado 234

En la siguiente hoja se muestra la ilustracioacuten correspondiente a todo los descrito en esteapartado

Paacutegina 67 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 31 Diagrama de clases pantallas

Paacutegina 68 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

59 Configurar el entorno de desarrollo

Antes de empezar a desarrollar juegos con libGDX es necesario instalar y configurar el entornode desarrollo Para ello se utilizaraacute Eclipse como entorno de desarrollo integrado IDE A su vez secreara un proyecto que nos serviraacute como base para el desarrollo de este

Es posible desarrollar con otros entornos distintos a Eclipse pero el hecho que Eclipse sea elentrono de desarrollo soportado oficialmente ha sido motivo suficiente para escogerlo para esteproyecto como entorno de desarrollo

591 Instalacioacuten

Para poder instalar el entorno de desarrollo nos haraacute falta primero instalar el Java DevelopmentKit(JDK) para posteriormente poder instalar eclipse

Una vez instalados seraacute necesario bajar el framework libGDX del siguiente enlace

httplibgdxbadlogicgamescomdownloadhtml

Tambieacuten sera necesario instalar el Android SDK seguidamente tendremos que ejecutar eclipse yinstalar los plugins necesarios para poder desarrollar con Android El plugin necesario paradesarrollar con Eclipse sobre Android de llama ADT (Android Developer Tools) Para instalar esteplugin debemos dirigirnos a Help--gtInstall new software tal y como muestra la siguiente ilustracioacuten

ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse

Paacutegina 69 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez el entorno de desarrollo preparado seraacute el momento de descomprimir el frameworklibGDX se recomienda descomprimirlo en la raiacutez ClibGDX en esta caso ya que trabajamos bajoWindows

Una vez descomprimido dentro de la la carpeta encontramos una aplicacioacuten llamada gdx-setup-uijar Esta aplicacioacuten nos ayuda a crear un proyecto ya configurado con las libreriacuteas necesariaslisto para ser importado a Eclipse y empezar a desarrollar con libGDX para Android O paracualquier otra de las plataformas soportadas por el framework En este caso se configura elproyecto para Android y para Escritorio de esta manera podremos verificar durante el desarrollodel proyecto los avances sin necesidad de instalarlo en un dispositivo Android ya sea fiacutesico ovirtual

Las siguientes ilustraciones muestran la configuracioacuten a realizar

ilustracioacuten 33 Creacioacuten proyecto libGDX Habraacute que pulsar en el botoacuten Create y con ello accederemos a la siguiente ilustracioacuten

ilustracioacuten 34 Creacioacuten proyecto libGDX

Paacutegina 70 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez configuradas todas las opciones le daremos al paso 4 Open the generation screen ygeneraremos el proyecto Esto proyecto sera importable a eclipse desde la opcioacuten Import delpropio IDE La configuracioacuten del proyecto tambieacuten es posible hacerla a mano no obstante esta aplicacioacutennos ahorra tiempo y posibles errores en el momento de configurarlo dentro del entorno ya quepara hacerlo a mano existen distintos pasos a seguir para conseguir lo mismo que se consiguecon esta aplicacioacuten con escasos clicks de ratoacuten

510 Traspaso del disentildeo a texturas

Todo el disentildeo realizado en el apartado 4 seraacute necesario pasarlo a texturas para posteriormenteutilizarlo en la implementacioacuten del juego como recursos graacuteficos

Una textura es una imagen digital cualquiera en cualquiera de los formatos habituales jpg pnggif tga etc Para poderla cargar dentro de un videojuego y manipularla haraacute falta una libreriacuteaespecializada para ello esto se podria programar para para el caso de este proyecto utilizamos elpropio framework libGDX para realizar esta tarea que a su vez envuelve el uso de OpenGL

Las texturas en OpenGL deben ser siempre potencias de 2163264128256 etc del contrarionos daraacute problemas y no funcionaraacute

El primer paso sera desmontar todas las capas pieza por pieza por decirlo de alguna manera ycrear ficheros de cada una de las capas de forma separada para guardarlas todas en una carpetacon un nombre identificativo Ver la siguiente ilustracioacuten

ilustracioacuten 35 Capas separadas por imaacutegenes

Paacutegina 71 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez realizado este paso deberemos juntarlas todas de nuevo en una uacutenica textura que seapotencia de 2 Trataacutendose de un juego para moacutevil las texturas no deberiacutean ser mayores de1024x1024 y no se podraacuten cargar muchas de ellas en memoria por razones obvias de recursosdel tipo de dispositivo

Para juntarlas utilizaremos una aplicacioacuten llamada Texture Packer esta nos juntara las texturasde repartieacutendola de forma que quepan en una tamantildeo de textura definido que en este caso serade 1024x1024 en caso de caber en una uacutenica textura el programa generara 2 texturas siempreoptimizadas a potencias de 2 La siguiente ilustracioacuten muestra el programa Texture packer

Ilustracioacuten 36 Texture packer El formato de salida de las textura sera png ya que necesitamos mantener el canal alpha deestas activado para los objetos sean correctamente dibujados en la escena del videojuego

Conjuntamente con la textura la aplicacioacuten nos generara un archivo de texto que contendraacute elnombre de la textura y la posicioacuten donde se encuentra dentro de la textura generada de1024x1024 Ver la siguiente ilustracioacuten en la siguiente paacutegina

Paacutegina 72 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 37 Posicioacuten texturas De esta manera podremos cargar las texturas en la fase inicializacioacuten en la clase Assets descritaen la ilustracioacuten 29 en forma de diagrama de clases

511 Implementacioacuten de las maacutequinas de estado

La implementacioacuten de las maacutequinas de estado se realiza con una estructura enumconjuntamente con una estructura switch case El siguiente listado muestra la declaracioacuten del laestructura enum implementada en la clase WorldGameController la implementacioacuten de todas lasmaacutequinas se realiza del mismo modo por tanto se toma esta como ejemplo en representacioacuten detodas las implementadas en el videojuego

Listado 5111

1 private enum GAME_STATE READYGAMEPAUSEGAME_OVER2 private GAME_STATE gameState34 gameState = GAME_STATEREADY

Paacutegina 73 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLa siguiente tabla muestra un trozo de la estructura switch case implementada en el meacutetodoupdate de la clase WorldGameController

Listado 5112

1 public void update(float deltaTime)2 3 switch(gameState)4 5 case READY6 if(audioReady) 7 AudioManagerinstancePlaySound(Assetsinstancesoundready 8 ConstantsVOLUME_AUDIO_EFFECTS)9 audioReady = false10 11 if(timeLeftShowReadyScreen gt 0)12 13 if(deltaTime lt 03f ) 14 timeLeftShowReadyScreen -=deltaTime15 16 if(timeLeftShowReadyScreen lt 0)17 18 gameScreensetVisibilityGUI()19 timeLeftShowReadyScreen = 020 CounterTimeinstancestartTime()21 22 AudioManagerinstancePlayMusic(Assetsinstancemusiclevel01 23 ConstantsVOLUME_MUSIC_GAME true)24 gameState = GAME_STATEGAME 2526 27 28 break 29 case GAME30 updateGame() 31 if(timeOpenDoorPen gt 0)32 33 if(deltaTime lt 03f ) 34 timeOpenDoorPen -= deltaTime35 36 if(timeOpenDoorPen lt= 0) 37 gameScreengetDoorPen()setVisibility(gameScreengetDoorPen()getVisibility())38

En este listado podemos ver el estado READY y un trozo del estado GAME de la maacutequina deestados definida en el apartado 231 de este documento inicialmente la maacutequina toma el estadoREADY como se puede ver en la linea 4 del listado 5111 este estado se ira repitiendo a cadavuelta del ciclo de vida del videojuego hasta que cambie el estado de juego a GAME estosucederaacute una vez transcurridos 3 segundos tal y como se puede ver en la linea 24 del listado5112 Hay que tener en cuenta que un videojuego tal y como se ha definido en el apartado 522de este documento forma un bucle infinito por tanto la funcioacuten update de la linea 1 de este listadose repetiraacute de forma indefinida durante la ejecucioacuten del nivel de juego y cada vuelta ejecutaraacute elestado en que se encuentre la maacutequina de estados

Paacutegina 74 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6Conclusiones El desarrollo del proyecto ha sido tal y como se esperaba en lineas generales no han habidograndes desviaciones de tiempo ni durante el disentildeo ni en el posterior desarrollo de este Cabedestacar que el hecho de poder probar el proyecto ejecutaacutendolo en la propia maacutequina donde se hadesarrollado sin tener que utilizar un dispositivo real o virtual cada vez que se ha querido verificarha hecho que el desarrollo sea mucho maacutes fluido que sino se hubiera contado con el escenariodescrito Esto no significa que en ciertos momentos del desarrollo no se haya probado con undispositivo real Android Dejando a parte la gran ventaja que esto significa ya que una vezdesarrollado el esfuerzo realizado nos sirve para distintas plataformas casi sin tener que tocarnada del coacutedigo

Por tanto el hecho de haber escogido libGDX para el desarrollo ha sido una buena eleccioacuten Estambieacuten una buena eleccioacuten escoger un framework o un motor focalizado al desarrollo devideojuegos si se quiere implementar uno ya sea para Android o para cualquier plataforma

Existe la posibilidad de desarrollarlo sin ninguacuten tipo de framework o motor pero hay que tenerclaro que se quiere hacer exactamente y a donde se quiere llegar es decir si lo que se quiere escentrarse en la programacioacuten de videojuegos es mucho mejor partir de un framework o motor yaque de esta forma nos desligamos de programar ciertos apartados que estaacuten maacutes focalizados a laprogramacioacuten de frameworks o motores para videojuegos que no a la programacioacuten devideojuegos en si

Yendo maacutes allaacute de donde el programador se quiere centrar existe otro factor importante a teneren cuenta en el momento de plantear un proyecto llamado tiempo con el tiempo de que se hadispuesto para este proyecto queda auacuten maacutes justificado la eleccioacuten de este framework pararealizarlo Ya que probablemente sin el debido al esfuerzo mayor en programar apartados que noson exclusivos del videojuego pudieran haber existido desviaciones de tiempo importantes enrelacioacuten al calendario propuesto

Ha quedado fuera del proyecto por temas de tiempo realizar animaciones a todos los personajesdel videojuego para conseguir una mejor experiencia de usuario y un nivel de acabado superiorFuera del proyecto tambieacuten ha quedado la implementacioacuten no solo de unas puntuacionesmaacuteximas a nivel local sino tambieacuten unas a nivel mundial consultables a traveacutes de una paacutegina webA su vez no solo guardariacutea la puntuacioacuten maacutexima sino tambieacuten el tiempo jugado las ovejassalvadas y los lobos ahuyentados Tambieacuten ha quedado fuera de este proyecto la realizacioacuten deun blog dedicado al videojuego Todos estos apartados se implementaran en breve fuera de esteTFC

7Recursos utilizados

71 Portada documento

Jake Maymar httpwwwflickrcomphotosmaymar5334789030httpcreativecommonsorglicensesby-sa20deeden

72 Recursos utilizados para el disentildeo del videojuego

Para realizar todo el disentildeo visual del videojuego se ha recurrido a diferentes fuentes de arte

Paacutegina 75 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriasujetas a licencias creative commons y dominio puacuteblico A continuacioacuten se detalla una lista decada recurso con su autor en el caso de que no haya sido publicado de forma anoacutenimajuntamente con el link donde se ha encontrado

721 Fotografiacutea pantalla intro videojuego y usuarios

Michael Karrerhttpwwwflickrcomphotosmichael_karrer78438470httpcreativecommonsorglicensesby-nc20deeden

Jodi Womackhttpwwwflickrcomphotosjodiwomack6217578512httpcreativecommonsorglicensesby20deeden

Tony Alterhttpwwwflickrcomphotos78428166N008279647916httpcreativecommonsorglicensesby20deeden

Gage Skidmore (Nina Dobrev)httpwwwflickrcomphotosgageskidmore5980906910httpcreativecommonsorglicensesby-sa20deeden

722 Iconos y botones

7221 Altavoz

Autor httpwwwiconshockcom Link httpswwwiconfindercomicons67771audio_speaker_iconsize=128Licencia Free for commercial use

7222 Nota Musical

Autor httpwwwdezinerfoliocomLink httpswwwiconfindercomicons58679music_iconsize=128Licencia Free for commercial use

7223 Flecha salida

Autorhttptayteldeviantartcom Linkhttpswwwiconfindercomicons41696arrow_back_grey_left_orange_iconsize=128LicenciaFree for commercial use (Include link to authors website) 7224 Icono de pausa

AutorhttpwwwwebdesignerdepotcomLink httpswwwiconfindercomicons40716blue_button_pause_iconsize=64Licencia Free for commercial use

7225 Icono interrogante (help)

AutorhttpwwwdoublejdesigncoukLinkhttpwwwiconarchivecomshowravenna-3d-icons-by-double-j-designHelp-iconhtml

Paacutegina 76 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLicencia httpcreativecommonsorglicensesby30

7226 Botones (Play Score Options)

AutorydLinkhttpopengameartorgcontentbuttons-variationsLicenciahttp creativecommonsorgpublicdomainzero10

723 Recursos graacuteficos 2D componentes escenario

7231 Ojos lobos

AutorCreek23Link httpopengameartorgcontentgnu-the-gnu-mascotLicencia httpcreativecommonsorglicensesby-sa30

7232 Ovejas y lobos

Autor lemmlingLink httpopenclipartorguser-clipartslemmlingLicencia httpopenclipartorgshare

7233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY

AutorSamLink httpopengameartorgcontentcountry-fieldLicencia httpcreativecommonsorgpublicdomainzero10

7234 Escenario

Daniel EddelandLinkhttpopengameartorgcontentlpc-farming-tilesets-magic-animations-and-ui-elementsLicenciahttpcreativecommonsorglicensesby-sa30

724 Fuentes

7241 ThinckheadAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10 7242 MisfortuneAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7243 TabaqueraAutor deFharoLink httpwwwdafontcomesfernando-harod3419l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7244 Press Start Font

Paacutegina 77 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAutor desconegutLink httpwwwzone38netfontpressstartLicencia httpscriptssilorgcmsscriptspagephpsite_id=nrsiampid=OFL

725 Otros

Todos los demaacutes recursos no nombrados en esta lista como el fondo de pantalla del menuacuteprincipal de inicio del juego y las letras del titulo del juego Fling the sheep impresas sobre lapantalla del menuacute inicial son de elaboracioacuten propia

726 Audio y efectos de sonido

7261 Menu

Autor mrpolyLinkhttpopengameartorgcontentmenu-musicLicencia httpcreativecommonsorgpublicdomainzero10

7262 Game Over

Autor MacroLinkhttpopengameartorgcontentrest-outro-loopLicenciahttpcreativecommonsorglicensesby30

7263 Game Play

AutorRezonerLinkhttpopengameartorgcontenttrance-menuLicenciahttpcreativecommonsorglicensesby30

7264 Creacutedits

Autor -Linkhttpopengameartorgcontent1-minute Licenciahttpcreativecommonsorgpublicdomainzero10

7265 Ready

httpopengameartorgcontentui-accept-or-forwardhttpcreativecommonsorglicensesby30

7266 Pause_Resume

httpopengameartorgcontentcompletion-sound httpcreativecommonsorglicensesby30

7267 Quit

httpopengameartorgcontentfly-swatter-squish-sound httpcreativecommonsorgpublicdomainzero10

7268 Sheep

Paacutegina 78 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

httpopengameartorgcontentsheep-sound-bleats-yo-frankiehttpcreativecommonsorglicensesby30

El resto de efectos de audio han sido obtenidos de la siguiente paacutegina httpwwwpond5com

8Lineas abiertas del proyecto Se haraacute un repaso del proyecto por si existe alguacuten bug para solucionarlo Posteriormente deadaptara para que sea funcional en distintas resoluciones de pantalla Se antildeadiraacuten los power-upsque se definieron al principio del proyecto por temas de tiempo han quedado fuera de la entregaA su vez se balanceara el gameplay antildeadiendo alguna mecaacutenica de juego extra si procede

Se publicara el juego en Google Play y se creara un blog del juego se mirara la posibilidad dehacer funcionar el juego en el blog con webGL httpprojects3cometcom

Se ampliara la tabla de puntuaciones de la siguiente manera la tabla no solamente guardara lospuntos tambieacuten guardara el tiempo jugado nuacutemero de lobos ahuyentados nuacutemero de ovejassalvadas y nombre del usuario con 5 caracteres Se creara un un registro de puntuaciones globalconsultable desde el blog del videojuego

Finalmente se crearan maacutes niveles de juego con distribuciones diferentes alguacuten nivel podriacuteatambieacuten tener mecaacutenicas diferentes de juego con los mismos personajeshellip

9Bibliografiacutea utilizada

Titulo Beginning Android Games (Second Edition) ISBN 978-1-43024-677-0

Autor Mario Zechner Robert Green

Editorial Apress

Contenido Desarrollo de videojuegos para Android

Titulo Learning libGDX Game Development ISBN 978-1-78216-604-7

Autor Andreas Oehlke

Editorial PACKT Publishing

Contenido Desarrollo de videojuegos para Android con libGDX

Paacutegina 79 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

10Otros proyectos realizados

101 Remake Gradius Konami

Remake del famoso shooter de Konami lanzado para ordenadores MSX en 1986 programadocon C++ con SDL Aunque este juego existe para multitud de plataformas Ver articulo wikipedia

httpeswikipediaorgwikiGradius_videojuego

Blog del proyecto httpprojects3cometcom

102 Tales of Nimria mini RPG

Mini RPG en 2D programado en C++ con DirectX este mini RPG trata de salvar a una princesacapturada por unas malvadas criaturas

Blog del proyecto httpprojects3cometcom

102 Motocalipsis Bar 66 RTS RTS en 3D con ambiente motero los hechos de la historia suceden en un pequentildeo pueblo deTexas Programado en Unity con C

Blog del proyecto httpmotocalipsisbar66blogspotcomes

Paacutegina 80 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Creative Commons 40 license by-nc-sa

Attribution-NonCommercial-ShareAlike 40 International

===========================================================

Creative Commons Corporation (Creative Commons) is not a law firm anddoes not provide legal services or legal advice Distribution ofCreative Commons public licenses does not create a lawyer-client orother relationship Creative Commons makes its licenses and relatedinformation available on an as-is basis Creative Commons gives nowarranties regarding its licenses any material licensed under theirterms and conditions or any related information Creative Commonsdisclaims all liability for damages resulting from their use to thefullest extent possible

Using Creative Commons Public Licenses

Creative Commons public licenses provide a standard set of terms andconditions that creators and other rights holders may use to shareoriginal works of authorship and other material subject to copyrightand certain other rights specified in the public license below Thefollowing considerations are for informational purposes only are notexhaustive and do not form part of our licenses

Considerations for licensors Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights Our licenses are irrevocable Licensors should read and understand the terms and conditions of the license they choose before applying it Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected Licensors should clearly mark any material not subject to the license This includes other CC- licensed material or material used under an exception or limitation to copyright More considerations for licensors wikicreativecommonsorgConsiderations_for_licensors

Considerations for the public By using one of our public licenses a licensor grants the public permission to use the licensed material under specified terms and conditions If the licensors permission is not necessary for any reason--for example because of any applicable exception or limitation to copyright--then that use is not regulated by the license Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant Use of

Paacutegina 81 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria the licensed material may still be restricted for other reasons including because others have copyright or other rights in the material A licensor may make special requests such as asking that all changes be marked or described Although not required by our licenses you are encouraged to respect those requests where reasonable More_considerations for the public wikicreativecommonsorgConsiderations_for_licensees

===========================================================

Creative Commons Attribution-NonCommercial-ShareAlike 40 InternationalPublic License

By exercising the Licensed Rights (defined below) You accept and agreeto be bound by the terms and conditions of this Creative CommonsAttribution-NonCommercial-ShareAlike 40 International Public License(Public License) To the extent this Public License may beinterpreted as a contract You are granted the Licensed Rights inconsideration of Your acceptance of these terms and conditions and theLicensor grants You such rights in consideration of benefits theLicensor receives from making the Licensed Material available underthese terms and conditions

Section 1 -- Definitions

a Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated altered arranged transformed or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor For purposes of this Public License where the Licensed Material is a musical work performance or sound recording Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image

b Adapters License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License

c BY-NC-SA Compatible License means a license listed at creativecommonsorgcompatiblelicenses approved by Creative Commons as essentially the equivalent of this Public License

d Copyright and Similar Rights means copyright andor similar rights closely related to copyright including without limitation performance broadcast sound recording and Sui Generis Database

Paacutegina 82 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Rights without regard to how the rights are labeled or categorized For purposes of this Public License the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights

e Effective Technological Measures means those measures that in the absence of proper authority may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20 1996 andor similar international agreements

f Exceptions and Limitations means fair use fair dealing andor any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material

g License Elements means the license attributes listed in the name of a Creative Commons Public License The License Elements of this Public License are Attribution NonCommercial and ShareAlike

h Licensed Material means the artistic or literary work database or other material to which the Licensor applied this Public License

i Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license

j Licensor means the individual(s) or entity(ies) granting rights under this Public License

k NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation For purposes of this Public License the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange

l Share means to provide material to the public by any means or process that requires permission under the Licensed Rights such as reproduction public display public performance distribution dissemination communication or importation and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them

Paacutegina 83 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria m Sui Generis Database Rights means rights other than copyright resulting from Directive 969EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases as amended andor succeeded as well as other essentially equivalent rights anywhere in the world

n You means the individual or entity exercising the Licensed Rights under this Public License Your has a corresponding meaning

Section 2 -- Scope

a License grant

1 Subject to the terms and conditions of this Public License the Licensor hereby grants You a worldwide royalty-free non-sublicensable non-exclusive irrevocable license to exercise the Licensed Rights in the Licensed Material to

a reproduce and Share the Licensed Material in whole or in part for NonCommercial purposes only and

b produce reproduce and Share Adapted Material for NonCommercial purposes only

2 Exceptions and Limitations For the avoidance of doubt where Exceptions and Limitations apply to Your use this Public License does not apply and You do not need to comply with its terms and conditions

3 Term The term of this Public License is specified in Section 6(a)

4 Media and formats technical modifications allowed The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created and to make technical modifications necessary to do so The Licensor waives andor agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights including technical modifications necessary to circumvent Effective Technological Measures For purposes of this Public License simply making modifications authorized by this Section 2(a) (4) never produces Adapted Material

5 Downstream recipients

a Offer from the Licensor -- Licensed Material Every recipient of the Licensed Material automatically

Paacutegina 84 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License

b Additional offer from the Licensor -- Adapted Material Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapters License You apply

c No downstream restrictions You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material

6 No endorsement Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are or that Your use of the Licensed Material is connected with or sponsored endorsed or granted official status by the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i)

b Other rights

1 Moral rights such as the right of integrity are not licensed under this Public License nor are publicity privacy andor other similar personality rights however to the extent possible the Licensor waives andor agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights but not otherwise

2 Patent and trademark rights are not licensed under this Public License

3 To the extent possible the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme In all other cases the Licensor expressly reserves any right to collect such royalties including when the Licensed Material is used other than for NonCommercial purposes

Paacutegina 85 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 3 -- License Conditions

Your exercise of the Licensed Rights is expressly made subject to thefollowing conditions

a Attribution

1 If You Share the Licensed Material (including in modified form) You must

a retain the following if it is supplied by the Licensor with the Licensed Material

i identification of the creator(s) of the Licensed Material and any others designated to receive attribution in any reasonable manner requested by the Licensor (including by pseudonym if designated)

ii a copyright notice

iii a notice that refers to this Public License

iv a notice that refers to the disclaimer of warranties

v a URI or hyperlink to the Licensed Material to the extent reasonably practicable

b indicate if You modified the Licensed Material and retain an indication of any previous modifications and

c indicate the Licensed Material is licensed under this Public License and include the text of or the URI or hyperlink to this Public License

2 You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium means and context in which You Share the Licensed Material For example it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information 3 If requested by the Licensor You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable

Paacutegina 86 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria b ShareAlike

In addition to the conditions in Section 3(a) if You Share Adapted Material You produce the following conditions also apply

1 The Adapters License You apply must be a Creative Commons license with the same License Elements this version or later or a BY-NC-SA Compatible License

2 You must include the text of or the URI or hyperlink to the Adapters License You apply You may satisfy this condition in any reasonable manner based on the medium means and context in which You Share Adapted Material

3 You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to Adapted Material that restrict exercise of the rights granted under the Adapters License You apply

Section 4 -- Sui Generis Database Rights

Where the Licensed Rights include Sui Generis Database Rights thatapply to Your use of the Licensed Material

a for the avoidance of doubt Section 2(a)(1) grants You the right to extract reuse reproduce and Share all or a substantial portion of the contents of the database for NonCommercial purposes only

b if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material including for purposes of Section 3(b) and

c You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database

For the avoidance of doubt this Section 4 supplements and does notreplace Your obligations under this Public License where the LicensedRights include other Copyright and Similar Rights

Paacutegina 87 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 5 -- Disclaimer of Warranties and Limitation of Liability

a UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR TO THE EXTENT POSSIBLE THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL WHETHER EXPRESS IMPLIED STATUTORY OR OTHER THIS INCLUDES WITHOUT LIMITATION WARRANTIES OF TITLE MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE NON-INFRINGEMENT ABSENCE OF LATENT OR OTHER DEFECTS ACCURACY OR THE PRESENCE OR ABSENCE OF ERRORS WHETHER OR NOT KNOWN OR DISCOVERABLE WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART THIS DISCLAIMER MAY NOT APPLY TO YOU

b TO THE EXTENT POSSIBLE IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING WITHOUT LIMITATION NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT SPECIAL INDIRECT INCIDENTAL CONSEQUENTIAL PUNITIVE EXEMPLARY OR OTHER LOSSES COSTS EXPENSES OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES COSTS EXPENSES OR DAMAGES WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART THIS LIMITATION MAY NOT APPLY TO YOU

c The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that to the extent possible most closely approximates an absolute disclaimer and waiver of all liability

Section 6 -- Term and Termination

a This Public License applies for the term of the Copyright and Similar Rights licensed here However if You fail to comply with this Public License then Your rights under this Public License terminate automatically

b Where Your right to use the Licensed Material has terminated under Section 6(a) it reinstates

1 automatically as of the date the violation is cured provided it is cured within 30 days of Your discovery of the violation or

2 upon express reinstatement by the Licensor

For the avoidance of doubt this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License

Paacutegina 88 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

c For the avoidance of doubt the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time however doing so will not terminate this Public License

d Sections 1 5 6 7 and 8 survive termination of this Public License

Section 7 -- Other Terms and Conditions

a The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed

b Any arrangements understandings or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License

Section 8 -- Interpretation

a For the avoidance of doubt this Public License does not and shall not be interpreted to reduce limit restrict or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License

b To the extent possible if any provision of this Public License is deemed unenforceable it shall be automatically reformed to the minimum extent necessary to make it enforceable If the provision cannot be reformed it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions

c No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor

d Nothing in this Public License constitutes or may be interpreted as a limitation upon or waiver of any privileges and immunities that apply to the Licensor or You including from the legal processes of any jurisdiction or authority

===========================================================

Paacutegina 89 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaCreative Commons is not a party to its public licensesNotwithstanding Creative Commons may elect to apply one of its publiclicenses to material it publishes and in those instances will beconsidered the Licensor Except for the limited purpose of indicatingthat material is shared under a Creative Commons public license or asotherwise permitted by the Creative Commons policies published atcreativecommonsorgpolicies Creative Commons does not authorize theuse of the trademark Creative Commons or any other trademark or logoof Creative Commons without its prior written consent includingwithout limitation in connection with any unauthorized modificationsto any of its public licenses or any other arrangementsunderstandings or agreements concerning use of licensed material Forthe avoidance of doubt this paragraph does not form part of the publiclicenses

Creative Commons may be contacted at creativecommonsorg

Paacutegina 90 de 102

Page 7: Universitat Oberta de Catalunya UOC Ingeniería técnica en

Iacutendice de contenidos1Introduccioacuten1

11 Justificacioacuten y contexto del proyecto112 Descripcioacuten del Proyecto113 Objetivos2

131 Definicioacuten del videojuego 214 Planificacioacuten4

141 Ciclo de vida4142 Planificacioacuten detallada del proyecto4

1411 Anaacutelisis previo planificacioacuten41412 Anaacutelisis de requisitos51413 Disentildeo51414 Implementacioacuten y pruebas61415 Finalizacioacuten6

143 Temporalizacioacuten del proyecto 715 Herramientas y tecnologiacuteas utilizadas916 Riesgos del proyecto10

2 Anaacutelisis funcional1121 Requisitos funcionales casos de uso11

211 Diagrama casos de uso actor ldquoJugadorrdquo11212 Tabla resumen casos de uso12213 Descripcioacuten textual de los casos de uso12

2131 VJ01 Inicio videojuego 122132 VJ02 Jugar 132133 VJ03 Acceder puntuaciones maacuteximas locales 132134 VJ31 Consultar puntuaciones locales 142135 VJ32 Salir puntuaciones locales 142136 VJ04 Acceder a las opciones 152137 VJ41 Activar o desactivar muacutesica o efectos 152138 VJ42 Acceder a la pantalla de creacuteditos 162139 VJ421 Salir de la pantalla de creacuteditos 1621310 VJ05 Acceder a las instrucciones 1721311 VJ51 Salir de las instrucciones 1721312 VJ06 Salir del videojuego 18

214 Diagrama casos de uso actor ldquoIArdquo192141 Diagrama casos de uso IA personaje principal (oveja)19

21411 Tabla resumen casos de uso2021412 Descripcioacuten textual de los casos de uso20

214121 IA03 Salida ovejas al escenario 20214122 IA031 Posicionamiento en pantalla de las oveja 20214123 IA032 Movimiento oveja 21214124 IA033 Oveja pastando21214125 IA034 Lanzamiento oveja22214126 IA035 Rebotes de la oveja 22214127 IA036 La oveja entra en el establo 23214128 IA037 Parar oveja 23

2142 Diagrama casos de uso IA enemigos (lobo)2421421 Tabla resumen casos de uso2421422 Descripcioacuten textual de los casos de uso25

214221 IA02 Salida lobo al escenario 25

i

214222 IA021 Ojos por la derecha o por la izquierda25214223 IA022 Escoge el tipo de lobo26214224 IA023 Lobo por la derecha o por la izquierda26214225 IA024 Salta a escena27214226 IA025 Movimiento lobo27

22 Disentildeo inicial diagrama de clases28221 Diagrama de clases inicial ldquoFling the sheeprdquo 28

2211 Resumen clases videojuego28222 Diagrama de clases inicial de pantallas30

2221 Resumen clases pantallas3023 Definicioacuten de maacutequinas de estado finitas31

231 Maacutequina de estados del videojuego 31232 Maacutequina de estados comportamiento oveja32233 Maacutequina de estados comportamiento lobo33234 Maacutequina de estados tutorial in game34

3 Disentildeo3531 Estudio comparativo35

311 Sheep amp Wolf36312 Sheep Up 37313 Temple Run38314 Attack of the Spooklings39

32 Perfiles de usuarios identificados4033 Contextos de uso42

331 iquest Doacutende 42332 iquest Cuaacutendo 42333 iquest En que entorno 42

4Disentildeo y ldquoConcept Artrdquo4241 Elementos presentes en la interfaz de la aplicacioacuten4242 Flujos de interaccioacuten4343 Prototipaje44

431 Sketches44432 Transiciones definidas entre pantallas47433 Prototipo horizontal de alta fidelidad 48

4331 Pantalla inicial484332 Pantalla menuacute principal del juego484333 Pantalla de opciones494334 Pantalla de creacuteditos494335 Pantalla tabla de puntuaciones504336 Pantalla de juego READY 504337 Pantalla de juego514338 Pantalla de pausa botones RESUME y QUIT524339 Pantalla GAME OVER5243310 Pantalla de instrucciones de juego HOW TO PLAY5343311 Pantalla de instrucciones in game 53

5Implementacioacuten5551 Arquitectura global55

511 Arquitectura del framework libGDX55512 Visioacuten de los moacutedulos de libGDX55

52 Arquitectura de un videojuego56521 Programa vs Aplicacioacuten56

ii

522 Estructura baacutesica de un videojuego5653 Esquema de la estructura baacutesica de un videojuego5854 Patrones de disentildeo59

541 Introduccioacuten59542 Patrones de creacioacuten59543 Singleton59

55 Diagramas de clases definitivos6156 Diagramas nuacutecleo videojuego 6157 Diagrama de clases objetos videojuego6458 Diagrama de clases pantallas videojuego6759 Configurar el entorno de desarrollo69

591 Instalacioacuten 69510 Traspaso del disentildeo a texturas 71511 Implementacioacuten de las maacutequinas de estado 73

6Conclusiones757Recursos utilizados 75

71 Portada documento 7572 Recursos utilizados para el disentildeo del videojuego 75

721 Fotografiacutea pantalla intro videojuego y usuarios 76722 Iconos y botones76

7221 Altavoz767222 Nota Musical767223 Flecha salida767224 Icono de pausa767225 Icono interrogante (help)767226 Botones (Play Score Options)77

723 Recursos graacuteficos 2D componentes escenario777231 Ojos lobos777232 Ovejas y lobos777233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY777234 Escenario77

724 Fuentes777241 Thinckhead777242 Misfortune777243 Tabaquera777244 Press Start Font77

725 Otros78726 Audio y efectos de sonido78

7261 Menu 787262 Game Over787263 Game Play787264 Creacutedits787265 Ready787266 Pause_Resume787267 Quit787268 Sheep78

8Lineas abiertas del proyecto799Bibliografiacutea utilizada 7910Otros proyectos realizados80

101 Remake Gradius Konami80

iii

102 Tales of Nimria mini RPG80102 Motocalipsis Bar 66 RTS80

Creative Commons 40 license by-nc-sa81

Iacutendice de ilustracionesilustracioacuten 1 Ciclo de vida en cascada4ilustracioacuten 11 Calendario proyecto7ilustracioacuten 2 Diagrama de gantt8ilustracioacuten 3 Diagrama de casos de usos actor jugador11ilustracioacuten 4 Diagrama de casos de usos personaje principal19ilustracioacuten 5 Diagrama de casos de usos enemigos24ilustracioacuten 6 Diagrama de clases videojuego28ilustracioacuten 7 Diagrama de clases de pantallas30ilustracioacuten 8 Maacutequina de estados del videojuego 31ilustracioacuten 9 Maacutequina de estados comportamiento oveja 32ilustracioacuten 10 Maacutequina de estados comportamiento lobo 33ilustracioacuten 11 Maacutequina de estados tutorial in game 34ilustraciones 12 y 13 pantallas juego Sheep amp Wolf 36ilustraciones 14 y 15 pantallas juego Sheep Up 37ilustraciones 16 y 17 pantallas juego Temple run38ilustraciones 18 y 19 pantallas juego Attack of the Spooklings39ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitas41ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintas pantallas43ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada44ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada45ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada46ilustracioacuten 241 Transiciones definidas entre pantallas47ilustracioacuten 242 Disentildeo pantallas con Gimp54ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en un videojuego55ilustracioacuten 26 Estructura baacutesica de un videojuego 58ilustracioacuten 27 Singleton59ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego 63ilustracioacuten 29 Diagrama de clases Assets 64ilustracioacuten 30 Diagrama de clases objetos 66ilustracioacuten 31 Diagrama de clases pantallas 68ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse69ilustracioacuten 33 Creacioacuten proyecto libGDX70ilustracioacuten 34 Creacioacuten proyecto libGDX70ilustracioacuten 35 Capas separadas por imaacutegenes71Ilustracioacuten 36 Texture packer 72ilustracioacuten 37 Posicioacuten texturas 73

iv

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

1Introduccioacuten

11 Justificacioacuten y contexto del proyecto

Este trabajo de fin de carrera en adelante TFC se centra en el desarrollo de aplicaciones paradispositivos moacuteviles con sistema operativo Android Actualmente existen multitud de aplicacionesNo obstante este TFC se quiere centrar en un subconjunto de aplicaciones focalizadas alentretenimiento conocidas por todo el mundo como videojuegos

Un videojuego es un software creado para el entretenimiento en general y basado en lainteraccioacuten entre una o varias personas y un aparato electroacutenico que ejecuta dicho videojuego Asiacutepues un videojuego es considerado un software cuyo fin directo es el entretenimiento

En estos uacuteltimos antildeos los smartphones y tabletas se han convertido en las nuevas plataformasmoacuteviles para juegos que compiten con los sistemas portaacutetiles claacutesicos que generalmente tienden aser maacutes cerrados

Los videojuegos se pueden clasificar en distintos geacuteneros estos son una forma de clasificacioacutenque designan un conjunto de videojuegos que poseen una serie de elementos comunes A lo largode la historia de los videojuegos aquellos elementos que han compartido varios de los mismos hanservido para clasificar como un geacutenero a aquellos que les han seguido en estilo y forma de lamisma manera que ha pasado con la muacutesica o el cine Como ejemplo se enumeran algunos de losgeacuteneros maacutes populares Lucha Disparos conocidos como Shooters Sigilo Plataformas ArcadeDeporte etc

Durante mucho tiempo los videojuegos estuvieron reservados para un tipo de usuario muyconcreto con un perfil muy especiacutefico la gran mayoriacutea eran hombres entre 15 y 25 antildeos Saliendode este perfil si se buscaban mujeres o personas mayores de 25 antildeos el nuacutemero de usuarioscaiacutea en picado y es que los videojuegos eran percibidos como el hobby de los adolescentesmasculinos No obstante en los uacuteltimos antildeos se ha visto coacutemo todo esto ha ido cambiando con unaumento tanto del puacuteblico femenino como la aparicioacuten en escena de usuarios con edades maacutesavanzadas

Este cambio ha venido motivado por diferentes motivos evolutivos dentro de la industria delvideojuego Uno de los motivos que ha provocado esto es la aparicioacuten de los teleacutefonos moacutevilesinteligentes tabletas y juegos online junto con gran cantidad de videojuegos de tipo casual Otroclaro motivo es que la mayoriacutea de los que jugaacutebamos hace 25 antildeos pues hoy seguimos jugandoya que hemos crecido con esta cultura y claro esta que a diacutea de hoy ya no tenemos la edad deentonces

12 Descripcioacuten del Proyecto Este proyecto se quiere centrar en el desarrollo de un videojuego de tipo casual para moacutevilesAndroid Estos son un tipo de videojuegos dirigidos a un puacuteblico de jugadores casuales Losvideojuegos casuales pueden tener cualquier tipo de mecaacutenica de juego y ser clasificados dentrode cualquier otro geacutenero Son diferenciados por sus reglas simples y de no requerir un excesivocompromiso en contraste con la mayoriacutea de juegos maacutes complejos No requieren una dedicacioacutende tiempo a largo plazo o habilidades especiales para jugar

Paacutegina 1 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Durante la realizacioacuten del proyecto se realizara el disentildeo del juego por disentildeo se entienderealizar un documento que defina el juego de forma generalizada mecaacutenicas personajes etceste documento es conocido como el ldquogame designrdquo el disentildeo de arte conocido como ldquoConcepartrdquo engloba todo lo relacionado con el aspecto graacutefico del juego estilos de personajes estilos degraacuteficos etc Finalmente se realizara el anaacutelisis disentildeo e implementacioacuten de laaplicacioacuten(videojuego) con las tecnologiacuteas escogidas para este proyecto

13 Objetivos

El objetivo principal de este TFC es adquirir experiencia en el desarrollo de videojuegos paraAndroid Sin embargo yendo maacutes allaacute de la plataforma tambieacuten existe un intereacutes por ampliarconocimientos en cuanto a programacioacuten y disentildeo de videojuegos en general

En cuanto al disentildeo y desarrollo del videojuego se pretende realizar un casual game con lassiguientes caracteriacutesticas

El juego consistiraacute en conducir unas ovejas descarriadas a su corral eacutestas con nuestra ayudadeberaacuten sortear los peligros que iraacuten apareciendo durante el camino hacia el deseado corral Elprincipal peligro que amenaza las ovejas son unos lobos malvados que quieren comeacuterselas Elvideojuego soacutelo dispondraacute de una uacutenica modalidad de juego para un uacutenico jugador Al tratarse deun juego casual el publico objetivo es muy amplio Se pretende conseguir un ldquolook amp feelrdquo conesteacutetica tipo cartoon en clave de humor El juego sera desarrollado en 2D con perspectiva cenital

131 Definicioacuten del videojuego

El nivel se describe como una pantalla estaacutetica con vista cenital en posicioacuten vertical Con estaacuteticase entiende que no hay ninguacuten tipo de scroll que haga desplazar la pantalla Siempre veremos lomismo

En la parte de arriba del todo apareceraacute un corral con una puerta la puerta se iraacute abriendo ycerrando de forma aleatoria Por los extremos de la pantalla habraacute arbustos que representaran loslimites del bosque De estos limites iraacuten saliendo lobos a la escena que se querraacuten comer a laspobres ovejas Estas ovejas permaneceraacuten en la parte de abajo de la pantalla e iraacuten saliendo a laescena ellas solas sin saber demasiado donde van(son ovejas descarriadas) nuestra misioacutenconsistiraacute en tirarlas hacia el corral para salvarlas de los malvados lobos metiendolas por lapuerta en los momentos que este abierta para lanzarlas tendremos que deslizar el dedo encimade ellas para darles impulso hacia el corral si no acertamos en meter la oveja en la puerta estarebotara como si de un pelota se tratase Los lobos iraacuten saliendo para sacarnos los lobos deencima deberemos deslizar nuestro dedo encima de ellos o tocarlos para ahuyentarlos De lobos habraacute de diferentes colores marrones grises y azulados Cada lobo loahuyentaremos de manera distinta

bull Marrones 1 pulsacioacuten o deslizar 1 vez el dedo sobre el lobobull Grises 2 pulsaciones o deslizar 2 veces el dedo sobre el lobobull Azulados 3 pulsaciones o deslizar 3 veces el dedo sobre el lobo

A parte de impedir que se coman las ovejas que estaacuten en camino hacia el corral tambieacutentendremos que evitar que los lobos lleguen a la parte de abajo donde estaacute el grupo de ovejas yaque esto nos haraacute perder vidas el juego inicialmente empezara con 3 vidas pudiendo alcanzar unmaacuteximo de 6 vidas en total cada 10000 puntos obtendremos un vida extra

Paacutegina 2 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Conforme el juego se va desarrollando eacuteste iraacute acumulando

bull Puntosbull Tiempo jugadobull Numero de lobos ahuyentadosbull Ovejas colocadas en el corral

Se tratara pues de ir mejorando nuestro propio reacutecord partida tras partida El juego iraacuteaumentando de dificultad durante el transcurso de la partida

Como apunte final el juego recibe el nombre de ldquoFling the sheeprdquo que traducido al espantildeolvendriacutea a ser algo como ldquolanzar las ovejasrdquo

Paacutegina 3 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

14 Planificacioacuten

141 Ciclo de vida

Un videojuego no deja de ser un proyecto de software por tanto para la realizacioacuten de esteproyecto se ha tomado como base el ciclo de vida claacutesico de cualquier proyecto de softwaremodificado ligeramente a las necesidades del proyecto Este ciclo de vida que tambieacuten sedenomina ciclo de vida en cascada se compone de las siguientes etapas

ilustracioacuten 1 Ciclo de vida en cascada

142 Planificacioacuten detallada del proyecto

En los siguientes apartados se recogen por cada etapa que compone el ciclo de vida las principales actividades realizadas con el objetivo de alcanzar el producto deseado dentro delos plazos definidos

1411 Anaacutelisis previo planificacioacuten

En este punto se ha abordado la visioacuten global del proyecto comprendida en establecer lospuntos iniciales necesarios para crear una planificacioacuten de tareas en funcioacuten de las actividades arealizar

Actividad Descripcioacuten

Disentildeo conceptual del videojuego Mecaacutenicas del videojuego

Definicioacuten de las tecnologiacuteas Tecnologiacuteas que se utilizaran en el desarrollo delvideojuego

Anaacutelisis de riesgos Posibles riesgos del proyecto

Planificacioacuten del proyecto Crear una planificacioacuten adaptada a los plazos de entregade este TFC

Paacutegina 4 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Redaccioacuten del documento Generacioacuten del plan de trabajo

Entrega de la PEC1 Entrega del documento

1412 Anaacutelisis de requisitos

En esta fase se ha detallado que necesidades debe cubrir el videojuego tanto desde un puntode vista funcional como desde un punto de vista arquitectoacutenico de la aplicacioacuten a disentildear se hadisentildeado un modelo troncal de clases para posteriormente desarrollar en base a estas todo elvideojuego No obstante en ninguacuten caso se ha entrado en detalle en las tecnologiacuteas a utilizar yadefinidas previamente

Actividad Descripcioacuten

Especificacioacuten de requisitos funcionales Definicioacuten de casos de usos

Disentildeo baacutesico estructura aplicacioacuten Diagrama baacutesico de clases

Especificacioacuten de requisitos funcionales Definicioacuten de maacutequinas de estado

1413 Disentildeo

En este apartado teniendo en cuenta que en este proyecto se va a desarrollar un videojuego seha realizado la recopilacioacuten conceptual de arte conjuntamente con el disentildeo de todas laspantallas que intervienen en el Conjuntamente con la seleccioacuten de los tipos de fuente que seutilizaran para el videojuego seleccioacuten de personajes y enemigos

Actividad Descripcioacuten

Definicioacuten de usuarios y contexto de uso delvideojuego

Conocer las caracteriacutesticas de los usuarios susnecesidades y objetivos asiacute como los contextosde uso

Disentildeo conceptual Un escenario de uso describe desde el puntode vista del usuario como seraacute utilizado unproducto determinado (es este caso unvideojuego) en un escenario determinado

Seleccioacuten de arte Seleccioacuten de arte ya hecho con licencias libresya que no se disponen de conocimientos dearte para abordar el disentildeo

Seleccioacuten de fuentes Seleccioacuten de los tipos de fuente adecuadospara el disentildeo del videojuego

Seleccioacuten de personajes y enemigos Seleccioacuten de personajes y enemigosdisponibles en la red con licencias libres ya queno se disponen de conocimientos de arte paraabordar el disentildeo

Disentildeo de pantallas que intervienen(prototipo) Con todo el arte fuentes y personajes serealizara el disentildeo de todas las pantallas queintervienen en el juego Realizacioacuten de unboceto a mano alzada Sketches y prototipo dealta fidelidad

Redaccioacuten del documento Generacioacuten del documento de disentildeo

Paacutegina 5 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Entrega de la PEC2 Entrega del documento

1414 Implementacioacuten y pruebas

En este punto se ha desarrollado la implementacioacuten del videojuego partiendo de todas lasdefiniciones de los apartados anteriores y las verificaciones oportunas para asegurar el correctofuncionamiento del videojuego

Actividad Descripcioacuten

Implementacioacuten de navegables y contenidos Implementacioacuten de la estructura de todas lapantallas del video juego y la navegabilidadentre ellas y las funciones principales de cadauna de ellas

Implementacioacuten del gameplay Implementacioacuten de la logica de juego

Implementacioacuten de sonido y efectos Implementacioacuten de los efectos de sonido y lamusica

Version alpha del videojuego En este punto se dispone de un videojuegofuncional listo para ser revisado y refinado

Pruebas y refinamiento de la implementacioacuten Pruebas y correcioacutenes de posibles errores

Preparacioacuten del paquete entregable y laredaccioacuten del documento

Testeo final y preparacioacuten del apk a entregarmas la redaccioacuten del documento estrutural delaplicacioacuten

Entrega de la PEC3 Entrega del documento

1415 Finalizacioacuten

En un proyecto de software esta parte quedariacutea focalizada en la fase de implantacioacuten y puesta enmarcha Sin embargo al tratarse de un videojuego esta fase quedariacutea focalizada en la fase delanzamiento del producto No obstante en este caso se ha utilizado para documentar todo eltrabajo realizado a lo largo de este TFC

Actividad Descripcioacuten

Redaccioacuten memoria final proyecto Redaccioacuten memoria final

Montaje presentacioacuten diapositivas Montaje presentacioacuten diapositivas

Montaje del video final presentacioacuten proyecto Montaje del video final presentacioacuten proyecto

Entrega final Entega final

Paacutegina 6 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria143 Temporalizacioacuten del proyecto

La siguiente ilustracioacuten muestra el calendario definido para el proyecto

ilustracioacuten 11 Calendario proyecto

Paacutegina 7 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

En la siguiente pagina se muestra una ilustracioacuten del diagrama de gantt correspondiente alcalendario mostrado en la ilustracioacuten 1

ilustracioacuten 2 Diagrama de gantt

Paacutegina 8 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

15 Herramientas y tecnologiacuteas utilizadas

Actualmente existen varios frameworks para desarrollar videojuegos sobre plataformas moacutevilesSe ha hecho un anaacutelisis comparativo preliminar entre Cocos2D-android1 Cocos2D-x y libGDXaunque existen otros estos tres son los maacutes nombrados y utilizados

Cocos2d-android1 Es un framework en Java basado en la versioacuten de cocos2d-android queesta basado en la versioacuten de cocos2d para iphone Este framework permite el desarrollo devideojuegos en 2D y se programa en Java en lugar de objective-c Para la versioacuten Cocos2d deiphone Actualmente este framework no parece tener mucha continuidad por parte de lacomunidad de desarrolladores aunque no estaacute discontinuado del todo

Cocos2D-x Es un framework en C++ multi-plataforma permite desarrollar para diferentesplataformas a la vez con el mismo coacutedigo Android iOS Bada Marmalade Windows Linux etcSin embargo aunque es un framework con una comunidad muy activa su documentacioacuten esbastante mejorable Se programa en C++ y es posible trabajar con distintos entornos de desarrollocomo Visual Studio o Eclipse El proceso de depuracioacuten con eclipse es algo complejo con C++JNIcon varios pasos a seguir para poder depurar A la vez su configuracioacuten en el entorno Eclipse noes trivial Finalmente tiene relativamente todaviacutea poco tiempo de vida

LibGDX Es un framework escrito en Java sobre C++ ya que las partes criacuteticas estaacuten escritascon coacutedigo nativo para conseguir el mejor rendimiento posible Tiene una comunidad dedesarrolladores muy activa y una documentacioacuten muy extensa Se programa con Java y permite ladepuracioacuten ejecutando la aplicacioacuten en el escritorio de la maacutequina sin tener que pasar por undispositivo real o uno virtual En caso de que se quiera probar en un dispositivo real es posiblehacerlo sin ninguacuten cambio sobre el coacutedigo Este hecho hace que el desarrollo sea maacutes fluidoTiene un rendimiento bastante alto ante cocos2d-x y otros frameworks existentes para eldesarrollo de videojuegos

Todo lo expuesto anteriormente provoca una inclinacioacuten definitiva a utilizar libGDX paraimplementar el videojuego Asiacute pues el videojuego seraacute escrito en Java utilizando el IDE Eclipseque es el soportado oficialmente para Android utilizando el framework libGDX

Para la realizacioacuten de este proyecto se han utilizado las siguientes herramientas

bull Planificacioacuten proyecto

Microsoft Project Professional 2010

bull Disentildeo

Gimp 28 Inkscape 048 TexturePacker 320 Microsoft Visio Professional 2010

bull Programacioacuten

Entorno de desarrollo Eclipse 421 Juno Android develompment tools ADT Android SDK

Paacutegina 9 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Framework libGDX 098 ObjectAid herramienta de visualizacioacuten de coacutedigo en UML para Eclipse Control de versiones Git utilizando como plataforma GitHub

bull Edicioacuten de audio

Audacity 203 GoldWave 569

bull Redaccioacuten de documentos

OpenOffice 401

bull Edicioacuten de viacutedeo

Adobe Premiere Pro CS55

16 Riesgos del proyecto

Se parte de una experiencia previa en desarrollo de videojuegos ver apartado 9 otros proyectosrealizados al final de este documento Aunque no se dispone de experiencia con la libreriacuteaescogida ni tampoco con programacioacuten sobre Android A nivel teacutecnico no se preveacute que puedansurgir muchos riesgos en liacuteneas generales No obstante existe la posibilidad de gastar maacutestiempo del previsto consultando documentacioacuten para lograr los objetivos establecidos

Existe un riesgo maacutes alto a nivel artiacutestico ya que no se dispone de ninguacuten conocimiento de artede ninguacuten tipo Por lo tanto muy probablemente a nivel artiacutestico el juego sea un poco justo Es poreste motivo que durante la realizacioacuten de este proyecto no se va a profundizar en temas de disentildeoartiacutestico en su lugar se utilizaran recursos de arte existentes en la red con licencias libres tipocreative commons o dominio puacuteblico Al final de este documento en el apartado 6 se puede ver unlistado de los recursos utilizados juntamente con un link a la obra y el nombre del autor si esteesta disponible Se haraacute una seleccioacuten de distintos tipos de recursos graacuteficos para posteriormentehacer el montaje de toda la parte graacutefica del videojuego En cuanto a la parte de audio la situacioacuten es exactamente la misma no se dispone de ninguacutenconocimiento para componer muacutesica ni efectos Por lo tanto se buscaraacuten sonidos y temasmusicales con licencias libres Intentando que estos queden integrados de la mejor maneraposible al videojuego

Finalmente existe el riesgo de que el gameplay definido en el disentildeo conceptual del videojuegouna vez puesto en praacutectica no sea del todo funcional o necesite de un balanceo para conseguirun juego equilibrado y jugable

Paacutegina 10 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2 Anaacutelisis funcional Basaacutendonos en el aparatado ldquo131 Definicioacuten del videojuegordquo se han definido los requisitosfuncionales necesarios para este con la definicioacuten de casos de uso Posteriormente se ha definidoun diagrama de clases inicial el cual ha servido como punto de partida para el desarrollo completodel videojuego A su vez se definen las maacutequinas de estado finitas utilizadas para el desarrollo

21 Requisitos funcionales casos de uso

En este apartado se presentan tres diagramas de casos de uso El primer diagrama engloba lavista generalizada del actor ldquojugadorrdquo y los casos de uso que describen los requisitos funcionalesdel sistema En los dos diagramas restantes se describen la vista generalizada del actor ldquoIArdquo porIA se entiende la inteligencia artificial del videojuego Los diagramas muestran los requisitosfuncionales de la IA para el personaje principal y los enemigos La IA interactuacutea con el sistema ypor tanto seraacute susceptible de analizar su uso de la aplicacioacuten

211 Diagrama casos de uso actor ldquoJugadorrdquo

ilustracioacuten 3 Diagrama de casos de usos actor jugador

Paacutegina 11 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Como se puede observar en la ilustracioacuten 3 el sistema solo dispone de un uacutenico actor Que eneste caso es el jugador del videojuego es decir representa todos los posibles usuarios quepueden jugar al videojuego

En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 3estos seraacuten desarrollados en la seccioacuten posterior

212 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

VJ01 Inicio videojuego Jugador

VJ02 Jugar Jugador

VJ03 Acceder puntuaciones maacuteximas Jugador

VJ31 Consultar puntuacione locales Jugador

VJ32 Salir puntuacione locales Jugador

VJ04 Acceder a las opciones Jugador

VJ41 Activar o desactivar muacutesica o efectos Jugador

VJ42 Acceder a la pantalla de creacuteditos Jugador

VJ421 Salir de la pantalla de creacuteditos Jugador

VJ43 Salir de las opciones Jugador

VJ05 Acceder a las instrucciones Jugador

VJ51 Salir de las intrucciones Jugador

VJ06 Salir del videojuego Jugador

213 Descripcioacuten textual de los casos de uso

2131 VJ01 Inicio videojuego

Identificador VJ01

Nombre Inicio videojuego

Autor Xavier Figuera

Resumen El usuario inicia el videojuego

Actor(es) Jugador

Precondiciones Ninguna el videojuego no habiacutea sido iniciado auacuten

Postcondiciones El usuario a iniciado el videojuego a visualizado la pantalla de introdurante un segundo y se encuentra en la pantalla del menuacute principal

Flujo normal 1 El usuario accede a la lista de aplicaciones de su dispositivo 2 Busca el acceso al videojuego3 Ejecuta el programa4 Se carga la aplicacioacuten5 El videojuego muestra la pantalla de intro

Paacutegina 12 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6 Se muestra el menuacute principal al jugador

Flujos alternativos Se podriacutea dar el caso que el usuario accediera al videojuego desde algunacceso directo en alguno de los escritorios del dispositivo

Inclusiones Ninguna

Extensiones Ninguna

2132 VJ02 Jugar

Identificador VJ02

Nombre Jugar

Autor Xavier Figuera

Resumen Jugar al videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario empieza a jugar

Flujo normal 1 El usuario pulsa el botoacuten play del menuacute principal 2 El usuario juega3 El usuario puede volver a jugar una vez finalizada la partida 4 El usuario puede salir del juego en cualquier momento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2133 VJ03 Acceder puntuaciones maacuteximas locales

Identificador VJ03

Nombre Acceder puntuaciones maacuteximas locales

Autor Xavier Figuera

Resumen Acceder a la pantalla de puntuaciones maacuteximas locales de las partidasrealizadas en el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla con la tabla de las 10 puntuacionesmaacuteximas

Flujo normal 1 El usuario pulsa el botoacuten Scores del menuacute principal 2 Al usuario le aparece la pantalla de puntuacioacuten

Paacutegina 13 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ31 Consultar puntuaciones localesVJ32 Salir de la puntuaciones locales

2134 VJ31 Consultar puntuaciones locales

Identificador VJ31

Nombre Consultar puntuaciones locales

Autor Xavier Figuera

Resumen Consulta de las puntuaciones maacuteximas locales de las partidas realizadasen el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Scores delmenuacute principal

Postcondiciones El usuario visualiza la tabla de las 10 puntuaciones maacuteximas

Flujo normal 1 El usuario visualiza una tabla con las 10 puntuaciones maacuteximas

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2135 VJ32 Salir puntuaciones locales

Identificador VJ32

Nombre Salir puntuaciones locales

Autor Xavier Figuera

Resumen Salir de las puntuaciones maacuteximas locales

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulso el botoacuten Scores

Postcondiciones El usuario sale de la tabla de puntuaciones

Flujo normal 1 El usuario pulsa el botoacuten salir en la pantalla tabla de puntuaciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 14 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2136 VJ04 Acceder a las opciones

Identificador VJ04

Nombre Acceder a la pantalla de opciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de opciones del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla de opciones

Flujo normal 1 El usuario pulsa el botoacuten Options del menuacute principal 2 Al usuario le aparece la pantalla de opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ41 Activar o desactivar muacutesica o efectos VJ42 Acceder a la pantalla de creacuteditosVJ43 Salir de las opciones

2137 VJ41 Activar o desactivar muacutesica o efectos

Identificador VJ041

Nombre Activar o desactivar muacutesica o efectos

Autor Xavier Figuera

Resumen Activar o desactivar muacutesica o efectos de audio del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal

Postcondiciones El usuario activa o desactiva la muacutesica o efectos del videojuego

Flujo normal 1 El usuario pulsa el botoacuten altavoz para activar o desactivar la muacutesica delvideojuego 2 El usuario pulsa el botoacuten notas musicales para activar o desactivar losefectos de audio del videojuego

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 15 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2138 VJ42 Acceder a la pantalla de creacuteditos

Identificador VJ42

Nombre Acceder a la pantalla de creacuteditos

Autor Xavier Figuera

Resumen Acceder a la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario se encuentra en la pantalla de opciones

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten credits para acceder a los creacuteditos2 El usuario puede desplazar el texto de los creacuteditos deslizando el dedosobre el texto hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ421 Salir de la pantalla de creacuteditos

2139 VJ421 Salir de la pantalla de creacuteditos

Identificador VJ421

Nombre Salir de la pantalla de creditos

Autor Xavier Figuera

Resumen Salir de la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal y ha accedido a la pantalla creacuteditos

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten salir para abandonar la pantalla para accedera los creacuteditos2 El usuario se encuentra de nuevo en la pantalla opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 16 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21310 VJ05 Acceder a las instrucciones

Identificador VJ05

Nombre Acceder a la pantalla de instrucciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten del menuacuteprincipal

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a las instrucciones2 El usuario puede desplazar el texto de las instrucciones deslizando eldedo sobre el hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ51 Salir de las instrucciones

21311 VJ51 Salir de las instrucciones

Identificador VJ51

Nombre Salir de las intrucciones

Autor Xavier Figuera

Resumen Salir de la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten en el menuacuteprincipal y ha accedido a la pantalla de instrucciones

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a la pantalla de instrucciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 17 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21312 VJ06 Salir del videojuego

Identificador VJ06

Nombre Salir del videojuego

Autor Xavier Figuera

Resumen Salir del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego

Postcondiciones El usuario abandona el videojuego

Flujo normal 1 El usuario pulsa el botoacuten exit de la aplicacioacuten para salir del videojuego oel botoacuten salir del dispositivo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 18 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214 Diagrama casos de uso actor ldquoIArdquo

Por IA se entiende inteligencia artificial es un elemento fundamental para dotar de realismo a unvideojuego Uno de los retos principales que se plantean a la hora de integrar comportamientosinteligentes es alcanzar un equilibrio entre la sensacioacuten de inteligencia y el tiempo de coacutemputoempleado por este subsistema Este equilibrio es de gran importancia en el caso de losvideojuegos Este planteamiento gira generalmente en torno a la generacioacuten de soluciones quesin ser oacuteptimas proporcionen una cierta sensacioacuten de inteligencia En concreto dichas solucionesdeberiacutean tener como meta que el jugador se enfrente a un reto que sea factible de manera quesuponga un estiacutemulo emocional y que consiga engancharlo al videojuego

En estos uacuteltimos antildeos la IA ha pasado de ser un componente secundario en el proceso dedesarrollo de videojuegos a convertirse en uno de los aspectos maacutes importantes Actualmentelograr un alto nivel de IA en un juego sigue siendo uno de los retos maacutes emocionantes y complejosy en ocasiones sirve para diferenciar un juego normal de uno realmente espectacular

Dentro de este proyecto de ha definido una IA baacutesica para dotar del realismo necesario alvideojuego propuesto En los siguientes diagramas se define esta IA en forma de casos de usospara su posterior implementacioacuten

2141 Diagrama casos de uso IA personaje principal (oveja)

ilustracioacuten 4 Diagrama de casos de usos personaje principal

Paacutegina 19 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 4estos seraacuten desarrollados en la seccioacuten posterior

21411 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA03 Salida oveja al escenario IA

IA031 Posicionamiento en pantalla de la oveja IA

IA032 Movimiento oveja IA

IA033 Oveja pastando IA

IA034 Lanzamiento oveja IA

IA035 Rebotes de la oveja IA

IA036 La oveja entra en el establo IA

IA037 Parar oveja IA

21412 Descripcioacuten textual de los casos de uso

214121 IA03 Salida ovejas al escenario

Identificador IA03

Nombre Salida oveja al escenario

Autor Xavier Figuera

Resumen Salida oveja al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones La oveja es instanciada de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Las ovejas se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA031 Posicionamiento en pantalla de las oveja

214122 IA031 Posicionamiento en pantalla de las oveja

Identificador IA031

Nombre Posicionamiento en pantalla de las oveja

Paacutegina 20 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Autor Xavier Figuera

Resumen Asignacioacuten inicial posicioacuten de las ovejas en pantalla siempre es la mismaposicioacuten esta queda fuera del rango visual de la pantalla

Actor(es) IA

Precondiciones La partida esta iniciada y la oveja instanciada

Postcondiciones La oveja queda posicionada en unas coordenadas fuera de la pantalla

Flujo normal 1 Se instancia la oveja2 La oveja queda posicionada en unas coordenadas uacutenicas fuera delrango visual de pantalla

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214123 IA032 Movimiento oveja

Identificador IA032

Nombre Movimiento oveja

Autor Xavier Figuera

Resumen Movimiento de las ovejas hacia el escenario

Actor(es) IA

Precondiciones La partida esta iniciada la oveja instanciada y posicionada

Postcondiciones La oveja se mueve hacia el escenario empieza a pastar

Flujo normal 1 La oveja se mueve hacia el escenario

Flujos alternativos Ninguno

Inclusiones IA034

Extensiones IA033 Oveja PastandoIA037 Parar oveja

214124 IA033 Oveja pastando

Identificador IA033

Nombre Oveja pastando

Autor Xavier Figuera

Resumen La ovejas permanecen en un espacio determinado de coordenadas depantalla mientras no sean lanzadas al escenario por el usuario

Actor(es) IA

Paacutegina 21 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Precondiciones La oveja ha salido al escenario

Postcondiciones La oveja se mueve dentro de un espacio determinado de forma indefinida

Flujo normal 1 La oveja se mueve de forma indefinida hasta que sea lanzada por elusuario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA034 Lanzamiento oveja

214125 IA034 Lanzamiento oveja

Identificador IA034

Nombre Lanzamiento oveja

Autor Xavier Figuera

Resumen La oveja es lanzada por el usuario y se acelera en funcioacuten de la fuerza delanzamiento

Actor(es) IA

Precondiciones La oveja se mueve

Postcondiciones La oveja ha sido lanzada

Flujo normal 1 La oveja se mueve de forma indefinida2 La oveja es lanzada3 La oveja acelera en funcioacuten de la fuerza de lanzamiento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214126 IA035 Rebotes de la oveja

Identificador IA035

Nombre Rebotes de la oveja

Autor Xavier Figuera

Resumen La oveja ha sido lanzada y rebota por el escenario

Actor(es) IA

Precondiciones La oveja ha sido lanzada

Postcondiciones La oveja rebota por el escenario

Flujo normal 1 La oveja ha sido lanzada y rebota por el escenario 2 La oveja entra en el establo si colisiona con la puerta y esta abierta

Paacutegina 22 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA036 La oveja entra en el establo

214127 IA036 La oveja entra en el establo

Identificador IA036

Nombre La oveja entra en el establo

Autor Xavier Figuera

Resumen La oveja entra en el establo

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario y la puerta del establo estaabierta

Postcondiciones La oveja entra en el establo

Flujo normal 1 La oveja entra en el establo si colisiona con la puerta y esta abierta

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214128 IA037 Parar oveja

Identificador IA037

Nombre Parar oveja

Autor Xavier Figuera

Resumen La oveja para si se hacen dos pulsaciones encima de ella

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario

Postcondiciones La oveja se para

Flujo normal 1 La oveja esta rebotando2 El usuario pulsa dos veces encima de ella3 La oveja se para

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 23 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2142 Diagrama casos de uso IA enemigos (lobo)

ilustracioacuten 5 Diagrama de casos de usos enemigos

21421 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA02 Salida lobo al escenario IA

IA021 Ojos por la derecha o por la izquierda IA

IA022 Escoje el tipo de lobo IA

IA023 Lobo por la derecha o por la izquierda IA

IA024 Salta a escena IA

IA025 Movimento lobo IA

Paacutegina 24 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21422 Descripcioacuten textual de los casos de uso

214221 IA02 Salida lobo al escenario

Identificador IA02

Nombre Salida lobo al escenario

Autor Xavier Figuera

Resumen Salida lobo al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones El lobo es instanciado de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Los lobos se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA02 IA021 IA022 IA023 IA024

214222 IA021 Ojos por la derecha o por la izquierda

Identificador IA021

Nombre Ojos por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Salida de ojos al escenario paso previo a que salte el lobo

Actor(es) IA

Precondiciones El lobo ha sido instanciado

Postcondiciones Aparecen unos ojos que se cierra y se abren por la derecha o izquierda dela pantalla de forma aleatoria

Flujo normal 1 El lobo ha sido instanciado2 Aparecen unos ojos que se cierran y se abren 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 25 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214223 IA022 Escoge el tipo de lobo

Identificador IA022

Nombre Escoge el tipo de lobo

Autor Xavier Figuera

Resumen Escoge el tipo de lobo de forma aleatoria de los tres definidos

Actor(es) IA

Precondiciones Han aparecido los ojos

Postcondiciones Ha escogido el tipo de lobo que saltara al escenario

Flujo normal 1 Han aparecido los ojos2 Ha escogido el tipo de lobo que saltara al escenario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214224 IA023 Lobo por la derecha o por la izquierda

Identificador IA023

Nombre Lobo por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Escoge de forma aleatoria el lado por donde debe aparecer el lobo

Actor(es) IA

Precondiciones Se ha seleccionado el tipo de lobo

Postcondiciones Se ha escogido el lado por donde apareceraacute

Flujo normal 1 Se ha escogido el lado por donde apareceraacute

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 26 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214225 IA024 Salta a escena

Identificador IA024

Nombre Salta a escena

Autor Xavier Figuera

Resumen El lobo salta a escena

Actor(es) IA

Precondiciones Se ha seleccionado el lado por donde debe aparecer y salta

Postcondiciones El lobo esta en escena

Flujo normal 1 Se ha seleccionado el lado por donde debe aparecer y salta2 El lobo esta en escena

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones A025

214226 IA025 Movimiento lobo

Identificador IA025

Nombre Movimiento lobo

Autor Xavier Figuera

Resumen El lobo esta en escena y se mueve

Actor(es) IA

Precondiciones El lobo ha saltado a la escena

Postcondiciones El lobo se mueve

Flujo normal 1 El lobo ha saltado a la escena2 El lobo se mueve

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 27 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

22 Disentildeo inicial diagrama de clases

221 Diagrama de clases inicial ldquoFling the sheeprdquo

ilustracioacuten 6 Diagrama de clases videojuego

En este apartado se define la estructura inicial de la aplicacioacuten a traveacutes del diagrama de clasesmostrado en la ilustracioacuten 6 Esto serviraacute como punto de partida para el completo disentildeo de laaplicacioacuten para su posterior implementacioacuten A continuacioacuten se pasan a detallar a modo resumidoque funcionalidad tiene cada una de las clases definidas en este diagrama

2211 Resumen clases videojuego

FlingTheSheepMain Clase principal desde donde se inicializaraacute la aplicacioacuten

Assets Esta clase contendraacute todos los recursos necesarios del juego texturas sonidos etcEstos seraacuten inicializados en el momento de iniciar el juego Existe una dependencia entre la claseFlingTheSheepMain y Assets ya que la instanciacioacuten de Assets esta condicionada por lainstanciacioacuten de la clase principal FlingTheSheepMain cuando se pone en marcha el videojuego

Paacutegina 28 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaWorldGameController Esta clase contendraacute la loacutegica del videojuego

AudioManager Clase destinada para controlar la reproduccioacuten de efectos de sonido y audio delvideojuego

Charcater Es la superclase que describe los comportamientos comunes de los personajes deella se extienden los personajes principales y los enemigos

Sheep Clase que representa el personaje principal

Wolf Clase que representa a los enemigos

AbstractGameObject Esta superclase recoge todos los comportamientos comunes de losobjetos del juego por objetos se entiende todos los componentes que forman el escenario delvideojuego De esta clase se extienden todos los objetos del videojuego

Grass Hierba que apareceraacute en el escenario

Flower Flores que apareceraacuten en el escenario

ThePen Establo donde hay que hacer llegar las ovejas

DoorPen Puerta del establo esta se abriraacute y se cerrara aleatoriamente

Hole Agujeros en el escenario

WoodFenceForest Valla de madera que apareceraacute en el escenario

Como se ha comentado este diagrama de clases es un diagrama inicial por tanto lo maacutesprobable es que durante el desarrollo del videojuego se antildeadan maacutes clases al disentildeo inicialmostrado en la ilustracioacuten 6 En el apartado 55 de este documento se muestran los diagramas declases definitivos

Paacutegina 29 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria222 Diagrama de clases inicial de pantallas

ilustracioacuten 7 Diagrama de clases de pantallas

Este diagrama recoge en forma de clases las pantallas iniciales definidas del videojuego Separte de una superclase llamada AbstractGameScreen que recogeraacute las operaciones comunes detodas ellas y de esta se extienden las pantallas concretas este diagrama solo muestra laspantallas maacutes baacutesicas definidas inicialmente estas serviraacuten como base para desarrollar elconjunto de pantallas total necesarias para este proyecto y que quedan recogidas en su totalidaden el apartado 4 ldquoDisentildeordquo de esta documento

A continuacioacuten se pasan a detallar a modo resumido cada una de ellas

2221 Resumen clases pantallas

IntroScreen Clase para la pantalla de intro

MenuScreen Clase que contiene el menuacute principal del videojuego GameScreen La clase game screen es la que contiene la pantalla donde se desarrolla todo elvideojuego

Paacutegina 30 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

23 Definicioacuten de maacutequinas de estado finitas

Como ya se ha introducido en el punto 212 la IA aplicada a los videojuegos dota a estos derealismo Existen distintas teacutecnicas para la implementacioacuten de esta Una de las maacutes consolidadases el uso de maacutequinas de estados finitas ya que tienen un coste computacional casi inexistenteya que no tienen ninguacuten coste de procesamiento asignado Las maacutequinas de estados permiten deforma faacutecil definir comportamientos Es por este motivo que han sido utilizadas no solamente para definir los comportamientos de laIA del videojuego sino tambieacuten para definir los distintos estados en que se puede encontrar elvideojuego durante su tiempo de vida A continuacioacuten se detallan los distintos diagramas de lasmaacutequinas de estados utilizadas para este proyecto conjuntamente con una explicacioacuten de cadauna de ellas

231 Maacutequina de estados del videojuego

ilustracioacuten 8 Maacutequina de estados del videojuego

La ilustracioacuten 8 nos muestra los estados que puede tomar el videojuego durante su tiempo devida

Este diagrama define los estados que puede tomar el videojuego una vez iniciado inicialmente eljuego se encuentra en el estado READY de este estado existe una transicioacuten al estado GAMEcuando el tiempo de READY finaliza READY lt=0 El estado game sera el estado en donde se

Paacutegina 31 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriadesarrollara todo el juego Des de este estado podemos pasar al estado PAUSE si pulsamos elbotoacuten de pausa del juego y desde el estado PUASE volvemos al estado GAME si volvemos apulsar el botoacuten pause Finalmente desde el estado GAME haremos la transicioacuten al estado GAMEOVER si nos arrebatan todas las vidas durante la partida Desde el estado GAME OVERpodremos volver a READY si decidimos hacer una nueva partida

232 Maacutequina de estados comportamiento oveja

ilustracioacuten 9 Maacutequina de estados comportamiento oveja La ilustracioacuten 9 muestra el comportamiento del personaje principal del videojuego que en estecaso es la oveja Se define el ciclo de vida de la oveja a traveacutes de sus comportamientos

APPEAR SHEEP La oveja aparece fuera del rango visual de la pantalla y empieza a moversepara que suceda la transicioacuten hacia el siguiente estado FOREST START la coordenada x debeser menor que 220

FOREST START La oveja seguiraacute movieacutendose en un espacio determinado de la pantalla hastaque sea lanzada en unas determinadas direcciones la direccioacuten queda determinada por lasvariables velocityX velocityY estas tomaran valores positivos o negativos determinando ladireccioacuten de lanzamiento esto queda reflejado en la condicioacuten de transicioacuten del estado FORESTSTART a FOREST DEEP Si realizamos el lanzamiento en esas determinadas direccionesharemos la transicioacuten al un nuevo estado FOREST DEEP

FOREST DEEP La oveja rebota por el escenario si colisiona con la puerta del corral y estaabierta hacemos la transicioacuten al estado ON THE PEN

Paacutegina 32 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ON THE PEN Finaliza el ciclo de vida de la oveja dentro del juego esta es devuelta al corral seincrementan puntos en el marcador de puntuacioacuten y se incrementa una unidad en el contador deovejas salvadas

233 Maacutequina de estados comportamiento lobo

ilustracioacuten 10 Maacutequina de estados comportamiento lobo La ilustracioacuten 10 muestra el comportamiento de los enemigos del videojuego que en este casoson los lobos Se define el ciclo de vida del lobo a traveacutes de sus comportamientos

APPEAR EYES Antes de aparecer los lobos a escena apareceraacuten sus ojos entre los matorralesdel bosque Cuando acaba el tiempo pasa al siguiente estado tiempo ojos lt= 0

APPEAR WOLF En este estado se seleccionara el tipo de lobo (habraacute 3 tipos distintos) el ladode la pantalla por donde apareceraacute posicioacuten y velocidad de salto como tambieacuten el tiempo ensegundos que tardara a saltar al escenario Una vez seleccionados todos estos paraacutemetros haraacutela transicioacuten al estado WHEN JUMP

WHEN JUMP Este estado simplemente esperara que pase el tiempo para que el lobo salte alescenario Un vez pase el tiempo el lobo apareceraacute en el escenario pasando a la transicioacuten JUMPON SCENE

JUMP ON SCENE En este estado se efectuara el salto a escena del lobo este saltara desde los

Paacutegina 33 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriamatorrales laterales de la pantallahacia el escenario dibujando un arco convexo Para realizar elsalto nos apoyaremos en la representacioacuten del calculo de la funcioacuten trigonomeacutetrica cosenosolamente en sus valores positivos por tanto cuando cosy lt 0 haremos la transicioacuten al estadoMOVE ya que el salto habraacute finalizado

MOVE En este estado los lobos se moveraacuten y podraacuten ser ahuyentados pulsando repetidas vecesencima de ellos las veces a pulsar queda sujeta al tipo de lobo que sea Des de este estadopodremos hacer a dos estado distintos dependiendo de lo que suceda Si conseguimos ahuyentaral lobo pasaremos al estado WOLF SCARED Si por el contrario el lobo atrapa a la ovejaharemos la transicioacuten al estado SHEEP TRAPPED en ambos estados finalizara el ciclo de vidadel lobo

WOLF SCARED Se habraacute ahuyentado el lobo se incrementa en uno el contador de lobosahuyentados y se suman puntos a la puntuacioacuten total En este estado finaliza el ciclo de vida dellobo

SHEEP TRAPPED El lobo habraacute atrapado una oveja se nos restara una vida En este estadofinaliza el ciclo de vida del lobo

234 Maacutequina de estados tutorial in game

ilustracioacuten 11 Maacutequina de estados tutorial in game La ilustracioacuten 11 muestra los distintos estados que toma el mini tutorial in game que apareceraacute laprimera vez que se juega En este las transiciones entre estados suceden de forma automaacutetica

Paacutegina 34 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriacada 5 segundos desde que se ha activado el primer estado Cada estado corresponderaacute a unacaja de texto mostrada en pantalla

3 Disentildeo

31 Estudio comparativo

Un estudio realizado en 2011 por la empresa Newzoo httpwwwnewzoocom empresainternacional dedicada a los estudios de mercado y enfocada por completo a la industria de losvideojuegos Ha realizado la primera encuesta a jugadores espantildeoles y una de las cosas que dicees La suma del volumen de negocio de juegos online (redes sociales juegos casualesjuegos para moacuteviles juegos MMO) superaraacute al del consumo en juegos para consolas en2011 Se puede ver un resumen del estudio en liacutenea en

httpwwweurogameresarticles2011-10-26-espana-gastara-1-600-millones-de-euros-en-videojuegos-en-2011

Con esta informacioacuten se puede ver que hacer un videojuego casual para una plataforma moacutevilcomo Android puede ser muy viable

Para este proyecto se realizaraacute un estudio comparativo (benchmarking) En la industria de losvideojuegos es habitual sacar tiacutetulos fijaacutendose en otros tiacutetulos que han conseguido gran eacutexito enel mercado La operativa consiste en mejorarlos dentro de otro contexto o hacer un videojuegocompletamente diferente pero basaacutendose en ocasiones en mecaacutenicas de alguacuten otro tiacutetulo que haconseguido un gran eacutexito

Existen en Google Play gran cantidad de juegos casuales que pueden servir como inspiracioacuten ycomo punto de inicio para hacer un planteamiento general de coacutemo disentildear el producto que sequiere desarrollar partiendo de los requisitos definidos en el apartado 131 de este documento Setomaraacuten como referencia algunos tiacutetulos para identificar patrones para ver coacutemo otros hansolucionado ciertas situaciones como pueden ser problemas de disentildeo o interaccioacuten entre otrosEn ninguacuten caso deberaacuten ser exactamente de la misma temaacutetica pero si que se miraraacute que seandel mismo tipo es decir casual games

El primer paso para realizar este estudio a sido ir a Google play y verificar si hay alguacuten juego conel mismo nombre que el que se pretende desarrollar ldquoFling the sheeprdquo No existe ninguacuten juego adiacutea de hoy con este nombre

El segundo paso a sido buscar tambieacuten en Google play videojuegos en los que aparezcanovejas solo poniendo en el buscador la palabra sheep nos aparecen muchiacutesimos juegos quetienen una temaacutetica donde aparecen ovejas Se ha verificado tambieacuten poniendo combinaciones depalabras relacionadas con el juego que se quiere implementar palabras como sheep wolves o sheep farm etc los resultados obtenidos son bastante elevados

Por la cantidad de juegos encontrados y los recursos de que se dispone como por ejemplo eltiempo no es posible analizarlos todos Si que se tomaran algunos juegos despueacutes de hacer unrepaso de los maacutes destacados Hay que decir que despueacutes de haber instalado algunos alguno deellos no ha acabado de funcionar correctamente en el dispositivo moacutevil

Tras estos pasos se escogeraacuten dos videojuegos de temaacutetica similar y dos videojuegos detemaacutetica diferente Los videojuegos escogidos para realizar el anaacutelisis comparativo son

Paacutegina 35 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria311 Sheep amp Wolf

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 12 y 13 pantallas juego Sheep amp Wolf Link httpsplaygooglecomstoreappsdetailsid=jscompanygamesSheepAndWolf_enter3

El juego consta de una mecaacutenica muy simple disponemos de un boomerang y un corazoacuten laperspectiva del juego es elevada y vemos coacutemo van bajando ovejas y lobos de forma aleatoria setrata de forma taacutectil dibujar la trayectoria del boomerang para eliminar los lobos sin tocar lasovejas y con el corazoacuten dibujar una trayectoria de forma taacutectil para tocar las ovejas y no los lobosconforme vamos tocando los lobos y las ovejas con el correspondiente objeto iremos sumandopuntos

Tiene cierta similitud con el que se quiere implementar ya que salen tambieacuten lobosovejas ytambieacuten que lo que se pretende implementar funcionara de forma taacutectil para lanzar las ovejas alcorral y ahuyentar a los lobos que amenazan a las ovejas

Tiene una perspectiva de caacutemara igual a la que se quiere implementar Tiene una mecaacutenica dejuego muy sencilla las opciones que ofrece son muy definidas y claras 3 botones al inicio deljuego grandes que nos indican las posibles opciones que tenemos dentro del juego Game StartGame Record Exit Un punto interesante de este juego es que las puntuaciones no se guardan anivel local de la aplicacioacuten sino que son compartidas en una pagina web asiacute se pueden ver laspuntuaciones a nivel mundial La navegacioacuten por las diferentes pantallas es correcta

Quizaacute un aspecto negativo del juego seriacutea que visualmente esta muy poco cuidado Aunque aveces si el juego produce mucha adiccioacuten el aspecto visual puede quedar en segundo teacutermino enjuegos para dispositivos moacuteviles En otros tipos de plataformas como consolas o PC el aspectovisual es un punto muy importante y que se debe trabajar mucho maacutes a fondo no obstante estono significa que en un dispositivo moacutevil no deba estarlo

Paacutegina 36 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez adictivo puntuaciones a nivel mundial Navegacioacuten correctaPuntos Negativos Poco cuidado visualmente no tiene pausaObservaciones No tiene un final definido a medida que avanzamos la dificultad aumenta

312 Sheep Up

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 14 y 15 pantallas juego Sheep Up Linkhttpsplaygooglecomstoreappsdetailsid=compgpublishandroidsheepuplive

A diferencia del anterior este visualmente esta mucho maacutes cuidado Es un juego en 3D dondeuna oveja de juguete esta guardada dentro de una caja de cartoacuten Va botando y tiene que irrecogiendo botones e ir subiendo por diferentes niveles para poder salir de la caja es un juego deplataformas tambieacuten con una mecaacutenica bastante sencilla

Este dispone de una pantalla que dura unos segundos y seguidamente sale el menuacute de opcionesdel juego a diferencia de lo visto anteriormente donde directamente saliacutea el menuacute de opcionesde juego El menuacute de opciones de juego tambieacuten es muy directo y claro Aparte del botoacuten playpara iniciar el juego el botoacuten opciones para configurar el audio del juego los efectos el idioma yver los creacuteditos Tiene el botoacuten store donde este juego tiene implementada la modalidad freemiumpara ir comprando diferentes objetos dentro de el que nos daraacuten ciertas ventajas dentro delgameplay La compra se podraacute realizar con monedas virtuales (los botones) que los habremos idorecogiendo durante los diferentes niveles jugados o tambieacuten podemos comprar cantidadesdeterminadas de botones a cambio de dinero de verdad Dispone de vinculacioacuten a redes socialescomo Twitter y Facebook

Puntos Positivos Sencillez adictivo vinculado a Twitter y el Facebook el juego se puede pararNavegacioacuten correctaPuntos Negativos La pantalla inicial tarda demasiado en desaparecer y no da ninguacuten tipo de

Paacutegina 37 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriainformacioacuten al usuario puede llegar a parecer que se a colgado debido al largo tiempo que tardaal menos con el dispositivo que se ha verificado

313 Temple Run

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 16 y 17 pantallas juego Temple runLinkhttpsplaygooglecomstoreappsdetailsid=comimangitemplerun Es un juego que no tiene final donde un explorador tiene que evitar la muerte superandodiferentes obstaacuteculos a traveacutes de diferentes pasillos tendremos que dibujar diferentes trazos deforma taacutectil para que el personaje gire salte o se deslice por el suelo al mismo tiempo tendremosque inclinar el teleacutefono para que el personaje vaya recogiendo monedas que podremos utilizarpara adquirir objetos y mejoras en la partida A medida que vamos recorriendo maacutes y maacutes metrosla dificultad aumenta y nos obligara a realizar maacutes acciones en un espacio de tiempo maacutes cortoasiacute pues los reflejos juegan un papel importante

Tambieacuten dispone de una pantalla que dura unos segundos seguida de un menuacute de opciones muyclaro y definido Este igual que el anterior dispone de una tienda donde se pueden comprarmejoras (potenciadores) con dinero virtual o real Los botones de inicio son muy similares al delanterior juego visto Dispone de vinculacioacuten a redes sociales como Twitter

Puntos Positivos Sencillez Adictivo vinculado a Twitter el juego se puede parar NavegacioacutencorrectaPuntos Negativos -

Paacutegina 38 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria314 Attack of the Spooklings

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 18 y 19 pantallas juego Attack of the SpooklingsLinkhttpsplaygooglecomstoreappsdetailsid=compicarogamesspooklings_free

Finalmente nos centramos en este casual con aspecto visual retro Otro juego que no disponede final y donde la dificultad va aumentando conforme el tiempo de juego aumenta El objetivo deljuego es matar a todos los Spooklings que quieren atacar nuestro poblado La forma de matar alos Spooklings es con el dedo deslizaacutendolo sobre la pantalla soacutelo que un Spookling llegue anuestro poblado en la parte inferior de la pantalla la partida finaliza Debemos evitar de todas lasformas posibles que lleguen a la parte inferior de la pantalla

Tambieacuten dispone de una pantalla de inicio y un menuacute inicial de juego claro y directo no disponede ninguna vinculacioacuten a redes sociales El juego no se puede parar La navegacioacuten por todas laspantallas es correcta teniendo pantalla de puntuaciones maacutes altas pantalla con mini tutorial decoacutemo jugar y unas opciones para configurar el audio y ver los creacuteditos del juego Sin embargo adiferencia de los otros tiene algunas fallas de disentildeo a nivel de transiciones entre pantallas yfuncionalidades baacutesicas que aparentemente no tienen mucho sentido Fuera de la pantalla dejuego no es posible abandonar la aplicacioacuten de ninguna de las maneras no hay botoacuten de salida yla tecla de ir hacia atraacutes no funciona la uacutenica manera de salir es matando el proceso Por otrolado durante la partida con el botoacuten de ir atraacutes conseguimos hacer pausa del juego pero de unaforma que no estaacute anunciada al usuario de ninguna manera con alguacuten icono visual que informa alusuario de la funcionalidad Una vez parado el juego con una tecla que no estaacute indicada enninguna parte como tal nos da dos opciones RESTART y QUIT con QUIT salimos de la aplicacioacutenalgo que no se puede hacer en ninguacuten otro punto de la aplicacioacuten Con RESTART vuelve aempezar la partida y se pierde la que teniacuteamos empezada En resumen si pulsamos este botoacuten noestaacute anunciado en ninguna parte por accidente durante una partida perdemos la partida ya que notenemos la opcioacuten de continuar puesto que o volvemos a empezar o salimos de la aplicacioacuten

Paacutegina 39 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez Muy adictivoPuntos Negativos Errores en el disentildeo de menuacutes y transiciones entre pantallas no tienevinculacioacuten a redes sociales no tiene pausa

Todo lo que se ha visto en este estudio comparativo nos da una idea de que el disentildeo que selleve a cabo debe cumplir las siguientes metas tener una mecaacutenica de juego adictiva y sencillaque la disposicioacuten de opciones e iconos han ser claras y dejar claro al usuario de forma visual queacutefuncionalidad tienen las transiciones y operativas baacutesicas deben estar bien indicadas eimplementadas El disentildeo visual debe ser lo mas cuidado posible aunque a veces en juegos paraeste tipo de dispositivos no es el que maacutes domina sobre todo si el juego tiene una mecaacutenica muyadictiva aunque si se consiguen las dos cosas mucho mejor Otro punto importante es tener unamecaacutenica freemium implementada dentro del juego con una tienda para comprar mejorasaplicables a la mecaacutenica de juego Otro punto importante es la vinculacioacuten del juego a redessociales y que recoja puntuaciones a nivel mundial y no locales del dispositivo todos estosingredientes le pueden dar al juego un plus que haga que el usuario vea el juego maacutes atractivo

Debido a temas de tiempo inicialmente se descarta para este proyecto la implementacioacuten de lassiguientes funcionalidades dentro del videojuego las puntuaciones a nivel mundial estas demomento quedaraacuten sujetas a nivel local del dispositivo tambieacuten se descarta la vinculacioacuten a redessociales y mecaacutenicas freemium

El resto de puntos comentados como las mecaacutenicas sencillas y adictivas aspecto visual lo maacutescuidado posible dentro de los recursos de que se dispone y la navegacioacuten entre pantallas ymenuacutes claros y sencillos seraacute lo que se transportaraacute al disentildeo y la posterior implementacioacuten delproyecto Es posible que durante la implementacioacuten del disentildeo mostrado en este documento semodifiquen algunos puntos por temas de balanceo y equilibrio del producto final

32 Perfiles de usuarios identificados

Los juegos casuales son juegos con mecaacutenicas simples Este hecho hace que esteacuten al alcancede cualquier usuario aunque eacuteste no sea un jugador experimentado acostumbrado a utilizar juegoscon mecaacutenicas maacutes complicadas que requieren de cierta experiencia previa Al mismo tiempo sonjuegos que pueden ser jugados en cortos espacios de tiempo Por tanto el tipo de usuario deestos juegos sera muy variado Podemos encontrar el perfil de usuario experimentado tanto enlas tecnologiacuteas como en los videojuegos y que tiene intereacutes por cualquier tipo de juego Y por otrolado encontramos el usuario poco experimentado pero que gracias a los smarphones y lasencillez de las mecaacutenicas de juego provoca que tambieacuten juegue

Todos tendraacuten un objetivo comuacuten pasar un rato jugando al juego Para mejorar su uacuteltimo reacutecordAunque en este tipo de juegos el usuario tambieacuten puede jugar sin buscar ninguacuten tipo de metaconcreta simplemente pasar un rato divertido sin necesidad de alcanzar ninguacuten tipo de reacutecord niobjetivo concreto Tambieacuten es importante mencionar que aunque los perfiles de usuarios son muyvariados existe una fuerte tendencia a que los jugadores de este tipo de juegos tiendan a sermaacutes grandes que los jugadores de otros tipos de videojuegos y suelen tener un intereacutes y tiempolimitado tanto para jugar como los videojuegos en general siendo normalmente del sexofemenino

Se detectan dos grandes grupos de perfiles de usuario los experimentados en jugar avideojuegos y los no experimentados en jugar videojuegos edades diferentes profesionesvariadas educacioacuten variada sexo variado Los usuarios de Android en general suelen pagarmucho menos por aplicaciones que otros grupos de usuarios como los de iphone por ejemplo

Paacutegina 40 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Los haacutebitos de consumo en los estados unidos ya no de los usuarios de juegos casuales sinode los usuarios de Android en general se definen de la siguiente manera soacutelo un 4 de estospaga por descargar una aplicacioacuten contra un 23 y un 31 de los usuarios de la App Store paraiPhone y iPad respectivamente tal y como muestra un estudio realizado por la empresa Statistacon las 100 aplicaciones maacutes descargadas

ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitasSe puede ver en linea en el link httpwwwstatistacomtopics983mobile-app-monetizationchart1400paid-apps-don-t-stand-a-chance-on-google-play

Se puede ver otro articulo similar en el siguiente link

httpwwwwayerlesscom201307usuarios-de-android-pagan-menos-por-apps-que-los-de-ios

La mayoriacutea de aplicaciones gratuitas utilizan la modalidad freemium que no es maacutes que ofrecerun producto baacutesico de forma gratuita y cobrar a los usuarios por opciones maacutes avanzadas oespeciales dentro de la misma aplicacioacuten No obstante tambieacuten es posible encontrar aplicacionescompletamente gratuitas sin la modalidad freemium

Como ya se ha dicho se han detectado inicialmente dos grandes grupos dentro de la masa deusuarios que son consumidores potenciales de juegos casuales Estos son los usuarios asiduos ajugar videojuegos de todo tipo y con experiencia en el uso de tecnologiacuteas en general es decirusuarios experimentados Por otro lado encontramos los que no tienen costumbre de jugar muchoy normalmente tampoco tienen una gran experiencia en el uso de tecnologiacuteas en general pero

Paacutegina 41 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debido a la simpleza de los videojuegos casuales eacutestos tambieacuten se convierten en jugadores yen muchas ocasiones se convierten en los usuarios que consumen maacutes este tipo de juegos Asiacutepues encontramos dos grandes grupos seguacuten unas caracteriacutesticas comunes experiencia previa osin experiencia ante los videojuegos y las tecnologiacuteas

33 Contextos de uso

331 iquest Doacutende

Al tratarse de un casual game para un dispositivo moacutevil el espacio de utilizacioacuten seraacute muyvariado Por tanto los usuarios podraacuten encontrarse en muchos lugares distintos como puedenser en casa en el tren en el metro en el autobuacutes al aire libre etc En definitiva el usuario podraacuteencontrarse en cualquier lugar

332 iquest Cuaacutendo

El tipo de juegos casuales tienden a ser juegos donde los usuarios realizan partidas cortas peroal mismo tiempo la naturaleza adictiva de estos hace que los usuarios puedan quedar atrapadosdurante varias horas repartidas en ratos diferentes o continuados dependiendo de la situacioacuten decada usuario Por tanto el cuaacutendo de este tipo de juegos puede ser muy variado casi en cualquiermomento que el usuario pueda dedicarle unos minutos o ratos maacutes largos durante su tiempolibre mientras se desplaza ya sea en tren en metro o en alguacuten otro medio de transporte que nonecesite estar pendiente del vehiacuteculo cuando esta en la cama etc

333 iquest En que entorno

Los entornos de utilizacioacuten pueden tambieacuten ser muy variados promovidos por doacutende y el cuaacutendoPor lo tanto el entorno tecnoloacutegico podraacute tambieacuten ser variado puede existir o no conexioacuten a lared en un entorno social muy diferente que podraacute ser maacutes privado o maacutes puacuteblico yconsecuentemente se dibujaraacute un entorno ambiental variado seguacuten el momento

4Disentildeo y ldquoConcept Artrdquo

41 Elementos presentes en la interfaz de la aplicacioacuten

Con todo lo que se ha visto en el apartado 31 estudio comparativo queda patente que la interfazde usuario debe ser clara y sencilla Seraacute necesario que contenga las siguientes pantallas

bull Pantalla de intro inicial que apareceraacute durante un segundobull Pantalla menuacute inicial del juego con las opciones Play Scores Options () How to play bull Pantalla de nivel donde se desarrolla el videojuegobull Pantalla high scores que mostrara la tabla de reacutecords con las 10 puntuaciones maacutes altasbull Pantalla how to play instrucciones de como jugar tambieacuten se integraran dentro del

videojuego y apareceraacuten durante la primera partida que se jueguebull Pantalla opciones podremos activar y desactivar el sonido y los efectos de audio A su vez

desde esta pantalla podremos acceder a la pantalla de creacuteditosbull Pantalla de creacuteditos pantalla doacutende se mostraran lo creacuteditos del videojuego bull Pantalla Ready pantalla de juego con el mensaje sobre impreso antes de empezar a

jugar apareceraacute durante 3 segundosbull Pantalla con los botones resume quit sobreimpresos en la pantalla de juego se accederaacute

Paacutegina 42 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaa ella con el botoacuten de pausa pausando el juego Desde ella podremos reanudar el juego oabandonar el juego

bull Pantalla game over con el resumen de los reacutecords conseguidos durante la partidapuntostiempo jugado numero de lobos ahuyentados y ovejas colocadas en el corralDesde esta pantalla tendremos dos botones Play again y Exit uno nos permitiraacute volver ajugar y el otro nos permitiraacute abandonar el juego tal y como su nombre indica

42 Flujos de interaccioacuten

En la siguiente ilustracioacuten se muestran los flujos de interaccioacuten definidos con las pantallasenumeradas en el apartado anterior Los flujos muestran la navegacioacuten que debe existir entre laspantallas del videojuego

ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintaspantallas

Paacutegina 43 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

43 Prototipaje

431 Sketches

En este apartado se muestran los primeros esbozos realizados a mano alzada estos intentanplasmar el disentildeo del juego en su totalidad Estos esbozos serviraacuten como punto de partida en unasegunda fase para realizar el prototipaje de todas las pantallas que intervienen en el videojuegoutilizando todo el material recopilado en la red

Tal y como ya se ha dicho en este mismo documento anteriormente no se dispone deconocimientos de disentildeo suficientes como para abordar un disentildeo de arte desde cero Por lo tantose han utilizado recursos ya disponibles en la red para el montaje de todos los graacuteficos delvideojuego Todos los recursos utilizados estaacuten bajo licencias creative commons o dominio puacuteblico A continuacioacuten se muestran los bocetos

ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 44 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 45 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada

En la siguiente paacutegina se muestran las transiciones definidas entre pantallas con los sketchesrealizados ilustracioacuten 241 Las transiciones toman como base el diagrama de flujos deinteraccioacuten definido en el apartado 42 de este documento ver ilustracioacuten 21

Paacutegina 46 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria432 Transiciones definidas entre pantallas

ilustracioacuten 241 Transiciones definidas entre pantallas

Paacutegina 47 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria433 Prototipo horizontal de alta fidelidad

4331 Pantalla inicial

Pantalla de inicio al ejecutar el juego apareceraacute esta pantalladurante un segundo

4332 Pantalla menuacute principal del juego

Pantalla de menuacute principal del juego desde esta pantallapodremos empezar a jugar (botoacuten Play) consultar la tabla depuntuaciones (botoacuten Scores) e ir a la pantalla de opciones deljuego (botoacuten Options) El interrogante de la parte inferiorderecha nos serviraacute para ir a la pantalla de instruccionesHOW TO PLAY para saber coacutemo se juega

Paacutegina 48 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4333 Pantalla de opciones

La pantalla de opciones nos permitiraacute deshabilitar la muacutesicadel juego y los efectos sonoros pasando el dedo sobre losiconos del altavoz y las notas musicales con el altavozdeshabilitaremos la muacutesica y con las notas musicalesdesactivaremos los efectos de audio La flecha naranja nosconduciraacute de nuevo a la pantalla de inicio del juego el botoacutencreacuteditos nos llevara a la pantalla de creacuteditos

4334 Pantalla de creacuteditos

Pantalla de creacuteditos en ella se muestran los nombres dequienes han disentildeado y programado el juego con la flechanaranja inferior volvemos a la pantalla de opcionesDeslizando el dedo sobre el texto se podraacute desplazar haciaarriba y hacia abajo

Paacutegina 49 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4335 Pantalla tabla de puntuaciones

Pantalla tabla de puntuaciones nos mostrara una tabla conlas 10 puntuaciones maacutes altas de todas las partidas jugadasEsta tabla se guardara de forma local en el dispositivo

4336 Pantalla de juego READY

Pantalla de juego READY Apareceraacute durante unossegundos una vez iniciada la partida Despueacutes de 3segundos pasara a la pantalla de juego que se muestra en elsiguiente apartado

Paacutegina 50 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4337 Pantalla de juego

La pantalla de la izquierda es donde se desarrollaraacute todo el gameplay en la parte superiorizquierda de la pantalla se muestran los puntos conseguidos y las vidas En la parte superiorderecha hay un botoacuten que permitiraacute pausar el juego una vez pausado mostraraacute la pantalla depausa con los botones RESUME y QUIT la pantalla se muestra en el apartado siguiente En laparte derecha se muestra otra pantalla ideacutentica a la de la izquierda donde se puede ver elgameplay baacutesico representado con flechas los lobos saldraacuten de los extremos de la pantalla yendohacia las ovejas las ovejas al mismo tiempo saldraacuten de la derecha de la pantalla y las tendremosque lanzarlas deslizando el dedo sobre ellas y lanzandolas hacia el establo La puerta se iraacuteabriendo y cerrando aleatoriamente los lobos una vez puestos en escena los podremos ahuyentardeslizando el dedo sobre ellos un nuacutemero de veces determinado en funcioacuten del color del lobocomo esta indicado en el apartado 131 de este documento

Paacutegina 51 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4338 Pantalla de pausa botones RESUME y QUIT

Pantalla de pausa que apareceraacute cuando se pause el juegoCon la opcioacuten RESUME continuaremos jugando con laopcioacuten QUIT se saldraacute de la partida y pasaraacute a la pantalla delmenuacute principal del juego descrita en el punto 322

4339 Pantalla GAME OVER

Pantalla GAME OVER apareceraacute cuando se hayanagotado todas las vidas Mostraraacute un resumen de los puntosconseguidos en la partida actual tiempo invertido en lapartida lobos ahuyentados y ovejas salvadas Con losbotones de la parte inferior podremos volver a jugar (botoacutenplay again) o salir del juego con el botoacuten exit este botoacuten nosconduciraacute a la pantalla de inicio de juego descrita en elapartado 322

Paacutegina 52 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria43310 Pantalla de instrucciones de juego HOW TO PLAY

Pantalla de instrucciones del juego nos haraacute una breveexplicacioacuten de coacutemo jugar Deslizando el dedo sobre el textose podraacute desplazar hacia arriba y hacia abajo El juegodispondraacute de unas mini instrucciones in game queapareceraacuten en la primera partida que se juegue en forma decajas de texto esta pantalla se muestra en el siguienteapartado

43311 Pantalla de instrucciones in game

Esta pantalla muestra el modo como quedaraacuten integradaslas instrucciones de juego dentro del gameplay Estasinstrucciones apareceraacuten solamente la primera vez que sejuegue

Paacutegina 53 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Todo el disentildeo mostrado en este apartado ha sido realizado con todos los recursos encontradosen la red todos ellos quedan recogidos en el apartado 6 Con el programa Gimp se ha montadotodo el disentildeo de alta fidelidad mostrado en este apartado Se ha trabajado con capas paradisponer de flexibilidad en la construccioacuten del disentildeo A su vez el hecho de tener los disentildeos porcapas nos permitiraacute poderlo exportar a la implementacioacuten del videojuego de una manera coacutemoday raacutepida en el apartado 5 implementacioacuten se hace referencia a como convertir el disentildeo realizadoen capas a recursos graacuteficos del videojuego

En la siguiente ilustracioacuten se muestra una captura del disentildeo de la pantalla de juego descrita enel apartado 4337 realizado con Gimp

ilustracioacuten 242 Disentildeo pantallas con Gimp

Paacutegina 54 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

5Implementacioacuten

51 Arquitectura global

511 Arquitectura del framework libGDX

LibGDX es un framework multiplataforma que actualmente soporta WindowsLinuxMac OS XAndroid iOS y HTML5 Esto permite escribir el coacutedigo una sola vez y desplegarlo en las distintasplataformas comentadas sin tener que modificar el coacutedigo LibGDX permite bajar a maacutes bajonivel si se desea ya que da acceso directo al sistema de ficheros dispositivos de entrada desonido y a OpenGL a traveacutes de la interfaz unificada OpenGL ES11 y 20

LibGDX ofrece a su vez un conjunto de APIs que ayudan en las tareas comunes de desarrollode videojuegos como son la presentacioacuten de sprites texto la creacioacuten de interfaces de usuario lareproduccioacuten de efectos de sonido y secuencias musicales y los distintos tipos de caacutelculosnecesarios en la programacioacuten de videojuegos

En algunas ocasiones LibGDX deja de lado el lenguaje Java y recurre a coacutedigo nativo paraconseguir un mejor rendimiento No obstante todas estas funciones quedan ocultas detraacutes de lasAPIs de Java De manera que en el momento de desarrollar un videojuego no hay quepreocuparse de realizar una compilacioacuten cruzada entre Java y C++

LibGDX es un framework maacutes que un motor de videojuegos que ayuda al desarrollo de estosgracias a las abstracciones de gran alcance que ofrece y deja en manos del programador elegircomo escribir su videojuego o aplicacioacuten

512 Visioacuten de los moacutedulos de libGDX

LibGDX comprende varios moacutedulos que proporcionan los servicios necesarios para crear laarquitectura tiacutepica de un videojuego

ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en unvideojuego

Paacutegina 55 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaA continuacioacuten de describen los moacutedulos mostrados en la ilustracioacuten 25

Input Proporciona un modelo de entrada unificado para todas las plataformas Soporta tecladopantalla taacutectil aceleroacutemetro y ratoacuten si esta disponible

Graphics Permite el dibujo de las imaacutegenes en pantalla usando el hardware proporcionado por laimplementacioacuten de Open GL ES las versiones soportadas son GL versioacuten 10 11 20

Files Proporciona los meacutetodos necesarios para las operaciones de lectura escritura totalmenteindependientes a los medios de comunicacioacuten existente

Audio Proporciona las herramientas necesarias para la reproduccioacuten de sonido para todas lasplataformas

Math Moacutedulo que proporciona los caacutelculos matemaacuteticos necesarios orientados al desarrollo devideojuegos

Physics LibGDX proporciona un wrapper completo al motor de fiacutesicas en 2D open sourcedesarrollado en C++ llamado Box2D

52 Arquitectura de un videojuego

521 Programa vs Aplicacioacuten

Una aplicacioacuten convencional sigue una secuencia loacutegica lineal reacciona cuando sucede alguacutenevento es decir responde a eventos como por ejemplo cuando se pulsa una tecla Por el contrarioun videojuego es maacutes complejo hace caacutelculos y dibuja en pantalla constantemente aunque no seproduzca ninguacuten evento

522 Estructura baacutesica de un videojuego

Programar videojuegos es una forma completamente diferente de programar software Ladiferencia principal entre una aplicacioacuten convencional y un videojuego radica en la gestioacuten deeventos tal y como se ha indicado anteriormente un programa ofrece respuestas a eventos y unavez son servidos permanece a la espera de una nueva orden en cambio un videojuego es unprograma que debe actuar en tiempo real tiene que estar haciendo caacutelculos y dibujando enpantalla constantemente No se puede esperar a que suceda un evento para poder actuaraunque el jugador no haga nada no presione una sola tecla no mueva el ratoacuten el juego tiene quecalcular el tiempo que lleva jugando en ese nivel si le va a atacar alguacuten enemigo si estaacute cargandoenergiacutea y por supuesto dibujar en pantalla todo lo que va sucediendo

La mayoriacutea de videojuegos estaacuten construidos bajo la misma estructura baacutesica sobre la cual correel programa Esta estructura puede tener variaciones pero de forma general se presenta de lasiguiente manera

Inicializacioacuten En esta primera etapa el juego se situacutea en su estado inicial Se realizan lasinicializaciones por lo que respecta a las libreriacuteas o motores que vayan a utilizarse de variables yestructuras de datos referentes a los atributos de las entidades o personajes escenariosconfiguraciones etc y de los diferentes recursos fiacutesicos que vayan a emplearse tales comograacuteficos o sonidos

Paacutegina 56 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Ciclo de juego En esta parte esta toda la accioacuten este ciclo se repite de manera indefinida hastaque el jugador pierda gane o salga del juego Este punto se puede dividir en tres partes quepodemos llamarlas entrada proceso y salida

Como entrada se entiende el punto donde se captura todo lo que hace el jugador comopresionar los botones de control mover el ratoacuten presionar las flechas del teclado tocar la pantallataacutectil y el resto de informacioacuten que recibe el juego

En la parte de proceso es donde se procesa toda la informacioacuten que se recibioacute en la entrada ytiene lugar la loacutegica del videojuego Por tanto es donde se realizan los caacutelculos de fiacutesicas si eljuego los requiere asiacute como tambieacuten los caacutelculos de la inteligencia artificial de esteconjuntamente con el tratamiento graacutefico

La salida es la encargada de enviar al jugador toda la informacioacuten que se ha procesado en laetapa anterior proceso Se muestra al jugador el resultado de lo que hizo con la visualizacioacuten enpantalla del estado actual del videojuego Tambieacuten es en este punto donde se hace sonar lamuacutesica y efectos de sonido

Por uacuteltimo y fuera del ciclo de juego esta la parte de finalizacioacuten esta parte es la encargada deliberar todos los recursos y memoria utilizada durante el transcurso del videojuego

Es importante diferenciar estas tres etapas del ciclo del videojuego y ver queacute tarea se delega encada una de ellas en la entrada tan soacutelo nos ocupamos de captar los posibles eventos el procesose encarga en primer lugar de procesar la entrada y maacutes adelante de la loacutegica del videojuego ypor uacuteltimo la capa de salida se encarga de visualizar y reproducir la muacutesica

Con estos puntos claros se puede mostrar la estructura principal de un videojuego En elsiguiente apartado se muestra esta estructura baacutesica a modo de esquema

Paacutegina 57 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

53 Esquema de la estructura baacutesica de un videojuego

Inicializacioacuten Creacioacuten de estructuras dedatos carga de recursos graacuteficos y sonidos

Entrada Gestioacuten de pantalla taacutectiljoystick teclado

Proceso Lanzamos una oveja al corralrebota la oveja salta un lobo al escenarioetc

Salida Mostrar graacuteficos y reproducirsonidos

ilustracioacuten 26 Estructura baacutesica de unvideojuego

Finalizacioacuten Liberar recursos

Paacutegina 58 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

54 Patrones de disentildeo

541 Introduccioacuten

En el disentildeo de cualquier aplicacioacuten como por ejemplo un videojuegono es posible abordarlo porcompleto El proceso de disentildeo de una aplicacioacuten suele ser iterativo y se realiza en diferentesetapas de forma que se vaya refinando con el tiempo Conseguir un disentildeo perfecto a la primeraes muy difiacutecil de conseguir El disentildeo de aplicaciones es complejo y la maacutes importante y que maacutesimpacto tiene no soacutelo sobre el producto final sino tambieacuten sobre su vida futura Ya que es en eldisentildeo en donde se definen las estructuras y entidades que se van a encargar de resolver elproblema planteado Como de bien se definan estas estructuras y entidades influiraacute en granmedida en el eacutexito o fracaso del proyecto y en la viabilidad de su mantenimiento

Los patrones de disentildeo son formas reconocidas y probadas de resolver problemas de disentildeo queson recurrentes en el tiempo No es maacutes que basarse en experiencias anteriores en problemassimilares aplicado soluciones probadas anteriormente en determinados contextos para alcanzarun mejor disentildeo maacutes raacutepidamente

Existen distintos patrones para distintos problemas de disentildeo No obstante en este documentosoacutelo se haraacute hincapieacute en los patrones utilizados para este proyecto Quedando fuera del alcancede este documento los demaacutes patrones existentes

542 Patrones de creacioacuten

Estos patrones nos proporcionan una solucioacuten relacionada con la construccioacuten de clases objetosy otras estructuras de datos Algunos ejemplos de patrones pueden ser Abstract Factory BuilderSingleton estos ofrecen mecanismos de creacioacuten de instancias de objetos y estructurasescalables dependiendo de las necesidades

543 Singleton

Para este proyecto se ha utilizado este patroacuten ya que era necesario tener una uacutenica instancia dealgunas determinadas clases En java cuando se utiliza el operador new es posible crear unainstancia de un objeto No obstante a veces es necesario tener una uacutenica instancia de un objetopor ejemplo para poder acceder a ella des de cualquier punto de la aplicacioacuten Seria un ejemplolapelota de un juego de pinball en donde podriacutea ser conveniente mantener una uacutenica instancia deeste objeto

La solucioacuten para garantizar que solo existe una instancia de un objeto se consigue impidiendoque ninguna otra clase pueda acceder al constructor por este motivo de declara el constructorcomo miacutenimo de forma protegida o privada y se proporciona un uacutenico punto (controlado) en dondese proporciona la uacutenica instancia En la siguiente ilustracioacuten se muestra el diagrama de clases delpatroacuten Singleton

ilustracioacuten 27 Singleton

Paacutegina 59 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria A continuacioacuten en el listado 543 se muestra una implementacioacuten baacutesica del patroacuten Singletonutilizada en el proyecto para la clase que maneja el audio del videojuego

Listado 543

1 package comthreecometflingthesheeputil23 import combadlogicgdxaudioMusic 4 import combadlogicgdxaudioSound56 public class AudioManager 7 8 public static final AudioManager instance = new AudioManager()910 private Music playingMusic11 private Sound playingSound1213 Singleton14 private AudioManager() 15 1617 1819 public void ResunmeMusic()20 21 if(playingMusic = null) playingMusicplay()22 2324 public void PlayMusic(Music musicfloat volumeboolean loop) 25 26 if(GamePreferencesinstancemusic) return27 playingMusic = music28 musicsetLooping(loop)29 musicsetVolume(volume)30 musicplay()31 3233 public void StopMusic()34 35 if(playingMusic = null) playingMusicstop()36 3738 public void PauseMusic()39 40 if(playingMusic = null) 41 if(playingMusicisPlaying()) 42 playingMusicpause()43 44 45 4647 public void PlaySound(Sound soundfloat volume) 48 49 if(GamePreferencesinstancesound) return50 playingSound = sound51 soundplay(volume)52 5354 public void PlaySound(Sound soundfloat volumefloat pitchfloat pan) 55 56 if(GamePreferencesinstancesound) return57 playingSound = sound58 soundplay(volume pitch pan)59 60

Esta clase maneja el audio del videojuego tanto efectos de sonido como la muacutesica es una clase

Paacutegina 60 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debe estar accesible des de cualquier punto de la aplicacioacuten y no tiene ninguacuten sentido que seinstancie repetidas veces soacutelo sera necesaria una instancia de dicha clase para poder manejar losaudios y muacutesicas Como se puede ver en la linea 14 del listado 543 se declara el constructorprivado y en la linea 8 se proporciona el punto donde se proporciona la uacutenica instancia de dichaclase a traveacutes de la variable instance declarada de forma publica para que se accesible desdecualquier otra clase y a su vez declarada de forma static y final Con final le decimos que estavariable ya no puede ser modificada una vez declarada es decir sera una constante Con static leindicamos que podremos utilizar la variable instance sin la necesidad de hacer ninguna instanciacon el operador new de la clase AudioManager

Existen varias clases en el videojuego que son singleton A continuacioacuten se nombran todas ellasAudioManager Assets WorldGameController CounterTime GamePreferences

55 Diagramas de clases definitivos

Se ha dividido en varios diagramas para facilitar su lectura se pueden ver los diagramas en lossiguientes apartados de este documento A continuacioacuten se pasan a comentar las clases descritasen ellos

56 Diagramas nuacutecleo videojuego

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep-android encontramoslas siguientes clases

MainActivity Hereda de AndroidAplication que a su vez hereda de Activity es donde se crea laaplicacioacuten crea una instancia de FlingTheSheepMain

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep encontramos laclase FlingTheSheepMain donde se instancia la pantalla de intro del juego dentro del meacutetodocreate

Siguiendo el esquema estructural de un videojuego descrito en el punto 53 de este documentola ilustracioacuten 28 detalla el diagrama de clases que engloba la inicializacioacuten del juego y el ciclo devida

La Inicializacioacuten queda recogida en la clase Assets esta clase es un singleton que instanciaotras clases que a su vez guardan todos los recursos del videojuego por recursos se entiendetexturas para los graacuteficos archivos de audio ficheros con informacioacuten necesaria para el juegoUna vez inicializado el hecho de ser un singleton nos permite acceder a estas clases a traveacutes dela clase assets des de cualquier punto de la aplicacioacuten En la ilustracioacuten 29 se detallan todas estasclases que engloba la clase assets Esta clase se encuentra el el paquetecomthreecometflingthesheepgame A continuacioacuten se comenta cada una de ellas con una brevedescripcioacuten

LevelDecoration Enumera todas las texturas de los objetos de decoracioacuten del videojuego floreshierba etc Son objetos que no tienen ninguna interaccioacuten con el juego simplemente decoran

AssetFontsScene2D Engloba los tipos distintos de fuente que se utilizan en el videojuego tipode letra medida y color

AssetSound Enumera todos los efectos de sonido del juego

Paacutegina 61 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAssetMusic Contiene todas las muacutesicas del juego

FileHandleHighScores Inicializa la tabla de puntuaciones local y la actualiza cada vez que serealiza una partida de juego

LevelObjects Engloba todos los objetos que tienen interaccioacuten con el videojuego por interaccioacutense entiende objetos que pueden colisionar con otros o que tienen alguacuten papel importante dentrode videojuego no son solo objetos de decoracioacuten

Character Contiene el protagonista del juego el personaje que lleva el jugador en esta caso lasovejas

NPCs En esta clase quedan englobadas las texturas de los enemigos en esta caso los lobos

GUI En esta clase se engloban todas las texturas utilizadas para la creacioacuten de la interfaz deusuario botones imaacutegenes

La clase Constants es una clase que declara varias constates estaacuteticas que son accesibles desde cualquier punto de la aplicacioacuten y se utilizan tanto en la inicializacioacuten como en el ciclo de vidadel videojuego La podemos encontrar en el paquete comthreecometflingthesheeputil

El ciclo de vida del videojuego entrada proceso y salida queda repartido en las siguientes clases

Entrada Gestioacuten pantalla taacutectil se realiza en la clase WorldGameController en el meacutetodollamado handleInput a su vez cada personaje(character) y enemigo(NPC) gestiona su propiaentrada de eventos a traveacutes de los meacutetodos sobre escritos touchDown fling y tap Ver ilustracioacuten30 clases Sheep y Wolf

Proceso Este apartado realiza la loacutegica del videojuego y es responsable de esto el meacutetodoupdate de la clase WorldGameController Dentro de este meacutetodo existe implementada lamaquina de estados descrita en el apartado 231 con todos los estados posibles que el juegopuede tener durante su ciclo de vida los estados son READYGAMEPAUSEGAME OVER Cadapersonaje y enemigo lleva implementado su propia loacutegica y maquina de estados dentro de susclases correspondientes Ver ilustracioacuten 30 clases Sheep y Wolf estas maacutequinas de estados sonlas descritas en los apartados 232 y 233 respectivamente

Salida La salida descrita en el apartado 53 queda recogida en la clase GameScreen Verilustracioacuten 31

Finalizacioacuten La finalizacioacuten liberacioacuten de recursos queda a cargo del meacutetodo sobre escrito hiderepartido por las distintas clases de la aplicacioacuten

Otras clases que intervienen en el ciclo de juego recogidas en la ilustracioacuten 28 sonCounterTime GamePreferences AudioManager a continuacioacuten se detalla la funcionalidad decada una de ellas

CounterTime Esta clase engloba el calculo de tiempo transcurrido desde que empieza el juegohasta que termina hace la funcioacuten de contador de tiempo interno

GamePreferences Esta clase hace persistente la configuracioacuten escogida por el usuario en lasopciones Es posible configurar el juego con o sin sonido al igual que los efectos de audio estaclase es la encargada de guardar esta configuracioacuten aunque abandonemos la aplicacioacuten

Paacutegina 62 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

AudioManager Clase que se encarga tanto de la reproduccioacuten de audio como los efectos desonido es su responsabilidad interrogar la configuracioacuten actual del sonido y efectos paradeterminar si tiene que realizar la reproduccioacuten de audio o efectos asiacute como tambieacuten determinarel volumen del sonido o si un audio hay que reproducirlo de forma ciacuteclica En el listado 543 deeste documento se puede ver el coacutedigo de esta clase como ejemplo de singleton

ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego

Paacutegina 63 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 29 Diagrama de clases Assets

57 Diagrama de clases objetos videojuego

En la ilustracioacuten 30 de este documento se detalla el diagrama de clases referente a los objetosdel videojuego Por objetos se entiende personaje principal enemigos juntamente con todos loselementos que forman el conjunto del escenario del videojuego

En primer lugar cabe destacar la existencia de la clase abstracta AbstractGameObject Estaclase abstracta define los meacutetodos comunes de todos los objetos del juego Por las necesidadesde implementacioacuten no se han definido meacutetodos abstractos no obstante la clase se define comoabstracta ya que va a ser la superclase de todos los objetos del videojuego y por tanto no se van arealizar instancias de esta A continuacioacuten se enumeran las clases que se extienden de esta y querecogen todos los objetos del juego ya sean con o sin interaccioacuten en el

Paacutegina 64 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaGrass Hole Flower Flowers Stump ForestLeft ForestRight ThePen WoodFenceForestWoodFencePen DoorPen BorderGrassLeft BorderGrassRight PotionPurple AubergineRedPuddle Tree GrassField

Estas clases corresponden a los objetos que constituyen el escenario del videojuego Las clasesSheep y Wolf corresponden al personaje del videojuego y a los enemigos respectivamente estasclases no solamente contienen el meacutetodo para ser dibujadas en pantalla igual que las anterioressino que tambieacuten poseen toda la loacutegica para el comportamiento de cada una de ellas este puntocorresponderiacutea a la fase de proceso de la estructura baacutesica de un videojuego detallada en elpunto 53 de este documento Existe para cada personaje y enemigo una maquina de estadosimplementada que indica en que estado se encuentra en cada momento aplicando la loacutegicacorrespondiente para ese estado Ver las enumeraciones SHEEP_STATE y WOLF_STATE de lailustracioacuten 30 estas corresponden a las maacutequinas de estado definidas en los apartados 232 y233 respectivamente

Finalmente en la ilustracioacuten 30 aparecen las clases GameScreen y WorldGameController

La clase GameScreen como se vera en el apartado 58 es la clase que engloba todo lorelacionado con la pantalla del juego o nivel En ella se instancian todos los objetos descritosanteriormente para la creacioacuten del nivel asiacute como tambieacuten la creacioacuten de la GUI del videojuegobotones textos sobreimpresos y cajas de textos Es por este motivo que en la clase GameScreenexisten dependencias u asociaciones hacia todos los objetos dependiendo del tipo de declaracioacutende estos

La clase WorldGameController contiene la implementacioacuten de gran parte de la loacutegica delvideojuego esta clase formariacutea parte de la etapa de proceso dentro de la estructura baacutesica de unvideojuego descrita en el apartado 53 de este documento

Existe tambieacuten en esta clase una asociacioacuten hacia la clase GameScreen ya que des de la claseWorldGameController que es donde se encuentra gran parte de la loacutegica es necesario accedera la instancia de GameScreen para interactuar con varios elementos visuales que manipulan laloacutegica del videjuego

En la siguiente hoja se muestra la ilustracioacuten 30 correspondiente a todo los descrito en esteapartado

Paacutegina 65 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 30 Diagrama de clases objetos

Paacutegina 66 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

58 Diagrama de clases pantallas videojuego

En la ilustracioacuten 31 quedan recogidas todas las clases que intervienen en la creacioacuten depantallas del videjuego por pantallas se entine la pantalla de intro la del menuacute principal la deopciones etc Estas clases engloban todo lo necesario para la construccioacuten y visualizacioacuten deestas A continuacioacuten se detallan cada una de las clases

AbstractGameScreen Esta clase abstracta recoge todos los meacutetodos abstractos que sonimplementados en cada una de las clases que a continuacioacuten se detallan(pantallas) con la loacutegicanecesaria seguacuten las necesidades de cada pantalla No se crea ninguna instancia de esta clase

IntroScreen Corresponde a la pantalla de intro del videojuego descrita en el apartado 4331

MenuScreen Corresponde a la pantalla del menuacute inicial del juego des de aquiacute podemos escogersi jugar consultar la tabla de puntuaciones local ir a las opciones o a la pantalla de ayuda delvideojuego descrita en el apartado 4332 OptionsScreenPantalla de opciones descrita en el apartado 4333

CreditsScreen Pantalla de creacuteditosdescrita en el apartado 4334

HighScoresScreen Pantalla en donde se recoge la puntuacioacuten local del videojuegodescrita en elapartado 4335

GameScreen Pantalla general esta clase engloba toda la loacutegica del nivel del juego a su vezengloba la pantalla inicial de nivel READY la pantalla de pausa del juego y la de game overdescritas en los apartados 4336 4337 4338 4339

HowToPlayScreen El videojuego dispone de un tutorial in game que solo aparece la primera vezque jugamos a el y en las siguientes partidas ya no vuelve aparecer maacutes descrita en el apartado43311 No obstante existe una pantalla en donde podemos ver este tutorial fuera del juego estaclase esta destinada a contener los datos de esta pantalla descrita en el apartado 43310

TextGUI Esta clase contiene todos los textos sobreimpresos que existen en el videojuego En ellaesta la loacutegica de cada uno de estos textos para que sean posicionados y visualizados desde lasdistintas partes del videojuego

TUTORIAL_INGAME_STATE Esta enumeracioacuten enumera los estados de la maquina de estadosutilizada para mostrar el tutorial in game dentro del videojuego la primera vez que jugamos lamaacutequina de estados esta implementada dentro de la clase TextGUI la maacutequina corresponde a ladescrita en el apartado 234

En la siguiente hoja se muestra la ilustracioacuten correspondiente a todo los descrito en esteapartado

Paacutegina 67 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 31 Diagrama de clases pantallas

Paacutegina 68 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

59 Configurar el entorno de desarrollo

Antes de empezar a desarrollar juegos con libGDX es necesario instalar y configurar el entornode desarrollo Para ello se utilizaraacute Eclipse como entorno de desarrollo integrado IDE A su vez secreara un proyecto que nos serviraacute como base para el desarrollo de este

Es posible desarrollar con otros entornos distintos a Eclipse pero el hecho que Eclipse sea elentrono de desarrollo soportado oficialmente ha sido motivo suficiente para escogerlo para esteproyecto como entorno de desarrollo

591 Instalacioacuten

Para poder instalar el entorno de desarrollo nos haraacute falta primero instalar el Java DevelopmentKit(JDK) para posteriormente poder instalar eclipse

Una vez instalados seraacute necesario bajar el framework libGDX del siguiente enlace

httplibgdxbadlogicgamescomdownloadhtml

Tambieacuten sera necesario instalar el Android SDK seguidamente tendremos que ejecutar eclipse yinstalar los plugins necesarios para poder desarrollar con Android El plugin necesario paradesarrollar con Eclipse sobre Android de llama ADT (Android Developer Tools) Para instalar esteplugin debemos dirigirnos a Help--gtInstall new software tal y como muestra la siguiente ilustracioacuten

ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse

Paacutegina 69 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez el entorno de desarrollo preparado seraacute el momento de descomprimir el frameworklibGDX se recomienda descomprimirlo en la raiacutez ClibGDX en esta caso ya que trabajamos bajoWindows

Una vez descomprimido dentro de la la carpeta encontramos una aplicacioacuten llamada gdx-setup-uijar Esta aplicacioacuten nos ayuda a crear un proyecto ya configurado con las libreriacuteas necesariaslisto para ser importado a Eclipse y empezar a desarrollar con libGDX para Android O paracualquier otra de las plataformas soportadas por el framework En este caso se configura elproyecto para Android y para Escritorio de esta manera podremos verificar durante el desarrollodel proyecto los avances sin necesidad de instalarlo en un dispositivo Android ya sea fiacutesico ovirtual

Las siguientes ilustraciones muestran la configuracioacuten a realizar

ilustracioacuten 33 Creacioacuten proyecto libGDX Habraacute que pulsar en el botoacuten Create y con ello accederemos a la siguiente ilustracioacuten

ilustracioacuten 34 Creacioacuten proyecto libGDX

Paacutegina 70 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez configuradas todas las opciones le daremos al paso 4 Open the generation screen ygeneraremos el proyecto Esto proyecto sera importable a eclipse desde la opcioacuten Import delpropio IDE La configuracioacuten del proyecto tambieacuten es posible hacerla a mano no obstante esta aplicacioacutennos ahorra tiempo y posibles errores en el momento de configurarlo dentro del entorno ya quepara hacerlo a mano existen distintos pasos a seguir para conseguir lo mismo que se consiguecon esta aplicacioacuten con escasos clicks de ratoacuten

510 Traspaso del disentildeo a texturas

Todo el disentildeo realizado en el apartado 4 seraacute necesario pasarlo a texturas para posteriormenteutilizarlo en la implementacioacuten del juego como recursos graacuteficos

Una textura es una imagen digital cualquiera en cualquiera de los formatos habituales jpg pnggif tga etc Para poderla cargar dentro de un videojuego y manipularla haraacute falta una libreriacuteaespecializada para ello esto se podria programar para para el caso de este proyecto utilizamos elpropio framework libGDX para realizar esta tarea que a su vez envuelve el uso de OpenGL

Las texturas en OpenGL deben ser siempre potencias de 2163264128256 etc del contrarionos daraacute problemas y no funcionaraacute

El primer paso sera desmontar todas las capas pieza por pieza por decirlo de alguna manera ycrear ficheros de cada una de las capas de forma separada para guardarlas todas en una carpetacon un nombre identificativo Ver la siguiente ilustracioacuten

ilustracioacuten 35 Capas separadas por imaacutegenes

Paacutegina 71 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez realizado este paso deberemos juntarlas todas de nuevo en una uacutenica textura que seapotencia de 2 Trataacutendose de un juego para moacutevil las texturas no deberiacutean ser mayores de1024x1024 y no se podraacuten cargar muchas de ellas en memoria por razones obvias de recursosdel tipo de dispositivo

Para juntarlas utilizaremos una aplicacioacuten llamada Texture Packer esta nos juntara las texturasde repartieacutendola de forma que quepan en una tamantildeo de textura definido que en este caso serade 1024x1024 en caso de caber en una uacutenica textura el programa generara 2 texturas siempreoptimizadas a potencias de 2 La siguiente ilustracioacuten muestra el programa Texture packer

Ilustracioacuten 36 Texture packer El formato de salida de las textura sera png ya que necesitamos mantener el canal alpha deestas activado para los objetos sean correctamente dibujados en la escena del videojuego

Conjuntamente con la textura la aplicacioacuten nos generara un archivo de texto que contendraacute elnombre de la textura y la posicioacuten donde se encuentra dentro de la textura generada de1024x1024 Ver la siguiente ilustracioacuten en la siguiente paacutegina

Paacutegina 72 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 37 Posicioacuten texturas De esta manera podremos cargar las texturas en la fase inicializacioacuten en la clase Assets descritaen la ilustracioacuten 29 en forma de diagrama de clases

511 Implementacioacuten de las maacutequinas de estado

La implementacioacuten de las maacutequinas de estado se realiza con una estructura enumconjuntamente con una estructura switch case El siguiente listado muestra la declaracioacuten del laestructura enum implementada en la clase WorldGameController la implementacioacuten de todas lasmaacutequinas se realiza del mismo modo por tanto se toma esta como ejemplo en representacioacuten detodas las implementadas en el videojuego

Listado 5111

1 private enum GAME_STATE READYGAMEPAUSEGAME_OVER2 private GAME_STATE gameState34 gameState = GAME_STATEREADY

Paacutegina 73 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLa siguiente tabla muestra un trozo de la estructura switch case implementada en el meacutetodoupdate de la clase WorldGameController

Listado 5112

1 public void update(float deltaTime)2 3 switch(gameState)4 5 case READY6 if(audioReady) 7 AudioManagerinstancePlaySound(Assetsinstancesoundready 8 ConstantsVOLUME_AUDIO_EFFECTS)9 audioReady = false10 11 if(timeLeftShowReadyScreen gt 0)12 13 if(deltaTime lt 03f ) 14 timeLeftShowReadyScreen -=deltaTime15 16 if(timeLeftShowReadyScreen lt 0)17 18 gameScreensetVisibilityGUI()19 timeLeftShowReadyScreen = 020 CounterTimeinstancestartTime()21 22 AudioManagerinstancePlayMusic(Assetsinstancemusiclevel01 23 ConstantsVOLUME_MUSIC_GAME true)24 gameState = GAME_STATEGAME 2526 27 28 break 29 case GAME30 updateGame() 31 if(timeOpenDoorPen gt 0)32 33 if(deltaTime lt 03f ) 34 timeOpenDoorPen -= deltaTime35 36 if(timeOpenDoorPen lt= 0) 37 gameScreengetDoorPen()setVisibility(gameScreengetDoorPen()getVisibility())38

En este listado podemos ver el estado READY y un trozo del estado GAME de la maacutequina deestados definida en el apartado 231 de este documento inicialmente la maacutequina toma el estadoREADY como se puede ver en la linea 4 del listado 5111 este estado se ira repitiendo a cadavuelta del ciclo de vida del videojuego hasta que cambie el estado de juego a GAME estosucederaacute una vez transcurridos 3 segundos tal y como se puede ver en la linea 24 del listado5112 Hay que tener en cuenta que un videojuego tal y como se ha definido en el apartado 522de este documento forma un bucle infinito por tanto la funcioacuten update de la linea 1 de este listadose repetiraacute de forma indefinida durante la ejecucioacuten del nivel de juego y cada vuelta ejecutaraacute elestado en que se encuentre la maacutequina de estados

Paacutegina 74 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6Conclusiones El desarrollo del proyecto ha sido tal y como se esperaba en lineas generales no han habidograndes desviaciones de tiempo ni durante el disentildeo ni en el posterior desarrollo de este Cabedestacar que el hecho de poder probar el proyecto ejecutaacutendolo en la propia maacutequina donde se hadesarrollado sin tener que utilizar un dispositivo real o virtual cada vez que se ha querido verificarha hecho que el desarrollo sea mucho maacutes fluido que sino se hubiera contado con el escenariodescrito Esto no significa que en ciertos momentos del desarrollo no se haya probado con undispositivo real Android Dejando a parte la gran ventaja que esto significa ya que una vezdesarrollado el esfuerzo realizado nos sirve para distintas plataformas casi sin tener que tocarnada del coacutedigo

Por tanto el hecho de haber escogido libGDX para el desarrollo ha sido una buena eleccioacuten Estambieacuten una buena eleccioacuten escoger un framework o un motor focalizado al desarrollo devideojuegos si se quiere implementar uno ya sea para Android o para cualquier plataforma

Existe la posibilidad de desarrollarlo sin ninguacuten tipo de framework o motor pero hay que tenerclaro que se quiere hacer exactamente y a donde se quiere llegar es decir si lo que se quiere escentrarse en la programacioacuten de videojuegos es mucho mejor partir de un framework o motor yaque de esta forma nos desligamos de programar ciertos apartados que estaacuten maacutes focalizados a laprogramacioacuten de frameworks o motores para videojuegos que no a la programacioacuten devideojuegos en si

Yendo maacutes allaacute de donde el programador se quiere centrar existe otro factor importante a teneren cuenta en el momento de plantear un proyecto llamado tiempo con el tiempo de que se hadispuesto para este proyecto queda auacuten maacutes justificado la eleccioacuten de este framework pararealizarlo Ya que probablemente sin el debido al esfuerzo mayor en programar apartados que noson exclusivos del videojuego pudieran haber existido desviaciones de tiempo importantes enrelacioacuten al calendario propuesto

Ha quedado fuera del proyecto por temas de tiempo realizar animaciones a todos los personajesdel videojuego para conseguir una mejor experiencia de usuario y un nivel de acabado superiorFuera del proyecto tambieacuten ha quedado la implementacioacuten no solo de unas puntuacionesmaacuteximas a nivel local sino tambieacuten unas a nivel mundial consultables a traveacutes de una paacutegina webA su vez no solo guardariacutea la puntuacioacuten maacutexima sino tambieacuten el tiempo jugado las ovejassalvadas y los lobos ahuyentados Tambieacuten ha quedado fuera de este proyecto la realizacioacuten deun blog dedicado al videojuego Todos estos apartados se implementaran en breve fuera de esteTFC

7Recursos utilizados

71 Portada documento

Jake Maymar httpwwwflickrcomphotosmaymar5334789030httpcreativecommonsorglicensesby-sa20deeden

72 Recursos utilizados para el disentildeo del videojuego

Para realizar todo el disentildeo visual del videojuego se ha recurrido a diferentes fuentes de arte

Paacutegina 75 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriasujetas a licencias creative commons y dominio puacuteblico A continuacioacuten se detalla una lista decada recurso con su autor en el caso de que no haya sido publicado de forma anoacutenimajuntamente con el link donde se ha encontrado

721 Fotografiacutea pantalla intro videojuego y usuarios

Michael Karrerhttpwwwflickrcomphotosmichael_karrer78438470httpcreativecommonsorglicensesby-nc20deeden

Jodi Womackhttpwwwflickrcomphotosjodiwomack6217578512httpcreativecommonsorglicensesby20deeden

Tony Alterhttpwwwflickrcomphotos78428166N008279647916httpcreativecommonsorglicensesby20deeden

Gage Skidmore (Nina Dobrev)httpwwwflickrcomphotosgageskidmore5980906910httpcreativecommonsorglicensesby-sa20deeden

722 Iconos y botones

7221 Altavoz

Autor httpwwwiconshockcom Link httpswwwiconfindercomicons67771audio_speaker_iconsize=128Licencia Free for commercial use

7222 Nota Musical

Autor httpwwwdezinerfoliocomLink httpswwwiconfindercomicons58679music_iconsize=128Licencia Free for commercial use

7223 Flecha salida

Autorhttptayteldeviantartcom Linkhttpswwwiconfindercomicons41696arrow_back_grey_left_orange_iconsize=128LicenciaFree for commercial use (Include link to authors website) 7224 Icono de pausa

AutorhttpwwwwebdesignerdepotcomLink httpswwwiconfindercomicons40716blue_button_pause_iconsize=64Licencia Free for commercial use

7225 Icono interrogante (help)

AutorhttpwwwdoublejdesigncoukLinkhttpwwwiconarchivecomshowravenna-3d-icons-by-double-j-designHelp-iconhtml

Paacutegina 76 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLicencia httpcreativecommonsorglicensesby30

7226 Botones (Play Score Options)

AutorydLinkhttpopengameartorgcontentbuttons-variationsLicenciahttp creativecommonsorgpublicdomainzero10

723 Recursos graacuteficos 2D componentes escenario

7231 Ojos lobos

AutorCreek23Link httpopengameartorgcontentgnu-the-gnu-mascotLicencia httpcreativecommonsorglicensesby-sa30

7232 Ovejas y lobos

Autor lemmlingLink httpopenclipartorguser-clipartslemmlingLicencia httpopenclipartorgshare

7233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY

AutorSamLink httpopengameartorgcontentcountry-fieldLicencia httpcreativecommonsorgpublicdomainzero10

7234 Escenario

Daniel EddelandLinkhttpopengameartorgcontentlpc-farming-tilesets-magic-animations-and-ui-elementsLicenciahttpcreativecommonsorglicensesby-sa30

724 Fuentes

7241 ThinckheadAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10 7242 MisfortuneAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7243 TabaqueraAutor deFharoLink httpwwwdafontcomesfernando-harod3419l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7244 Press Start Font

Paacutegina 77 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAutor desconegutLink httpwwwzone38netfontpressstartLicencia httpscriptssilorgcmsscriptspagephpsite_id=nrsiampid=OFL

725 Otros

Todos los demaacutes recursos no nombrados en esta lista como el fondo de pantalla del menuacuteprincipal de inicio del juego y las letras del titulo del juego Fling the sheep impresas sobre lapantalla del menuacute inicial son de elaboracioacuten propia

726 Audio y efectos de sonido

7261 Menu

Autor mrpolyLinkhttpopengameartorgcontentmenu-musicLicencia httpcreativecommonsorgpublicdomainzero10

7262 Game Over

Autor MacroLinkhttpopengameartorgcontentrest-outro-loopLicenciahttpcreativecommonsorglicensesby30

7263 Game Play

AutorRezonerLinkhttpopengameartorgcontenttrance-menuLicenciahttpcreativecommonsorglicensesby30

7264 Creacutedits

Autor -Linkhttpopengameartorgcontent1-minute Licenciahttpcreativecommonsorgpublicdomainzero10

7265 Ready

httpopengameartorgcontentui-accept-or-forwardhttpcreativecommonsorglicensesby30

7266 Pause_Resume

httpopengameartorgcontentcompletion-sound httpcreativecommonsorglicensesby30

7267 Quit

httpopengameartorgcontentfly-swatter-squish-sound httpcreativecommonsorgpublicdomainzero10

7268 Sheep

Paacutegina 78 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

httpopengameartorgcontentsheep-sound-bleats-yo-frankiehttpcreativecommonsorglicensesby30

El resto de efectos de audio han sido obtenidos de la siguiente paacutegina httpwwwpond5com

8Lineas abiertas del proyecto Se haraacute un repaso del proyecto por si existe alguacuten bug para solucionarlo Posteriormente deadaptara para que sea funcional en distintas resoluciones de pantalla Se antildeadiraacuten los power-upsque se definieron al principio del proyecto por temas de tiempo han quedado fuera de la entregaA su vez se balanceara el gameplay antildeadiendo alguna mecaacutenica de juego extra si procede

Se publicara el juego en Google Play y se creara un blog del juego se mirara la posibilidad dehacer funcionar el juego en el blog con webGL httpprojects3cometcom

Se ampliara la tabla de puntuaciones de la siguiente manera la tabla no solamente guardara lospuntos tambieacuten guardara el tiempo jugado nuacutemero de lobos ahuyentados nuacutemero de ovejassalvadas y nombre del usuario con 5 caracteres Se creara un un registro de puntuaciones globalconsultable desde el blog del videojuego

Finalmente se crearan maacutes niveles de juego con distribuciones diferentes alguacuten nivel podriacuteatambieacuten tener mecaacutenicas diferentes de juego con los mismos personajeshellip

9Bibliografiacutea utilizada

Titulo Beginning Android Games (Second Edition) ISBN 978-1-43024-677-0

Autor Mario Zechner Robert Green

Editorial Apress

Contenido Desarrollo de videojuegos para Android

Titulo Learning libGDX Game Development ISBN 978-1-78216-604-7

Autor Andreas Oehlke

Editorial PACKT Publishing

Contenido Desarrollo de videojuegos para Android con libGDX

Paacutegina 79 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

10Otros proyectos realizados

101 Remake Gradius Konami

Remake del famoso shooter de Konami lanzado para ordenadores MSX en 1986 programadocon C++ con SDL Aunque este juego existe para multitud de plataformas Ver articulo wikipedia

httpeswikipediaorgwikiGradius_videojuego

Blog del proyecto httpprojects3cometcom

102 Tales of Nimria mini RPG

Mini RPG en 2D programado en C++ con DirectX este mini RPG trata de salvar a una princesacapturada por unas malvadas criaturas

Blog del proyecto httpprojects3cometcom

102 Motocalipsis Bar 66 RTS RTS en 3D con ambiente motero los hechos de la historia suceden en un pequentildeo pueblo deTexas Programado en Unity con C

Blog del proyecto httpmotocalipsisbar66blogspotcomes

Paacutegina 80 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Creative Commons 40 license by-nc-sa

Attribution-NonCommercial-ShareAlike 40 International

===========================================================

Creative Commons Corporation (Creative Commons) is not a law firm anddoes not provide legal services or legal advice Distribution ofCreative Commons public licenses does not create a lawyer-client orother relationship Creative Commons makes its licenses and relatedinformation available on an as-is basis Creative Commons gives nowarranties regarding its licenses any material licensed under theirterms and conditions or any related information Creative Commonsdisclaims all liability for damages resulting from their use to thefullest extent possible

Using Creative Commons Public Licenses

Creative Commons public licenses provide a standard set of terms andconditions that creators and other rights holders may use to shareoriginal works of authorship and other material subject to copyrightand certain other rights specified in the public license below Thefollowing considerations are for informational purposes only are notexhaustive and do not form part of our licenses

Considerations for licensors Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights Our licenses are irrevocable Licensors should read and understand the terms and conditions of the license they choose before applying it Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected Licensors should clearly mark any material not subject to the license This includes other CC- licensed material or material used under an exception or limitation to copyright More considerations for licensors wikicreativecommonsorgConsiderations_for_licensors

Considerations for the public By using one of our public licenses a licensor grants the public permission to use the licensed material under specified terms and conditions If the licensors permission is not necessary for any reason--for example because of any applicable exception or limitation to copyright--then that use is not regulated by the license Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant Use of

Paacutegina 81 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria the licensed material may still be restricted for other reasons including because others have copyright or other rights in the material A licensor may make special requests such as asking that all changes be marked or described Although not required by our licenses you are encouraged to respect those requests where reasonable More_considerations for the public wikicreativecommonsorgConsiderations_for_licensees

===========================================================

Creative Commons Attribution-NonCommercial-ShareAlike 40 InternationalPublic License

By exercising the Licensed Rights (defined below) You accept and agreeto be bound by the terms and conditions of this Creative CommonsAttribution-NonCommercial-ShareAlike 40 International Public License(Public License) To the extent this Public License may beinterpreted as a contract You are granted the Licensed Rights inconsideration of Your acceptance of these terms and conditions and theLicensor grants You such rights in consideration of benefits theLicensor receives from making the Licensed Material available underthese terms and conditions

Section 1 -- Definitions

a Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated altered arranged transformed or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor For purposes of this Public License where the Licensed Material is a musical work performance or sound recording Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image

b Adapters License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License

c BY-NC-SA Compatible License means a license listed at creativecommonsorgcompatiblelicenses approved by Creative Commons as essentially the equivalent of this Public License

d Copyright and Similar Rights means copyright andor similar rights closely related to copyright including without limitation performance broadcast sound recording and Sui Generis Database

Paacutegina 82 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Rights without regard to how the rights are labeled or categorized For purposes of this Public License the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights

e Effective Technological Measures means those measures that in the absence of proper authority may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20 1996 andor similar international agreements

f Exceptions and Limitations means fair use fair dealing andor any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material

g License Elements means the license attributes listed in the name of a Creative Commons Public License The License Elements of this Public License are Attribution NonCommercial and ShareAlike

h Licensed Material means the artistic or literary work database or other material to which the Licensor applied this Public License

i Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license

j Licensor means the individual(s) or entity(ies) granting rights under this Public License

k NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation For purposes of this Public License the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange

l Share means to provide material to the public by any means or process that requires permission under the Licensed Rights such as reproduction public display public performance distribution dissemination communication or importation and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them

Paacutegina 83 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria m Sui Generis Database Rights means rights other than copyright resulting from Directive 969EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases as amended andor succeeded as well as other essentially equivalent rights anywhere in the world

n You means the individual or entity exercising the Licensed Rights under this Public License Your has a corresponding meaning

Section 2 -- Scope

a License grant

1 Subject to the terms and conditions of this Public License the Licensor hereby grants You a worldwide royalty-free non-sublicensable non-exclusive irrevocable license to exercise the Licensed Rights in the Licensed Material to

a reproduce and Share the Licensed Material in whole or in part for NonCommercial purposes only and

b produce reproduce and Share Adapted Material for NonCommercial purposes only

2 Exceptions and Limitations For the avoidance of doubt where Exceptions and Limitations apply to Your use this Public License does not apply and You do not need to comply with its terms and conditions

3 Term The term of this Public License is specified in Section 6(a)

4 Media and formats technical modifications allowed The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created and to make technical modifications necessary to do so The Licensor waives andor agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights including technical modifications necessary to circumvent Effective Technological Measures For purposes of this Public License simply making modifications authorized by this Section 2(a) (4) never produces Adapted Material

5 Downstream recipients

a Offer from the Licensor -- Licensed Material Every recipient of the Licensed Material automatically

Paacutegina 84 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License

b Additional offer from the Licensor -- Adapted Material Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapters License You apply

c No downstream restrictions You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material

6 No endorsement Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are or that Your use of the Licensed Material is connected with or sponsored endorsed or granted official status by the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i)

b Other rights

1 Moral rights such as the right of integrity are not licensed under this Public License nor are publicity privacy andor other similar personality rights however to the extent possible the Licensor waives andor agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights but not otherwise

2 Patent and trademark rights are not licensed under this Public License

3 To the extent possible the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme In all other cases the Licensor expressly reserves any right to collect such royalties including when the Licensed Material is used other than for NonCommercial purposes

Paacutegina 85 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 3 -- License Conditions

Your exercise of the Licensed Rights is expressly made subject to thefollowing conditions

a Attribution

1 If You Share the Licensed Material (including in modified form) You must

a retain the following if it is supplied by the Licensor with the Licensed Material

i identification of the creator(s) of the Licensed Material and any others designated to receive attribution in any reasonable manner requested by the Licensor (including by pseudonym if designated)

ii a copyright notice

iii a notice that refers to this Public License

iv a notice that refers to the disclaimer of warranties

v a URI or hyperlink to the Licensed Material to the extent reasonably practicable

b indicate if You modified the Licensed Material and retain an indication of any previous modifications and

c indicate the Licensed Material is licensed under this Public License and include the text of or the URI or hyperlink to this Public License

2 You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium means and context in which You Share the Licensed Material For example it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information 3 If requested by the Licensor You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable

Paacutegina 86 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria b ShareAlike

In addition to the conditions in Section 3(a) if You Share Adapted Material You produce the following conditions also apply

1 The Adapters License You apply must be a Creative Commons license with the same License Elements this version or later or a BY-NC-SA Compatible License

2 You must include the text of or the URI or hyperlink to the Adapters License You apply You may satisfy this condition in any reasonable manner based on the medium means and context in which You Share Adapted Material

3 You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to Adapted Material that restrict exercise of the rights granted under the Adapters License You apply

Section 4 -- Sui Generis Database Rights

Where the Licensed Rights include Sui Generis Database Rights thatapply to Your use of the Licensed Material

a for the avoidance of doubt Section 2(a)(1) grants You the right to extract reuse reproduce and Share all or a substantial portion of the contents of the database for NonCommercial purposes only

b if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material including for purposes of Section 3(b) and

c You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database

For the avoidance of doubt this Section 4 supplements and does notreplace Your obligations under this Public License where the LicensedRights include other Copyright and Similar Rights

Paacutegina 87 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 5 -- Disclaimer of Warranties and Limitation of Liability

a UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR TO THE EXTENT POSSIBLE THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL WHETHER EXPRESS IMPLIED STATUTORY OR OTHER THIS INCLUDES WITHOUT LIMITATION WARRANTIES OF TITLE MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE NON-INFRINGEMENT ABSENCE OF LATENT OR OTHER DEFECTS ACCURACY OR THE PRESENCE OR ABSENCE OF ERRORS WHETHER OR NOT KNOWN OR DISCOVERABLE WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART THIS DISCLAIMER MAY NOT APPLY TO YOU

b TO THE EXTENT POSSIBLE IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING WITHOUT LIMITATION NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT SPECIAL INDIRECT INCIDENTAL CONSEQUENTIAL PUNITIVE EXEMPLARY OR OTHER LOSSES COSTS EXPENSES OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES COSTS EXPENSES OR DAMAGES WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART THIS LIMITATION MAY NOT APPLY TO YOU

c The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that to the extent possible most closely approximates an absolute disclaimer and waiver of all liability

Section 6 -- Term and Termination

a This Public License applies for the term of the Copyright and Similar Rights licensed here However if You fail to comply with this Public License then Your rights under this Public License terminate automatically

b Where Your right to use the Licensed Material has terminated under Section 6(a) it reinstates

1 automatically as of the date the violation is cured provided it is cured within 30 days of Your discovery of the violation or

2 upon express reinstatement by the Licensor

For the avoidance of doubt this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License

Paacutegina 88 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

c For the avoidance of doubt the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time however doing so will not terminate this Public License

d Sections 1 5 6 7 and 8 survive termination of this Public License

Section 7 -- Other Terms and Conditions

a The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed

b Any arrangements understandings or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License

Section 8 -- Interpretation

a For the avoidance of doubt this Public License does not and shall not be interpreted to reduce limit restrict or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License

b To the extent possible if any provision of this Public License is deemed unenforceable it shall be automatically reformed to the minimum extent necessary to make it enforceable If the provision cannot be reformed it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions

c No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor

d Nothing in this Public License constitutes or may be interpreted as a limitation upon or waiver of any privileges and immunities that apply to the Licensor or You including from the legal processes of any jurisdiction or authority

===========================================================

Paacutegina 89 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaCreative Commons is not a party to its public licensesNotwithstanding Creative Commons may elect to apply one of its publiclicenses to material it publishes and in those instances will beconsidered the Licensor Except for the limited purpose of indicatingthat material is shared under a Creative Commons public license or asotherwise permitted by the Creative Commons policies published atcreativecommonsorgpolicies Creative Commons does not authorize theuse of the trademark Creative Commons or any other trademark or logoof Creative Commons without its prior written consent includingwithout limitation in connection with any unauthorized modificationsto any of its public licenses or any other arrangementsunderstandings or agreements concerning use of licensed material Forthe avoidance of doubt this paragraph does not form part of the publiclicenses

Creative Commons may be contacted at creativecommonsorg

Paacutegina 90 de 102

Page 8: Universitat Oberta de Catalunya UOC Ingeniería técnica en

214222 IA021 Ojos por la derecha o por la izquierda25214223 IA022 Escoge el tipo de lobo26214224 IA023 Lobo por la derecha o por la izquierda26214225 IA024 Salta a escena27214226 IA025 Movimiento lobo27

22 Disentildeo inicial diagrama de clases28221 Diagrama de clases inicial ldquoFling the sheeprdquo 28

2211 Resumen clases videojuego28222 Diagrama de clases inicial de pantallas30

2221 Resumen clases pantallas3023 Definicioacuten de maacutequinas de estado finitas31

231 Maacutequina de estados del videojuego 31232 Maacutequina de estados comportamiento oveja32233 Maacutequina de estados comportamiento lobo33234 Maacutequina de estados tutorial in game34

3 Disentildeo3531 Estudio comparativo35

311 Sheep amp Wolf36312 Sheep Up 37313 Temple Run38314 Attack of the Spooklings39

32 Perfiles de usuarios identificados4033 Contextos de uso42

331 iquest Doacutende 42332 iquest Cuaacutendo 42333 iquest En que entorno 42

4Disentildeo y ldquoConcept Artrdquo4241 Elementos presentes en la interfaz de la aplicacioacuten4242 Flujos de interaccioacuten4343 Prototipaje44

431 Sketches44432 Transiciones definidas entre pantallas47433 Prototipo horizontal de alta fidelidad 48

4331 Pantalla inicial484332 Pantalla menuacute principal del juego484333 Pantalla de opciones494334 Pantalla de creacuteditos494335 Pantalla tabla de puntuaciones504336 Pantalla de juego READY 504337 Pantalla de juego514338 Pantalla de pausa botones RESUME y QUIT524339 Pantalla GAME OVER5243310 Pantalla de instrucciones de juego HOW TO PLAY5343311 Pantalla de instrucciones in game 53

5Implementacioacuten5551 Arquitectura global55

511 Arquitectura del framework libGDX55512 Visioacuten de los moacutedulos de libGDX55

52 Arquitectura de un videojuego56521 Programa vs Aplicacioacuten56

ii

522 Estructura baacutesica de un videojuego5653 Esquema de la estructura baacutesica de un videojuego5854 Patrones de disentildeo59

541 Introduccioacuten59542 Patrones de creacioacuten59543 Singleton59

55 Diagramas de clases definitivos6156 Diagramas nuacutecleo videojuego 6157 Diagrama de clases objetos videojuego6458 Diagrama de clases pantallas videojuego6759 Configurar el entorno de desarrollo69

591 Instalacioacuten 69510 Traspaso del disentildeo a texturas 71511 Implementacioacuten de las maacutequinas de estado 73

6Conclusiones757Recursos utilizados 75

71 Portada documento 7572 Recursos utilizados para el disentildeo del videojuego 75

721 Fotografiacutea pantalla intro videojuego y usuarios 76722 Iconos y botones76

7221 Altavoz767222 Nota Musical767223 Flecha salida767224 Icono de pausa767225 Icono interrogante (help)767226 Botones (Play Score Options)77

723 Recursos graacuteficos 2D componentes escenario777231 Ojos lobos777232 Ovejas y lobos777233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY777234 Escenario77

724 Fuentes777241 Thinckhead777242 Misfortune777243 Tabaquera777244 Press Start Font77

725 Otros78726 Audio y efectos de sonido78

7261 Menu 787262 Game Over787263 Game Play787264 Creacutedits787265 Ready787266 Pause_Resume787267 Quit787268 Sheep78

8Lineas abiertas del proyecto799Bibliografiacutea utilizada 7910Otros proyectos realizados80

101 Remake Gradius Konami80

iii

102 Tales of Nimria mini RPG80102 Motocalipsis Bar 66 RTS80

Creative Commons 40 license by-nc-sa81

Iacutendice de ilustracionesilustracioacuten 1 Ciclo de vida en cascada4ilustracioacuten 11 Calendario proyecto7ilustracioacuten 2 Diagrama de gantt8ilustracioacuten 3 Diagrama de casos de usos actor jugador11ilustracioacuten 4 Diagrama de casos de usos personaje principal19ilustracioacuten 5 Diagrama de casos de usos enemigos24ilustracioacuten 6 Diagrama de clases videojuego28ilustracioacuten 7 Diagrama de clases de pantallas30ilustracioacuten 8 Maacutequina de estados del videojuego 31ilustracioacuten 9 Maacutequina de estados comportamiento oveja 32ilustracioacuten 10 Maacutequina de estados comportamiento lobo 33ilustracioacuten 11 Maacutequina de estados tutorial in game 34ilustraciones 12 y 13 pantallas juego Sheep amp Wolf 36ilustraciones 14 y 15 pantallas juego Sheep Up 37ilustraciones 16 y 17 pantallas juego Temple run38ilustraciones 18 y 19 pantallas juego Attack of the Spooklings39ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitas41ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintas pantallas43ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada44ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada45ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada46ilustracioacuten 241 Transiciones definidas entre pantallas47ilustracioacuten 242 Disentildeo pantallas con Gimp54ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en un videojuego55ilustracioacuten 26 Estructura baacutesica de un videojuego 58ilustracioacuten 27 Singleton59ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego 63ilustracioacuten 29 Diagrama de clases Assets 64ilustracioacuten 30 Diagrama de clases objetos 66ilustracioacuten 31 Diagrama de clases pantallas 68ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse69ilustracioacuten 33 Creacioacuten proyecto libGDX70ilustracioacuten 34 Creacioacuten proyecto libGDX70ilustracioacuten 35 Capas separadas por imaacutegenes71Ilustracioacuten 36 Texture packer 72ilustracioacuten 37 Posicioacuten texturas 73

iv

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

1Introduccioacuten

11 Justificacioacuten y contexto del proyecto

Este trabajo de fin de carrera en adelante TFC se centra en el desarrollo de aplicaciones paradispositivos moacuteviles con sistema operativo Android Actualmente existen multitud de aplicacionesNo obstante este TFC se quiere centrar en un subconjunto de aplicaciones focalizadas alentretenimiento conocidas por todo el mundo como videojuegos

Un videojuego es un software creado para el entretenimiento en general y basado en lainteraccioacuten entre una o varias personas y un aparato electroacutenico que ejecuta dicho videojuego Asiacutepues un videojuego es considerado un software cuyo fin directo es el entretenimiento

En estos uacuteltimos antildeos los smartphones y tabletas se han convertido en las nuevas plataformasmoacuteviles para juegos que compiten con los sistemas portaacutetiles claacutesicos que generalmente tienden aser maacutes cerrados

Los videojuegos se pueden clasificar en distintos geacuteneros estos son una forma de clasificacioacutenque designan un conjunto de videojuegos que poseen una serie de elementos comunes A lo largode la historia de los videojuegos aquellos elementos que han compartido varios de los mismos hanservido para clasificar como un geacutenero a aquellos que les han seguido en estilo y forma de lamisma manera que ha pasado con la muacutesica o el cine Como ejemplo se enumeran algunos de losgeacuteneros maacutes populares Lucha Disparos conocidos como Shooters Sigilo Plataformas ArcadeDeporte etc

Durante mucho tiempo los videojuegos estuvieron reservados para un tipo de usuario muyconcreto con un perfil muy especiacutefico la gran mayoriacutea eran hombres entre 15 y 25 antildeos Saliendode este perfil si se buscaban mujeres o personas mayores de 25 antildeos el nuacutemero de usuarioscaiacutea en picado y es que los videojuegos eran percibidos como el hobby de los adolescentesmasculinos No obstante en los uacuteltimos antildeos se ha visto coacutemo todo esto ha ido cambiando con unaumento tanto del puacuteblico femenino como la aparicioacuten en escena de usuarios con edades maacutesavanzadas

Este cambio ha venido motivado por diferentes motivos evolutivos dentro de la industria delvideojuego Uno de los motivos que ha provocado esto es la aparicioacuten de los teleacutefonos moacutevilesinteligentes tabletas y juegos online junto con gran cantidad de videojuegos de tipo casual Otroclaro motivo es que la mayoriacutea de los que jugaacutebamos hace 25 antildeos pues hoy seguimos jugandoya que hemos crecido con esta cultura y claro esta que a diacutea de hoy ya no tenemos la edad deentonces

12 Descripcioacuten del Proyecto Este proyecto se quiere centrar en el desarrollo de un videojuego de tipo casual para moacutevilesAndroid Estos son un tipo de videojuegos dirigidos a un puacuteblico de jugadores casuales Losvideojuegos casuales pueden tener cualquier tipo de mecaacutenica de juego y ser clasificados dentrode cualquier otro geacutenero Son diferenciados por sus reglas simples y de no requerir un excesivocompromiso en contraste con la mayoriacutea de juegos maacutes complejos No requieren una dedicacioacutende tiempo a largo plazo o habilidades especiales para jugar

Paacutegina 1 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Durante la realizacioacuten del proyecto se realizara el disentildeo del juego por disentildeo se entienderealizar un documento que defina el juego de forma generalizada mecaacutenicas personajes etceste documento es conocido como el ldquogame designrdquo el disentildeo de arte conocido como ldquoConcepartrdquo engloba todo lo relacionado con el aspecto graacutefico del juego estilos de personajes estilos degraacuteficos etc Finalmente se realizara el anaacutelisis disentildeo e implementacioacuten de laaplicacioacuten(videojuego) con las tecnologiacuteas escogidas para este proyecto

13 Objetivos

El objetivo principal de este TFC es adquirir experiencia en el desarrollo de videojuegos paraAndroid Sin embargo yendo maacutes allaacute de la plataforma tambieacuten existe un intereacutes por ampliarconocimientos en cuanto a programacioacuten y disentildeo de videojuegos en general

En cuanto al disentildeo y desarrollo del videojuego se pretende realizar un casual game con lassiguientes caracteriacutesticas

El juego consistiraacute en conducir unas ovejas descarriadas a su corral eacutestas con nuestra ayudadeberaacuten sortear los peligros que iraacuten apareciendo durante el camino hacia el deseado corral Elprincipal peligro que amenaza las ovejas son unos lobos malvados que quieren comeacuterselas Elvideojuego soacutelo dispondraacute de una uacutenica modalidad de juego para un uacutenico jugador Al tratarse deun juego casual el publico objetivo es muy amplio Se pretende conseguir un ldquolook amp feelrdquo conesteacutetica tipo cartoon en clave de humor El juego sera desarrollado en 2D con perspectiva cenital

131 Definicioacuten del videojuego

El nivel se describe como una pantalla estaacutetica con vista cenital en posicioacuten vertical Con estaacuteticase entiende que no hay ninguacuten tipo de scroll que haga desplazar la pantalla Siempre veremos lomismo

En la parte de arriba del todo apareceraacute un corral con una puerta la puerta se iraacute abriendo ycerrando de forma aleatoria Por los extremos de la pantalla habraacute arbustos que representaran loslimites del bosque De estos limites iraacuten saliendo lobos a la escena que se querraacuten comer a laspobres ovejas Estas ovejas permaneceraacuten en la parte de abajo de la pantalla e iraacuten saliendo a laescena ellas solas sin saber demasiado donde van(son ovejas descarriadas) nuestra misioacutenconsistiraacute en tirarlas hacia el corral para salvarlas de los malvados lobos metiendolas por lapuerta en los momentos que este abierta para lanzarlas tendremos que deslizar el dedo encimade ellas para darles impulso hacia el corral si no acertamos en meter la oveja en la puerta estarebotara como si de un pelota se tratase Los lobos iraacuten saliendo para sacarnos los lobos deencima deberemos deslizar nuestro dedo encima de ellos o tocarlos para ahuyentarlos De lobos habraacute de diferentes colores marrones grises y azulados Cada lobo loahuyentaremos de manera distinta

bull Marrones 1 pulsacioacuten o deslizar 1 vez el dedo sobre el lobobull Grises 2 pulsaciones o deslizar 2 veces el dedo sobre el lobobull Azulados 3 pulsaciones o deslizar 3 veces el dedo sobre el lobo

A parte de impedir que se coman las ovejas que estaacuten en camino hacia el corral tambieacutentendremos que evitar que los lobos lleguen a la parte de abajo donde estaacute el grupo de ovejas yaque esto nos haraacute perder vidas el juego inicialmente empezara con 3 vidas pudiendo alcanzar unmaacuteximo de 6 vidas en total cada 10000 puntos obtendremos un vida extra

Paacutegina 2 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Conforme el juego se va desarrollando eacuteste iraacute acumulando

bull Puntosbull Tiempo jugadobull Numero de lobos ahuyentadosbull Ovejas colocadas en el corral

Se tratara pues de ir mejorando nuestro propio reacutecord partida tras partida El juego iraacuteaumentando de dificultad durante el transcurso de la partida

Como apunte final el juego recibe el nombre de ldquoFling the sheeprdquo que traducido al espantildeolvendriacutea a ser algo como ldquolanzar las ovejasrdquo

Paacutegina 3 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

14 Planificacioacuten

141 Ciclo de vida

Un videojuego no deja de ser un proyecto de software por tanto para la realizacioacuten de esteproyecto se ha tomado como base el ciclo de vida claacutesico de cualquier proyecto de softwaremodificado ligeramente a las necesidades del proyecto Este ciclo de vida que tambieacuten sedenomina ciclo de vida en cascada se compone de las siguientes etapas

ilustracioacuten 1 Ciclo de vida en cascada

142 Planificacioacuten detallada del proyecto

En los siguientes apartados se recogen por cada etapa que compone el ciclo de vida las principales actividades realizadas con el objetivo de alcanzar el producto deseado dentro delos plazos definidos

1411 Anaacutelisis previo planificacioacuten

En este punto se ha abordado la visioacuten global del proyecto comprendida en establecer lospuntos iniciales necesarios para crear una planificacioacuten de tareas en funcioacuten de las actividades arealizar

Actividad Descripcioacuten

Disentildeo conceptual del videojuego Mecaacutenicas del videojuego

Definicioacuten de las tecnologiacuteas Tecnologiacuteas que se utilizaran en el desarrollo delvideojuego

Anaacutelisis de riesgos Posibles riesgos del proyecto

Planificacioacuten del proyecto Crear una planificacioacuten adaptada a los plazos de entregade este TFC

Paacutegina 4 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Redaccioacuten del documento Generacioacuten del plan de trabajo

Entrega de la PEC1 Entrega del documento

1412 Anaacutelisis de requisitos

En esta fase se ha detallado que necesidades debe cubrir el videojuego tanto desde un puntode vista funcional como desde un punto de vista arquitectoacutenico de la aplicacioacuten a disentildear se hadisentildeado un modelo troncal de clases para posteriormente desarrollar en base a estas todo elvideojuego No obstante en ninguacuten caso se ha entrado en detalle en las tecnologiacuteas a utilizar yadefinidas previamente

Actividad Descripcioacuten

Especificacioacuten de requisitos funcionales Definicioacuten de casos de usos

Disentildeo baacutesico estructura aplicacioacuten Diagrama baacutesico de clases

Especificacioacuten de requisitos funcionales Definicioacuten de maacutequinas de estado

1413 Disentildeo

En este apartado teniendo en cuenta que en este proyecto se va a desarrollar un videojuego seha realizado la recopilacioacuten conceptual de arte conjuntamente con el disentildeo de todas laspantallas que intervienen en el Conjuntamente con la seleccioacuten de los tipos de fuente que seutilizaran para el videojuego seleccioacuten de personajes y enemigos

Actividad Descripcioacuten

Definicioacuten de usuarios y contexto de uso delvideojuego

Conocer las caracteriacutesticas de los usuarios susnecesidades y objetivos asiacute como los contextosde uso

Disentildeo conceptual Un escenario de uso describe desde el puntode vista del usuario como seraacute utilizado unproducto determinado (es este caso unvideojuego) en un escenario determinado

Seleccioacuten de arte Seleccioacuten de arte ya hecho con licencias libresya que no se disponen de conocimientos dearte para abordar el disentildeo

Seleccioacuten de fuentes Seleccioacuten de los tipos de fuente adecuadospara el disentildeo del videojuego

Seleccioacuten de personajes y enemigos Seleccioacuten de personajes y enemigosdisponibles en la red con licencias libres ya queno se disponen de conocimientos de arte paraabordar el disentildeo

Disentildeo de pantallas que intervienen(prototipo) Con todo el arte fuentes y personajes serealizara el disentildeo de todas las pantallas queintervienen en el juego Realizacioacuten de unboceto a mano alzada Sketches y prototipo dealta fidelidad

Redaccioacuten del documento Generacioacuten del documento de disentildeo

Paacutegina 5 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Entrega de la PEC2 Entrega del documento

1414 Implementacioacuten y pruebas

En este punto se ha desarrollado la implementacioacuten del videojuego partiendo de todas lasdefiniciones de los apartados anteriores y las verificaciones oportunas para asegurar el correctofuncionamiento del videojuego

Actividad Descripcioacuten

Implementacioacuten de navegables y contenidos Implementacioacuten de la estructura de todas lapantallas del video juego y la navegabilidadentre ellas y las funciones principales de cadauna de ellas

Implementacioacuten del gameplay Implementacioacuten de la logica de juego

Implementacioacuten de sonido y efectos Implementacioacuten de los efectos de sonido y lamusica

Version alpha del videojuego En este punto se dispone de un videojuegofuncional listo para ser revisado y refinado

Pruebas y refinamiento de la implementacioacuten Pruebas y correcioacutenes de posibles errores

Preparacioacuten del paquete entregable y laredaccioacuten del documento

Testeo final y preparacioacuten del apk a entregarmas la redaccioacuten del documento estrutural delaplicacioacuten

Entrega de la PEC3 Entrega del documento

1415 Finalizacioacuten

En un proyecto de software esta parte quedariacutea focalizada en la fase de implantacioacuten y puesta enmarcha Sin embargo al tratarse de un videojuego esta fase quedariacutea focalizada en la fase delanzamiento del producto No obstante en este caso se ha utilizado para documentar todo eltrabajo realizado a lo largo de este TFC

Actividad Descripcioacuten

Redaccioacuten memoria final proyecto Redaccioacuten memoria final

Montaje presentacioacuten diapositivas Montaje presentacioacuten diapositivas

Montaje del video final presentacioacuten proyecto Montaje del video final presentacioacuten proyecto

Entrega final Entega final

Paacutegina 6 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria143 Temporalizacioacuten del proyecto

La siguiente ilustracioacuten muestra el calendario definido para el proyecto

ilustracioacuten 11 Calendario proyecto

Paacutegina 7 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

En la siguiente pagina se muestra una ilustracioacuten del diagrama de gantt correspondiente alcalendario mostrado en la ilustracioacuten 1

ilustracioacuten 2 Diagrama de gantt

Paacutegina 8 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

15 Herramientas y tecnologiacuteas utilizadas

Actualmente existen varios frameworks para desarrollar videojuegos sobre plataformas moacutevilesSe ha hecho un anaacutelisis comparativo preliminar entre Cocos2D-android1 Cocos2D-x y libGDXaunque existen otros estos tres son los maacutes nombrados y utilizados

Cocos2d-android1 Es un framework en Java basado en la versioacuten de cocos2d-android queesta basado en la versioacuten de cocos2d para iphone Este framework permite el desarrollo devideojuegos en 2D y se programa en Java en lugar de objective-c Para la versioacuten Cocos2d deiphone Actualmente este framework no parece tener mucha continuidad por parte de lacomunidad de desarrolladores aunque no estaacute discontinuado del todo

Cocos2D-x Es un framework en C++ multi-plataforma permite desarrollar para diferentesplataformas a la vez con el mismo coacutedigo Android iOS Bada Marmalade Windows Linux etcSin embargo aunque es un framework con una comunidad muy activa su documentacioacuten esbastante mejorable Se programa en C++ y es posible trabajar con distintos entornos de desarrollocomo Visual Studio o Eclipse El proceso de depuracioacuten con eclipse es algo complejo con C++JNIcon varios pasos a seguir para poder depurar A la vez su configuracioacuten en el entorno Eclipse noes trivial Finalmente tiene relativamente todaviacutea poco tiempo de vida

LibGDX Es un framework escrito en Java sobre C++ ya que las partes criacuteticas estaacuten escritascon coacutedigo nativo para conseguir el mejor rendimiento posible Tiene una comunidad dedesarrolladores muy activa y una documentacioacuten muy extensa Se programa con Java y permite ladepuracioacuten ejecutando la aplicacioacuten en el escritorio de la maacutequina sin tener que pasar por undispositivo real o uno virtual En caso de que se quiera probar en un dispositivo real es posiblehacerlo sin ninguacuten cambio sobre el coacutedigo Este hecho hace que el desarrollo sea maacutes fluidoTiene un rendimiento bastante alto ante cocos2d-x y otros frameworks existentes para eldesarrollo de videojuegos

Todo lo expuesto anteriormente provoca una inclinacioacuten definitiva a utilizar libGDX paraimplementar el videojuego Asiacute pues el videojuego seraacute escrito en Java utilizando el IDE Eclipseque es el soportado oficialmente para Android utilizando el framework libGDX

Para la realizacioacuten de este proyecto se han utilizado las siguientes herramientas

bull Planificacioacuten proyecto

Microsoft Project Professional 2010

bull Disentildeo

Gimp 28 Inkscape 048 TexturePacker 320 Microsoft Visio Professional 2010

bull Programacioacuten

Entorno de desarrollo Eclipse 421 Juno Android develompment tools ADT Android SDK

Paacutegina 9 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Framework libGDX 098 ObjectAid herramienta de visualizacioacuten de coacutedigo en UML para Eclipse Control de versiones Git utilizando como plataforma GitHub

bull Edicioacuten de audio

Audacity 203 GoldWave 569

bull Redaccioacuten de documentos

OpenOffice 401

bull Edicioacuten de viacutedeo

Adobe Premiere Pro CS55

16 Riesgos del proyecto

Se parte de una experiencia previa en desarrollo de videojuegos ver apartado 9 otros proyectosrealizados al final de este documento Aunque no se dispone de experiencia con la libreriacuteaescogida ni tampoco con programacioacuten sobre Android A nivel teacutecnico no se preveacute que puedansurgir muchos riesgos en liacuteneas generales No obstante existe la posibilidad de gastar maacutestiempo del previsto consultando documentacioacuten para lograr los objetivos establecidos

Existe un riesgo maacutes alto a nivel artiacutestico ya que no se dispone de ninguacuten conocimiento de artede ninguacuten tipo Por lo tanto muy probablemente a nivel artiacutestico el juego sea un poco justo Es poreste motivo que durante la realizacioacuten de este proyecto no se va a profundizar en temas de disentildeoartiacutestico en su lugar se utilizaran recursos de arte existentes en la red con licencias libres tipocreative commons o dominio puacuteblico Al final de este documento en el apartado 6 se puede ver unlistado de los recursos utilizados juntamente con un link a la obra y el nombre del autor si esteesta disponible Se haraacute una seleccioacuten de distintos tipos de recursos graacuteficos para posteriormentehacer el montaje de toda la parte graacutefica del videojuego En cuanto a la parte de audio la situacioacuten es exactamente la misma no se dispone de ninguacutenconocimiento para componer muacutesica ni efectos Por lo tanto se buscaraacuten sonidos y temasmusicales con licencias libres Intentando que estos queden integrados de la mejor maneraposible al videojuego

Finalmente existe el riesgo de que el gameplay definido en el disentildeo conceptual del videojuegouna vez puesto en praacutectica no sea del todo funcional o necesite de un balanceo para conseguirun juego equilibrado y jugable

Paacutegina 10 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2 Anaacutelisis funcional Basaacutendonos en el aparatado ldquo131 Definicioacuten del videojuegordquo se han definido los requisitosfuncionales necesarios para este con la definicioacuten de casos de uso Posteriormente se ha definidoun diagrama de clases inicial el cual ha servido como punto de partida para el desarrollo completodel videojuego A su vez se definen las maacutequinas de estado finitas utilizadas para el desarrollo

21 Requisitos funcionales casos de uso

En este apartado se presentan tres diagramas de casos de uso El primer diagrama engloba lavista generalizada del actor ldquojugadorrdquo y los casos de uso que describen los requisitos funcionalesdel sistema En los dos diagramas restantes se describen la vista generalizada del actor ldquoIArdquo porIA se entiende la inteligencia artificial del videojuego Los diagramas muestran los requisitosfuncionales de la IA para el personaje principal y los enemigos La IA interactuacutea con el sistema ypor tanto seraacute susceptible de analizar su uso de la aplicacioacuten

211 Diagrama casos de uso actor ldquoJugadorrdquo

ilustracioacuten 3 Diagrama de casos de usos actor jugador

Paacutegina 11 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Como se puede observar en la ilustracioacuten 3 el sistema solo dispone de un uacutenico actor Que eneste caso es el jugador del videojuego es decir representa todos los posibles usuarios quepueden jugar al videojuego

En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 3estos seraacuten desarrollados en la seccioacuten posterior

212 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

VJ01 Inicio videojuego Jugador

VJ02 Jugar Jugador

VJ03 Acceder puntuaciones maacuteximas Jugador

VJ31 Consultar puntuacione locales Jugador

VJ32 Salir puntuacione locales Jugador

VJ04 Acceder a las opciones Jugador

VJ41 Activar o desactivar muacutesica o efectos Jugador

VJ42 Acceder a la pantalla de creacuteditos Jugador

VJ421 Salir de la pantalla de creacuteditos Jugador

VJ43 Salir de las opciones Jugador

VJ05 Acceder a las instrucciones Jugador

VJ51 Salir de las intrucciones Jugador

VJ06 Salir del videojuego Jugador

213 Descripcioacuten textual de los casos de uso

2131 VJ01 Inicio videojuego

Identificador VJ01

Nombre Inicio videojuego

Autor Xavier Figuera

Resumen El usuario inicia el videojuego

Actor(es) Jugador

Precondiciones Ninguna el videojuego no habiacutea sido iniciado auacuten

Postcondiciones El usuario a iniciado el videojuego a visualizado la pantalla de introdurante un segundo y se encuentra en la pantalla del menuacute principal

Flujo normal 1 El usuario accede a la lista de aplicaciones de su dispositivo 2 Busca el acceso al videojuego3 Ejecuta el programa4 Se carga la aplicacioacuten5 El videojuego muestra la pantalla de intro

Paacutegina 12 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6 Se muestra el menuacute principal al jugador

Flujos alternativos Se podriacutea dar el caso que el usuario accediera al videojuego desde algunacceso directo en alguno de los escritorios del dispositivo

Inclusiones Ninguna

Extensiones Ninguna

2132 VJ02 Jugar

Identificador VJ02

Nombre Jugar

Autor Xavier Figuera

Resumen Jugar al videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario empieza a jugar

Flujo normal 1 El usuario pulsa el botoacuten play del menuacute principal 2 El usuario juega3 El usuario puede volver a jugar una vez finalizada la partida 4 El usuario puede salir del juego en cualquier momento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2133 VJ03 Acceder puntuaciones maacuteximas locales

Identificador VJ03

Nombre Acceder puntuaciones maacuteximas locales

Autor Xavier Figuera

Resumen Acceder a la pantalla de puntuaciones maacuteximas locales de las partidasrealizadas en el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla con la tabla de las 10 puntuacionesmaacuteximas

Flujo normal 1 El usuario pulsa el botoacuten Scores del menuacute principal 2 Al usuario le aparece la pantalla de puntuacioacuten

Paacutegina 13 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ31 Consultar puntuaciones localesVJ32 Salir de la puntuaciones locales

2134 VJ31 Consultar puntuaciones locales

Identificador VJ31

Nombre Consultar puntuaciones locales

Autor Xavier Figuera

Resumen Consulta de las puntuaciones maacuteximas locales de las partidas realizadasen el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Scores delmenuacute principal

Postcondiciones El usuario visualiza la tabla de las 10 puntuaciones maacuteximas

Flujo normal 1 El usuario visualiza una tabla con las 10 puntuaciones maacuteximas

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2135 VJ32 Salir puntuaciones locales

Identificador VJ32

Nombre Salir puntuaciones locales

Autor Xavier Figuera

Resumen Salir de las puntuaciones maacuteximas locales

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulso el botoacuten Scores

Postcondiciones El usuario sale de la tabla de puntuaciones

Flujo normal 1 El usuario pulsa el botoacuten salir en la pantalla tabla de puntuaciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 14 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2136 VJ04 Acceder a las opciones

Identificador VJ04

Nombre Acceder a la pantalla de opciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de opciones del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla de opciones

Flujo normal 1 El usuario pulsa el botoacuten Options del menuacute principal 2 Al usuario le aparece la pantalla de opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ41 Activar o desactivar muacutesica o efectos VJ42 Acceder a la pantalla de creacuteditosVJ43 Salir de las opciones

2137 VJ41 Activar o desactivar muacutesica o efectos

Identificador VJ041

Nombre Activar o desactivar muacutesica o efectos

Autor Xavier Figuera

Resumen Activar o desactivar muacutesica o efectos de audio del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal

Postcondiciones El usuario activa o desactiva la muacutesica o efectos del videojuego

Flujo normal 1 El usuario pulsa el botoacuten altavoz para activar o desactivar la muacutesica delvideojuego 2 El usuario pulsa el botoacuten notas musicales para activar o desactivar losefectos de audio del videojuego

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 15 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2138 VJ42 Acceder a la pantalla de creacuteditos

Identificador VJ42

Nombre Acceder a la pantalla de creacuteditos

Autor Xavier Figuera

Resumen Acceder a la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario se encuentra en la pantalla de opciones

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten credits para acceder a los creacuteditos2 El usuario puede desplazar el texto de los creacuteditos deslizando el dedosobre el texto hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ421 Salir de la pantalla de creacuteditos

2139 VJ421 Salir de la pantalla de creacuteditos

Identificador VJ421

Nombre Salir de la pantalla de creditos

Autor Xavier Figuera

Resumen Salir de la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal y ha accedido a la pantalla creacuteditos

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten salir para abandonar la pantalla para accedera los creacuteditos2 El usuario se encuentra de nuevo en la pantalla opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 16 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21310 VJ05 Acceder a las instrucciones

Identificador VJ05

Nombre Acceder a la pantalla de instrucciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten del menuacuteprincipal

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a las instrucciones2 El usuario puede desplazar el texto de las instrucciones deslizando eldedo sobre el hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ51 Salir de las instrucciones

21311 VJ51 Salir de las instrucciones

Identificador VJ51

Nombre Salir de las intrucciones

Autor Xavier Figuera

Resumen Salir de la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten en el menuacuteprincipal y ha accedido a la pantalla de instrucciones

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a la pantalla de instrucciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 17 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21312 VJ06 Salir del videojuego

Identificador VJ06

Nombre Salir del videojuego

Autor Xavier Figuera

Resumen Salir del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego

Postcondiciones El usuario abandona el videojuego

Flujo normal 1 El usuario pulsa el botoacuten exit de la aplicacioacuten para salir del videojuego oel botoacuten salir del dispositivo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 18 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214 Diagrama casos de uso actor ldquoIArdquo

Por IA se entiende inteligencia artificial es un elemento fundamental para dotar de realismo a unvideojuego Uno de los retos principales que se plantean a la hora de integrar comportamientosinteligentes es alcanzar un equilibrio entre la sensacioacuten de inteligencia y el tiempo de coacutemputoempleado por este subsistema Este equilibrio es de gran importancia en el caso de losvideojuegos Este planteamiento gira generalmente en torno a la generacioacuten de soluciones quesin ser oacuteptimas proporcionen una cierta sensacioacuten de inteligencia En concreto dichas solucionesdeberiacutean tener como meta que el jugador se enfrente a un reto que sea factible de manera quesuponga un estiacutemulo emocional y que consiga engancharlo al videojuego

En estos uacuteltimos antildeos la IA ha pasado de ser un componente secundario en el proceso dedesarrollo de videojuegos a convertirse en uno de los aspectos maacutes importantes Actualmentelograr un alto nivel de IA en un juego sigue siendo uno de los retos maacutes emocionantes y complejosy en ocasiones sirve para diferenciar un juego normal de uno realmente espectacular

Dentro de este proyecto de ha definido una IA baacutesica para dotar del realismo necesario alvideojuego propuesto En los siguientes diagramas se define esta IA en forma de casos de usospara su posterior implementacioacuten

2141 Diagrama casos de uso IA personaje principal (oveja)

ilustracioacuten 4 Diagrama de casos de usos personaje principal

Paacutegina 19 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 4estos seraacuten desarrollados en la seccioacuten posterior

21411 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA03 Salida oveja al escenario IA

IA031 Posicionamiento en pantalla de la oveja IA

IA032 Movimiento oveja IA

IA033 Oveja pastando IA

IA034 Lanzamiento oveja IA

IA035 Rebotes de la oveja IA

IA036 La oveja entra en el establo IA

IA037 Parar oveja IA

21412 Descripcioacuten textual de los casos de uso

214121 IA03 Salida ovejas al escenario

Identificador IA03

Nombre Salida oveja al escenario

Autor Xavier Figuera

Resumen Salida oveja al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones La oveja es instanciada de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Las ovejas se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA031 Posicionamiento en pantalla de las oveja

214122 IA031 Posicionamiento en pantalla de las oveja

Identificador IA031

Nombre Posicionamiento en pantalla de las oveja

Paacutegina 20 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Autor Xavier Figuera

Resumen Asignacioacuten inicial posicioacuten de las ovejas en pantalla siempre es la mismaposicioacuten esta queda fuera del rango visual de la pantalla

Actor(es) IA

Precondiciones La partida esta iniciada y la oveja instanciada

Postcondiciones La oveja queda posicionada en unas coordenadas fuera de la pantalla

Flujo normal 1 Se instancia la oveja2 La oveja queda posicionada en unas coordenadas uacutenicas fuera delrango visual de pantalla

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214123 IA032 Movimiento oveja

Identificador IA032

Nombre Movimiento oveja

Autor Xavier Figuera

Resumen Movimiento de las ovejas hacia el escenario

Actor(es) IA

Precondiciones La partida esta iniciada la oveja instanciada y posicionada

Postcondiciones La oveja se mueve hacia el escenario empieza a pastar

Flujo normal 1 La oveja se mueve hacia el escenario

Flujos alternativos Ninguno

Inclusiones IA034

Extensiones IA033 Oveja PastandoIA037 Parar oveja

214124 IA033 Oveja pastando

Identificador IA033

Nombre Oveja pastando

Autor Xavier Figuera

Resumen La ovejas permanecen en un espacio determinado de coordenadas depantalla mientras no sean lanzadas al escenario por el usuario

Actor(es) IA

Paacutegina 21 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Precondiciones La oveja ha salido al escenario

Postcondiciones La oveja se mueve dentro de un espacio determinado de forma indefinida

Flujo normal 1 La oveja se mueve de forma indefinida hasta que sea lanzada por elusuario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA034 Lanzamiento oveja

214125 IA034 Lanzamiento oveja

Identificador IA034

Nombre Lanzamiento oveja

Autor Xavier Figuera

Resumen La oveja es lanzada por el usuario y se acelera en funcioacuten de la fuerza delanzamiento

Actor(es) IA

Precondiciones La oveja se mueve

Postcondiciones La oveja ha sido lanzada

Flujo normal 1 La oveja se mueve de forma indefinida2 La oveja es lanzada3 La oveja acelera en funcioacuten de la fuerza de lanzamiento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214126 IA035 Rebotes de la oveja

Identificador IA035

Nombre Rebotes de la oveja

Autor Xavier Figuera

Resumen La oveja ha sido lanzada y rebota por el escenario

Actor(es) IA

Precondiciones La oveja ha sido lanzada

Postcondiciones La oveja rebota por el escenario

Flujo normal 1 La oveja ha sido lanzada y rebota por el escenario 2 La oveja entra en el establo si colisiona con la puerta y esta abierta

Paacutegina 22 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA036 La oveja entra en el establo

214127 IA036 La oveja entra en el establo

Identificador IA036

Nombre La oveja entra en el establo

Autor Xavier Figuera

Resumen La oveja entra en el establo

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario y la puerta del establo estaabierta

Postcondiciones La oveja entra en el establo

Flujo normal 1 La oveja entra en el establo si colisiona con la puerta y esta abierta

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214128 IA037 Parar oveja

Identificador IA037

Nombre Parar oveja

Autor Xavier Figuera

Resumen La oveja para si se hacen dos pulsaciones encima de ella

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario

Postcondiciones La oveja se para

Flujo normal 1 La oveja esta rebotando2 El usuario pulsa dos veces encima de ella3 La oveja se para

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 23 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2142 Diagrama casos de uso IA enemigos (lobo)

ilustracioacuten 5 Diagrama de casos de usos enemigos

21421 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA02 Salida lobo al escenario IA

IA021 Ojos por la derecha o por la izquierda IA

IA022 Escoje el tipo de lobo IA

IA023 Lobo por la derecha o por la izquierda IA

IA024 Salta a escena IA

IA025 Movimento lobo IA

Paacutegina 24 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21422 Descripcioacuten textual de los casos de uso

214221 IA02 Salida lobo al escenario

Identificador IA02

Nombre Salida lobo al escenario

Autor Xavier Figuera

Resumen Salida lobo al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones El lobo es instanciado de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Los lobos se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA02 IA021 IA022 IA023 IA024

214222 IA021 Ojos por la derecha o por la izquierda

Identificador IA021

Nombre Ojos por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Salida de ojos al escenario paso previo a que salte el lobo

Actor(es) IA

Precondiciones El lobo ha sido instanciado

Postcondiciones Aparecen unos ojos que se cierra y se abren por la derecha o izquierda dela pantalla de forma aleatoria

Flujo normal 1 El lobo ha sido instanciado2 Aparecen unos ojos que se cierran y se abren 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 25 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214223 IA022 Escoge el tipo de lobo

Identificador IA022

Nombre Escoge el tipo de lobo

Autor Xavier Figuera

Resumen Escoge el tipo de lobo de forma aleatoria de los tres definidos

Actor(es) IA

Precondiciones Han aparecido los ojos

Postcondiciones Ha escogido el tipo de lobo que saltara al escenario

Flujo normal 1 Han aparecido los ojos2 Ha escogido el tipo de lobo que saltara al escenario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214224 IA023 Lobo por la derecha o por la izquierda

Identificador IA023

Nombre Lobo por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Escoge de forma aleatoria el lado por donde debe aparecer el lobo

Actor(es) IA

Precondiciones Se ha seleccionado el tipo de lobo

Postcondiciones Se ha escogido el lado por donde apareceraacute

Flujo normal 1 Se ha escogido el lado por donde apareceraacute

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 26 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214225 IA024 Salta a escena

Identificador IA024

Nombre Salta a escena

Autor Xavier Figuera

Resumen El lobo salta a escena

Actor(es) IA

Precondiciones Se ha seleccionado el lado por donde debe aparecer y salta

Postcondiciones El lobo esta en escena

Flujo normal 1 Se ha seleccionado el lado por donde debe aparecer y salta2 El lobo esta en escena

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones A025

214226 IA025 Movimiento lobo

Identificador IA025

Nombre Movimiento lobo

Autor Xavier Figuera

Resumen El lobo esta en escena y se mueve

Actor(es) IA

Precondiciones El lobo ha saltado a la escena

Postcondiciones El lobo se mueve

Flujo normal 1 El lobo ha saltado a la escena2 El lobo se mueve

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 27 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

22 Disentildeo inicial diagrama de clases

221 Diagrama de clases inicial ldquoFling the sheeprdquo

ilustracioacuten 6 Diagrama de clases videojuego

En este apartado se define la estructura inicial de la aplicacioacuten a traveacutes del diagrama de clasesmostrado en la ilustracioacuten 6 Esto serviraacute como punto de partida para el completo disentildeo de laaplicacioacuten para su posterior implementacioacuten A continuacioacuten se pasan a detallar a modo resumidoque funcionalidad tiene cada una de las clases definidas en este diagrama

2211 Resumen clases videojuego

FlingTheSheepMain Clase principal desde donde se inicializaraacute la aplicacioacuten

Assets Esta clase contendraacute todos los recursos necesarios del juego texturas sonidos etcEstos seraacuten inicializados en el momento de iniciar el juego Existe una dependencia entre la claseFlingTheSheepMain y Assets ya que la instanciacioacuten de Assets esta condicionada por lainstanciacioacuten de la clase principal FlingTheSheepMain cuando se pone en marcha el videojuego

Paacutegina 28 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaWorldGameController Esta clase contendraacute la loacutegica del videojuego

AudioManager Clase destinada para controlar la reproduccioacuten de efectos de sonido y audio delvideojuego

Charcater Es la superclase que describe los comportamientos comunes de los personajes deella se extienden los personajes principales y los enemigos

Sheep Clase que representa el personaje principal

Wolf Clase que representa a los enemigos

AbstractGameObject Esta superclase recoge todos los comportamientos comunes de losobjetos del juego por objetos se entiende todos los componentes que forman el escenario delvideojuego De esta clase se extienden todos los objetos del videojuego

Grass Hierba que apareceraacute en el escenario

Flower Flores que apareceraacuten en el escenario

ThePen Establo donde hay que hacer llegar las ovejas

DoorPen Puerta del establo esta se abriraacute y se cerrara aleatoriamente

Hole Agujeros en el escenario

WoodFenceForest Valla de madera que apareceraacute en el escenario

Como se ha comentado este diagrama de clases es un diagrama inicial por tanto lo maacutesprobable es que durante el desarrollo del videojuego se antildeadan maacutes clases al disentildeo inicialmostrado en la ilustracioacuten 6 En el apartado 55 de este documento se muestran los diagramas declases definitivos

Paacutegina 29 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria222 Diagrama de clases inicial de pantallas

ilustracioacuten 7 Diagrama de clases de pantallas

Este diagrama recoge en forma de clases las pantallas iniciales definidas del videojuego Separte de una superclase llamada AbstractGameScreen que recogeraacute las operaciones comunes detodas ellas y de esta se extienden las pantallas concretas este diagrama solo muestra laspantallas maacutes baacutesicas definidas inicialmente estas serviraacuten como base para desarrollar elconjunto de pantallas total necesarias para este proyecto y que quedan recogidas en su totalidaden el apartado 4 ldquoDisentildeordquo de esta documento

A continuacioacuten se pasan a detallar a modo resumido cada una de ellas

2221 Resumen clases pantallas

IntroScreen Clase para la pantalla de intro

MenuScreen Clase que contiene el menuacute principal del videojuego GameScreen La clase game screen es la que contiene la pantalla donde se desarrolla todo elvideojuego

Paacutegina 30 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

23 Definicioacuten de maacutequinas de estado finitas

Como ya se ha introducido en el punto 212 la IA aplicada a los videojuegos dota a estos derealismo Existen distintas teacutecnicas para la implementacioacuten de esta Una de las maacutes consolidadases el uso de maacutequinas de estados finitas ya que tienen un coste computacional casi inexistenteya que no tienen ninguacuten coste de procesamiento asignado Las maacutequinas de estados permiten deforma faacutecil definir comportamientos Es por este motivo que han sido utilizadas no solamente para definir los comportamientos de laIA del videojuego sino tambieacuten para definir los distintos estados en que se puede encontrar elvideojuego durante su tiempo de vida A continuacioacuten se detallan los distintos diagramas de lasmaacutequinas de estados utilizadas para este proyecto conjuntamente con una explicacioacuten de cadauna de ellas

231 Maacutequina de estados del videojuego

ilustracioacuten 8 Maacutequina de estados del videojuego

La ilustracioacuten 8 nos muestra los estados que puede tomar el videojuego durante su tiempo devida

Este diagrama define los estados que puede tomar el videojuego una vez iniciado inicialmente eljuego se encuentra en el estado READY de este estado existe una transicioacuten al estado GAMEcuando el tiempo de READY finaliza READY lt=0 El estado game sera el estado en donde se

Paacutegina 31 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriadesarrollara todo el juego Des de este estado podemos pasar al estado PAUSE si pulsamos elbotoacuten de pausa del juego y desde el estado PUASE volvemos al estado GAME si volvemos apulsar el botoacuten pause Finalmente desde el estado GAME haremos la transicioacuten al estado GAMEOVER si nos arrebatan todas las vidas durante la partida Desde el estado GAME OVERpodremos volver a READY si decidimos hacer una nueva partida

232 Maacutequina de estados comportamiento oveja

ilustracioacuten 9 Maacutequina de estados comportamiento oveja La ilustracioacuten 9 muestra el comportamiento del personaje principal del videojuego que en estecaso es la oveja Se define el ciclo de vida de la oveja a traveacutes de sus comportamientos

APPEAR SHEEP La oveja aparece fuera del rango visual de la pantalla y empieza a moversepara que suceda la transicioacuten hacia el siguiente estado FOREST START la coordenada x debeser menor que 220

FOREST START La oveja seguiraacute movieacutendose en un espacio determinado de la pantalla hastaque sea lanzada en unas determinadas direcciones la direccioacuten queda determinada por lasvariables velocityX velocityY estas tomaran valores positivos o negativos determinando ladireccioacuten de lanzamiento esto queda reflejado en la condicioacuten de transicioacuten del estado FORESTSTART a FOREST DEEP Si realizamos el lanzamiento en esas determinadas direccionesharemos la transicioacuten al un nuevo estado FOREST DEEP

FOREST DEEP La oveja rebota por el escenario si colisiona con la puerta del corral y estaabierta hacemos la transicioacuten al estado ON THE PEN

Paacutegina 32 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ON THE PEN Finaliza el ciclo de vida de la oveja dentro del juego esta es devuelta al corral seincrementan puntos en el marcador de puntuacioacuten y se incrementa una unidad en el contador deovejas salvadas

233 Maacutequina de estados comportamiento lobo

ilustracioacuten 10 Maacutequina de estados comportamiento lobo La ilustracioacuten 10 muestra el comportamiento de los enemigos del videojuego que en este casoson los lobos Se define el ciclo de vida del lobo a traveacutes de sus comportamientos

APPEAR EYES Antes de aparecer los lobos a escena apareceraacuten sus ojos entre los matorralesdel bosque Cuando acaba el tiempo pasa al siguiente estado tiempo ojos lt= 0

APPEAR WOLF En este estado se seleccionara el tipo de lobo (habraacute 3 tipos distintos) el ladode la pantalla por donde apareceraacute posicioacuten y velocidad de salto como tambieacuten el tiempo ensegundos que tardara a saltar al escenario Una vez seleccionados todos estos paraacutemetros haraacutela transicioacuten al estado WHEN JUMP

WHEN JUMP Este estado simplemente esperara que pase el tiempo para que el lobo salte alescenario Un vez pase el tiempo el lobo apareceraacute en el escenario pasando a la transicioacuten JUMPON SCENE

JUMP ON SCENE En este estado se efectuara el salto a escena del lobo este saltara desde los

Paacutegina 33 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriamatorrales laterales de la pantallahacia el escenario dibujando un arco convexo Para realizar elsalto nos apoyaremos en la representacioacuten del calculo de la funcioacuten trigonomeacutetrica cosenosolamente en sus valores positivos por tanto cuando cosy lt 0 haremos la transicioacuten al estadoMOVE ya que el salto habraacute finalizado

MOVE En este estado los lobos se moveraacuten y podraacuten ser ahuyentados pulsando repetidas vecesencima de ellos las veces a pulsar queda sujeta al tipo de lobo que sea Des de este estadopodremos hacer a dos estado distintos dependiendo de lo que suceda Si conseguimos ahuyentaral lobo pasaremos al estado WOLF SCARED Si por el contrario el lobo atrapa a la ovejaharemos la transicioacuten al estado SHEEP TRAPPED en ambos estados finalizara el ciclo de vidadel lobo

WOLF SCARED Se habraacute ahuyentado el lobo se incrementa en uno el contador de lobosahuyentados y se suman puntos a la puntuacioacuten total En este estado finaliza el ciclo de vida dellobo

SHEEP TRAPPED El lobo habraacute atrapado una oveja se nos restara una vida En este estadofinaliza el ciclo de vida del lobo

234 Maacutequina de estados tutorial in game

ilustracioacuten 11 Maacutequina de estados tutorial in game La ilustracioacuten 11 muestra los distintos estados que toma el mini tutorial in game que apareceraacute laprimera vez que se juega En este las transiciones entre estados suceden de forma automaacutetica

Paacutegina 34 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriacada 5 segundos desde que se ha activado el primer estado Cada estado corresponderaacute a unacaja de texto mostrada en pantalla

3 Disentildeo

31 Estudio comparativo

Un estudio realizado en 2011 por la empresa Newzoo httpwwwnewzoocom empresainternacional dedicada a los estudios de mercado y enfocada por completo a la industria de losvideojuegos Ha realizado la primera encuesta a jugadores espantildeoles y una de las cosas que dicees La suma del volumen de negocio de juegos online (redes sociales juegos casualesjuegos para moacuteviles juegos MMO) superaraacute al del consumo en juegos para consolas en2011 Se puede ver un resumen del estudio en liacutenea en

httpwwweurogameresarticles2011-10-26-espana-gastara-1-600-millones-de-euros-en-videojuegos-en-2011

Con esta informacioacuten se puede ver que hacer un videojuego casual para una plataforma moacutevilcomo Android puede ser muy viable

Para este proyecto se realizaraacute un estudio comparativo (benchmarking) En la industria de losvideojuegos es habitual sacar tiacutetulos fijaacutendose en otros tiacutetulos que han conseguido gran eacutexito enel mercado La operativa consiste en mejorarlos dentro de otro contexto o hacer un videojuegocompletamente diferente pero basaacutendose en ocasiones en mecaacutenicas de alguacuten otro tiacutetulo que haconseguido un gran eacutexito

Existen en Google Play gran cantidad de juegos casuales que pueden servir como inspiracioacuten ycomo punto de inicio para hacer un planteamiento general de coacutemo disentildear el producto que sequiere desarrollar partiendo de los requisitos definidos en el apartado 131 de este documento Setomaraacuten como referencia algunos tiacutetulos para identificar patrones para ver coacutemo otros hansolucionado ciertas situaciones como pueden ser problemas de disentildeo o interaccioacuten entre otrosEn ninguacuten caso deberaacuten ser exactamente de la misma temaacutetica pero si que se miraraacute que seandel mismo tipo es decir casual games

El primer paso para realizar este estudio a sido ir a Google play y verificar si hay alguacuten juego conel mismo nombre que el que se pretende desarrollar ldquoFling the sheeprdquo No existe ninguacuten juego adiacutea de hoy con este nombre

El segundo paso a sido buscar tambieacuten en Google play videojuegos en los que aparezcanovejas solo poniendo en el buscador la palabra sheep nos aparecen muchiacutesimos juegos quetienen una temaacutetica donde aparecen ovejas Se ha verificado tambieacuten poniendo combinaciones depalabras relacionadas con el juego que se quiere implementar palabras como sheep wolves o sheep farm etc los resultados obtenidos son bastante elevados

Por la cantidad de juegos encontrados y los recursos de que se dispone como por ejemplo eltiempo no es posible analizarlos todos Si que se tomaran algunos juegos despueacutes de hacer unrepaso de los maacutes destacados Hay que decir que despueacutes de haber instalado algunos alguno deellos no ha acabado de funcionar correctamente en el dispositivo moacutevil

Tras estos pasos se escogeraacuten dos videojuegos de temaacutetica similar y dos videojuegos detemaacutetica diferente Los videojuegos escogidos para realizar el anaacutelisis comparativo son

Paacutegina 35 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria311 Sheep amp Wolf

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 12 y 13 pantallas juego Sheep amp Wolf Link httpsplaygooglecomstoreappsdetailsid=jscompanygamesSheepAndWolf_enter3

El juego consta de una mecaacutenica muy simple disponemos de un boomerang y un corazoacuten laperspectiva del juego es elevada y vemos coacutemo van bajando ovejas y lobos de forma aleatoria setrata de forma taacutectil dibujar la trayectoria del boomerang para eliminar los lobos sin tocar lasovejas y con el corazoacuten dibujar una trayectoria de forma taacutectil para tocar las ovejas y no los lobosconforme vamos tocando los lobos y las ovejas con el correspondiente objeto iremos sumandopuntos

Tiene cierta similitud con el que se quiere implementar ya que salen tambieacuten lobosovejas ytambieacuten que lo que se pretende implementar funcionara de forma taacutectil para lanzar las ovejas alcorral y ahuyentar a los lobos que amenazan a las ovejas

Tiene una perspectiva de caacutemara igual a la que se quiere implementar Tiene una mecaacutenica dejuego muy sencilla las opciones que ofrece son muy definidas y claras 3 botones al inicio deljuego grandes que nos indican las posibles opciones que tenemos dentro del juego Game StartGame Record Exit Un punto interesante de este juego es que las puntuaciones no se guardan anivel local de la aplicacioacuten sino que son compartidas en una pagina web asiacute se pueden ver laspuntuaciones a nivel mundial La navegacioacuten por las diferentes pantallas es correcta

Quizaacute un aspecto negativo del juego seriacutea que visualmente esta muy poco cuidado Aunque aveces si el juego produce mucha adiccioacuten el aspecto visual puede quedar en segundo teacutermino enjuegos para dispositivos moacuteviles En otros tipos de plataformas como consolas o PC el aspectovisual es un punto muy importante y que se debe trabajar mucho maacutes a fondo no obstante estono significa que en un dispositivo moacutevil no deba estarlo

Paacutegina 36 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez adictivo puntuaciones a nivel mundial Navegacioacuten correctaPuntos Negativos Poco cuidado visualmente no tiene pausaObservaciones No tiene un final definido a medida que avanzamos la dificultad aumenta

312 Sheep Up

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 14 y 15 pantallas juego Sheep Up Linkhttpsplaygooglecomstoreappsdetailsid=compgpublishandroidsheepuplive

A diferencia del anterior este visualmente esta mucho maacutes cuidado Es un juego en 3D dondeuna oveja de juguete esta guardada dentro de una caja de cartoacuten Va botando y tiene que irrecogiendo botones e ir subiendo por diferentes niveles para poder salir de la caja es un juego deplataformas tambieacuten con una mecaacutenica bastante sencilla

Este dispone de una pantalla que dura unos segundos y seguidamente sale el menuacute de opcionesdel juego a diferencia de lo visto anteriormente donde directamente saliacutea el menuacute de opcionesde juego El menuacute de opciones de juego tambieacuten es muy directo y claro Aparte del botoacuten playpara iniciar el juego el botoacuten opciones para configurar el audio del juego los efectos el idioma yver los creacuteditos Tiene el botoacuten store donde este juego tiene implementada la modalidad freemiumpara ir comprando diferentes objetos dentro de el que nos daraacuten ciertas ventajas dentro delgameplay La compra se podraacute realizar con monedas virtuales (los botones) que los habremos idorecogiendo durante los diferentes niveles jugados o tambieacuten podemos comprar cantidadesdeterminadas de botones a cambio de dinero de verdad Dispone de vinculacioacuten a redes socialescomo Twitter y Facebook

Puntos Positivos Sencillez adictivo vinculado a Twitter y el Facebook el juego se puede pararNavegacioacuten correctaPuntos Negativos La pantalla inicial tarda demasiado en desaparecer y no da ninguacuten tipo de

Paacutegina 37 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriainformacioacuten al usuario puede llegar a parecer que se a colgado debido al largo tiempo que tardaal menos con el dispositivo que se ha verificado

313 Temple Run

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 16 y 17 pantallas juego Temple runLinkhttpsplaygooglecomstoreappsdetailsid=comimangitemplerun Es un juego que no tiene final donde un explorador tiene que evitar la muerte superandodiferentes obstaacuteculos a traveacutes de diferentes pasillos tendremos que dibujar diferentes trazos deforma taacutectil para que el personaje gire salte o se deslice por el suelo al mismo tiempo tendremosque inclinar el teleacutefono para que el personaje vaya recogiendo monedas que podremos utilizarpara adquirir objetos y mejoras en la partida A medida que vamos recorriendo maacutes y maacutes metrosla dificultad aumenta y nos obligara a realizar maacutes acciones en un espacio de tiempo maacutes cortoasiacute pues los reflejos juegan un papel importante

Tambieacuten dispone de una pantalla que dura unos segundos seguida de un menuacute de opciones muyclaro y definido Este igual que el anterior dispone de una tienda donde se pueden comprarmejoras (potenciadores) con dinero virtual o real Los botones de inicio son muy similares al delanterior juego visto Dispone de vinculacioacuten a redes sociales como Twitter

Puntos Positivos Sencillez Adictivo vinculado a Twitter el juego se puede parar NavegacioacutencorrectaPuntos Negativos -

Paacutegina 38 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria314 Attack of the Spooklings

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 18 y 19 pantallas juego Attack of the SpooklingsLinkhttpsplaygooglecomstoreappsdetailsid=compicarogamesspooklings_free

Finalmente nos centramos en este casual con aspecto visual retro Otro juego que no disponede final y donde la dificultad va aumentando conforme el tiempo de juego aumenta El objetivo deljuego es matar a todos los Spooklings que quieren atacar nuestro poblado La forma de matar alos Spooklings es con el dedo deslizaacutendolo sobre la pantalla soacutelo que un Spookling llegue anuestro poblado en la parte inferior de la pantalla la partida finaliza Debemos evitar de todas lasformas posibles que lleguen a la parte inferior de la pantalla

Tambieacuten dispone de una pantalla de inicio y un menuacute inicial de juego claro y directo no disponede ninguna vinculacioacuten a redes sociales El juego no se puede parar La navegacioacuten por todas laspantallas es correcta teniendo pantalla de puntuaciones maacutes altas pantalla con mini tutorial decoacutemo jugar y unas opciones para configurar el audio y ver los creacuteditos del juego Sin embargo adiferencia de los otros tiene algunas fallas de disentildeo a nivel de transiciones entre pantallas yfuncionalidades baacutesicas que aparentemente no tienen mucho sentido Fuera de la pantalla dejuego no es posible abandonar la aplicacioacuten de ninguna de las maneras no hay botoacuten de salida yla tecla de ir hacia atraacutes no funciona la uacutenica manera de salir es matando el proceso Por otrolado durante la partida con el botoacuten de ir atraacutes conseguimos hacer pausa del juego pero de unaforma que no estaacute anunciada al usuario de ninguna manera con alguacuten icono visual que informa alusuario de la funcionalidad Una vez parado el juego con una tecla que no estaacute indicada enninguna parte como tal nos da dos opciones RESTART y QUIT con QUIT salimos de la aplicacioacutenalgo que no se puede hacer en ninguacuten otro punto de la aplicacioacuten Con RESTART vuelve aempezar la partida y se pierde la que teniacuteamos empezada En resumen si pulsamos este botoacuten noestaacute anunciado en ninguna parte por accidente durante una partida perdemos la partida ya que notenemos la opcioacuten de continuar puesto que o volvemos a empezar o salimos de la aplicacioacuten

Paacutegina 39 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez Muy adictivoPuntos Negativos Errores en el disentildeo de menuacutes y transiciones entre pantallas no tienevinculacioacuten a redes sociales no tiene pausa

Todo lo que se ha visto en este estudio comparativo nos da una idea de que el disentildeo que selleve a cabo debe cumplir las siguientes metas tener una mecaacutenica de juego adictiva y sencillaque la disposicioacuten de opciones e iconos han ser claras y dejar claro al usuario de forma visual queacutefuncionalidad tienen las transiciones y operativas baacutesicas deben estar bien indicadas eimplementadas El disentildeo visual debe ser lo mas cuidado posible aunque a veces en juegos paraeste tipo de dispositivos no es el que maacutes domina sobre todo si el juego tiene una mecaacutenica muyadictiva aunque si se consiguen las dos cosas mucho mejor Otro punto importante es tener unamecaacutenica freemium implementada dentro del juego con una tienda para comprar mejorasaplicables a la mecaacutenica de juego Otro punto importante es la vinculacioacuten del juego a redessociales y que recoja puntuaciones a nivel mundial y no locales del dispositivo todos estosingredientes le pueden dar al juego un plus que haga que el usuario vea el juego maacutes atractivo

Debido a temas de tiempo inicialmente se descarta para este proyecto la implementacioacuten de lassiguientes funcionalidades dentro del videojuego las puntuaciones a nivel mundial estas demomento quedaraacuten sujetas a nivel local del dispositivo tambieacuten se descarta la vinculacioacuten a redessociales y mecaacutenicas freemium

El resto de puntos comentados como las mecaacutenicas sencillas y adictivas aspecto visual lo maacutescuidado posible dentro de los recursos de que se dispone y la navegacioacuten entre pantallas ymenuacutes claros y sencillos seraacute lo que se transportaraacute al disentildeo y la posterior implementacioacuten delproyecto Es posible que durante la implementacioacuten del disentildeo mostrado en este documento semodifiquen algunos puntos por temas de balanceo y equilibrio del producto final

32 Perfiles de usuarios identificados

Los juegos casuales son juegos con mecaacutenicas simples Este hecho hace que esteacuten al alcancede cualquier usuario aunque eacuteste no sea un jugador experimentado acostumbrado a utilizar juegoscon mecaacutenicas maacutes complicadas que requieren de cierta experiencia previa Al mismo tiempo sonjuegos que pueden ser jugados en cortos espacios de tiempo Por tanto el tipo de usuario deestos juegos sera muy variado Podemos encontrar el perfil de usuario experimentado tanto enlas tecnologiacuteas como en los videojuegos y que tiene intereacutes por cualquier tipo de juego Y por otrolado encontramos el usuario poco experimentado pero que gracias a los smarphones y lasencillez de las mecaacutenicas de juego provoca que tambieacuten juegue

Todos tendraacuten un objetivo comuacuten pasar un rato jugando al juego Para mejorar su uacuteltimo reacutecordAunque en este tipo de juegos el usuario tambieacuten puede jugar sin buscar ninguacuten tipo de metaconcreta simplemente pasar un rato divertido sin necesidad de alcanzar ninguacuten tipo de reacutecord niobjetivo concreto Tambieacuten es importante mencionar que aunque los perfiles de usuarios son muyvariados existe una fuerte tendencia a que los jugadores de este tipo de juegos tiendan a sermaacutes grandes que los jugadores de otros tipos de videojuegos y suelen tener un intereacutes y tiempolimitado tanto para jugar como los videojuegos en general siendo normalmente del sexofemenino

Se detectan dos grandes grupos de perfiles de usuario los experimentados en jugar avideojuegos y los no experimentados en jugar videojuegos edades diferentes profesionesvariadas educacioacuten variada sexo variado Los usuarios de Android en general suelen pagarmucho menos por aplicaciones que otros grupos de usuarios como los de iphone por ejemplo

Paacutegina 40 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Los haacutebitos de consumo en los estados unidos ya no de los usuarios de juegos casuales sinode los usuarios de Android en general se definen de la siguiente manera soacutelo un 4 de estospaga por descargar una aplicacioacuten contra un 23 y un 31 de los usuarios de la App Store paraiPhone y iPad respectivamente tal y como muestra un estudio realizado por la empresa Statistacon las 100 aplicaciones maacutes descargadas

ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitasSe puede ver en linea en el link httpwwwstatistacomtopics983mobile-app-monetizationchart1400paid-apps-don-t-stand-a-chance-on-google-play

Se puede ver otro articulo similar en el siguiente link

httpwwwwayerlesscom201307usuarios-de-android-pagan-menos-por-apps-que-los-de-ios

La mayoriacutea de aplicaciones gratuitas utilizan la modalidad freemium que no es maacutes que ofrecerun producto baacutesico de forma gratuita y cobrar a los usuarios por opciones maacutes avanzadas oespeciales dentro de la misma aplicacioacuten No obstante tambieacuten es posible encontrar aplicacionescompletamente gratuitas sin la modalidad freemium

Como ya se ha dicho se han detectado inicialmente dos grandes grupos dentro de la masa deusuarios que son consumidores potenciales de juegos casuales Estos son los usuarios asiduos ajugar videojuegos de todo tipo y con experiencia en el uso de tecnologiacuteas en general es decirusuarios experimentados Por otro lado encontramos los que no tienen costumbre de jugar muchoy normalmente tampoco tienen una gran experiencia en el uso de tecnologiacuteas en general pero

Paacutegina 41 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debido a la simpleza de los videojuegos casuales eacutestos tambieacuten se convierten en jugadores yen muchas ocasiones se convierten en los usuarios que consumen maacutes este tipo de juegos Asiacutepues encontramos dos grandes grupos seguacuten unas caracteriacutesticas comunes experiencia previa osin experiencia ante los videojuegos y las tecnologiacuteas

33 Contextos de uso

331 iquest Doacutende

Al tratarse de un casual game para un dispositivo moacutevil el espacio de utilizacioacuten seraacute muyvariado Por tanto los usuarios podraacuten encontrarse en muchos lugares distintos como puedenser en casa en el tren en el metro en el autobuacutes al aire libre etc En definitiva el usuario podraacuteencontrarse en cualquier lugar

332 iquest Cuaacutendo

El tipo de juegos casuales tienden a ser juegos donde los usuarios realizan partidas cortas peroal mismo tiempo la naturaleza adictiva de estos hace que los usuarios puedan quedar atrapadosdurante varias horas repartidas en ratos diferentes o continuados dependiendo de la situacioacuten decada usuario Por tanto el cuaacutendo de este tipo de juegos puede ser muy variado casi en cualquiermomento que el usuario pueda dedicarle unos minutos o ratos maacutes largos durante su tiempolibre mientras se desplaza ya sea en tren en metro o en alguacuten otro medio de transporte que nonecesite estar pendiente del vehiacuteculo cuando esta en la cama etc

333 iquest En que entorno

Los entornos de utilizacioacuten pueden tambieacuten ser muy variados promovidos por doacutende y el cuaacutendoPor lo tanto el entorno tecnoloacutegico podraacute tambieacuten ser variado puede existir o no conexioacuten a lared en un entorno social muy diferente que podraacute ser maacutes privado o maacutes puacuteblico yconsecuentemente se dibujaraacute un entorno ambiental variado seguacuten el momento

4Disentildeo y ldquoConcept Artrdquo

41 Elementos presentes en la interfaz de la aplicacioacuten

Con todo lo que se ha visto en el apartado 31 estudio comparativo queda patente que la interfazde usuario debe ser clara y sencilla Seraacute necesario que contenga las siguientes pantallas

bull Pantalla de intro inicial que apareceraacute durante un segundobull Pantalla menuacute inicial del juego con las opciones Play Scores Options () How to play bull Pantalla de nivel donde se desarrolla el videojuegobull Pantalla high scores que mostrara la tabla de reacutecords con las 10 puntuaciones maacutes altasbull Pantalla how to play instrucciones de como jugar tambieacuten se integraran dentro del

videojuego y apareceraacuten durante la primera partida que se jueguebull Pantalla opciones podremos activar y desactivar el sonido y los efectos de audio A su vez

desde esta pantalla podremos acceder a la pantalla de creacuteditosbull Pantalla de creacuteditos pantalla doacutende se mostraran lo creacuteditos del videojuego bull Pantalla Ready pantalla de juego con el mensaje sobre impreso antes de empezar a

jugar apareceraacute durante 3 segundosbull Pantalla con los botones resume quit sobreimpresos en la pantalla de juego se accederaacute

Paacutegina 42 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaa ella con el botoacuten de pausa pausando el juego Desde ella podremos reanudar el juego oabandonar el juego

bull Pantalla game over con el resumen de los reacutecords conseguidos durante la partidapuntostiempo jugado numero de lobos ahuyentados y ovejas colocadas en el corralDesde esta pantalla tendremos dos botones Play again y Exit uno nos permitiraacute volver ajugar y el otro nos permitiraacute abandonar el juego tal y como su nombre indica

42 Flujos de interaccioacuten

En la siguiente ilustracioacuten se muestran los flujos de interaccioacuten definidos con las pantallasenumeradas en el apartado anterior Los flujos muestran la navegacioacuten que debe existir entre laspantallas del videojuego

ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintaspantallas

Paacutegina 43 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

43 Prototipaje

431 Sketches

En este apartado se muestran los primeros esbozos realizados a mano alzada estos intentanplasmar el disentildeo del juego en su totalidad Estos esbozos serviraacuten como punto de partida en unasegunda fase para realizar el prototipaje de todas las pantallas que intervienen en el videojuegoutilizando todo el material recopilado en la red

Tal y como ya se ha dicho en este mismo documento anteriormente no se dispone deconocimientos de disentildeo suficientes como para abordar un disentildeo de arte desde cero Por lo tantose han utilizado recursos ya disponibles en la red para el montaje de todos los graacuteficos delvideojuego Todos los recursos utilizados estaacuten bajo licencias creative commons o dominio puacuteblico A continuacioacuten se muestran los bocetos

ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 44 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 45 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada

En la siguiente paacutegina se muestran las transiciones definidas entre pantallas con los sketchesrealizados ilustracioacuten 241 Las transiciones toman como base el diagrama de flujos deinteraccioacuten definido en el apartado 42 de este documento ver ilustracioacuten 21

Paacutegina 46 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria432 Transiciones definidas entre pantallas

ilustracioacuten 241 Transiciones definidas entre pantallas

Paacutegina 47 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria433 Prototipo horizontal de alta fidelidad

4331 Pantalla inicial

Pantalla de inicio al ejecutar el juego apareceraacute esta pantalladurante un segundo

4332 Pantalla menuacute principal del juego

Pantalla de menuacute principal del juego desde esta pantallapodremos empezar a jugar (botoacuten Play) consultar la tabla depuntuaciones (botoacuten Scores) e ir a la pantalla de opciones deljuego (botoacuten Options) El interrogante de la parte inferiorderecha nos serviraacute para ir a la pantalla de instruccionesHOW TO PLAY para saber coacutemo se juega

Paacutegina 48 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4333 Pantalla de opciones

La pantalla de opciones nos permitiraacute deshabilitar la muacutesicadel juego y los efectos sonoros pasando el dedo sobre losiconos del altavoz y las notas musicales con el altavozdeshabilitaremos la muacutesica y con las notas musicalesdesactivaremos los efectos de audio La flecha naranja nosconduciraacute de nuevo a la pantalla de inicio del juego el botoacutencreacuteditos nos llevara a la pantalla de creacuteditos

4334 Pantalla de creacuteditos

Pantalla de creacuteditos en ella se muestran los nombres dequienes han disentildeado y programado el juego con la flechanaranja inferior volvemos a la pantalla de opcionesDeslizando el dedo sobre el texto se podraacute desplazar haciaarriba y hacia abajo

Paacutegina 49 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4335 Pantalla tabla de puntuaciones

Pantalla tabla de puntuaciones nos mostrara una tabla conlas 10 puntuaciones maacutes altas de todas las partidas jugadasEsta tabla se guardara de forma local en el dispositivo

4336 Pantalla de juego READY

Pantalla de juego READY Apareceraacute durante unossegundos una vez iniciada la partida Despueacutes de 3segundos pasara a la pantalla de juego que se muestra en elsiguiente apartado

Paacutegina 50 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4337 Pantalla de juego

La pantalla de la izquierda es donde se desarrollaraacute todo el gameplay en la parte superiorizquierda de la pantalla se muestran los puntos conseguidos y las vidas En la parte superiorderecha hay un botoacuten que permitiraacute pausar el juego una vez pausado mostraraacute la pantalla depausa con los botones RESUME y QUIT la pantalla se muestra en el apartado siguiente En laparte derecha se muestra otra pantalla ideacutentica a la de la izquierda donde se puede ver elgameplay baacutesico representado con flechas los lobos saldraacuten de los extremos de la pantalla yendohacia las ovejas las ovejas al mismo tiempo saldraacuten de la derecha de la pantalla y las tendremosque lanzarlas deslizando el dedo sobre ellas y lanzandolas hacia el establo La puerta se iraacuteabriendo y cerrando aleatoriamente los lobos una vez puestos en escena los podremos ahuyentardeslizando el dedo sobre ellos un nuacutemero de veces determinado en funcioacuten del color del lobocomo esta indicado en el apartado 131 de este documento

Paacutegina 51 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4338 Pantalla de pausa botones RESUME y QUIT

Pantalla de pausa que apareceraacute cuando se pause el juegoCon la opcioacuten RESUME continuaremos jugando con laopcioacuten QUIT se saldraacute de la partida y pasaraacute a la pantalla delmenuacute principal del juego descrita en el punto 322

4339 Pantalla GAME OVER

Pantalla GAME OVER apareceraacute cuando se hayanagotado todas las vidas Mostraraacute un resumen de los puntosconseguidos en la partida actual tiempo invertido en lapartida lobos ahuyentados y ovejas salvadas Con losbotones de la parte inferior podremos volver a jugar (botoacutenplay again) o salir del juego con el botoacuten exit este botoacuten nosconduciraacute a la pantalla de inicio de juego descrita en elapartado 322

Paacutegina 52 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria43310 Pantalla de instrucciones de juego HOW TO PLAY

Pantalla de instrucciones del juego nos haraacute una breveexplicacioacuten de coacutemo jugar Deslizando el dedo sobre el textose podraacute desplazar hacia arriba y hacia abajo El juegodispondraacute de unas mini instrucciones in game queapareceraacuten en la primera partida que se juegue en forma decajas de texto esta pantalla se muestra en el siguienteapartado

43311 Pantalla de instrucciones in game

Esta pantalla muestra el modo como quedaraacuten integradaslas instrucciones de juego dentro del gameplay Estasinstrucciones apareceraacuten solamente la primera vez que sejuegue

Paacutegina 53 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Todo el disentildeo mostrado en este apartado ha sido realizado con todos los recursos encontradosen la red todos ellos quedan recogidos en el apartado 6 Con el programa Gimp se ha montadotodo el disentildeo de alta fidelidad mostrado en este apartado Se ha trabajado con capas paradisponer de flexibilidad en la construccioacuten del disentildeo A su vez el hecho de tener los disentildeos porcapas nos permitiraacute poderlo exportar a la implementacioacuten del videojuego de una manera coacutemoday raacutepida en el apartado 5 implementacioacuten se hace referencia a como convertir el disentildeo realizadoen capas a recursos graacuteficos del videojuego

En la siguiente ilustracioacuten se muestra una captura del disentildeo de la pantalla de juego descrita enel apartado 4337 realizado con Gimp

ilustracioacuten 242 Disentildeo pantallas con Gimp

Paacutegina 54 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

5Implementacioacuten

51 Arquitectura global

511 Arquitectura del framework libGDX

LibGDX es un framework multiplataforma que actualmente soporta WindowsLinuxMac OS XAndroid iOS y HTML5 Esto permite escribir el coacutedigo una sola vez y desplegarlo en las distintasplataformas comentadas sin tener que modificar el coacutedigo LibGDX permite bajar a maacutes bajonivel si se desea ya que da acceso directo al sistema de ficheros dispositivos de entrada desonido y a OpenGL a traveacutes de la interfaz unificada OpenGL ES11 y 20

LibGDX ofrece a su vez un conjunto de APIs que ayudan en las tareas comunes de desarrollode videojuegos como son la presentacioacuten de sprites texto la creacioacuten de interfaces de usuario lareproduccioacuten de efectos de sonido y secuencias musicales y los distintos tipos de caacutelculosnecesarios en la programacioacuten de videojuegos

En algunas ocasiones LibGDX deja de lado el lenguaje Java y recurre a coacutedigo nativo paraconseguir un mejor rendimiento No obstante todas estas funciones quedan ocultas detraacutes de lasAPIs de Java De manera que en el momento de desarrollar un videojuego no hay quepreocuparse de realizar una compilacioacuten cruzada entre Java y C++

LibGDX es un framework maacutes que un motor de videojuegos que ayuda al desarrollo de estosgracias a las abstracciones de gran alcance que ofrece y deja en manos del programador elegircomo escribir su videojuego o aplicacioacuten

512 Visioacuten de los moacutedulos de libGDX

LibGDX comprende varios moacutedulos que proporcionan los servicios necesarios para crear laarquitectura tiacutepica de un videojuego

ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en unvideojuego

Paacutegina 55 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaA continuacioacuten de describen los moacutedulos mostrados en la ilustracioacuten 25

Input Proporciona un modelo de entrada unificado para todas las plataformas Soporta tecladopantalla taacutectil aceleroacutemetro y ratoacuten si esta disponible

Graphics Permite el dibujo de las imaacutegenes en pantalla usando el hardware proporcionado por laimplementacioacuten de Open GL ES las versiones soportadas son GL versioacuten 10 11 20

Files Proporciona los meacutetodos necesarios para las operaciones de lectura escritura totalmenteindependientes a los medios de comunicacioacuten existente

Audio Proporciona las herramientas necesarias para la reproduccioacuten de sonido para todas lasplataformas

Math Moacutedulo que proporciona los caacutelculos matemaacuteticos necesarios orientados al desarrollo devideojuegos

Physics LibGDX proporciona un wrapper completo al motor de fiacutesicas en 2D open sourcedesarrollado en C++ llamado Box2D

52 Arquitectura de un videojuego

521 Programa vs Aplicacioacuten

Una aplicacioacuten convencional sigue una secuencia loacutegica lineal reacciona cuando sucede alguacutenevento es decir responde a eventos como por ejemplo cuando se pulsa una tecla Por el contrarioun videojuego es maacutes complejo hace caacutelculos y dibuja en pantalla constantemente aunque no seproduzca ninguacuten evento

522 Estructura baacutesica de un videojuego

Programar videojuegos es una forma completamente diferente de programar software Ladiferencia principal entre una aplicacioacuten convencional y un videojuego radica en la gestioacuten deeventos tal y como se ha indicado anteriormente un programa ofrece respuestas a eventos y unavez son servidos permanece a la espera de una nueva orden en cambio un videojuego es unprograma que debe actuar en tiempo real tiene que estar haciendo caacutelculos y dibujando enpantalla constantemente No se puede esperar a que suceda un evento para poder actuaraunque el jugador no haga nada no presione una sola tecla no mueva el ratoacuten el juego tiene quecalcular el tiempo que lleva jugando en ese nivel si le va a atacar alguacuten enemigo si estaacute cargandoenergiacutea y por supuesto dibujar en pantalla todo lo que va sucediendo

La mayoriacutea de videojuegos estaacuten construidos bajo la misma estructura baacutesica sobre la cual correel programa Esta estructura puede tener variaciones pero de forma general se presenta de lasiguiente manera

Inicializacioacuten En esta primera etapa el juego se situacutea en su estado inicial Se realizan lasinicializaciones por lo que respecta a las libreriacuteas o motores que vayan a utilizarse de variables yestructuras de datos referentes a los atributos de las entidades o personajes escenariosconfiguraciones etc y de los diferentes recursos fiacutesicos que vayan a emplearse tales comograacuteficos o sonidos

Paacutegina 56 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Ciclo de juego En esta parte esta toda la accioacuten este ciclo se repite de manera indefinida hastaque el jugador pierda gane o salga del juego Este punto se puede dividir en tres partes quepodemos llamarlas entrada proceso y salida

Como entrada se entiende el punto donde se captura todo lo que hace el jugador comopresionar los botones de control mover el ratoacuten presionar las flechas del teclado tocar la pantallataacutectil y el resto de informacioacuten que recibe el juego

En la parte de proceso es donde se procesa toda la informacioacuten que se recibioacute en la entrada ytiene lugar la loacutegica del videojuego Por tanto es donde se realizan los caacutelculos de fiacutesicas si eljuego los requiere asiacute como tambieacuten los caacutelculos de la inteligencia artificial de esteconjuntamente con el tratamiento graacutefico

La salida es la encargada de enviar al jugador toda la informacioacuten que se ha procesado en laetapa anterior proceso Se muestra al jugador el resultado de lo que hizo con la visualizacioacuten enpantalla del estado actual del videojuego Tambieacuten es en este punto donde se hace sonar lamuacutesica y efectos de sonido

Por uacuteltimo y fuera del ciclo de juego esta la parte de finalizacioacuten esta parte es la encargada deliberar todos los recursos y memoria utilizada durante el transcurso del videojuego

Es importante diferenciar estas tres etapas del ciclo del videojuego y ver queacute tarea se delega encada una de ellas en la entrada tan soacutelo nos ocupamos de captar los posibles eventos el procesose encarga en primer lugar de procesar la entrada y maacutes adelante de la loacutegica del videojuego ypor uacuteltimo la capa de salida se encarga de visualizar y reproducir la muacutesica

Con estos puntos claros se puede mostrar la estructura principal de un videojuego En elsiguiente apartado se muestra esta estructura baacutesica a modo de esquema

Paacutegina 57 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

53 Esquema de la estructura baacutesica de un videojuego

Inicializacioacuten Creacioacuten de estructuras dedatos carga de recursos graacuteficos y sonidos

Entrada Gestioacuten de pantalla taacutectiljoystick teclado

Proceso Lanzamos una oveja al corralrebota la oveja salta un lobo al escenarioetc

Salida Mostrar graacuteficos y reproducirsonidos

ilustracioacuten 26 Estructura baacutesica de unvideojuego

Finalizacioacuten Liberar recursos

Paacutegina 58 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

54 Patrones de disentildeo

541 Introduccioacuten

En el disentildeo de cualquier aplicacioacuten como por ejemplo un videojuegono es posible abordarlo porcompleto El proceso de disentildeo de una aplicacioacuten suele ser iterativo y se realiza en diferentesetapas de forma que se vaya refinando con el tiempo Conseguir un disentildeo perfecto a la primeraes muy difiacutecil de conseguir El disentildeo de aplicaciones es complejo y la maacutes importante y que maacutesimpacto tiene no soacutelo sobre el producto final sino tambieacuten sobre su vida futura Ya que es en eldisentildeo en donde se definen las estructuras y entidades que se van a encargar de resolver elproblema planteado Como de bien se definan estas estructuras y entidades influiraacute en granmedida en el eacutexito o fracaso del proyecto y en la viabilidad de su mantenimiento

Los patrones de disentildeo son formas reconocidas y probadas de resolver problemas de disentildeo queson recurrentes en el tiempo No es maacutes que basarse en experiencias anteriores en problemassimilares aplicado soluciones probadas anteriormente en determinados contextos para alcanzarun mejor disentildeo maacutes raacutepidamente

Existen distintos patrones para distintos problemas de disentildeo No obstante en este documentosoacutelo se haraacute hincapieacute en los patrones utilizados para este proyecto Quedando fuera del alcancede este documento los demaacutes patrones existentes

542 Patrones de creacioacuten

Estos patrones nos proporcionan una solucioacuten relacionada con la construccioacuten de clases objetosy otras estructuras de datos Algunos ejemplos de patrones pueden ser Abstract Factory BuilderSingleton estos ofrecen mecanismos de creacioacuten de instancias de objetos y estructurasescalables dependiendo de las necesidades

543 Singleton

Para este proyecto se ha utilizado este patroacuten ya que era necesario tener una uacutenica instancia dealgunas determinadas clases En java cuando se utiliza el operador new es posible crear unainstancia de un objeto No obstante a veces es necesario tener una uacutenica instancia de un objetopor ejemplo para poder acceder a ella des de cualquier punto de la aplicacioacuten Seria un ejemplolapelota de un juego de pinball en donde podriacutea ser conveniente mantener una uacutenica instancia deeste objeto

La solucioacuten para garantizar que solo existe una instancia de un objeto se consigue impidiendoque ninguna otra clase pueda acceder al constructor por este motivo de declara el constructorcomo miacutenimo de forma protegida o privada y se proporciona un uacutenico punto (controlado) en dondese proporciona la uacutenica instancia En la siguiente ilustracioacuten se muestra el diagrama de clases delpatroacuten Singleton

ilustracioacuten 27 Singleton

Paacutegina 59 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria A continuacioacuten en el listado 543 se muestra una implementacioacuten baacutesica del patroacuten Singletonutilizada en el proyecto para la clase que maneja el audio del videojuego

Listado 543

1 package comthreecometflingthesheeputil23 import combadlogicgdxaudioMusic 4 import combadlogicgdxaudioSound56 public class AudioManager 7 8 public static final AudioManager instance = new AudioManager()910 private Music playingMusic11 private Sound playingSound1213 Singleton14 private AudioManager() 15 1617 1819 public void ResunmeMusic()20 21 if(playingMusic = null) playingMusicplay()22 2324 public void PlayMusic(Music musicfloat volumeboolean loop) 25 26 if(GamePreferencesinstancemusic) return27 playingMusic = music28 musicsetLooping(loop)29 musicsetVolume(volume)30 musicplay()31 3233 public void StopMusic()34 35 if(playingMusic = null) playingMusicstop()36 3738 public void PauseMusic()39 40 if(playingMusic = null) 41 if(playingMusicisPlaying()) 42 playingMusicpause()43 44 45 4647 public void PlaySound(Sound soundfloat volume) 48 49 if(GamePreferencesinstancesound) return50 playingSound = sound51 soundplay(volume)52 5354 public void PlaySound(Sound soundfloat volumefloat pitchfloat pan) 55 56 if(GamePreferencesinstancesound) return57 playingSound = sound58 soundplay(volume pitch pan)59 60

Esta clase maneja el audio del videojuego tanto efectos de sonido como la muacutesica es una clase

Paacutegina 60 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debe estar accesible des de cualquier punto de la aplicacioacuten y no tiene ninguacuten sentido que seinstancie repetidas veces soacutelo sera necesaria una instancia de dicha clase para poder manejar losaudios y muacutesicas Como se puede ver en la linea 14 del listado 543 se declara el constructorprivado y en la linea 8 se proporciona el punto donde se proporciona la uacutenica instancia de dichaclase a traveacutes de la variable instance declarada de forma publica para que se accesible desdecualquier otra clase y a su vez declarada de forma static y final Con final le decimos que estavariable ya no puede ser modificada una vez declarada es decir sera una constante Con static leindicamos que podremos utilizar la variable instance sin la necesidad de hacer ninguna instanciacon el operador new de la clase AudioManager

Existen varias clases en el videojuego que son singleton A continuacioacuten se nombran todas ellasAudioManager Assets WorldGameController CounterTime GamePreferences

55 Diagramas de clases definitivos

Se ha dividido en varios diagramas para facilitar su lectura se pueden ver los diagramas en lossiguientes apartados de este documento A continuacioacuten se pasan a comentar las clases descritasen ellos

56 Diagramas nuacutecleo videojuego

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep-android encontramoslas siguientes clases

MainActivity Hereda de AndroidAplication que a su vez hereda de Activity es donde se crea laaplicacioacuten crea una instancia de FlingTheSheepMain

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep encontramos laclase FlingTheSheepMain donde se instancia la pantalla de intro del juego dentro del meacutetodocreate

Siguiendo el esquema estructural de un videojuego descrito en el punto 53 de este documentola ilustracioacuten 28 detalla el diagrama de clases que engloba la inicializacioacuten del juego y el ciclo devida

La Inicializacioacuten queda recogida en la clase Assets esta clase es un singleton que instanciaotras clases que a su vez guardan todos los recursos del videojuego por recursos se entiendetexturas para los graacuteficos archivos de audio ficheros con informacioacuten necesaria para el juegoUna vez inicializado el hecho de ser un singleton nos permite acceder a estas clases a traveacutes dela clase assets des de cualquier punto de la aplicacioacuten En la ilustracioacuten 29 se detallan todas estasclases que engloba la clase assets Esta clase se encuentra el el paquetecomthreecometflingthesheepgame A continuacioacuten se comenta cada una de ellas con una brevedescripcioacuten

LevelDecoration Enumera todas las texturas de los objetos de decoracioacuten del videojuego floreshierba etc Son objetos que no tienen ninguna interaccioacuten con el juego simplemente decoran

AssetFontsScene2D Engloba los tipos distintos de fuente que se utilizan en el videojuego tipode letra medida y color

AssetSound Enumera todos los efectos de sonido del juego

Paacutegina 61 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAssetMusic Contiene todas las muacutesicas del juego

FileHandleHighScores Inicializa la tabla de puntuaciones local y la actualiza cada vez que serealiza una partida de juego

LevelObjects Engloba todos los objetos que tienen interaccioacuten con el videojuego por interaccioacutense entiende objetos que pueden colisionar con otros o que tienen alguacuten papel importante dentrode videojuego no son solo objetos de decoracioacuten

Character Contiene el protagonista del juego el personaje que lleva el jugador en esta caso lasovejas

NPCs En esta clase quedan englobadas las texturas de los enemigos en esta caso los lobos

GUI En esta clase se engloban todas las texturas utilizadas para la creacioacuten de la interfaz deusuario botones imaacutegenes

La clase Constants es una clase que declara varias constates estaacuteticas que son accesibles desde cualquier punto de la aplicacioacuten y se utilizan tanto en la inicializacioacuten como en el ciclo de vidadel videojuego La podemos encontrar en el paquete comthreecometflingthesheeputil

El ciclo de vida del videojuego entrada proceso y salida queda repartido en las siguientes clases

Entrada Gestioacuten pantalla taacutectil se realiza en la clase WorldGameController en el meacutetodollamado handleInput a su vez cada personaje(character) y enemigo(NPC) gestiona su propiaentrada de eventos a traveacutes de los meacutetodos sobre escritos touchDown fling y tap Ver ilustracioacuten30 clases Sheep y Wolf

Proceso Este apartado realiza la loacutegica del videojuego y es responsable de esto el meacutetodoupdate de la clase WorldGameController Dentro de este meacutetodo existe implementada lamaquina de estados descrita en el apartado 231 con todos los estados posibles que el juegopuede tener durante su ciclo de vida los estados son READYGAMEPAUSEGAME OVER Cadapersonaje y enemigo lleva implementado su propia loacutegica y maquina de estados dentro de susclases correspondientes Ver ilustracioacuten 30 clases Sheep y Wolf estas maacutequinas de estados sonlas descritas en los apartados 232 y 233 respectivamente

Salida La salida descrita en el apartado 53 queda recogida en la clase GameScreen Verilustracioacuten 31

Finalizacioacuten La finalizacioacuten liberacioacuten de recursos queda a cargo del meacutetodo sobre escrito hiderepartido por las distintas clases de la aplicacioacuten

Otras clases que intervienen en el ciclo de juego recogidas en la ilustracioacuten 28 sonCounterTime GamePreferences AudioManager a continuacioacuten se detalla la funcionalidad decada una de ellas

CounterTime Esta clase engloba el calculo de tiempo transcurrido desde que empieza el juegohasta que termina hace la funcioacuten de contador de tiempo interno

GamePreferences Esta clase hace persistente la configuracioacuten escogida por el usuario en lasopciones Es posible configurar el juego con o sin sonido al igual que los efectos de audio estaclase es la encargada de guardar esta configuracioacuten aunque abandonemos la aplicacioacuten

Paacutegina 62 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

AudioManager Clase que se encarga tanto de la reproduccioacuten de audio como los efectos desonido es su responsabilidad interrogar la configuracioacuten actual del sonido y efectos paradeterminar si tiene que realizar la reproduccioacuten de audio o efectos asiacute como tambieacuten determinarel volumen del sonido o si un audio hay que reproducirlo de forma ciacuteclica En el listado 543 deeste documento se puede ver el coacutedigo de esta clase como ejemplo de singleton

ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego

Paacutegina 63 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 29 Diagrama de clases Assets

57 Diagrama de clases objetos videojuego

En la ilustracioacuten 30 de este documento se detalla el diagrama de clases referente a los objetosdel videojuego Por objetos se entiende personaje principal enemigos juntamente con todos loselementos que forman el conjunto del escenario del videojuego

En primer lugar cabe destacar la existencia de la clase abstracta AbstractGameObject Estaclase abstracta define los meacutetodos comunes de todos los objetos del juego Por las necesidadesde implementacioacuten no se han definido meacutetodos abstractos no obstante la clase se define comoabstracta ya que va a ser la superclase de todos los objetos del videojuego y por tanto no se van arealizar instancias de esta A continuacioacuten se enumeran las clases que se extienden de esta y querecogen todos los objetos del juego ya sean con o sin interaccioacuten en el

Paacutegina 64 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaGrass Hole Flower Flowers Stump ForestLeft ForestRight ThePen WoodFenceForestWoodFencePen DoorPen BorderGrassLeft BorderGrassRight PotionPurple AubergineRedPuddle Tree GrassField

Estas clases corresponden a los objetos que constituyen el escenario del videojuego Las clasesSheep y Wolf corresponden al personaje del videojuego y a los enemigos respectivamente estasclases no solamente contienen el meacutetodo para ser dibujadas en pantalla igual que las anterioressino que tambieacuten poseen toda la loacutegica para el comportamiento de cada una de ellas este puntocorresponderiacutea a la fase de proceso de la estructura baacutesica de un videojuego detallada en elpunto 53 de este documento Existe para cada personaje y enemigo una maquina de estadosimplementada que indica en que estado se encuentra en cada momento aplicando la loacutegicacorrespondiente para ese estado Ver las enumeraciones SHEEP_STATE y WOLF_STATE de lailustracioacuten 30 estas corresponden a las maacutequinas de estado definidas en los apartados 232 y233 respectivamente

Finalmente en la ilustracioacuten 30 aparecen las clases GameScreen y WorldGameController

La clase GameScreen como se vera en el apartado 58 es la clase que engloba todo lorelacionado con la pantalla del juego o nivel En ella se instancian todos los objetos descritosanteriormente para la creacioacuten del nivel asiacute como tambieacuten la creacioacuten de la GUI del videojuegobotones textos sobreimpresos y cajas de textos Es por este motivo que en la clase GameScreenexisten dependencias u asociaciones hacia todos los objetos dependiendo del tipo de declaracioacutende estos

La clase WorldGameController contiene la implementacioacuten de gran parte de la loacutegica delvideojuego esta clase formariacutea parte de la etapa de proceso dentro de la estructura baacutesica de unvideojuego descrita en el apartado 53 de este documento

Existe tambieacuten en esta clase una asociacioacuten hacia la clase GameScreen ya que des de la claseWorldGameController que es donde se encuentra gran parte de la loacutegica es necesario accedera la instancia de GameScreen para interactuar con varios elementos visuales que manipulan laloacutegica del videjuego

En la siguiente hoja se muestra la ilustracioacuten 30 correspondiente a todo los descrito en esteapartado

Paacutegina 65 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 30 Diagrama de clases objetos

Paacutegina 66 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

58 Diagrama de clases pantallas videojuego

En la ilustracioacuten 31 quedan recogidas todas las clases que intervienen en la creacioacuten depantallas del videjuego por pantallas se entine la pantalla de intro la del menuacute principal la deopciones etc Estas clases engloban todo lo necesario para la construccioacuten y visualizacioacuten deestas A continuacioacuten se detallan cada una de las clases

AbstractGameScreen Esta clase abstracta recoge todos los meacutetodos abstractos que sonimplementados en cada una de las clases que a continuacioacuten se detallan(pantallas) con la loacutegicanecesaria seguacuten las necesidades de cada pantalla No se crea ninguna instancia de esta clase

IntroScreen Corresponde a la pantalla de intro del videojuego descrita en el apartado 4331

MenuScreen Corresponde a la pantalla del menuacute inicial del juego des de aquiacute podemos escogersi jugar consultar la tabla de puntuaciones local ir a las opciones o a la pantalla de ayuda delvideojuego descrita en el apartado 4332 OptionsScreenPantalla de opciones descrita en el apartado 4333

CreditsScreen Pantalla de creacuteditosdescrita en el apartado 4334

HighScoresScreen Pantalla en donde se recoge la puntuacioacuten local del videojuegodescrita en elapartado 4335

GameScreen Pantalla general esta clase engloba toda la loacutegica del nivel del juego a su vezengloba la pantalla inicial de nivel READY la pantalla de pausa del juego y la de game overdescritas en los apartados 4336 4337 4338 4339

HowToPlayScreen El videojuego dispone de un tutorial in game que solo aparece la primera vezque jugamos a el y en las siguientes partidas ya no vuelve aparecer maacutes descrita en el apartado43311 No obstante existe una pantalla en donde podemos ver este tutorial fuera del juego estaclase esta destinada a contener los datos de esta pantalla descrita en el apartado 43310

TextGUI Esta clase contiene todos los textos sobreimpresos que existen en el videojuego En ellaesta la loacutegica de cada uno de estos textos para que sean posicionados y visualizados desde lasdistintas partes del videojuego

TUTORIAL_INGAME_STATE Esta enumeracioacuten enumera los estados de la maquina de estadosutilizada para mostrar el tutorial in game dentro del videojuego la primera vez que jugamos lamaacutequina de estados esta implementada dentro de la clase TextGUI la maacutequina corresponde a ladescrita en el apartado 234

En la siguiente hoja se muestra la ilustracioacuten correspondiente a todo los descrito en esteapartado

Paacutegina 67 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 31 Diagrama de clases pantallas

Paacutegina 68 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

59 Configurar el entorno de desarrollo

Antes de empezar a desarrollar juegos con libGDX es necesario instalar y configurar el entornode desarrollo Para ello se utilizaraacute Eclipse como entorno de desarrollo integrado IDE A su vez secreara un proyecto que nos serviraacute como base para el desarrollo de este

Es posible desarrollar con otros entornos distintos a Eclipse pero el hecho que Eclipse sea elentrono de desarrollo soportado oficialmente ha sido motivo suficiente para escogerlo para esteproyecto como entorno de desarrollo

591 Instalacioacuten

Para poder instalar el entorno de desarrollo nos haraacute falta primero instalar el Java DevelopmentKit(JDK) para posteriormente poder instalar eclipse

Una vez instalados seraacute necesario bajar el framework libGDX del siguiente enlace

httplibgdxbadlogicgamescomdownloadhtml

Tambieacuten sera necesario instalar el Android SDK seguidamente tendremos que ejecutar eclipse yinstalar los plugins necesarios para poder desarrollar con Android El plugin necesario paradesarrollar con Eclipse sobre Android de llama ADT (Android Developer Tools) Para instalar esteplugin debemos dirigirnos a Help--gtInstall new software tal y como muestra la siguiente ilustracioacuten

ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse

Paacutegina 69 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez el entorno de desarrollo preparado seraacute el momento de descomprimir el frameworklibGDX se recomienda descomprimirlo en la raiacutez ClibGDX en esta caso ya que trabajamos bajoWindows

Una vez descomprimido dentro de la la carpeta encontramos una aplicacioacuten llamada gdx-setup-uijar Esta aplicacioacuten nos ayuda a crear un proyecto ya configurado con las libreriacuteas necesariaslisto para ser importado a Eclipse y empezar a desarrollar con libGDX para Android O paracualquier otra de las plataformas soportadas por el framework En este caso se configura elproyecto para Android y para Escritorio de esta manera podremos verificar durante el desarrollodel proyecto los avances sin necesidad de instalarlo en un dispositivo Android ya sea fiacutesico ovirtual

Las siguientes ilustraciones muestran la configuracioacuten a realizar

ilustracioacuten 33 Creacioacuten proyecto libGDX Habraacute que pulsar en el botoacuten Create y con ello accederemos a la siguiente ilustracioacuten

ilustracioacuten 34 Creacioacuten proyecto libGDX

Paacutegina 70 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez configuradas todas las opciones le daremos al paso 4 Open the generation screen ygeneraremos el proyecto Esto proyecto sera importable a eclipse desde la opcioacuten Import delpropio IDE La configuracioacuten del proyecto tambieacuten es posible hacerla a mano no obstante esta aplicacioacutennos ahorra tiempo y posibles errores en el momento de configurarlo dentro del entorno ya quepara hacerlo a mano existen distintos pasos a seguir para conseguir lo mismo que se consiguecon esta aplicacioacuten con escasos clicks de ratoacuten

510 Traspaso del disentildeo a texturas

Todo el disentildeo realizado en el apartado 4 seraacute necesario pasarlo a texturas para posteriormenteutilizarlo en la implementacioacuten del juego como recursos graacuteficos

Una textura es una imagen digital cualquiera en cualquiera de los formatos habituales jpg pnggif tga etc Para poderla cargar dentro de un videojuego y manipularla haraacute falta una libreriacuteaespecializada para ello esto se podria programar para para el caso de este proyecto utilizamos elpropio framework libGDX para realizar esta tarea que a su vez envuelve el uso de OpenGL

Las texturas en OpenGL deben ser siempre potencias de 2163264128256 etc del contrarionos daraacute problemas y no funcionaraacute

El primer paso sera desmontar todas las capas pieza por pieza por decirlo de alguna manera ycrear ficheros de cada una de las capas de forma separada para guardarlas todas en una carpetacon un nombre identificativo Ver la siguiente ilustracioacuten

ilustracioacuten 35 Capas separadas por imaacutegenes

Paacutegina 71 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez realizado este paso deberemos juntarlas todas de nuevo en una uacutenica textura que seapotencia de 2 Trataacutendose de un juego para moacutevil las texturas no deberiacutean ser mayores de1024x1024 y no se podraacuten cargar muchas de ellas en memoria por razones obvias de recursosdel tipo de dispositivo

Para juntarlas utilizaremos una aplicacioacuten llamada Texture Packer esta nos juntara las texturasde repartieacutendola de forma que quepan en una tamantildeo de textura definido que en este caso serade 1024x1024 en caso de caber en una uacutenica textura el programa generara 2 texturas siempreoptimizadas a potencias de 2 La siguiente ilustracioacuten muestra el programa Texture packer

Ilustracioacuten 36 Texture packer El formato de salida de las textura sera png ya que necesitamos mantener el canal alpha deestas activado para los objetos sean correctamente dibujados en la escena del videojuego

Conjuntamente con la textura la aplicacioacuten nos generara un archivo de texto que contendraacute elnombre de la textura y la posicioacuten donde se encuentra dentro de la textura generada de1024x1024 Ver la siguiente ilustracioacuten en la siguiente paacutegina

Paacutegina 72 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 37 Posicioacuten texturas De esta manera podremos cargar las texturas en la fase inicializacioacuten en la clase Assets descritaen la ilustracioacuten 29 en forma de diagrama de clases

511 Implementacioacuten de las maacutequinas de estado

La implementacioacuten de las maacutequinas de estado se realiza con una estructura enumconjuntamente con una estructura switch case El siguiente listado muestra la declaracioacuten del laestructura enum implementada en la clase WorldGameController la implementacioacuten de todas lasmaacutequinas se realiza del mismo modo por tanto se toma esta como ejemplo en representacioacuten detodas las implementadas en el videojuego

Listado 5111

1 private enum GAME_STATE READYGAMEPAUSEGAME_OVER2 private GAME_STATE gameState34 gameState = GAME_STATEREADY

Paacutegina 73 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLa siguiente tabla muestra un trozo de la estructura switch case implementada en el meacutetodoupdate de la clase WorldGameController

Listado 5112

1 public void update(float deltaTime)2 3 switch(gameState)4 5 case READY6 if(audioReady) 7 AudioManagerinstancePlaySound(Assetsinstancesoundready 8 ConstantsVOLUME_AUDIO_EFFECTS)9 audioReady = false10 11 if(timeLeftShowReadyScreen gt 0)12 13 if(deltaTime lt 03f ) 14 timeLeftShowReadyScreen -=deltaTime15 16 if(timeLeftShowReadyScreen lt 0)17 18 gameScreensetVisibilityGUI()19 timeLeftShowReadyScreen = 020 CounterTimeinstancestartTime()21 22 AudioManagerinstancePlayMusic(Assetsinstancemusiclevel01 23 ConstantsVOLUME_MUSIC_GAME true)24 gameState = GAME_STATEGAME 2526 27 28 break 29 case GAME30 updateGame() 31 if(timeOpenDoorPen gt 0)32 33 if(deltaTime lt 03f ) 34 timeOpenDoorPen -= deltaTime35 36 if(timeOpenDoorPen lt= 0) 37 gameScreengetDoorPen()setVisibility(gameScreengetDoorPen()getVisibility())38

En este listado podemos ver el estado READY y un trozo del estado GAME de la maacutequina deestados definida en el apartado 231 de este documento inicialmente la maacutequina toma el estadoREADY como se puede ver en la linea 4 del listado 5111 este estado se ira repitiendo a cadavuelta del ciclo de vida del videojuego hasta que cambie el estado de juego a GAME estosucederaacute una vez transcurridos 3 segundos tal y como se puede ver en la linea 24 del listado5112 Hay que tener en cuenta que un videojuego tal y como se ha definido en el apartado 522de este documento forma un bucle infinito por tanto la funcioacuten update de la linea 1 de este listadose repetiraacute de forma indefinida durante la ejecucioacuten del nivel de juego y cada vuelta ejecutaraacute elestado en que se encuentre la maacutequina de estados

Paacutegina 74 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6Conclusiones El desarrollo del proyecto ha sido tal y como se esperaba en lineas generales no han habidograndes desviaciones de tiempo ni durante el disentildeo ni en el posterior desarrollo de este Cabedestacar que el hecho de poder probar el proyecto ejecutaacutendolo en la propia maacutequina donde se hadesarrollado sin tener que utilizar un dispositivo real o virtual cada vez que se ha querido verificarha hecho que el desarrollo sea mucho maacutes fluido que sino se hubiera contado con el escenariodescrito Esto no significa que en ciertos momentos del desarrollo no se haya probado con undispositivo real Android Dejando a parte la gran ventaja que esto significa ya que una vezdesarrollado el esfuerzo realizado nos sirve para distintas plataformas casi sin tener que tocarnada del coacutedigo

Por tanto el hecho de haber escogido libGDX para el desarrollo ha sido una buena eleccioacuten Estambieacuten una buena eleccioacuten escoger un framework o un motor focalizado al desarrollo devideojuegos si se quiere implementar uno ya sea para Android o para cualquier plataforma

Existe la posibilidad de desarrollarlo sin ninguacuten tipo de framework o motor pero hay que tenerclaro que se quiere hacer exactamente y a donde se quiere llegar es decir si lo que se quiere escentrarse en la programacioacuten de videojuegos es mucho mejor partir de un framework o motor yaque de esta forma nos desligamos de programar ciertos apartados que estaacuten maacutes focalizados a laprogramacioacuten de frameworks o motores para videojuegos que no a la programacioacuten devideojuegos en si

Yendo maacutes allaacute de donde el programador se quiere centrar existe otro factor importante a teneren cuenta en el momento de plantear un proyecto llamado tiempo con el tiempo de que se hadispuesto para este proyecto queda auacuten maacutes justificado la eleccioacuten de este framework pararealizarlo Ya que probablemente sin el debido al esfuerzo mayor en programar apartados que noson exclusivos del videojuego pudieran haber existido desviaciones de tiempo importantes enrelacioacuten al calendario propuesto

Ha quedado fuera del proyecto por temas de tiempo realizar animaciones a todos los personajesdel videojuego para conseguir una mejor experiencia de usuario y un nivel de acabado superiorFuera del proyecto tambieacuten ha quedado la implementacioacuten no solo de unas puntuacionesmaacuteximas a nivel local sino tambieacuten unas a nivel mundial consultables a traveacutes de una paacutegina webA su vez no solo guardariacutea la puntuacioacuten maacutexima sino tambieacuten el tiempo jugado las ovejassalvadas y los lobos ahuyentados Tambieacuten ha quedado fuera de este proyecto la realizacioacuten deun blog dedicado al videojuego Todos estos apartados se implementaran en breve fuera de esteTFC

7Recursos utilizados

71 Portada documento

Jake Maymar httpwwwflickrcomphotosmaymar5334789030httpcreativecommonsorglicensesby-sa20deeden

72 Recursos utilizados para el disentildeo del videojuego

Para realizar todo el disentildeo visual del videojuego se ha recurrido a diferentes fuentes de arte

Paacutegina 75 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriasujetas a licencias creative commons y dominio puacuteblico A continuacioacuten se detalla una lista decada recurso con su autor en el caso de que no haya sido publicado de forma anoacutenimajuntamente con el link donde se ha encontrado

721 Fotografiacutea pantalla intro videojuego y usuarios

Michael Karrerhttpwwwflickrcomphotosmichael_karrer78438470httpcreativecommonsorglicensesby-nc20deeden

Jodi Womackhttpwwwflickrcomphotosjodiwomack6217578512httpcreativecommonsorglicensesby20deeden

Tony Alterhttpwwwflickrcomphotos78428166N008279647916httpcreativecommonsorglicensesby20deeden

Gage Skidmore (Nina Dobrev)httpwwwflickrcomphotosgageskidmore5980906910httpcreativecommonsorglicensesby-sa20deeden

722 Iconos y botones

7221 Altavoz

Autor httpwwwiconshockcom Link httpswwwiconfindercomicons67771audio_speaker_iconsize=128Licencia Free for commercial use

7222 Nota Musical

Autor httpwwwdezinerfoliocomLink httpswwwiconfindercomicons58679music_iconsize=128Licencia Free for commercial use

7223 Flecha salida

Autorhttptayteldeviantartcom Linkhttpswwwiconfindercomicons41696arrow_back_grey_left_orange_iconsize=128LicenciaFree for commercial use (Include link to authors website) 7224 Icono de pausa

AutorhttpwwwwebdesignerdepotcomLink httpswwwiconfindercomicons40716blue_button_pause_iconsize=64Licencia Free for commercial use

7225 Icono interrogante (help)

AutorhttpwwwdoublejdesigncoukLinkhttpwwwiconarchivecomshowravenna-3d-icons-by-double-j-designHelp-iconhtml

Paacutegina 76 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLicencia httpcreativecommonsorglicensesby30

7226 Botones (Play Score Options)

AutorydLinkhttpopengameartorgcontentbuttons-variationsLicenciahttp creativecommonsorgpublicdomainzero10

723 Recursos graacuteficos 2D componentes escenario

7231 Ojos lobos

AutorCreek23Link httpopengameartorgcontentgnu-the-gnu-mascotLicencia httpcreativecommonsorglicensesby-sa30

7232 Ovejas y lobos

Autor lemmlingLink httpopenclipartorguser-clipartslemmlingLicencia httpopenclipartorgshare

7233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY

AutorSamLink httpopengameartorgcontentcountry-fieldLicencia httpcreativecommonsorgpublicdomainzero10

7234 Escenario

Daniel EddelandLinkhttpopengameartorgcontentlpc-farming-tilesets-magic-animations-and-ui-elementsLicenciahttpcreativecommonsorglicensesby-sa30

724 Fuentes

7241 ThinckheadAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10 7242 MisfortuneAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7243 TabaqueraAutor deFharoLink httpwwwdafontcomesfernando-harod3419l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7244 Press Start Font

Paacutegina 77 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAutor desconegutLink httpwwwzone38netfontpressstartLicencia httpscriptssilorgcmsscriptspagephpsite_id=nrsiampid=OFL

725 Otros

Todos los demaacutes recursos no nombrados en esta lista como el fondo de pantalla del menuacuteprincipal de inicio del juego y las letras del titulo del juego Fling the sheep impresas sobre lapantalla del menuacute inicial son de elaboracioacuten propia

726 Audio y efectos de sonido

7261 Menu

Autor mrpolyLinkhttpopengameartorgcontentmenu-musicLicencia httpcreativecommonsorgpublicdomainzero10

7262 Game Over

Autor MacroLinkhttpopengameartorgcontentrest-outro-loopLicenciahttpcreativecommonsorglicensesby30

7263 Game Play

AutorRezonerLinkhttpopengameartorgcontenttrance-menuLicenciahttpcreativecommonsorglicensesby30

7264 Creacutedits

Autor -Linkhttpopengameartorgcontent1-minute Licenciahttpcreativecommonsorgpublicdomainzero10

7265 Ready

httpopengameartorgcontentui-accept-or-forwardhttpcreativecommonsorglicensesby30

7266 Pause_Resume

httpopengameartorgcontentcompletion-sound httpcreativecommonsorglicensesby30

7267 Quit

httpopengameartorgcontentfly-swatter-squish-sound httpcreativecommonsorgpublicdomainzero10

7268 Sheep

Paacutegina 78 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

httpopengameartorgcontentsheep-sound-bleats-yo-frankiehttpcreativecommonsorglicensesby30

El resto de efectos de audio han sido obtenidos de la siguiente paacutegina httpwwwpond5com

8Lineas abiertas del proyecto Se haraacute un repaso del proyecto por si existe alguacuten bug para solucionarlo Posteriormente deadaptara para que sea funcional en distintas resoluciones de pantalla Se antildeadiraacuten los power-upsque se definieron al principio del proyecto por temas de tiempo han quedado fuera de la entregaA su vez se balanceara el gameplay antildeadiendo alguna mecaacutenica de juego extra si procede

Se publicara el juego en Google Play y se creara un blog del juego se mirara la posibilidad dehacer funcionar el juego en el blog con webGL httpprojects3cometcom

Se ampliara la tabla de puntuaciones de la siguiente manera la tabla no solamente guardara lospuntos tambieacuten guardara el tiempo jugado nuacutemero de lobos ahuyentados nuacutemero de ovejassalvadas y nombre del usuario con 5 caracteres Se creara un un registro de puntuaciones globalconsultable desde el blog del videojuego

Finalmente se crearan maacutes niveles de juego con distribuciones diferentes alguacuten nivel podriacuteatambieacuten tener mecaacutenicas diferentes de juego con los mismos personajeshellip

9Bibliografiacutea utilizada

Titulo Beginning Android Games (Second Edition) ISBN 978-1-43024-677-0

Autor Mario Zechner Robert Green

Editorial Apress

Contenido Desarrollo de videojuegos para Android

Titulo Learning libGDX Game Development ISBN 978-1-78216-604-7

Autor Andreas Oehlke

Editorial PACKT Publishing

Contenido Desarrollo de videojuegos para Android con libGDX

Paacutegina 79 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

10Otros proyectos realizados

101 Remake Gradius Konami

Remake del famoso shooter de Konami lanzado para ordenadores MSX en 1986 programadocon C++ con SDL Aunque este juego existe para multitud de plataformas Ver articulo wikipedia

httpeswikipediaorgwikiGradius_videojuego

Blog del proyecto httpprojects3cometcom

102 Tales of Nimria mini RPG

Mini RPG en 2D programado en C++ con DirectX este mini RPG trata de salvar a una princesacapturada por unas malvadas criaturas

Blog del proyecto httpprojects3cometcom

102 Motocalipsis Bar 66 RTS RTS en 3D con ambiente motero los hechos de la historia suceden en un pequentildeo pueblo deTexas Programado en Unity con C

Blog del proyecto httpmotocalipsisbar66blogspotcomes

Paacutegina 80 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Creative Commons 40 license by-nc-sa

Attribution-NonCommercial-ShareAlike 40 International

===========================================================

Creative Commons Corporation (Creative Commons) is not a law firm anddoes not provide legal services or legal advice Distribution ofCreative Commons public licenses does not create a lawyer-client orother relationship Creative Commons makes its licenses and relatedinformation available on an as-is basis Creative Commons gives nowarranties regarding its licenses any material licensed under theirterms and conditions or any related information Creative Commonsdisclaims all liability for damages resulting from their use to thefullest extent possible

Using Creative Commons Public Licenses

Creative Commons public licenses provide a standard set of terms andconditions that creators and other rights holders may use to shareoriginal works of authorship and other material subject to copyrightand certain other rights specified in the public license below Thefollowing considerations are for informational purposes only are notexhaustive and do not form part of our licenses

Considerations for licensors Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights Our licenses are irrevocable Licensors should read and understand the terms and conditions of the license they choose before applying it Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected Licensors should clearly mark any material not subject to the license This includes other CC- licensed material or material used under an exception or limitation to copyright More considerations for licensors wikicreativecommonsorgConsiderations_for_licensors

Considerations for the public By using one of our public licenses a licensor grants the public permission to use the licensed material under specified terms and conditions If the licensors permission is not necessary for any reason--for example because of any applicable exception or limitation to copyright--then that use is not regulated by the license Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant Use of

Paacutegina 81 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria the licensed material may still be restricted for other reasons including because others have copyright or other rights in the material A licensor may make special requests such as asking that all changes be marked or described Although not required by our licenses you are encouraged to respect those requests where reasonable More_considerations for the public wikicreativecommonsorgConsiderations_for_licensees

===========================================================

Creative Commons Attribution-NonCommercial-ShareAlike 40 InternationalPublic License

By exercising the Licensed Rights (defined below) You accept and agreeto be bound by the terms and conditions of this Creative CommonsAttribution-NonCommercial-ShareAlike 40 International Public License(Public License) To the extent this Public License may beinterpreted as a contract You are granted the Licensed Rights inconsideration of Your acceptance of these terms and conditions and theLicensor grants You such rights in consideration of benefits theLicensor receives from making the Licensed Material available underthese terms and conditions

Section 1 -- Definitions

a Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated altered arranged transformed or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor For purposes of this Public License where the Licensed Material is a musical work performance or sound recording Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image

b Adapters License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License

c BY-NC-SA Compatible License means a license listed at creativecommonsorgcompatiblelicenses approved by Creative Commons as essentially the equivalent of this Public License

d Copyright and Similar Rights means copyright andor similar rights closely related to copyright including without limitation performance broadcast sound recording and Sui Generis Database

Paacutegina 82 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Rights without regard to how the rights are labeled or categorized For purposes of this Public License the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights

e Effective Technological Measures means those measures that in the absence of proper authority may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20 1996 andor similar international agreements

f Exceptions and Limitations means fair use fair dealing andor any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material

g License Elements means the license attributes listed in the name of a Creative Commons Public License The License Elements of this Public License are Attribution NonCommercial and ShareAlike

h Licensed Material means the artistic or literary work database or other material to which the Licensor applied this Public License

i Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license

j Licensor means the individual(s) or entity(ies) granting rights under this Public License

k NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation For purposes of this Public License the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange

l Share means to provide material to the public by any means or process that requires permission under the Licensed Rights such as reproduction public display public performance distribution dissemination communication or importation and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them

Paacutegina 83 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria m Sui Generis Database Rights means rights other than copyright resulting from Directive 969EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases as amended andor succeeded as well as other essentially equivalent rights anywhere in the world

n You means the individual or entity exercising the Licensed Rights under this Public License Your has a corresponding meaning

Section 2 -- Scope

a License grant

1 Subject to the terms and conditions of this Public License the Licensor hereby grants You a worldwide royalty-free non-sublicensable non-exclusive irrevocable license to exercise the Licensed Rights in the Licensed Material to

a reproduce and Share the Licensed Material in whole or in part for NonCommercial purposes only and

b produce reproduce and Share Adapted Material for NonCommercial purposes only

2 Exceptions and Limitations For the avoidance of doubt where Exceptions and Limitations apply to Your use this Public License does not apply and You do not need to comply with its terms and conditions

3 Term The term of this Public License is specified in Section 6(a)

4 Media and formats technical modifications allowed The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created and to make technical modifications necessary to do so The Licensor waives andor agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights including technical modifications necessary to circumvent Effective Technological Measures For purposes of this Public License simply making modifications authorized by this Section 2(a) (4) never produces Adapted Material

5 Downstream recipients

a Offer from the Licensor -- Licensed Material Every recipient of the Licensed Material automatically

Paacutegina 84 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License

b Additional offer from the Licensor -- Adapted Material Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapters License You apply

c No downstream restrictions You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material

6 No endorsement Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are or that Your use of the Licensed Material is connected with or sponsored endorsed or granted official status by the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i)

b Other rights

1 Moral rights such as the right of integrity are not licensed under this Public License nor are publicity privacy andor other similar personality rights however to the extent possible the Licensor waives andor agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights but not otherwise

2 Patent and trademark rights are not licensed under this Public License

3 To the extent possible the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme In all other cases the Licensor expressly reserves any right to collect such royalties including when the Licensed Material is used other than for NonCommercial purposes

Paacutegina 85 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 3 -- License Conditions

Your exercise of the Licensed Rights is expressly made subject to thefollowing conditions

a Attribution

1 If You Share the Licensed Material (including in modified form) You must

a retain the following if it is supplied by the Licensor with the Licensed Material

i identification of the creator(s) of the Licensed Material and any others designated to receive attribution in any reasonable manner requested by the Licensor (including by pseudonym if designated)

ii a copyright notice

iii a notice that refers to this Public License

iv a notice that refers to the disclaimer of warranties

v a URI or hyperlink to the Licensed Material to the extent reasonably practicable

b indicate if You modified the Licensed Material and retain an indication of any previous modifications and

c indicate the Licensed Material is licensed under this Public License and include the text of or the URI or hyperlink to this Public License

2 You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium means and context in which You Share the Licensed Material For example it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information 3 If requested by the Licensor You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable

Paacutegina 86 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria b ShareAlike

In addition to the conditions in Section 3(a) if You Share Adapted Material You produce the following conditions also apply

1 The Adapters License You apply must be a Creative Commons license with the same License Elements this version or later or a BY-NC-SA Compatible License

2 You must include the text of or the URI or hyperlink to the Adapters License You apply You may satisfy this condition in any reasonable manner based on the medium means and context in which You Share Adapted Material

3 You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to Adapted Material that restrict exercise of the rights granted under the Adapters License You apply

Section 4 -- Sui Generis Database Rights

Where the Licensed Rights include Sui Generis Database Rights thatapply to Your use of the Licensed Material

a for the avoidance of doubt Section 2(a)(1) grants You the right to extract reuse reproduce and Share all or a substantial portion of the contents of the database for NonCommercial purposes only

b if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material including for purposes of Section 3(b) and

c You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database

For the avoidance of doubt this Section 4 supplements and does notreplace Your obligations under this Public License where the LicensedRights include other Copyright and Similar Rights

Paacutegina 87 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 5 -- Disclaimer of Warranties and Limitation of Liability

a UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR TO THE EXTENT POSSIBLE THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL WHETHER EXPRESS IMPLIED STATUTORY OR OTHER THIS INCLUDES WITHOUT LIMITATION WARRANTIES OF TITLE MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE NON-INFRINGEMENT ABSENCE OF LATENT OR OTHER DEFECTS ACCURACY OR THE PRESENCE OR ABSENCE OF ERRORS WHETHER OR NOT KNOWN OR DISCOVERABLE WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART THIS DISCLAIMER MAY NOT APPLY TO YOU

b TO THE EXTENT POSSIBLE IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING WITHOUT LIMITATION NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT SPECIAL INDIRECT INCIDENTAL CONSEQUENTIAL PUNITIVE EXEMPLARY OR OTHER LOSSES COSTS EXPENSES OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES COSTS EXPENSES OR DAMAGES WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART THIS LIMITATION MAY NOT APPLY TO YOU

c The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that to the extent possible most closely approximates an absolute disclaimer and waiver of all liability

Section 6 -- Term and Termination

a This Public License applies for the term of the Copyright and Similar Rights licensed here However if You fail to comply with this Public License then Your rights under this Public License terminate automatically

b Where Your right to use the Licensed Material has terminated under Section 6(a) it reinstates

1 automatically as of the date the violation is cured provided it is cured within 30 days of Your discovery of the violation or

2 upon express reinstatement by the Licensor

For the avoidance of doubt this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License

Paacutegina 88 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

c For the avoidance of doubt the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time however doing so will not terminate this Public License

d Sections 1 5 6 7 and 8 survive termination of this Public License

Section 7 -- Other Terms and Conditions

a The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed

b Any arrangements understandings or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License

Section 8 -- Interpretation

a For the avoidance of doubt this Public License does not and shall not be interpreted to reduce limit restrict or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License

b To the extent possible if any provision of this Public License is deemed unenforceable it shall be automatically reformed to the minimum extent necessary to make it enforceable If the provision cannot be reformed it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions

c No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor

d Nothing in this Public License constitutes or may be interpreted as a limitation upon or waiver of any privileges and immunities that apply to the Licensor or You including from the legal processes of any jurisdiction or authority

===========================================================

Paacutegina 89 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaCreative Commons is not a party to its public licensesNotwithstanding Creative Commons may elect to apply one of its publiclicenses to material it publishes and in those instances will beconsidered the Licensor Except for the limited purpose of indicatingthat material is shared under a Creative Commons public license or asotherwise permitted by the Creative Commons policies published atcreativecommonsorgpolicies Creative Commons does not authorize theuse of the trademark Creative Commons or any other trademark or logoof Creative Commons without its prior written consent includingwithout limitation in connection with any unauthorized modificationsto any of its public licenses or any other arrangementsunderstandings or agreements concerning use of licensed material Forthe avoidance of doubt this paragraph does not form part of the publiclicenses

Creative Commons may be contacted at creativecommonsorg

Paacutegina 90 de 102

Page 9: Universitat Oberta de Catalunya UOC Ingeniería técnica en

522 Estructura baacutesica de un videojuego5653 Esquema de la estructura baacutesica de un videojuego5854 Patrones de disentildeo59

541 Introduccioacuten59542 Patrones de creacioacuten59543 Singleton59

55 Diagramas de clases definitivos6156 Diagramas nuacutecleo videojuego 6157 Diagrama de clases objetos videojuego6458 Diagrama de clases pantallas videojuego6759 Configurar el entorno de desarrollo69

591 Instalacioacuten 69510 Traspaso del disentildeo a texturas 71511 Implementacioacuten de las maacutequinas de estado 73

6Conclusiones757Recursos utilizados 75

71 Portada documento 7572 Recursos utilizados para el disentildeo del videojuego 75

721 Fotografiacutea pantalla intro videojuego y usuarios 76722 Iconos y botones76

7221 Altavoz767222 Nota Musical767223 Flecha salida767224 Icono de pausa767225 Icono interrogante (help)767226 Botones (Play Score Options)77

723 Recursos graacuteficos 2D componentes escenario777231 Ojos lobos777232 Ovejas y lobos777233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY777234 Escenario77

724 Fuentes777241 Thinckhead777242 Misfortune777243 Tabaquera777244 Press Start Font77

725 Otros78726 Audio y efectos de sonido78

7261 Menu 787262 Game Over787263 Game Play787264 Creacutedits787265 Ready787266 Pause_Resume787267 Quit787268 Sheep78

8Lineas abiertas del proyecto799Bibliografiacutea utilizada 7910Otros proyectos realizados80

101 Remake Gradius Konami80

iii

102 Tales of Nimria mini RPG80102 Motocalipsis Bar 66 RTS80

Creative Commons 40 license by-nc-sa81

Iacutendice de ilustracionesilustracioacuten 1 Ciclo de vida en cascada4ilustracioacuten 11 Calendario proyecto7ilustracioacuten 2 Diagrama de gantt8ilustracioacuten 3 Diagrama de casos de usos actor jugador11ilustracioacuten 4 Diagrama de casos de usos personaje principal19ilustracioacuten 5 Diagrama de casos de usos enemigos24ilustracioacuten 6 Diagrama de clases videojuego28ilustracioacuten 7 Diagrama de clases de pantallas30ilustracioacuten 8 Maacutequina de estados del videojuego 31ilustracioacuten 9 Maacutequina de estados comportamiento oveja 32ilustracioacuten 10 Maacutequina de estados comportamiento lobo 33ilustracioacuten 11 Maacutequina de estados tutorial in game 34ilustraciones 12 y 13 pantallas juego Sheep amp Wolf 36ilustraciones 14 y 15 pantallas juego Sheep Up 37ilustraciones 16 y 17 pantallas juego Temple run38ilustraciones 18 y 19 pantallas juego Attack of the Spooklings39ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitas41ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintas pantallas43ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada44ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada45ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada46ilustracioacuten 241 Transiciones definidas entre pantallas47ilustracioacuten 242 Disentildeo pantallas con Gimp54ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en un videojuego55ilustracioacuten 26 Estructura baacutesica de un videojuego 58ilustracioacuten 27 Singleton59ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego 63ilustracioacuten 29 Diagrama de clases Assets 64ilustracioacuten 30 Diagrama de clases objetos 66ilustracioacuten 31 Diagrama de clases pantallas 68ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse69ilustracioacuten 33 Creacioacuten proyecto libGDX70ilustracioacuten 34 Creacioacuten proyecto libGDX70ilustracioacuten 35 Capas separadas por imaacutegenes71Ilustracioacuten 36 Texture packer 72ilustracioacuten 37 Posicioacuten texturas 73

iv

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

1Introduccioacuten

11 Justificacioacuten y contexto del proyecto

Este trabajo de fin de carrera en adelante TFC se centra en el desarrollo de aplicaciones paradispositivos moacuteviles con sistema operativo Android Actualmente existen multitud de aplicacionesNo obstante este TFC se quiere centrar en un subconjunto de aplicaciones focalizadas alentretenimiento conocidas por todo el mundo como videojuegos

Un videojuego es un software creado para el entretenimiento en general y basado en lainteraccioacuten entre una o varias personas y un aparato electroacutenico que ejecuta dicho videojuego Asiacutepues un videojuego es considerado un software cuyo fin directo es el entretenimiento

En estos uacuteltimos antildeos los smartphones y tabletas se han convertido en las nuevas plataformasmoacuteviles para juegos que compiten con los sistemas portaacutetiles claacutesicos que generalmente tienden aser maacutes cerrados

Los videojuegos se pueden clasificar en distintos geacuteneros estos son una forma de clasificacioacutenque designan un conjunto de videojuegos que poseen una serie de elementos comunes A lo largode la historia de los videojuegos aquellos elementos que han compartido varios de los mismos hanservido para clasificar como un geacutenero a aquellos que les han seguido en estilo y forma de lamisma manera que ha pasado con la muacutesica o el cine Como ejemplo se enumeran algunos de losgeacuteneros maacutes populares Lucha Disparos conocidos como Shooters Sigilo Plataformas ArcadeDeporte etc

Durante mucho tiempo los videojuegos estuvieron reservados para un tipo de usuario muyconcreto con un perfil muy especiacutefico la gran mayoriacutea eran hombres entre 15 y 25 antildeos Saliendode este perfil si se buscaban mujeres o personas mayores de 25 antildeos el nuacutemero de usuarioscaiacutea en picado y es que los videojuegos eran percibidos como el hobby de los adolescentesmasculinos No obstante en los uacuteltimos antildeos se ha visto coacutemo todo esto ha ido cambiando con unaumento tanto del puacuteblico femenino como la aparicioacuten en escena de usuarios con edades maacutesavanzadas

Este cambio ha venido motivado por diferentes motivos evolutivos dentro de la industria delvideojuego Uno de los motivos que ha provocado esto es la aparicioacuten de los teleacutefonos moacutevilesinteligentes tabletas y juegos online junto con gran cantidad de videojuegos de tipo casual Otroclaro motivo es que la mayoriacutea de los que jugaacutebamos hace 25 antildeos pues hoy seguimos jugandoya que hemos crecido con esta cultura y claro esta que a diacutea de hoy ya no tenemos la edad deentonces

12 Descripcioacuten del Proyecto Este proyecto se quiere centrar en el desarrollo de un videojuego de tipo casual para moacutevilesAndroid Estos son un tipo de videojuegos dirigidos a un puacuteblico de jugadores casuales Losvideojuegos casuales pueden tener cualquier tipo de mecaacutenica de juego y ser clasificados dentrode cualquier otro geacutenero Son diferenciados por sus reglas simples y de no requerir un excesivocompromiso en contraste con la mayoriacutea de juegos maacutes complejos No requieren una dedicacioacutende tiempo a largo plazo o habilidades especiales para jugar

Paacutegina 1 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Durante la realizacioacuten del proyecto se realizara el disentildeo del juego por disentildeo se entienderealizar un documento que defina el juego de forma generalizada mecaacutenicas personajes etceste documento es conocido como el ldquogame designrdquo el disentildeo de arte conocido como ldquoConcepartrdquo engloba todo lo relacionado con el aspecto graacutefico del juego estilos de personajes estilos degraacuteficos etc Finalmente se realizara el anaacutelisis disentildeo e implementacioacuten de laaplicacioacuten(videojuego) con las tecnologiacuteas escogidas para este proyecto

13 Objetivos

El objetivo principal de este TFC es adquirir experiencia en el desarrollo de videojuegos paraAndroid Sin embargo yendo maacutes allaacute de la plataforma tambieacuten existe un intereacutes por ampliarconocimientos en cuanto a programacioacuten y disentildeo de videojuegos en general

En cuanto al disentildeo y desarrollo del videojuego se pretende realizar un casual game con lassiguientes caracteriacutesticas

El juego consistiraacute en conducir unas ovejas descarriadas a su corral eacutestas con nuestra ayudadeberaacuten sortear los peligros que iraacuten apareciendo durante el camino hacia el deseado corral Elprincipal peligro que amenaza las ovejas son unos lobos malvados que quieren comeacuterselas Elvideojuego soacutelo dispondraacute de una uacutenica modalidad de juego para un uacutenico jugador Al tratarse deun juego casual el publico objetivo es muy amplio Se pretende conseguir un ldquolook amp feelrdquo conesteacutetica tipo cartoon en clave de humor El juego sera desarrollado en 2D con perspectiva cenital

131 Definicioacuten del videojuego

El nivel se describe como una pantalla estaacutetica con vista cenital en posicioacuten vertical Con estaacuteticase entiende que no hay ninguacuten tipo de scroll que haga desplazar la pantalla Siempre veremos lomismo

En la parte de arriba del todo apareceraacute un corral con una puerta la puerta se iraacute abriendo ycerrando de forma aleatoria Por los extremos de la pantalla habraacute arbustos que representaran loslimites del bosque De estos limites iraacuten saliendo lobos a la escena que se querraacuten comer a laspobres ovejas Estas ovejas permaneceraacuten en la parte de abajo de la pantalla e iraacuten saliendo a laescena ellas solas sin saber demasiado donde van(son ovejas descarriadas) nuestra misioacutenconsistiraacute en tirarlas hacia el corral para salvarlas de los malvados lobos metiendolas por lapuerta en los momentos que este abierta para lanzarlas tendremos que deslizar el dedo encimade ellas para darles impulso hacia el corral si no acertamos en meter la oveja en la puerta estarebotara como si de un pelota se tratase Los lobos iraacuten saliendo para sacarnos los lobos deencima deberemos deslizar nuestro dedo encima de ellos o tocarlos para ahuyentarlos De lobos habraacute de diferentes colores marrones grises y azulados Cada lobo loahuyentaremos de manera distinta

bull Marrones 1 pulsacioacuten o deslizar 1 vez el dedo sobre el lobobull Grises 2 pulsaciones o deslizar 2 veces el dedo sobre el lobobull Azulados 3 pulsaciones o deslizar 3 veces el dedo sobre el lobo

A parte de impedir que se coman las ovejas que estaacuten en camino hacia el corral tambieacutentendremos que evitar que los lobos lleguen a la parte de abajo donde estaacute el grupo de ovejas yaque esto nos haraacute perder vidas el juego inicialmente empezara con 3 vidas pudiendo alcanzar unmaacuteximo de 6 vidas en total cada 10000 puntos obtendremos un vida extra

Paacutegina 2 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Conforme el juego se va desarrollando eacuteste iraacute acumulando

bull Puntosbull Tiempo jugadobull Numero de lobos ahuyentadosbull Ovejas colocadas en el corral

Se tratara pues de ir mejorando nuestro propio reacutecord partida tras partida El juego iraacuteaumentando de dificultad durante el transcurso de la partida

Como apunte final el juego recibe el nombre de ldquoFling the sheeprdquo que traducido al espantildeolvendriacutea a ser algo como ldquolanzar las ovejasrdquo

Paacutegina 3 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

14 Planificacioacuten

141 Ciclo de vida

Un videojuego no deja de ser un proyecto de software por tanto para la realizacioacuten de esteproyecto se ha tomado como base el ciclo de vida claacutesico de cualquier proyecto de softwaremodificado ligeramente a las necesidades del proyecto Este ciclo de vida que tambieacuten sedenomina ciclo de vida en cascada se compone de las siguientes etapas

ilustracioacuten 1 Ciclo de vida en cascada

142 Planificacioacuten detallada del proyecto

En los siguientes apartados se recogen por cada etapa que compone el ciclo de vida las principales actividades realizadas con el objetivo de alcanzar el producto deseado dentro delos plazos definidos

1411 Anaacutelisis previo planificacioacuten

En este punto se ha abordado la visioacuten global del proyecto comprendida en establecer lospuntos iniciales necesarios para crear una planificacioacuten de tareas en funcioacuten de las actividades arealizar

Actividad Descripcioacuten

Disentildeo conceptual del videojuego Mecaacutenicas del videojuego

Definicioacuten de las tecnologiacuteas Tecnologiacuteas que se utilizaran en el desarrollo delvideojuego

Anaacutelisis de riesgos Posibles riesgos del proyecto

Planificacioacuten del proyecto Crear una planificacioacuten adaptada a los plazos de entregade este TFC

Paacutegina 4 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Redaccioacuten del documento Generacioacuten del plan de trabajo

Entrega de la PEC1 Entrega del documento

1412 Anaacutelisis de requisitos

En esta fase se ha detallado que necesidades debe cubrir el videojuego tanto desde un puntode vista funcional como desde un punto de vista arquitectoacutenico de la aplicacioacuten a disentildear se hadisentildeado un modelo troncal de clases para posteriormente desarrollar en base a estas todo elvideojuego No obstante en ninguacuten caso se ha entrado en detalle en las tecnologiacuteas a utilizar yadefinidas previamente

Actividad Descripcioacuten

Especificacioacuten de requisitos funcionales Definicioacuten de casos de usos

Disentildeo baacutesico estructura aplicacioacuten Diagrama baacutesico de clases

Especificacioacuten de requisitos funcionales Definicioacuten de maacutequinas de estado

1413 Disentildeo

En este apartado teniendo en cuenta que en este proyecto se va a desarrollar un videojuego seha realizado la recopilacioacuten conceptual de arte conjuntamente con el disentildeo de todas laspantallas que intervienen en el Conjuntamente con la seleccioacuten de los tipos de fuente que seutilizaran para el videojuego seleccioacuten de personajes y enemigos

Actividad Descripcioacuten

Definicioacuten de usuarios y contexto de uso delvideojuego

Conocer las caracteriacutesticas de los usuarios susnecesidades y objetivos asiacute como los contextosde uso

Disentildeo conceptual Un escenario de uso describe desde el puntode vista del usuario como seraacute utilizado unproducto determinado (es este caso unvideojuego) en un escenario determinado

Seleccioacuten de arte Seleccioacuten de arte ya hecho con licencias libresya que no se disponen de conocimientos dearte para abordar el disentildeo

Seleccioacuten de fuentes Seleccioacuten de los tipos de fuente adecuadospara el disentildeo del videojuego

Seleccioacuten de personajes y enemigos Seleccioacuten de personajes y enemigosdisponibles en la red con licencias libres ya queno se disponen de conocimientos de arte paraabordar el disentildeo

Disentildeo de pantallas que intervienen(prototipo) Con todo el arte fuentes y personajes serealizara el disentildeo de todas las pantallas queintervienen en el juego Realizacioacuten de unboceto a mano alzada Sketches y prototipo dealta fidelidad

Redaccioacuten del documento Generacioacuten del documento de disentildeo

Paacutegina 5 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Entrega de la PEC2 Entrega del documento

1414 Implementacioacuten y pruebas

En este punto se ha desarrollado la implementacioacuten del videojuego partiendo de todas lasdefiniciones de los apartados anteriores y las verificaciones oportunas para asegurar el correctofuncionamiento del videojuego

Actividad Descripcioacuten

Implementacioacuten de navegables y contenidos Implementacioacuten de la estructura de todas lapantallas del video juego y la navegabilidadentre ellas y las funciones principales de cadauna de ellas

Implementacioacuten del gameplay Implementacioacuten de la logica de juego

Implementacioacuten de sonido y efectos Implementacioacuten de los efectos de sonido y lamusica

Version alpha del videojuego En este punto se dispone de un videojuegofuncional listo para ser revisado y refinado

Pruebas y refinamiento de la implementacioacuten Pruebas y correcioacutenes de posibles errores

Preparacioacuten del paquete entregable y laredaccioacuten del documento

Testeo final y preparacioacuten del apk a entregarmas la redaccioacuten del documento estrutural delaplicacioacuten

Entrega de la PEC3 Entrega del documento

1415 Finalizacioacuten

En un proyecto de software esta parte quedariacutea focalizada en la fase de implantacioacuten y puesta enmarcha Sin embargo al tratarse de un videojuego esta fase quedariacutea focalizada en la fase delanzamiento del producto No obstante en este caso se ha utilizado para documentar todo eltrabajo realizado a lo largo de este TFC

Actividad Descripcioacuten

Redaccioacuten memoria final proyecto Redaccioacuten memoria final

Montaje presentacioacuten diapositivas Montaje presentacioacuten diapositivas

Montaje del video final presentacioacuten proyecto Montaje del video final presentacioacuten proyecto

Entrega final Entega final

Paacutegina 6 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria143 Temporalizacioacuten del proyecto

La siguiente ilustracioacuten muestra el calendario definido para el proyecto

ilustracioacuten 11 Calendario proyecto

Paacutegina 7 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

En la siguiente pagina se muestra una ilustracioacuten del diagrama de gantt correspondiente alcalendario mostrado en la ilustracioacuten 1

ilustracioacuten 2 Diagrama de gantt

Paacutegina 8 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

15 Herramientas y tecnologiacuteas utilizadas

Actualmente existen varios frameworks para desarrollar videojuegos sobre plataformas moacutevilesSe ha hecho un anaacutelisis comparativo preliminar entre Cocos2D-android1 Cocos2D-x y libGDXaunque existen otros estos tres son los maacutes nombrados y utilizados

Cocos2d-android1 Es un framework en Java basado en la versioacuten de cocos2d-android queesta basado en la versioacuten de cocos2d para iphone Este framework permite el desarrollo devideojuegos en 2D y se programa en Java en lugar de objective-c Para la versioacuten Cocos2d deiphone Actualmente este framework no parece tener mucha continuidad por parte de lacomunidad de desarrolladores aunque no estaacute discontinuado del todo

Cocos2D-x Es un framework en C++ multi-plataforma permite desarrollar para diferentesplataformas a la vez con el mismo coacutedigo Android iOS Bada Marmalade Windows Linux etcSin embargo aunque es un framework con una comunidad muy activa su documentacioacuten esbastante mejorable Se programa en C++ y es posible trabajar con distintos entornos de desarrollocomo Visual Studio o Eclipse El proceso de depuracioacuten con eclipse es algo complejo con C++JNIcon varios pasos a seguir para poder depurar A la vez su configuracioacuten en el entorno Eclipse noes trivial Finalmente tiene relativamente todaviacutea poco tiempo de vida

LibGDX Es un framework escrito en Java sobre C++ ya que las partes criacuteticas estaacuten escritascon coacutedigo nativo para conseguir el mejor rendimiento posible Tiene una comunidad dedesarrolladores muy activa y una documentacioacuten muy extensa Se programa con Java y permite ladepuracioacuten ejecutando la aplicacioacuten en el escritorio de la maacutequina sin tener que pasar por undispositivo real o uno virtual En caso de que se quiera probar en un dispositivo real es posiblehacerlo sin ninguacuten cambio sobre el coacutedigo Este hecho hace que el desarrollo sea maacutes fluidoTiene un rendimiento bastante alto ante cocos2d-x y otros frameworks existentes para eldesarrollo de videojuegos

Todo lo expuesto anteriormente provoca una inclinacioacuten definitiva a utilizar libGDX paraimplementar el videojuego Asiacute pues el videojuego seraacute escrito en Java utilizando el IDE Eclipseque es el soportado oficialmente para Android utilizando el framework libGDX

Para la realizacioacuten de este proyecto se han utilizado las siguientes herramientas

bull Planificacioacuten proyecto

Microsoft Project Professional 2010

bull Disentildeo

Gimp 28 Inkscape 048 TexturePacker 320 Microsoft Visio Professional 2010

bull Programacioacuten

Entorno de desarrollo Eclipse 421 Juno Android develompment tools ADT Android SDK

Paacutegina 9 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Framework libGDX 098 ObjectAid herramienta de visualizacioacuten de coacutedigo en UML para Eclipse Control de versiones Git utilizando como plataforma GitHub

bull Edicioacuten de audio

Audacity 203 GoldWave 569

bull Redaccioacuten de documentos

OpenOffice 401

bull Edicioacuten de viacutedeo

Adobe Premiere Pro CS55

16 Riesgos del proyecto

Se parte de una experiencia previa en desarrollo de videojuegos ver apartado 9 otros proyectosrealizados al final de este documento Aunque no se dispone de experiencia con la libreriacuteaescogida ni tampoco con programacioacuten sobre Android A nivel teacutecnico no se preveacute que puedansurgir muchos riesgos en liacuteneas generales No obstante existe la posibilidad de gastar maacutestiempo del previsto consultando documentacioacuten para lograr los objetivos establecidos

Existe un riesgo maacutes alto a nivel artiacutestico ya que no se dispone de ninguacuten conocimiento de artede ninguacuten tipo Por lo tanto muy probablemente a nivel artiacutestico el juego sea un poco justo Es poreste motivo que durante la realizacioacuten de este proyecto no se va a profundizar en temas de disentildeoartiacutestico en su lugar se utilizaran recursos de arte existentes en la red con licencias libres tipocreative commons o dominio puacuteblico Al final de este documento en el apartado 6 se puede ver unlistado de los recursos utilizados juntamente con un link a la obra y el nombre del autor si esteesta disponible Se haraacute una seleccioacuten de distintos tipos de recursos graacuteficos para posteriormentehacer el montaje de toda la parte graacutefica del videojuego En cuanto a la parte de audio la situacioacuten es exactamente la misma no se dispone de ninguacutenconocimiento para componer muacutesica ni efectos Por lo tanto se buscaraacuten sonidos y temasmusicales con licencias libres Intentando que estos queden integrados de la mejor maneraposible al videojuego

Finalmente existe el riesgo de que el gameplay definido en el disentildeo conceptual del videojuegouna vez puesto en praacutectica no sea del todo funcional o necesite de un balanceo para conseguirun juego equilibrado y jugable

Paacutegina 10 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2 Anaacutelisis funcional Basaacutendonos en el aparatado ldquo131 Definicioacuten del videojuegordquo se han definido los requisitosfuncionales necesarios para este con la definicioacuten de casos de uso Posteriormente se ha definidoun diagrama de clases inicial el cual ha servido como punto de partida para el desarrollo completodel videojuego A su vez se definen las maacutequinas de estado finitas utilizadas para el desarrollo

21 Requisitos funcionales casos de uso

En este apartado se presentan tres diagramas de casos de uso El primer diagrama engloba lavista generalizada del actor ldquojugadorrdquo y los casos de uso que describen los requisitos funcionalesdel sistema En los dos diagramas restantes se describen la vista generalizada del actor ldquoIArdquo porIA se entiende la inteligencia artificial del videojuego Los diagramas muestran los requisitosfuncionales de la IA para el personaje principal y los enemigos La IA interactuacutea con el sistema ypor tanto seraacute susceptible de analizar su uso de la aplicacioacuten

211 Diagrama casos de uso actor ldquoJugadorrdquo

ilustracioacuten 3 Diagrama de casos de usos actor jugador

Paacutegina 11 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Como se puede observar en la ilustracioacuten 3 el sistema solo dispone de un uacutenico actor Que eneste caso es el jugador del videojuego es decir representa todos los posibles usuarios quepueden jugar al videojuego

En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 3estos seraacuten desarrollados en la seccioacuten posterior

212 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

VJ01 Inicio videojuego Jugador

VJ02 Jugar Jugador

VJ03 Acceder puntuaciones maacuteximas Jugador

VJ31 Consultar puntuacione locales Jugador

VJ32 Salir puntuacione locales Jugador

VJ04 Acceder a las opciones Jugador

VJ41 Activar o desactivar muacutesica o efectos Jugador

VJ42 Acceder a la pantalla de creacuteditos Jugador

VJ421 Salir de la pantalla de creacuteditos Jugador

VJ43 Salir de las opciones Jugador

VJ05 Acceder a las instrucciones Jugador

VJ51 Salir de las intrucciones Jugador

VJ06 Salir del videojuego Jugador

213 Descripcioacuten textual de los casos de uso

2131 VJ01 Inicio videojuego

Identificador VJ01

Nombre Inicio videojuego

Autor Xavier Figuera

Resumen El usuario inicia el videojuego

Actor(es) Jugador

Precondiciones Ninguna el videojuego no habiacutea sido iniciado auacuten

Postcondiciones El usuario a iniciado el videojuego a visualizado la pantalla de introdurante un segundo y se encuentra en la pantalla del menuacute principal

Flujo normal 1 El usuario accede a la lista de aplicaciones de su dispositivo 2 Busca el acceso al videojuego3 Ejecuta el programa4 Se carga la aplicacioacuten5 El videojuego muestra la pantalla de intro

Paacutegina 12 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6 Se muestra el menuacute principal al jugador

Flujos alternativos Se podriacutea dar el caso que el usuario accediera al videojuego desde algunacceso directo en alguno de los escritorios del dispositivo

Inclusiones Ninguna

Extensiones Ninguna

2132 VJ02 Jugar

Identificador VJ02

Nombre Jugar

Autor Xavier Figuera

Resumen Jugar al videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario empieza a jugar

Flujo normal 1 El usuario pulsa el botoacuten play del menuacute principal 2 El usuario juega3 El usuario puede volver a jugar una vez finalizada la partida 4 El usuario puede salir del juego en cualquier momento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2133 VJ03 Acceder puntuaciones maacuteximas locales

Identificador VJ03

Nombre Acceder puntuaciones maacuteximas locales

Autor Xavier Figuera

Resumen Acceder a la pantalla de puntuaciones maacuteximas locales de las partidasrealizadas en el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla con la tabla de las 10 puntuacionesmaacuteximas

Flujo normal 1 El usuario pulsa el botoacuten Scores del menuacute principal 2 Al usuario le aparece la pantalla de puntuacioacuten

Paacutegina 13 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ31 Consultar puntuaciones localesVJ32 Salir de la puntuaciones locales

2134 VJ31 Consultar puntuaciones locales

Identificador VJ31

Nombre Consultar puntuaciones locales

Autor Xavier Figuera

Resumen Consulta de las puntuaciones maacuteximas locales de las partidas realizadasen el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Scores delmenuacute principal

Postcondiciones El usuario visualiza la tabla de las 10 puntuaciones maacuteximas

Flujo normal 1 El usuario visualiza una tabla con las 10 puntuaciones maacuteximas

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2135 VJ32 Salir puntuaciones locales

Identificador VJ32

Nombre Salir puntuaciones locales

Autor Xavier Figuera

Resumen Salir de las puntuaciones maacuteximas locales

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulso el botoacuten Scores

Postcondiciones El usuario sale de la tabla de puntuaciones

Flujo normal 1 El usuario pulsa el botoacuten salir en la pantalla tabla de puntuaciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 14 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2136 VJ04 Acceder a las opciones

Identificador VJ04

Nombre Acceder a la pantalla de opciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de opciones del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla de opciones

Flujo normal 1 El usuario pulsa el botoacuten Options del menuacute principal 2 Al usuario le aparece la pantalla de opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ41 Activar o desactivar muacutesica o efectos VJ42 Acceder a la pantalla de creacuteditosVJ43 Salir de las opciones

2137 VJ41 Activar o desactivar muacutesica o efectos

Identificador VJ041

Nombre Activar o desactivar muacutesica o efectos

Autor Xavier Figuera

Resumen Activar o desactivar muacutesica o efectos de audio del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal

Postcondiciones El usuario activa o desactiva la muacutesica o efectos del videojuego

Flujo normal 1 El usuario pulsa el botoacuten altavoz para activar o desactivar la muacutesica delvideojuego 2 El usuario pulsa el botoacuten notas musicales para activar o desactivar losefectos de audio del videojuego

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 15 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2138 VJ42 Acceder a la pantalla de creacuteditos

Identificador VJ42

Nombre Acceder a la pantalla de creacuteditos

Autor Xavier Figuera

Resumen Acceder a la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario se encuentra en la pantalla de opciones

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten credits para acceder a los creacuteditos2 El usuario puede desplazar el texto de los creacuteditos deslizando el dedosobre el texto hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ421 Salir de la pantalla de creacuteditos

2139 VJ421 Salir de la pantalla de creacuteditos

Identificador VJ421

Nombre Salir de la pantalla de creditos

Autor Xavier Figuera

Resumen Salir de la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal y ha accedido a la pantalla creacuteditos

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten salir para abandonar la pantalla para accedera los creacuteditos2 El usuario se encuentra de nuevo en la pantalla opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 16 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21310 VJ05 Acceder a las instrucciones

Identificador VJ05

Nombre Acceder a la pantalla de instrucciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten del menuacuteprincipal

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a las instrucciones2 El usuario puede desplazar el texto de las instrucciones deslizando eldedo sobre el hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ51 Salir de las instrucciones

21311 VJ51 Salir de las instrucciones

Identificador VJ51

Nombre Salir de las intrucciones

Autor Xavier Figuera

Resumen Salir de la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten en el menuacuteprincipal y ha accedido a la pantalla de instrucciones

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a la pantalla de instrucciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 17 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21312 VJ06 Salir del videojuego

Identificador VJ06

Nombre Salir del videojuego

Autor Xavier Figuera

Resumen Salir del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego

Postcondiciones El usuario abandona el videojuego

Flujo normal 1 El usuario pulsa el botoacuten exit de la aplicacioacuten para salir del videojuego oel botoacuten salir del dispositivo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 18 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214 Diagrama casos de uso actor ldquoIArdquo

Por IA se entiende inteligencia artificial es un elemento fundamental para dotar de realismo a unvideojuego Uno de los retos principales que se plantean a la hora de integrar comportamientosinteligentes es alcanzar un equilibrio entre la sensacioacuten de inteligencia y el tiempo de coacutemputoempleado por este subsistema Este equilibrio es de gran importancia en el caso de losvideojuegos Este planteamiento gira generalmente en torno a la generacioacuten de soluciones quesin ser oacuteptimas proporcionen una cierta sensacioacuten de inteligencia En concreto dichas solucionesdeberiacutean tener como meta que el jugador se enfrente a un reto que sea factible de manera quesuponga un estiacutemulo emocional y que consiga engancharlo al videojuego

En estos uacuteltimos antildeos la IA ha pasado de ser un componente secundario en el proceso dedesarrollo de videojuegos a convertirse en uno de los aspectos maacutes importantes Actualmentelograr un alto nivel de IA en un juego sigue siendo uno de los retos maacutes emocionantes y complejosy en ocasiones sirve para diferenciar un juego normal de uno realmente espectacular

Dentro de este proyecto de ha definido una IA baacutesica para dotar del realismo necesario alvideojuego propuesto En los siguientes diagramas se define esta IA en forma de casos de usospara su posterior implementacioacuten

2141 Diagrama casos de uso IA personaje principal (oveja)

ilustracioacuten 4 Diagrama de casos de usos personaje principal

Paacutegina 19 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 4estos seraacuten desarrollados en la seccioacuten posterior

21411 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA03 Salida oveja al escenario IA

IA031 Posicionamiento en pantalla de la oveja IA

IA032 Movimiento oveja IA

IA033 Oveja pastando IA

IA034 Lanzamiento oveja IA

IA035 Rebotes de la oveja IA

IA036 La oveja entra en el establo IA

IA037 Parar oveja IA

21412 Descripcioacuten textual de los casos de uso

214121 IA03 Salida ovejas al escenario

Identificador IA03

Nombre Salida oveja al escenario

Autor Xavier Figuera

Resumen Salida oveja al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones La oveja es instanciada de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Las ovejas se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA031 Posicionamiento en pantalla de las oveja

214122 IA031 Posicionamiento en pantalla de las oveja

Identificador IA031

Nombre Posicionamiento en pantalla de las oveja

Paacutegina 20 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Autor Xavier Figuera

Resumen Asignacioacuten inicial posicioacuten de las ovejas en pantalla siempre es la mismaposicioacuten esta queda fuera del rango visual de la pantalla

Actor(es) IA

Precondiciones La partida esta iniciada y la oveja instanciada

Postcondiciones La oveja queda posicionada en unas coordenadas fuera de la pantalla

Flujo normal 1 Se instancia la oveja2 La oveja queda posicionada en unas coordenadas uacutenicas fuera delrango visual de pantalla

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214123 IA032 Movimiento oveja

Identificador IA032

Nombre Movimiento oveja

Autor Xavier Figuera

Resumen Movimiento de las ovejas hacia el escenario

Actor(es) IA

Precondiciones La partida esta iniciada la oveja instanciada y posicionada

Postcondiciones La oveja se mueve hacia el escenario empieza a pastar

Flujo normal 1 La oveja se mueve hacia el escenario

Flujos alternativos Ninguno

Inclusiones IA034

Extensiones IA033 Oveja PastandoIA037 Parar oveja

214124 IA033 Oveja pastando

Identificador IA033

Nombre Oveja pastando

Autor Xavier Figuera

Resumen La ovejas permanecen en un espacio determinado de coordenadas depantalla mientras no sean lanzadas al escenario por el usuario

Actor(es) IA

Paacutegina 21 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Precondiciones La oveja ha salido al escenario

Postcondiciones La oveja se mueve dentro de un espacio determinado de forma indefinida

Flujo normal 1 La oveja se mueve de forma indefinida hasta que sea lanzada por elusuario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA034 Lanzamiento oveja

214125 IA034 Lanzamiento oveja

Identificador IA034

Nombre Lanzamiento oveja

Autor Xavier Figuera

Resumen La oveja es lanzada por el usuario y se acelera en funcioacuten de la fuerza delanzamiento

Actor(es) IA

Precondiciones La oveja se mueve

Postcondiciones La oveja ha sido lanzada

Flujo normal 1 La oveja se mueve de forma indefinida2 La oveja es lanzada3 La oveja acelera en funcioacuten de la fuerza de lanzamiento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214126 IA035 Rebotes de la oveja

Identificador IA035

Nombre Rebotes de la oveja

Autor Xavier Figuera

Resumen La oveja ha sido lanzada y rebota por el escenario

Actor(es) IA

Precondiciones La oveja ha sido lanzada

Postcondiciones La oveja rebota por el escenario

Flujo normal 1 La oveja ha sido lanzada y rebota por el escenario 2 La oveja entra en el establo si colisiona con la puerta y esta abierta

Paacutegina 22 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA036 La oveja entra en el establo

214127 IA036 La oveja entra en el establo

Identificador IA036

Nombre La oveja entra en el establo

Autor Xavier Figuera

Resumen La oveja entra en el establo

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario y la puerta del establo estaabierta

Postcondiciones La oveja entra en el establo

Flujo normal 1 La oveja entra en el establo si colisiona con la puerta y esta abierta

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214128 IA037 Parar oveja

Identificador IA037

Nombre Parar oveja

Autor Xavier Figuera

Resumen La oveja para si se hacen dos pulsaciones encima de ella

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario

Postcondiciones La oveja se para

Flujo normal 1 La oveja esta rebotando2 El usuario pulsa dos veces encima de ella3 La oveja se para

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 23 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2142 Diagrama casos de uso IA enemigos (lobo)

ilustracioacuten 5 Diagrama de casos de usos enemigos

21421 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA02 Salida lobo al escenario IA

IA021 Ojos por la derecha o por la izquierda IA

IA022 Escoje el tipo de lobo IA

IA023 Lobo por la derecha o por la izquierda IA

IA024 Salta a escena IA

IA025 Movimento lobo IA

Paacutegina 24 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21422 Descripcioacuten textual de los casos de uso

214221 IA02 Salida lobo al escenario

Identificador IA02

Nombre Salida lobo al escenario

Autor Xavier Figuera

Resumen Salida lobo al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones El lobo es instanciado de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Los lobos se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA02 IA021 IA022 IA023 IA024

214222 IA021 Ojos por la derecha o por la izquierda

Identificador IA021

Nombre Ojos por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Salida de ojos al escenario paso previo a que salte el lobo

Actor(es) IA

Precondiciones El lobo ha sido instanciado

Postcondiciones Aparecen unos ojos que se cierra y se abren por la derecha o izquierda dela pantalla de forma aleatoria

Flujo normal 1 El lobo ha sido instanciado2 Aparecen unos ojos que se cierran y se abren 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 25 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214223 IA022 Escoge el tipo de lobo

Identificador IA022

Nombre Escoge el tipo de lobo

Autor Xavier Figuera

Resumen Escoge el tipo de lobo de forma aleatoria de los tres definidos

Actor(es) IA

Precondiciones Han aparecido los ojos

Postcondiciones Ha escogido el tipo de lobo que saltara al escenario

Flujo normal 1 Han aparecido los ojos2 Ha escogido el tipo de lobo que saltara al escenario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214224 IA023 Lobo por la derecha o por la izquierda

Identificador IA023

Nombre Lobo por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Escoge de forma aleatoria el lado por donde debe aparecer el lobo

Actor(es) IA

Precondiciones Se ha seleccionado el tipo de lobo

Postcondiciones Se ha escogido el lado por donde apareceraacute

Flujo normal 1 Se ha escogido el lado por donde apareceraacute

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 26 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214225 IA024 Salta a escena

Identificador IA024

Nombre Salta a escena

Autor Xavier Figuera

Resumen El lobo salta a escena

Actor(es) IA

Precondiciones Se ha seleccionado el lado por donde debe aparecer y salta

Postcondiciones El lobo esta en escena

Flujo normal 1 Se ha seleccionado el lado por donde debe aparecer y salta2 El lobo esta en escena

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones A025

214226 IA025 Movimiento lobo

Identificador IA025

Nombre Movimiento lobo

Autor Xavier Figuera

Resumen El lobo esta en escena y se mueve

Actor(es) IA

Precondiciones El lobo ha saltado a la escena

Postcondiciones El lobo se mueve

Flujo normal 1 El lobo ha saltado a la escena2 El lobo se mueve

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 27 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

22 Disentildeo inicial diagrama de clases

221 Diagrama de clases inicial ldquoFling the sheeprdquo

ilustracioacuten 6 Diagrama de clases videojuego

En este apartado se define la estructura inicial de la aplicacioacuten a traveacutes del diagrama de clasesmostrado en la ilustracioacuten 6 Esto serviraacute como punto de partida para el completo disentildeo de laaplicacioacuten para su posterior implementacioacuten A continuacioacuten se pasan a detallar a modo resumidoque funcionalidad tiene cada una de las clases definidas en este diagrama

2211 Resumen clases videojuego

FlingTheSheepMain Clase principal desde donde se inicializaraacute la aplicacioacuten

Assets Esta clase contendraacute todos los recursos necesarios del juego texturas sonidos etcEstos seraacuten inicializados en el momento de iniciar el juego Existe una dependencia entre la claseFlingTheSheepMain y Assets ya que la instanciacioacuten de Assets esta condicionada por lainstanciacioacuten de la clase principal FlingTheSheepMain cuando se pone en marcha el videojuego

Paacutegina 28 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaWorldGameController Esta clase contendraacute la loacutegica del videojuego

AudioManager Clase destinada para controlar la reproduccioacuten de efectos de sonido y audio delvideojuego

Charcater Es la superclase que describe los comportamientos comunes de los personajes deella se extienden los personajes principales y los enemigos

Sheep Clase que representa el personaje principal

Wolf Clase que representa a los enemigos

AbstractGameObject Esta superclase recoge todos los comportamientos comunes de losobjetos del juego por objetos se entiende todos los componentes que forman el escenario delvideojuego De esta clase se extienden todos los objetos del videojuego

Grass Hierba que apareceraacute en el escenario

Flower Flores que apareceraacuten en el escenario

ThePen Establo donde hay que hacer llegar las ovejas

DoorPen Puerta del establo esta se abriraacute y se cerrara aleatoriamente

Hole Agujeros en el escenario

WoodFenceForest Valla de madera que apareceraacute en el escenario

Como se ha comentado este diagrama de clases es un diagrama inicial por tanto lo maacutesprobable es que durante el desarrollo del videojuego se antildeadan maacutes clases al disentildeo inicialmostrado en la ilustracioacuten 6 En el apartado 55 de este documento se muestran los diagramas declases definitivos

Paacutegina 29 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria222 Diagrama de clases inicial de pantallas

ilustracioacuten 7 Diagrama de clases de pantallas

Este diagrama recoge en forma de clases las pantallas iniciales definidas del videojuego Separte de una superclase llamada AbstractGameScreen que recogeraacute las operaciones comunes detodas ellas y de esta se extienden las pantallas concretas este diagrama solo muestra laspantallas maacutes baacutesicas definidas inicialmente estas serviraacuten como base para desarrollar elconjunto de pantallas total necesarias para este proyecto y que quedan recogidas en su totalidaden el apartado 4 ldquoDisentildeordquo de esta documento

A continuacioacuten se pasan a detallar a modo resumido cada una de ellas

2221 Resumen clases pantallas

IntroScreen Clase para la pantalla de intro

MenuScreen Clase que contiene el menuacute principal del videojuego GameScreen La clase game screen es la que contiene la pantalla donde se desarrolla todo elvideojuego

Paacutegina 30 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

23 Definicioacuten de maacutequinas de estado finitas

Como ya se ha introducido en el punto 212 la IA aplicada a los videojuegos dota a estos derealismo Existen distintas teacutecnicas para la implementacioacuten de esta Una de las maacutes consolidadases el uso de maacutequinas de estados finitas ya que tienen un coste computacional casi inexistenteya que no tienen ninguacuten coste de procesamiento asignado Las maacutequinas de estados permiten deforma faacutecil definir comportamientos Es por este motivo que han sido utilizadas no solamente para definir los comportamientos de laIA del videojuego sino tambieacuten para definir los distintos estados en que se puede encontrar elvideojuego durante su tiempo de vida A continuacioacuten se detallan los distintos diagramas de lasmaacutequinas de estados utilizadas para este proyecto conjuntamente con una explicacioacuten de cadauna de ellas

231 Maacutequina de estados del videojuego

ilustracioacuten 8 Maacutequina de estados del videojuego

La ilustracioacuten 8 nos muestra los estados que puede tomar el videojuego durante su tiempo devida

Este diagrama define los estados que puede tomar el videojuego una vez iniciado inicialmente eljuego se encuentra en el estado READY de este estado existe una transicioacuten al estado GAMEcuando el tiempo de READY finaliza READY lt=0 El estado game sera el estado en donde se

Paacutegina 31 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriadesarrollara todo el juego Des de este estado podemos pasar al estado PAUSE si pulsamos elbotoacuten de pausa del juego y desde el estado PUASE volvemos al estado GAME si volvemos apulsar el botoacuten pause Finalmente desde el estado GAME haremos la transicioacuten al estado GAMEOVER si nos arrebatan todas las vidas durante la partida Desde el estado GAME OVERpodremos volver a READY si decidimos hacer una nueva partida

232 Maacutequina de estados comportamiento oveja

ilustracioacuten 9 Maacutequina de estados comportamiento oveja La ilustracioacuten 9 muestra el comportamiento del personaje principal del videojuego que en estecaso es la oveja Se define el ciclo de vida de la oveja a traveacutes de sus comportamientos

APPEAR SHEEP La oveja aparece fuera del rango visual de la pantalla y empieza a moversepara que suceda la transicioacuten hacia el siguiente estado FOREST START la coordenada x debeser menor que 220

FOREST START La oveja seguiraacute movieacutendose en un espacio determinado de la pantalla hastaque sea lanzada en unas determinadas direcciones la direccioacuten queda determinada por lasvariables velocityX velocityY estas tomaran valores positivos o negativos determinando ladireccioacuten de lanzamiento esto queda reflejado en la condicioacuten de transicioacuten del estado FORESTSTART a FOREST DEEP Si realizamos el lanzamiento en esas determinadas direccionesharemos la transicioacuten al un nuevo estado FOREST DEEP

FOREST DEEP La oveja rebota por el escenario si colisiona con la puerta del corral y estaabierta hacemos la transicioacuten al estado ON THE PEN

Paacutegina 32 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ON THE PEN Finaliza el ciclo de vida de la oveja dentro del juego esta es devuelta al corral seincrementan puntos en el marcador de puntuacioacuten y se incrementa una unidad en el contador deovejas salvadas

233 Maacutequina de estados comportamiento lobo

ilustracioacuten 10 Maacutequina de estados comportamiento lobo La ilustracioacuten 10 muestra el comportamiento de los enemigos del videojuego que en este casoson los lobos Se define el ciclo de vida del lobo a traveacutes de sus comportamientos

APPEAR EYES Antes de aparecer los lobos a escena apareceraacuten sus ojos entre los matorralesdel bosque Cuando acaba el tiempo pasa al siguiente estado tiempo ojos lt= 0

APPEAR WOLF En este estado se seleccionara el tipo de lobo (habraacute 3 tipos distintos) el ladode la pantalla por donde apareceraacute posicioacuten y velocidad de salto como tambieacuten el tiempo ensegundos que tardara a saltar al escenario Una vez seleccionados todos estos paraacutemetros haraacutela transicioacuten al estado WHEN JUMP

WHEN JUMP Este estado simplemente esperara que pase el tiempo para que el lobo salte alescenario Un vez pase el tiempo el lobo apareceraacute en el escenario pasando a la transicioacuten JUMPON SCENE

JUMP ON SCENE En este estado se efectuara el salto a escena del lobo este saltara desde los

Paacutegina 33 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriamatorrales laterales de la pantallahacia el escenario dibujando un arco convexo Para realizar elsalto nos apoyaremos en la representacioacuten del calculo de la funcioacuten trigonomeacutetrica cosenosolamente en sus valores positivos por tanto cuando cosy lt 0 haremos la transicioacuten al estadoMOVE ya que el salto habraacute finalizado

MOVE En este estado los lobos se moveraacuten y podraacuten ser ahuyentados pulsando repetidas vecesencima de ellos las veces a pulsar queda sujeta al tipo de lobo que sea Des de este estadopodremos hacer a dos estado distintos dependiendo de lo que suceda Si conseguimos ahuyentaral lobo pasaremos al estado WOLF SCARED Si por el contrario el lobo atrapa a la ovejaharemos la transicioacuten al estado SHEEP TRAPPED en ambos estados finalizara el ciclo de vidadel lobo

WOLF SCARED Se habraacute ahuyentado el lobo se incrementa en uno el contador de lobosahuyentados y se suman puntos a la puntuacioacuten total En este estado finaliza el ciclo de vida dellobo

SHEEP TRAPPED El lobo habraacute atrapado una oveja se nos restara una vida En este estadofinaliza el ciclo de vida del lobo

234 Maacutequina de estados tutorial in game

ilustracioacuten 11 Maacutequina de estados tutorial in game La ilustracioacuten 11 muestra los distintos estados que toma el mini tutorial in game que apareceraacute laprimera vez que se juega En este las transiciones entre estados suceden de forma automaacutetica

Paacutegina 34 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriacada 5 segundos desde que se ha activado el primer estado Cada estado corresponderaacute a unacaja de texto mostrada en pantalla

3 Disentildeo

31 Estudio comparativo

Un estudio realizado en 2011 por la empresa Newzoo httpwwwnewzoocom empresainternacional dedicada a los estudios de mercado y enfocada por completo a la industria de losvideojuegos Ha realizado la primera encuesta a jugadores espantildeoles y una de las cosas que dicees La suma del volumen de negocio de juegos online (redes sociales juegos casualesjuegos para moacuteviles juegos MMO) superaraacute al del consumo en juegos para consolas en2011 Se puede ver un resumen del estudio en liacutenea en

httpwwweurogameresarticles2011-10-26-espana-gastara-1-600-millones-de-euros-en-videojuegos-en-2011

Con esta informacioacuten se puede ver que hacer un videojuego casual para una plataforma moacutevilcomo Android puede ser muy viable

Para este proyecto se realizaraacute un estudio comparativo (benchmarking) En la industria de losvideojuegos es habitual sacar tiacutetulos fijaacutendose en otros tiacutetulos que han conseguido gran eacutexito enel mercado La operativa consiste en mejorarlos dentro de otro contexto o hacer un videojuegocompletamente diferente pero basaacutendose en ocasiones en mecaacutenicas de alguacuten otro tiacutetulo que haconseguido un gran eacutexito

Existen en Google Play gran cantidad de juegos casuales que pueden servir como inspiracioacuten ycomo punto de inicio para hacer un planteamiento general de coacutemo disentildear el producto que sequiere desarrollar partiendo de los requisitos definidos en el apartado 131 de este documento Setomaraacuten como referencia algunos tiacutetulos para identificar patrones para ver coacutemo otros hansolucionado ciertas situaciones como pueden ser problemas de disentildeo o interaccioacuten entre otrosEn ninguacuten caso deberaacuten ser exactamente de la misma temaacutetica pero si que se miraraacute que seandel mismo tipo es decir casual games

El primer paso para realizar este estudio a sido ir a Google play y verificar si hay alguacuten juego conel mismo nombre que el que se pretende desarrollar ldquoFling the sheeprdquo No existe ninguacuten juego adiacutea de hoy con este nombre

El segundo paso a sido buscar tambieacuten en Google play videojuegos en los que aparezcanovejas solo poniendo en el buscador la palabra sheep nos aparecen muchiacutesimos juegos quetienen una temaacutetica donde aparecen ovejas Se ha verificado tambieacuten poniendo combinaciones depalabras relacionadas con el juego que se quiere implementar palabras como sheep wolves o sheep farm etc los resultados obtenidos son bastante elevados

Por la cantidad de juegos encontrados y los recursos de que se dispone como por ejemplo eltiempo no es posible analizarlos todos Si que se tomaran algunos juegos despueacutes de hacer unrepaso de los maacutes destacados Hay que decir que despueacutes de haber instalado algunos alguno deellos no ha acabado de funcionar correctamente en el dispositivo moacutevil

Tras estos pasos se escogeraacuten dos videojuegos de temaacutetica similar y dos videojuegos detemaacutetica diferente Los videojuegos escogidos para realizar el anaacutelisis comparativo son

Paacutegina 35 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria311 Sheep amp Wolf

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 12 y 13 pantallas juego Sheep amp Wolf Link httpsplaygooglecomstoreappsdetailsid=jscompanygamesSheepAndWolf_enter3

El juego consta de una mecaacutenica muy simple disponemos de un boomerang y un corazoacuten laperspectiva del juego es elevada y vemos coacutemo van bajando ovejas y lobos de forma aleatoria setrata de forma taacutectil dibujar la trayectoria del boomerang para eliminar los lobos sin tocar lasovejas y con el corazoacuten dibujar una trayectoria de forma taacutectil para tocar las ovejas y no los lobosconforme vamos tocando los lobos y las ovejas con el correspondiente objeto iremos sumandopuntos

Tiene cierta similitud con el que se quiere implementar ya que salen tambieacuten lobosovejas ytambieacuten que lo que se pretende implementar funcionara de forma taacutectil para lanzar las ovejas alcorral y ahuyentar a los lobos que amenazan a las ovejas

Tiene una perspectiva de caacutemara igual a la que se quiere implementar Tiene una mecaacutenica dejuego muy sencilla las opciones que ofrece son muy definidas y claras 3 botones al inicio deljuego grandes que nos indican las posibles opciones que tenemos dentro del juego Game StartGame Record Exit Un punto interesante de este juego es que las puntuaciones no se guardan anivel local de la aplicacioacuten sino que son compartidas en una pagina web asiacute se pueden ver laspuntuaciones a nivel mundial La navegacioacuten por las diferentes pantallas es correcta

Quizaacute un aspecto negativo del juego seriacutea que visualmente esta muy poco cuidado Aunque aveces si el juego produce mucha adiccioacuten el aspecto visual puede quedar en segundo teacutermino enjuegos para dispositivos moacuteviles En otros tipos de plataformas como consolas o PC el aspectovisual es un punto muy importante y que se debe trabajar mucho maacutes a fondo no obstante estono significa que en un dispositivo moacutevil no deba estarlo

Paacutegina 36 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez adictivo puntuaciones a nivel mundial Navegacioacuten correctaPuntos Negativos Poco cuidado visualmente no tiene pausaObservaciones No tiene un final definido a medida que avanzamos la dificultad aumenta

312 Sheep Up

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 14 y 15 pantallas juego Sheep Up Linkhttpsplaygooglecomstoreappsdetailsid=compgpublishandroidsheepuplive

A diferencia del anterior este visualmente esta mucho maacutes cuidado Es un juego en 3D dondeuna oveja de juguete esta guardada dentro de una caja de cartoacuten Va botando y tiene que irrecogiendo botones e ir subiendo por diferentes niveles para poder salir de la caja es un juego deplataformas tambieacuten con una mecaacutenica bastante sencilla

Este dispone de una pantalla que dura unos segundos y seguidamente sale el menuacute de opcionesdel juego a diferencia de lo visto anteriormente donde directamente saliacutea el menuacute de opcionesde juego El menuacute de opciones de juego tambieacuten es muy directo y claro Aparte del botoacuten playpara iniciar el juego el botoacuten opciones para configurar el audio del juego los efectos el idioma yver los creacuteditos Tiene el botoacuten store donde este juego tiene implementada la modalidad freemiumpara ir comprando diferentes objetos dentro de el que nos daraacuten ciertas ventajas dentro delgameplay La compra se podraacute realizar con monedas virtuales (los botones) que los habremos idorecogiendo durante los diferentes niveles jugados o tambieacuten podemos comprar cantidadesdeterminadas de botones a cambio de dinero de verdad Dispone de vinculacioacuten a redes socialescomo Twitter y Facebook

Puntos Positivos Sencillez adictivo vinculado a Twitter y el Facebook el juego se puede pararNavegacioacuten correctaPuntos Negativos La pantalla inicial tarda demasiado en desaparecer y no da ninguacuten tipo de

Paacutegina 37 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriainformacioacuten al usuario puede llegar a parecer que se a colgado debido al largo tiempo que tardaal menos con el dispositivo que se ha verificado

313 Temple Run

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 16 y 17 pantallas juego Temple runLinkhttpsplaygooglecomstoreappsdetailsid=comimangitemplerun Es un juego que no tiene final donde un explorador tiene que evitar la muerte superandodiferentes obstaacuteculos a traveacutes de diferentes pasillos tendremos que dibujar diferentes trazos deforma taacutectil para que el personaje gire salte o se deslice por el suelo al mismo tiempo tendremosque inclinar el teleacutefono para que el personaje vaya recogiendo monedas que podremos utilizarpara adquirir objetos y mejoras en la partida A medida que vamos recorriendo maacutes y maacutes metrosla dificultad aumenta y nos obligara a realizar maacutes acciones en un espacio de tiempo maacutes cortoasiacute pues los reflejos juegan un papel importante

Tambieacuten dispone de una pantalla que dura unos segundos seguida de un menuacute de opciones muyclaro y definido Este igual que el anterior dispone de una tienda donde se pueden comprarmejoras (potenciadores) con dinero virtual o real Los botones de inicio son muy similares al delanterior juego visto Dispone de vinculacioacuten a redes sociales como Twitter

Puntos Positivos Sencillez Adictivo vinculado a Twitter el juego se puede parar NavegacioacutencorrectaPuntos Negativos -

Paacutegina 38 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria314 Attack of the Spooklings

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 18 y 19 pantallas juego Attack of the SpooklingsLinkhttpsplaygooglecomstoreappsdetailsid=compicarogamesspooklings_free

Finalmente nos centramos en este casual con aspecto visual retro Otro juego que no disponede final y donde la dificultad va aumentando conforme el tiempo de juego aumenta El objetivo deljuego es matar a todos los Spooklings que quieren atacar nuestro poblado La forma de matar alos Spooklings es con el dedo deslizaacutendolo sobre la pantalla soacutelo que un Spookling llegue anuestro poblado en la parte inferior de la pantalla la partida finaliza Debemos evitar de todas lasformas posibles que lleguen a la parte inferior de la pantalla

Tambieacuten dispone de una pantalla de inicio y un menuacute inicial de juego claro y directo no disponede ninguna vinculacioacuten a redes sociales El juego no se puede parar La navegacioacuten por todas laspantallas es correcta teniendo pantalla de puntuaciones maacutes altas pantalla con mini tutorial decoacutemo jugar y unas opciones para configurar el audio y ver los creacuteditos del juego Sin embargo adiferencia de los otros tiene algunas fallas de disentildeo a nivel de transiciones entre pantallas yfuncionalidades baacutesicas que aparentemente no tienen mucho sentido Fuera de la pantalla dejuego no es posible abandonar la aplicacioacuten de ninguna de las maneras no hay botoacuten de salida yla tecla de ir hacia atraacutes no funciona la uacutenica manera de salir es matando el proceso Por otrolado durante la partida con el botoacuten de ir atraacutes conseguimos hacer pausa del juego pero de unaforma que no estaacute anunciada al usuario de ninguna manera con alguacuten icono visual que informa alusuario de la funcionalidad Una vez parado el juego con una tecla que no estaacute indicada enninguna parte como tal nos da dos opciones RESTART y QUIT con QUIT salimos de la aplicacioacutenalgo que no se puede hacer en ninguacuten otro punto de la aplicacioacuten Con RESTART vuelve aempezar la partida y se pierde la que teniacuteamos empezada En resumen si pulsamos este botoacuten noestaacute anunciado en ninguna parte por accidente durante una partida perdemos la partida ya que notenemos la opcioacuten de continuar puesto que o volvemos a empezar o salimos de la aplicacioacuten

Paacutegina 39 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez Muy adictivoPuntos Negativos Errores en el disentildeo de menuacutes y transiciones entre pantallas no tienevinculacioacuten a redes sociales no tiene pausa

Todo lo que se ha visto en este estudio comparativo nos da una idea de que el disentildeo que selleve a cabo debe cumplir las siguientes metas tener una mecaacutenica de juego adictiva y sencillaque la disposicioacuten de opciones e iconos han ser claras y dejar claro al usuario de forma visual queacutefuncionalidad tienen las transiciones y operativas baacutesicas deben estar bien indicadas eimplementadas El disentildeo visual debe ser lo mas cuidado posible aunque a veces en juegos paraeste tipo de dispositivos no es el que maacutes domina sobre todo si el juego tiene una mecaacutenica muyadictiva aunque si se consiguen las dos cosas mucho mejor Otro punto importante es tener unamecaacutenica freemium implementada dentro del juego con una tienda para comprar mejorasaplicables a la mecaacutenica de juego Otro punto importante es la vinculacioacuten del juego a redessociales y que recoja puntuaciones a nivel mundial y no locales del dispositivo todos estosingredientes le pueden dar al juego un plus que haga que el usuario vea el juego maacutes atractivo

Debido a temas de tiempo inicialmente se descarta para este proyecto la implementacioacuten de lassiguientes funcionalidades dentro del videojuego las puntuaciones a nivel mundial estas demomento quedaraacuten sujetas a nivel local del dispositivo tambieacuten se descarta la vinculacioacuten a redessociales y mecaacutenicas freemium

El resto de puntos comentados como las mecaacutenicas sencillas y adictivas aspecto visual lo maacutescuidado posible dentro de los recursos de que se dispone y la navegacioacuten entre pantallas ymenuacutes claros y sencillos seraacute lo que se transportaraacute al disentildeo y la posterior implementacioacuten delproyecto Es posible que durante la implementacioacuten del disentildeo mostrado en este documento semodifiquen algunos puntos por temas de balanceo y equilibrio del producto final

32 Perfiles de usuarios identificados

Los juegos casuales son juegos con mecaacutenicas simples Este hecho hace que esteacuten al alcancede cualquier usuario aunque eacuteste no sea un jugador experimentado acostumbrado a utilizar juegoscon mecaacutenicas maacutes complicadas que requieren de cierta experiencia previa Al mismo tiempo sonjuegos que pueden ser jugados en cortos espacios de tiempo Por tanto el tipo de usuario deestos juegos sera muy variado Podemos encontrar el perfil de usuario experimentado tanto enlas tecnologiacuteas como en los videojuegos y que tiene intereacutes por cualquier tipo de juego Y por otrolado encontramos el usuario poco experimentado pero que gracias a los smarphones y lasencillez de las mecaacutenicas de juego provoca que tambieacuten juegue

Todos tendraacuten un objetivo comuacuten pasar un rato jugando al juego Para mejorar su uacuteltimo reacutecordAunque en este tipo de juegos el usuario tambieacuten puede jugar sin buscar ninguacuten tipo de metaconcreta simplemente pasar un rato divertido sin necesidad de alcanzar ninguacuten tipo de reacutecord niobjetivo concreto Tambieacuten es importante mencionar que aunque los perfiles de usuarios son muyvariados existe una fuerte tendencia a que los jugadores de este tipo de juegos tiendan a sermaacutes grandes que los jugadores de otros tipos de videojuegos y suelen tener un intereacutes y tiempolimitado tanto para jugar como los videojuegos en general siendo normalmente del sexofemenino

Se detectan dos grandes grupos de perfiles de usuario los experimentados en jugar avideojuegos y los no experimentados en jugar videojuegos edades diferentes profesionesvariadas educacioacuten variada sexo variado Los usuarios de Android en general suelen pagarmucho menos por aplicaciones que otros grupos de usuarios como los de iphone por ejemplo

Paacutegina 40 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Los haacutebitos de consumo en los estados unidos ya no de los usuarios de juegos casuales sinode los usuarios de Android en general se definen de la siguiente manera soacutelo un 4 de estospaga por descargar una aplicacioacuten contra un 23 y un 31 de los usuarios de la App Store paraiPhone y iPad respectivamente tal y como muestra un estudio realizado por la empresa Statistacon las 100 aplicaciones maacutes descargadas

ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitasSe puede ver en linea en el link httpwwwstatistacomtopics983mobile-app-monetizationchart1400paid-apps-don-t-stand-a-chance-on-google-play

Se puede ver otro articulo similar en el siguiente link

httpwwwwayerlesscom201307usuarios-de-android-pagan-menos-por-apps-que-los-de-ios

La mayoriacutea de aplicaciones gratuitas utilizan la modalidad freemium que no es maacutes que ofrecerun producto baacutesico de forma gratuita y cobrar a los usuarios por opciones maacutes avanzadas oespeciales dentro de la misma aplicacioacuten No obstante tambieacuten es posible encontrar aplicacionescompletamente gratuitas sin la modalidad freemium

Como ya se ha dicho se han detectado inicialmente dos grandes grupos dentro de la masa deusuarios que son consumidores potenciales de juegos casuales Estos son los usuarios asiduos ajugar videojuegos de todo tipo y con experiencia en el uso de tecnologiacuteas en general es decirusuarios experimentados Por otro lado encontramos los que no tienen costumbre de jugar muchoy normalmente tampoco tienen una gran experiencia en el uso de tecnologiacuteas en general pero

Paacutegina 41 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debido a la simpleza de los videojuegos casuales eacutestos tambieacuten se convierten en jugadores yen muchas ocasiones se convierten en los usuarios que consumen maacutes este tipo de juegos Asiacutepues encontramos dos grandes grupos seguacuten unas caracteriacutesticas comunes experiencia previa osin experiencia ante los videojuegos y las tecnologiacuteas

33 Contextos de uso

331 iquest Doacutende

Al tratarse de un casual game para un dispositivo moacutevil el espacio de utilizacioacuten seraacute muyvariado Por tanto los usuarios podraacuten encontrarse en muchos lugares distintos como puedenser en casa en el tren en el metro en el autobuacutes al aire libre etc En definitiva el usuario podraacuteencontrarse en cualquier lugar

332 iquest Cuaacutendo

El tipo de juegos casuales tienden a ser juegos donde los usuarios realizan partidas cortas peroal mismo tiempo la naturaleza adictiva de estos hace que los usuarios puedan quedar atrapadosdurante varias horas repartidas en ratos diferentes o continuados dependiendo de la situacioacuten decada usuario Por tanto el cuaacutendo de este tipo de juegos puede ser muy variado casi en cualquiermomento que el usuario pueda dedicarle unos minutos o ratos maacutes largos durante su tiempolibre mientras se desplaza ya sea en tren en metro o en alguacuten otro medio de transporte que nonecesite estar pendiente del vehiacuteculo cuando esta en la cama etc

333 iquest En que entorno

Los entornos de utilizacioacuten pueden tambieacuten ser muy variados promovidos por doacutende y el cuaacutendoPor lo tanto el entorno tecnoloacutegico podraacute tambieacuten ser variado puede existir o no conexioacuten a lared en un entorno social muy diferente que podraacute ser maacutes privado o maacutes puacuteblico yconsecuentemente se dibujaraacute un entorno ambiental variado seguacuten el momento

4Disentildeo y ldquoConcept Artrdquo

41 Elementos presentes en la interfaz de la aplicacioacuten

Con todo lo que se ha visto en el apartado 31 estudio comparativo queda patente que la interfazde usuario debe ser clara y sencilla Seraacute necesario que contenga las siguientes pantallas

bull Pantalla de intro inicial que apareceraacute durante un segundobull Pantalla menuacute inicial del juego con las opciones Play Scores Options () How to play bull Pantalla de nivel donde se desarrolla el videojuegobull Pantalla high scores que mostrara la tabla de reacutecords con las 10 puntuaciones maacutes altasbull Pantalla how to play instrucciones de como jugar tambieacuten se integraran dentro del

videojuego y apareceraacuten durante la primera partida que se jueguebull Pantalla opciones podremos activar y desactivar el sonido y los efectos de audio A su vez

desde esta pantalla podremos acceder a la pantalla de creacuteditosbull Pantalla de creacuteditos pantalla doacutende se mostraran lo creacuteditos del videojuego bull Pantalla Ready pantalla de juego con el mensaje sobre impreso antes de empezar a

jugar apareceraacute durante 3 segundosbull Pantalla con los botones resume quit sobreimpresos en la pantalla de juego se accederaacute

Paacutegina 42 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaa ella con el botoacuten de pausa pausando el juego Desde ella podremos reanudar el juego oabandonar el juego

bull Pantalla game over con el resumen de los reacutecords conseguidos durante la partidapuntostiempo jugado numero de lobos ahuyentados y ovejas colocadas en el corralDesde esta pantalla tendremos dos botones Play again y Exit uno nos permitiraacute volver ajugar y el otro nos permitiraacute abandonar el juego tal y como su nombre indica

42 Flujos de interaccioacuten

En la siguiente ilustracioacuten se muestran los flujos de interaccioacuten definidos con las pantallasenumeradas en el apartado anterior Los flujos muestran la navegacioacuten que debe existir entre laspantallas del videojuego

ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintaspantallas

Paacutegina 43 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

43 Prototipaje

431 Sketches

En este apartado se muestran los primeros esbozos realizados a mano alzada estos intentanplasmar el disentildeo del juego en su totalidad Estos esbozos serviraacuten como punto de partida en unasegunda fase para realizar el prototipaje de todas las pantallas que intervienen en el videojuegoutilizando todo el material recopilado en la red

Tal y como ya se ha dicho en este mismo documento anteriormente no se dispone deconocimientos de disentildeo suficientes como para abordar un disentildeo de arte desde cero Por lo tantose han utilizado recursos ya disponibles en la red para el montaje de todos los graacuteficos delvideojuego Todos los recursos utilizados estaacuten bajo licencias creative commons o dominio puacuteblico A continuacioacuten se muestran los bocetos

ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 44 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 45 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada

En la siguiente paacutegina se muestran las transiciones definidas entre pantallas con los sketchesrealizados ilustracioacuten 241 Las transiciones toman como base el diagrama de flujos deinteraccioacuten definido en el apartado 42 de este documento ver ilustracioacuten 21

Paacutegina 46 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria432 Transiciones definidas entre pantallas

ilustracioacuten 241 Transiciones definidas entre pantallas

Paacutegina 47 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria433 Prototipo horizontal de alta fidelidad

4331 Pantalla inicial

Pantalla de inicio al ejecutar el juego apareceraacute esta pantalladurante un segundo

4332 Pantalla menuacute principal del juego

Pantalla de menuacute principal del juego desde esta pantallapodremos empezar a jugar (botoacuten Play) consultar la tabla depuntuaciones (botoacuten Scores) e ir a la pantalla de opciones deljuego (botoacuten Options) El interrogante de la parte inferiorderecha nos serviraacute para ir a la pantalla de instruccionesHOW TO PLAY para saber coacutemo se juega

Paacutegina 48 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4333 Pantalla de opciones

La pantalla de opciones nos permitiraacute deshabilitar la muacutesicadel juego y los efectos sonoros pasando el dedo sobre losiconos del altavoz y las notas musicales con el altavozdeshabilitaremos la muacutesica y con las notas musicalesdesactivaremos los efectos de audio La flecha naranja nosconduciraacute de nuevo a la pantalla de inicio del juego el botoacutencreacuteditos nos llevara a la pantalla de creacuteditos

4334 Pantalla de creacuteditos

Pantalla de creacuteditos en ella se muestran los nombres dequienes han disentildeado y programado el juego con la flechanaranja inferior volvemos a la pantalla de opcionesDeslizando el dedo sobre el texto se podraacute desplazar haciaarriba y hacia abajo

Paacutegina 49 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4335 Pantalla tabla de puntuaciones

Pantalla tabla de puntuaciones nos mostrara una tabla conlas 10 puntuaciones maacutes altas de todas las partidas jugadasEsta tabla se guardara de forma local en el dispositivo

4336 Pantalla de juego READY

Pantalla de juego READY Apareceraacute durante unossegundos una vez iniciada la partida Despueacutes de 3segundos pasara a la pantalla de juego que se muestra en elsiguiente apartado

Paacutegina 50 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4337 Pantalla de juego

La pantalla de la izquierda es donde se desarrollaraacute todo el gameplay en la parte superiorizquierda de la pantalla se muestran los puntos conseguidos y las vidas En la parte superiorderecha hay un botoacuten que permitiraacute pausar el juego una vez pausado mostraraacute la pantalla depausa con los botones RESUME y QUIT la pantalla se muestra en el apartado siguiente En laparte derecha se muestra otra pantalla ideacutentica a la de la izquierda donde se puede ver elgameplay baacutesico representado con flechas los lobos saldraacuten de los extremos de la pantalla yendohacia las ovejas las ovejas al mismo tiempo saldraacuten de la derecha de la pantalla y las tendremosque lanzarlas deslizando el dedo sobre ellas y lanzandolas hacia el establo La puerta se iraacuteabriendo y cerrando aleatoriamente los lobos una vez puestos en escena los podremos ahuyentardeslizando el dedo sobre ellos un nuacutemero de veces determinado en funcioacuten del color del lobocomo esta indicado en el apartado 131 de este documento

Paacutegina 51 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4338 Pantalla de pausa botones RESUME y QUIT

Pantalla de pausa que apareceraacute cuando se pause el juegoCon la opcioacuten RESUME continuaremos jugando con laopcioacuten QUIT se saldraacute de la partida y pasaraacute a la pantalla delmenuacute principal del juego descrita en el punto 322

4339 Pantalla GAME OVER

Pantalla GAME OVER apareceraacute cuando se hayanagotado todas las vidas Mostraraacute un resumen de los puntosconseguidos en la partida actual tiempo invertido en lapartida lobos ahuyentados y ovejas salvadas Con losbotones de la parte inferior podremos volver a jugar (botoacutenplay again) o salir del juego con el botoacuten exit este botoacuten nosconduciraacute a la pantalla de inicio de juego descrita en elapartado 322

Paacutegina 52 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria43310 Pantalla de instrucciones de juego HOW TO PLAY

Pantalla de instrucciones del juego nos haraacute una breveexplicacioacuten de coacutemo jugar Deslizando el dedo sobre el textose podraacute desplazar hacia arriba y hacia abajo El juegodispondraacute de unas mini instrucciones in game queapareceraacuten en la primera partida que se juegue en forma decajas de texto esta pantalla se muestra en el siguienteapartado

43311 Pantalla de instrucciones in game

Esta pantalla muestra el modo como quedaraacuten integradaslas instrucciones de juego dentro del gameplay Estasinstrucciones apareceraacuten solamente la primera vez que sejuegue

Paacutegina 53 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Todo el disentildeo mostrado en este apartado ha sido realizado con todos los recursos encontradosen la red todos ellos quedan recogidos en el apartado 6 Con el programa Gimp se ha montadotodo el disentildeo de alta fidelidad mostrado en este apartado Se ha trabajado con capas paradisponer de flexibilidad en la construccioacuten del disentildeo A su vez el hecho de tener los disentildeos porcapas nos permitiraacute poderlo exportar a la implementacioacuten del videojuego de una manera coacutemoday raacutepida en el apartado 5 implementacioacuten se hace referencia a como convertir el disentildeo realizadoen capas a recursos graacuteficos del videojuego

En la siguiente ilustracioacuten se muestra una captura del disentildeo de la pantalla de juego descrita enel apartado 4337 realizado con Gimp

ilustracioacuten 242 Disentildeo pantallas con Gimp

Paacutegina 54 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

5Implementacioacuten

51 Arquitectura global

511 Arquitectura del framework libGDX

LibGDX es un framework multiplataforma que actualmente soporta WindowsLinuxMac OS XAndroid iOS y HTML5 Esto permite escribir el coacutedigo una sola vez y desplegarlo en las distintasplataformas comentadas sin tener que modificar el coacutedigo LibGDX permite bajar a maacutes bajonivel si se desea ya que da acceso directo al sistema de ficheros dispositivos de entrada desonido y a OpenGL a traveacutes de la interfaz unificada OpenGL ES11 y 20

LibGDX ofrece a su vez un conjunto de APIs que ayudan en las tareas comunes de desarrollode videojuegos como son la presentacioacuten de sprites texto la creacioacuten de interfaces de usuario lareproduccioacuten de efectos de sonido y secuencias musicales y los distintos tipos de caacutelculosnecesarios en la programacioacuten de videojuegos

En algunas ocasiones LibGDX deja de lado el lenguaje Java y recurre a coacutedigo nativo paraconseguir un mejor rendimiento No obstante todas estas funciones quedan ocultas detraacutes de lasAPIs de Java De manera que en el momento de desarrollar un videojuego no hay quepreocuparse de realizar una compilacioacuten cruzada entre Java y C++

LibGDX es un framework maacutes que un motor de videojuegos que ayuda al desarrollo de estosgracias a las abstracciones de gran alcance que ofrece y deja en manos del programador elegircomo escribir su videojuego o aplicacioacuten

512 Visioacuten de los moacutedulos de libGDX

LibGDX comprende varios moacutedulos que proporcionan los servicios necesarios para crear laarquitectura tiacutepica de un videojuego

ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en unvideojuego

Paacutegina 55 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaA continuacioacuten de describen los moacutedulos mostrados en la ilustracioacuten 25

Input Proporciona un modelo de entrada unificado para todas las plataformas Soporta tecladopantalla taacutectil aceleroacutemetro y ratoacuten si esta disponible

Graphics Permite el dibujo de las imaacutegenes en pantalla usando el hardware proporcionado por laimplementacioacuten de Open GL ES las versiones soportadas son GL versioacuten 10 11 20

Files Proporciona los meacutetodos necesarios para las operaciones de lectura escritura totalmenteindependientes a los medios de comunicacioacuten existente

Audio Proporciona las herramientas necesarias para la reproduccioacuten de sonido para todas lasplataformas

Math Moacutedulo que proporciona los caacutelculos matemaacuteticos necesarios orientados al desarrollo devideojuegos

Physics LibGDX proporciona un wrapper completo al motor de fiacutesicas en 2D open sourcedesarrollado en C++ llamado Box2D

52 Arquitectura de un videojuego

521 Programa vs Aplicacioacuten

Una aplicacioacuten convencional sigue una secuencia loacutegica lineal reacciona cuando sucede alguacutenevento es decir responde a eventos como por ejemplo cuando se pulsa una tecla Por el contrarioun videojuego es maacutes complejo hace caacutelculos y dibuja en pantalla constantemente aunque no seproduzca ninguacuten evento

522 Estructura baacutesica de un videojuego

Programar videojuegos es una forma completamente diferente de programar software Ladiferencia principal entre una aplicacioacuten convencional y un videojuego radica en la gestioacuten deeventos tal y como se ha indicado anteriormente un programa ofrece respuestas a eventos y unavez son servidos permanece a la espera de una nueva orden en cambio un videojuego es unprograma que debe actuar en tiempo real tiene que estar haciendo caacutelculos y dibujando enpantalla constantemente No se puede esperar a que suceda un evento para poder actuaraunque el jugador no haga nada no presione una sola tecla no mueva el ratoacuten el juego tiene quecalcular el tiempo que lleva jugando en ese nivel si le va a atacar alguacuten enemigo si estaacute cargandoenergiacutea y por supuesto dibujar en pantalla todo lo que va sucediendo

La mayoriacutea de videojuegos estaacuten construidos bajo la misma estructura baacutesica sobre la cual correel programa Esta estructura puede tener variaciones pero de forma general se presenta de lasiguiente manera

Inicializacioacuten En esta primera etapa el juego se situacutea en su estado inicial Se realizan lasinicializaciones por lo que respecta a las libreriacuteas o motores que vayan a utilizarse de variables yestructuras de datos referentes a los atributos de las entidades o personajes escenariosconfiguraciones etc y de los diferentes recursos fiacutesicos que vayan a emplearse tales comograacuteficos o sonidos

Paacutegina 56 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Ciclo de juego En esta parte esta toda la accioacuten este ciclo se repite de manera indefinida hastaque el jugador pierda gane o salga del juego Este punto se puede dividir en tres partes quepodemos llamarlas entrada proceso y salida

Como entrada se entiende el punto donde se captura todo lo que hace el jugador comopresionar los botones de control mover el ratoacuten presionar las flechas del teclado tocar la pantallataacutectil y el resto de informacioacuten que recibe el juego

En la parte de proceso es donde se procesa toda la informacioacuten que se recibioacute en la entrada ytiene lugar la loacutegica del videojuego Por tanto es donde se realizan los caacutelculos de fiacutesicas si eljuego los requiere asiacute como tambieacuten los caacutelculos de la inteligencia artificial de esteconjuntamente con el tratamiento graacutefico

La salida es la encargada de enviar al jugador toda la informacioacuten que se ha procesado en laetapa anterior proceso Se muestra al jugador el resultado de lo que hizo con la visualizacioacuten enpantalla del estado actual del videojuego Tambieacuten es en este punto donde se hace sonar lamuacutesica y efectos de sonido

Por uacuteltimo y fuera del ciclo de juego esta la parte de finalizacioacuten esta parte es la encargada deliberar todos los recursos y memoria utilizada durante el transcurso del videojuego

Es importante diferenciar estas tres etapas del ciclo del videojuego y ver queacute tarea se delega encada una de ellas en la entrada tan soacutelo nos ocupamos de captar los posibles eventos el procesose encarga en primer lugar de procesar la entrada y maacutes adelante de la loacutegica del videojuego ypor uacuteltimo la capa de salida se encarga de visualizar y reproducir la muacutesica

Con estos puntos claros se puede mostrar la estructura principal de un videojuego En elsiguiente apartado se muestra esta estructura baacutesica a modo de esquema

Paacutegina 57 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

53 Esquema de la estructura baacutesica de un videojuego

Inicializacioacuten Creacioacuten de estructuras dedatos carga de recursos graacuteficos y sonidos

Entrada Gestioacuten de pantalla taacutectiljoystick teclado

Proceso Lanzamos una oveja al corralrebota la oveja salta un lobo al escenarioetc

Salida Mostrar graacuteficos y reproducirsonidos

ilustracioacuten 26 Estructura baacutesica de unvideojuego

Finalizacioacuten Liberar recursos

Paacutegina 58 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

54 Patrones de disentildeo

541 Introduccioacuten

En el disentildeo de cualquier aplicacioacuten como por ejemplo un videojuegono es posible abordarlo porcompleto El proceso de disentildeo de una aplicacioacuten suele ser iterativo y se realiza en diferentesetapas de forma que se vaya refinando con el tiempo Conseguir un disentildeo perfecto a la primeraes muy difiacutecil de conseguir El disentildeo de aplicaciones es complejo y la maacutes importante y que maacutesimpacto tiene no soacutelo sobre el producto final sino tambieacuten sobre su vida futura Ya que es en eldisentildeo en donde se definen las estructuras y entidades que se van a encargar de resolver elproblema planteado Como de bien se definan estas estructuras y entidades influiraacute en granmedida en el eacutexito o fracaso del proyecto y en la viabilidad de su mantenimiento

Los patrones de disentildeo son formas reconocidas y probadas de resolver problemas de disentildeo queson recurrentes en el tiempo No es maacutes que basarse en experiencias anteriores en problemassimilares aplicado soluciones probadas anteriormente en determinados contextos para alcanzarun mejor disentildeo maacutes raacutepidamente

Existen distintos patrones para distintos problemas de disentildeo No obstante en este documentosoacutelo se haraacute hincapieacute en los patrones utilizados para este proyecto Quedando fuera del alcancede este documento los demaacutes patrones existentes

542 Patrones de creacioacuten

Estos patrones nos proporcionan una solucioacuten relacionada con la construccioacuten de clases objetosy otras estructuras de datos Algunos ejemplos de patrones pueden ser Abstract Factory BuilderSingleton estos ofrecen mecanismos de creacioacuten de instancias de objetos y estructurasescalables dependiendo de las necesidades

543 Singleton

Para este proyecto se ha utilizado este patroacuten ya que era necesario tener una uacutenica instancia dealgunas determinadas clases En java cuando se utiliza el operador new es posible crear unainstancia de un objeto No obstante a veces es necesario tener una uacutenica instancia de un objetopor ejemplo para poder acceder a ella des de cualquier punto de la aplicacioacuten Seria un ejemplolapelota de un juego de pinball en donde podriacutea ser conveniente mantener una uacutenica instancia deeste objeto

La solucioacuten para garantizar que solo existe una instancia de un objeto se consigue impidiendoque ninguna otra clase pueda acceder al constructor por este motivo de declara el constructorcomo miacutenimo de forma protegida o privada y se proporciona un uacutenico punto (controlado) en dondese proporciona la uacutenica instancia En la siguiente ilustracioacuten se muestra el diagrama de clases delpatroacuten Singleton

ilustracioacuten 27 Singleton

Paacutegina 59 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria A continuacioacuten en el listado 543 se muestra una implementacioacuten baacutesica del patroacuten Singletonutilizada en el proyecto para la clase que maneja el audio del videojuego

Listado 543

1 package comthreecometflingthesheeputil23 import combadlogicgdxaudioMusic 4 import combadlogicgdxaudioSound56 public class AudioManager 7 8 public static final AudioManager instance = new AudioManager()910 private Music playingMusic11 private Sound playingSound1213 Singleton14 private AudioManager() 15 1617 1819 public void ResunmeMusic()20 21 if(playingMusic = null) playingMusicplay()22 2324 public void PlayMusic(Music musicfloat volumeboolean loop) 25 26 if(GamePreferencesinstancemusic) return27 playingMusic = music28 musicsetLooping(loop)29 musicsetVolume(volume)30 musicplay()31 3233 public void StopMusic()34 35 if(playingMusic = null) playingMusicstop()36 3738 public void PauseMusic()39 40 if(playingMusic = null) 41 if(playingMusicisPlaying()) 42 playingMusicpause()43 44 45 4647 public void PlaySound(Sound soundfloat volume) 48 49 if(GamePreferencesinstancesound) return50 playingSound = sound51 soundplay(volume)52 5354 public void PlaySound(Sound soundfloat volumefloat pitchfloat pan) 55 56 if(GamePreferencesinstancesound) return57 playingSound = sound58 soundplay(volume pitch pan)59 60

Esta clase maneja el audio del videojuego tanto efectos de sonido como la muacutesica es una clase

Paacutegina 60 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debe estar accesible des de cualquier punto de la aplicacioacuten y no tiene ninguacuten sentido que seinstancie repetidas veces soacutelo sera necesaria una instancia de dicha clase para poder manejar losaudios y muacutesicas Como se puede ver en la linea 14 del listado 543 se declara el constructorprivado y en la linea 8 se proporciona el punto donde se proporciona la uacutenica instancia de dichaclase a traveacutes de la variable instance declarada de forma publica para que se accesible desdecualquier otra clase y a su vez declarada de forma static y final Con final le decimos que estavariable ya no puede ser modificada una vez declarada es decir sera una constante Con static leindicamos que podremos utilizar la variable instance sin la necesidad de hacer ninguna instanciacon el operador new de la clase AudioManager

Existen varias clases en el videojuego que son singleton A continuacioacuten se nombran todas ellasAudioManager Assets WorldGameController CounterTime GamePreferences

55 Diagramas de clases definitivos

Se ha dividido en varios diagramas para facilitar su lectura se pueden ver los diagramas en lossiguientes apartados de este documento A continuacioacuten se pasan a comentar las clases descritasen ellos

56 Diagramas nuacutecleo videojuego

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep-android encontramoslas siguientes clases

MainActivity Hereda de AndroidAplication que a su vez hereda de Activity es donde se crea laaplicacioacuten crea una instancia de FlingTheSheepMain

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep encontramos laclase FlingTheSheepMain donde se instancia la pantalla de intro del juego dentro del meacutetodocreate

Siguiendo el esquema estructural de un videojuego descrito en el punto 53 de este documentola ilustracioacuten 28 detalla el diagrama de clases que engloba la inicializacioacuten del juego y el ciclo devida

La Inicializacioacuten queda recogida en la clase Assets esta clase es un singleton que instanciaotras clases que a su vez guardan todos los recursos del videojuego por recursos se entiendetexturas para los graacuteficos archivos de audio ficheros con informacioacuten necesaria para el juegoUna vez inicializado el hecho de ser un singleton nos permite acceder a estas clases a traveacutes dela clase assets des de cualquier punto de la aplicacioacuten En la ilustracioacuten 29 se detallan todas estasclases que engloba la clase assets Esta clase se encuentra el el paquetecomthreecometflingthesheepgame A continuacioacuten se comenta cada una de ellas con una brevedescripcioacuten

LevelDecoration Enumera todas las texturas de los objetos de decoracioacuten del videojuego floreshierba etc Son objetos que no tienen ninguna interaccioacuten con el juego simplemente decoran

AssetFontsScene2D Engloba los tipos distintos de fuente que se utilizan en el videojuego tipode letra medida y color

AssetSound Enumera todos los efectos de sonido del juego

Paacutegina 61 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAssetMusic Contiene todas las muacutesicas del juego

FileHandleHighScores Inicializa la tabla de puntuaciones local y la actualiza cada vez que serealiza una partida de juego

LevelObjects Engloba todos los objetos que tienen interaccioacuten con el videojuego por interaccioacutense entiende objetos que pueden colisionar con otros o que tienen alguacuten papel importante dentrode videojuego no son solo objetos de decoracioacuten

Character Contiene el protagonista del juego el personaje que lleva el jugador en esta caso lasovejas

NPCs En esta clase quedan englobadas las texturas de los enemigos en esta caso los lobos

GUI En esta clase se engloban todas las texturas utilizadas para la creacioacuten de la interfaz deusuario botones imaacutegenes

La clase Constants es una clase que declara varias constates estaacuteticas que son accesibles desde cualquier punto de la aplicacioacuten y se utilizan tanto en la inicializacioacuten como en el ciclo de vidadel videojuego La podemos encontrar en el paquete comthreecometflingthesheeputil

El ciclo de vida del videojuego entrada proceso y salida queda repartido en las siguientes clases

Entrada Gestioacuten pantalla taacutectil se realiza en la clase WorldGameController en el meacutetodollamado handleInput a su vez cada personaje(character) y enemigo(NPC) gestiona su propiaentrada de eventos a traveacutes de los meacutetodos sobre escritos touchDown fling y tap Ver ilustracioacuten30 clases Sheep y Wolf

Proceso Este apartado realiza la loacutegica del videojuego y es responsable de esto el meacutetodoupdate de la clase WorldGameController Dentro de este meacutetodo existe implementada lamaquina de estados descrita en el apartado 231 con todos los estados posibles que el juegopuede tener durante su ciclo de vida los estados son READYGAMEPAUSEGAME OVER Cadapersonaje y enemigo lleva implementado su propia loacutegica y maquina de estados dentro de susclases correspondientes Ver ilustracioacuten 30 clases Sheep y Wolf estas maacutequinas de estados sonlas descritas en los apartados 232 y 233 respectivamente

Salida La salida descrita en el apartado 53 queda recogida en la clase GameScreen Verilustracioacuten 31

Finalizacioacuten La finalizacioacuten liberacioacuten de recursos queda a cargo del meacutetodo sobre escrito hiderepartido por las distintas clases de la aplicacioacuten

Otras clases que intervienen en el ciclo de juego recogidas en la ilustracioacuten 28 sonCounterTime GamePreferences AudioManager a continuacioacuten se detalla la funcionalidad decada una de ellas

CounterTime Esta clase engloba el calculo de tiempo transcurrido desde que empieza el juegohasta que termina hace la funcioacuten de contador de tiempo interno

GamePreferences Esta clase hace persistente la configuracioacuten escogida por el usuario en lasopciones Es posible configurar el juego con o sin sonido al igual que los efectos de audio estaclase es la encargada de guardar esta configuracioacuten aunque abandonemos la aplicacioacuten

Paacutegina 62 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

AudioManager Clase que se encarga tanto de la reproduccioacuten de audio como los efectos desonido es su responsabilidad interrogar la configuracioacuten actual del sonido y efectos paradeterminar si tiene que realizar la reproduccioacuten de audio o efectos asiacute como tambieacuten determinarel volumen del sonido o si un audio hay que reproducirlo de forma ciacuteclica En el listado 543 deeste documento se puede ver el coacutedigo de esta clase como ejemplo de singleton

ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego

Paacutegina 63 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 29 Diagrama de clases Assets

57 Diagrama de clases objetos videojuego

En la ilustracioacuten 30 de este documento se detalla el diagrama de clases referente a los objetosdel videojuego Por objetos se entiende personaje principal enemigos juntamente con todos loselementos que forman el conjunto del escenario del videojuego

En primer lugar cabe destacar la existencia de la clase abstracta AbstractGameObject Estaclase abstracta define los meacutetodos comunes de todos los objetos del juego Por las necesidadesde implementacioacuten no se han definido meacutetodos abstractos no obstante la clase se define comoabstracta ya que va a ser la superclase de todos los objetos del videojuego y por tanto no se van arealizar instancias de esta A continuacioacuten se enumeran las clases que se extienden de esta y querecogen todos los objetos del juego ya sean con o sin interaccioacuten en el

Paacutegina 64 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaGrass Hole Flower Flowers Stump ForestLeft ForestRight ThePen WoodFenceForestWoodFencePen DoorPen BorderGrassLeft BorderGrassRight PotionPurple AubergineRedPuddle Tree GrassField

Estas clases corresponden a los objetos que constituyen el escenario del videojuego Las clasesSheep y Wolf corresponden al personaje del videojuego y a los enemigos respectivamente estasclases no solamente contienen el meacutetodo para ser dibujadas en pantalla igual que las anterioressino que tambieacuten poseen toda la loacutegica para el comportamiento de cada una de ellas este puntocorresponderiacutea a la fase de proceso de la estructura baacutesica de un videojuego detallada en elpunto 53 de este documento Existe para cada personaje y enemigo una maquina de estadosimplementada que indica en que estado se encuentra en cada momento aplicando la loacutegicacorrespondiente para ese estado Ver las enumeraciones SHEEP_STATE y WOLF_STATE de lailustracioacuten 30 estas corresponden a las maacutequinas de estado definidas en los apartados 232 y233 respectivamente

Finalmente en la ilustracioacuten 30 aparecen las clases GameScreen y WorldGameController

La clase GameScreen como se vera en el apartado 58 es la clase que engloba todo lorelacionado con la pantalla del juego o nivel En ella se instancian todos los objetos descritosanteriormente para la creacioacuten del nivel asiacute como tambieacuten la creacioacuten de la GUI del videojuegobotones textos sobreimpresos y cajas de textos Es por este motivo que en la clase GameScreenexisten dependencias u asociaciones hacia todos los objetos dependiendo del tipo de declaracioacutende estos

La clase WorldGameController contiene la implementacioacuten de gran parte de la loacutegica delvideojuego esta clase formariacutea parte de la etapa de proceso dentro de la estructura baacutesica de unvideojuego descrita en el apartado 53 de este documento

Existe tambieacuten en esta clase una asociacioacuten hacia la clase GameScreen ya que des de la claseWorldGameController que es donde se encuentra gran parte de la loacutegica es necesario accedera la instancia de GameScreen para interactuar con varios elementos visuales que manipulan laloacutegica del videjuego

En la siguiente hoja se muestra la ilustracioacuten 30 correspondiente a todo los descrito en esteapartado

Paacutegina 65 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 30 Diagrama de clases objetos

Paacutegina 66 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

58 Diagrama de clases pantallas videojuego

En la ilustracioacuten 31 quedan recogidas todas las clases que intervienen en la creacioacuten depantallas del videjuego por pantallas se entine la pantalla de intro la del menuacute principal la deopciones etc Estas clases engloban todo lo necesario para la construccioacuten y visualizacioacuten deestas A continuacioacuten se detallan cada una de las clases

AbstractGameScreen Esta clase abstracta recoge todos los meacutetodos abstractos que sonimplementados en cada una de las clases que a continuacioacuten se detallan(pantallas) con la loacutegicanecesaria seguacuten las necesidades de cada pantalla No se crea ninguna instancia de esta clase

IntroScreen Corresponde a la pantalla de intro del videojuego descrita en el apartado 4331

MenuScreen Corresponde a la pantalla del menuacute inicial del juego des de aquiacute podemos escogersi jugar consultar la tabla de puntuaciones local ir a las opciones o a la pantalla de ayuda delvideojuego descrita en el apartado 4332 OptionsScreenPantalla de opciones descrita en el apartado 4333

CreditsScreen Pantalla de creacuteditosdescrita en el apartado 4334

HighScoresScreen Pantalla en donde se recoge la puntuacioacuten local del videojuegodescrita en elapartado 4335

GameScreen Pantalla general esta clase engloba toda la loacutegica del nivel del juego a su vezengloba la pantalla inicial de nivel READY la pantalla de pausa del juego y la de game overdescritas en los apartados 4336 4337 4338 4339

HowToPlayScreen El videojuego dispone de un tutorial in game que solo aparece la primera vezque jugamos a el y en las siguientes partidas ya no vuelve aparecer maacutes descrita en el apartado43311 No obstante existe una pantalla en donde podemos ver este tutorial fuera del juego estaclase esta destinada a contener los datos de esta pantalla descrita en el apartado 43310

TextGUI Esta clase contiene todos los textos sobreimpresos que existen en el videojuego En ellaesta la loacutegica de cada uno de estos textos para que sean posicionados y visualizados desde lasdistintas partes del videojuego

TUTORIAL_INGAME_STATE Esta enumeracioacuten enumera los estados de la maquina de estadosutilizada para mostrar el tutorial in game dentro del videojuego la primera vez que jugamos lamaacutequina de estados esta implementada dentro de la clase TextGUI la maacutequina corresponde a ladescrita en el apartado 234

En la siguiente hoja se muestra la ilustracioacuten correspondiente a todo los descrito en esteapartado

Paacutegina 67 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 31 Diagrama de clases pantallas

Paacutegina 68 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

59 Configurar el entorno de desarrollo

Antes de empezar a desarrollar juegos con libGDX es necesario instalar y configurar el entornode desarrollo Para ello se utilizaraacute Eclipse como entorno de desarrollo integrado IDE A su vez secreara un proyecto que nos serviraacute como base para el desarrollo de este

Es posible desarrollar con otros entornos distintos a Eclipse pero el hecho que Eclipse sea elentrono de desarrollo soportado oficialmente ha sido motivo suficiente para escogerlo para esteproyecto como entorno de desarrollo

591 Instalacioacuten

Para poder instalar el entorno de desarrollo nos haraacute falta primero instalar el Java DevelopmentKit(JDK) para posteriormente poder instalar eclipse

Una vez instalados seraacute necesario bajar el framework libGDX del siguiente enlace

httplibgdxbadlogicgamescomdownloadhtml

Tambieacuten sera necesario instalar el Android SDK seguidamente tendremos que ejecutar eclipse yinstalar los plugins necesarios para poder desarrollar con Android El plugin necesario paradesarrollar con Eclipse sobre Android de llama ADT (Android Developer Tools) Para instalar esteplugin debemos dirigirnos a Help--gtInstall new software tal y como muestra la siguiente ilustracioacuten

ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse

Paacutegina 69 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez el entorno de desarrollo preparado seraacute el momento de descomprimir el frameworklibGDX se recomienda descomprimirlo en la raiacutez ClibGDX en esta caso ya que trabajamos bajoWindows

Una vez descomprimido dentro de la la carpeta encontramos una aplicacioacuten llamada gdx-setup-uijar Esta aplicacioacuten nos ayuda a crear un proyecto ya configurado con las libreriacuteas necesariaslisto para ser importado a Eclipse y empezar a desarrollar con libGDX para Android O paracualquier otra de las plataformas soportadas por el framework En este caso se configura elproyecto para Android y para Escritorio de esta manera podremos verificar durante el desarrollodel proyecto los avances sin necesidad de instalarlo en un dispositivo Android ya sea fiacutesico ovirtual

Las siguientes ilustraciones muestran la configuracioacuten a realizar

ilustracioacuten 33 Creacioacuten proyecto libGDX Habraacute que pulsar en el botoacuten Create y con ello accederemos a la siguiente ilustracioacuten

ilustracioacuten 34 Creacioacuten proyecto libGDX

Paacutegina 70 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez configuradas todas las opciones le daremos al paso 4 Open the generation screen ygeneraremos el proyecto Esto proyecto sera importable a eclipse desde la opcioacuten Import delpropio IDE La configuracioacuten del proyecto tambieacuten es posible hacerla a mano no obstante esta aplicacioacutennos ahorra tiempo y posibles errores en el momento de configurarlo dentro del entorno ya quepara hacerlo a mano existen distintos pasos a seguir para conseguir lo mismo que se consiguecon esta aplicacioacuten con escasos clicks de ratoacuten

510 Traspaso del disentildeo a texturas

Todo el disentildeo realizado en el apartado 4 seraacute necesario pasarlo a texturas para posteriormenteutilizarlo en la implementacioacuten del juego como recursos graacuteficos

Una textura es una imagen digital cualquiera en cualquiera de los formatos habituales jpg pnggif tga etc Para poderla cargar dentro de un videojuego y manipularla haraacute falta una libreriacuteaespecializada para ello esto se podria programar para para el caso de este proyecto utilizamos elpropio framework libGDX para realizar esta tarea que a su vez envuelve el uso de OpenGL

Las texturas en OpenGL deben ser siempre potencias de 2163264128256 etc del contrarionos daraacute problemas y no funcionaraacute

El primer paso sera desmontar todas las capas pieza por pieza por decirlo de alguna manera ycrear ficheros de cada una de las capas de forma separada para guardarlas todas en una carpetacon un nombre identificativo Ver la siguiente ilustracioacuten

ilustracioacuten 35 Capas separadas por imaacutegenes

Paacutegina 71 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez realizado este paso deberemos juntarlas todas de nuevo en una uacutenica textura que seapotencia de 2 Trataacutendose de un juego para moacutevil las texturas no deberiacutean ser mayores de1024x1024 y no se podraacuten cargar muchas de ellas en memoria por razones obvias de recursosdel tipo de dispositivo

Para juntarlas utilizaremos una aplicacioacuten llamada Texture Packer esta nos juntara las texturasde repartieacutendola de forma que quepan en una tamantildeo de textura definido que en este caso serade 1024x1024 en caso de caber en una uacutenica textura el programa generara 2 texturas siempreoptimizadas a potencias de 2 La siguiente ilustracioacuten muestra el programa Texture packer

Ilustracioacuten 36 Texture packer El formato de salida de las textura sera png ya que necesitamos mantener el canal alpha deestas activado para los objetos sean correctamente dibujados en la escena del videojuego

Conjuntamente con la textura la aplicacioacuten nos generara un archivo de texto que contendraacute elnombre de la textura y la posicioacuten donde se encuentra dentro de la textura generada de1024x1024 Ver la siguiente ilustracioacuten en la siguiente paacutegina

Paacutegina 72 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 37 Posicioacuten texturas De esta manera podremos cargar las texturas en la fase inicializacioacuten en la clase Assets descritaen la ilustracioacuten 29 en forma de diagrama de clases

511 Implementacioacuten de las maacutequinas de estado

La implementacioacuten de las maacutequinas de estado se realiza con una estructura enumconjuntamente con una estructura switch case El siguiente listado muestra la declaracioacuten del laestructura enum implementada en la clase WorldGameController la implementacioacuten de todas lasmaacutequinas se realiza del mismo modo por tanto se toma esta como ejemplo en representacioacuten detodas las implementadas en el videojuego

Listado 5111

1 private enum GAME_STATE READYGAMEPAUSEGAME_OVER2 private GAME_STATE gameState34 gameState = GAME_STATEREADY

Paacutegina 73 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLa siguiente tabla muestra un trozo de la estructura switch case implementada en el meacutetodoupdate de la clase WorldGameController

Listado 5112

1 public void update(float deltaTime)2 3 switch(gameState)4 5 case READY6 if(audioReady) 7 AudioManagerinstancePlaySound(Assetsinstancesoundready 8 ConstantsVOLUME_AUDIO_EFFECTS)9 audioReady = false10 11 if(timeLeftShowReadyScreen gt 0)12 13 if(deltaTime lt 03f ) 14 timeLeftShowReadyScreen -=deltaTime15 16 if(timeLeftShowReadyScreen lt 0)17 18 gameScreensetVisibilityGUI()19 timeLeftShowReadyScreen = 020 CounterTimeinstancestartTime()21 22 AudioManagerinstancePlayMusic(Assetsinstancemusiclevel01 23 ConstantsVOLUME_MUSIC_GAME true)24 gameState = GAME_STATEGAME 2526 27 28 break 29 case GAME30 updateGame() 31 if(timeOpenDoorPen gt 0)32 33 if(deltaTime lt 03f ) 34 timeOpenDoorPen -= deltaTime35 36 if(timeOpenDoorPen lt= 0) 37 gameScreengetDoorPen()setVisibility(gameScreengetDoorPen()getVisibility())38

En este listado podemos ver el estado READY y un trozo del estado GAME de la maacutequina deestados definida en el apartado 231 de este documento inicialmente la maacutequina toma el estadoREADY como se puede ver en la linea 4 del listado 5111 este estado se ira repitiendo a cadavuelta del ciclo de vida del videojuego hasta que cambie el estado de juego a GAME estosucederaacute una vez transcurridos 3 segundos tal y como se puede ver en la linea 24 del listado5112 Hay que tener en cuenta que un videojuego tal y como se ha definido en el apartado 522de este documento forma un bucle infinito por tanto la funcioacuten update de la linea 1 de este listadose repetiraacute de forma indefinida durante la ejecucioacuten del nivel de juego y cada vuelta ejecutaraacute elestado en que se encuentre la maacutequina de estados

Paacutegina 74 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6Conclusiones El desarrollo del proyecto ha sido tal y como se esperaba en lineas generales no han habidograndes desviaciones de tiempo ni durante el disentildeo ni en el posterior desarrollo de este Cabedestacar que el hecho de poder probar el proyecto ejecutaacutendolo en la propia maacutequina donde se hadesarrollado sin tener que utilizar un dispositivo real o virtual cada vez que se ha querido verificarha hecho que el desarrollo sea mucho maacutes fluido que sino se hubiera contado con el escenariodescrito Esto no significa que en ciertos momentos del desarrollo no se haya probado con undispositivo real Android Dejando a parte la gran ventaja que esto significa ya que una vezdesarrollado el esfuerzo realizado nos sirve para distintas plataformas casi sin tener que tocarnada del coacutedigo

Por tanto el hecho de haber escogido libGDX para el desarrollo ha sido una buena eleccioacuten Estambieacuten una buena eleccioacuten escoger un framework o un motor focalizado al desarrollo devideojuegos si se quiere implementar uno ya sea para Android o para cualquier plataforma

Existe la posibilidad de desarrollarlo sin ninguacuten tipo de framework o motor pero hay que tenerclaro que se quiere hacer exactamente y a donde se quiere llegar es decir si lo que se quiere escentrarse en la programacioacuten de videojuegos es mucho mejor partir de un framework o motor yaque de esta forma nos desligamos de programar ciertos apartados que estaacuten maacutes focalizados a laprogramacioacuten de frameworks o motores para videojuegos que no a la programacioacuten devideojuegos en si

Yendo maacutes allaacute de donde el programador se quiere centrar existe otro factor importante a teneren cuenta en el momento de plantear un proyecto llamado tiempo con el tiempo de que se hadispuesto para este proyecto queda auacuten maacutes justificado la eleccioacuten de este framework pararealizarlo Ya que probablemente sin el debido al esfuerzo mayor en programar apartados que noson exclusivos del videojuego pudieran haber existido desviaciones de tiempo importantes enrelacioacuten al calendario propuesto

Ha quedado fuera del proyecto por temas de tiempo realizar animaciones a todos los personajesdel videojuego para conseguir una mejor experiencia de usuario y un nivel de acabado superiorFuera del proyecto tambieacuten ha quedado la implementacioacuten no solo de unas puntuacionesmaacuteximas a nivel local sino tambieacuten unas a nivel mundial consultables a traveacutes de una paacutegina webA su vez no solo guardariacutea la puntuacioacuten maacutexima sino tambieacuten el tiempo jugado las ovejassalvadas y los lobos ahuyentados Tambieacuten ha quedado fuera de este proyecto la realizacioacuten deun blog dedicado al videojuego Todos estos apartados se implementaran en breve fuera de esteTFC

7Recursos utilizados

71 Portada documento

Jake Maymar httpwwwflickrcomphotosmaymar5334789030httpcreativecommonsorglicensesby-sa20deeden

72 Recursos utilizados para el disentildeo del videojuego

Para realizar todo el disentildeo visual del videojuego se ha recurrido a diferentes fuentes de arte

Paacutegina 75 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriasujetas a licencias creative commons y dominio puacuteblico A continuacioacuten se detalla una lista decada recurso con su autor en el caso de que no haya sido publicado de forma anoacutenimajuntamente con el link donde se ha encontrado

721 Fotografiacutea pantalla intro videojuego y usuarios

Michael Karrerhttpwwwflickrcomphotosmichael_karrer78438470httpcreativecommonsorglicensesby-nc20deeden

Jodi Womackhttpwwwflickrcomphotosjodiwomack6217578512httpcreativecommonsorglicensesby20deeden

Tony Alterhttpwwwflickrcomphotos78428166N008279647916httpcreativecommonsorglicensesby20deeden

Gage Skidmore (Nina Dobrev)httpwwwflickrcomphotosgageskidmore5980906910httpcreativecommonsorglicensesby-sa20deeden

722 Iconos y botones

7221 Altavoz

Autor httpwwwiconshockcom Link httpswwwiconfindercomicons67771audio_speaker_iconsize=128Licencia Free for commercial use

7222 Nota Musical

Autor httpwwwdezinerfoliocomLink httpswwwiconfindercomicons58679music_iconsize=128Licencia Free for commercial use

7223 Flecha salida

Autorhttptayteldeviantartcom Linkhttpswwwiconfindercomicons41696arrow_back_grey_left_orange_iconsize=128LicenciaFree for commercial use (Include link to authors website) 7224 Icono de pausa

AutorhttpwwwwebdesignerdepotcomLink httpswwwiconfindercomicons40716blue_button_pause_iconsize=64Licencia Free for commercial use

7225 Icono interrogante (help)

AutorhttpwwwdoublejdesigncoukLinkhttpwwwiconarchivecomshowravenna-3d-icons-by-double-j-designHelp-iconhtml

Paacutegina 76 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLicencia httpcreativecommonsorglicensesby30

7226 Botones (Play Score Options)

AutorydLinkhttpopengameartorgcontentbuttons-variationsLicenciahttp creativecommonsorgpublicdomainzero10

723 Recursos graacuteficos 2D componentes escenario

7231 Ojos lobos

AutorCreek23Link httpopengameartorgcontentgnu-the-gnu-mascotLicencia httpcreativecommonsorglicensesby-sa30

7232 Ovejas y lobos

Autor lemmlingLink httpopenclipartorguser-clipartslemmlingLicencia httpopenclipartorgshare

7233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY

AutorSamLink httpopengameartorgcontentcountry-fieldLicencia httpcreativecommonsorgpublicdomainzero10

7234 Escenario

Daniel EddelandLinkhttpopengameartorgcontentlpc-farming-tilesets-magic-animations-and-ui-elementsLicenciahttpcreativecommonsorglicensesby-sa30

724 Fuentes

7241 ThinckheadAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10 7242 MisfortuneAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7243 TabaqueraAutor deFharoLink httpwwwdafontcomesfernando-harod3419l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7244 Press Start Font

Paacutegina 77 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAutor desconegutLink httpwwwzone38netfontpressstartLicencia httpscriptssilorgcmsscriptspagephpsite_id=nrsiampid=OFL

725 Otros

Todos los demaacutes recursos no nombrados en esta lista como el fondo de pantalla del menuacuteprincipal de inicio del juego y las letras del titulo del juego Fling the sheep impresas sobre lapantalla del menuacute inicial son de elaboracioacuten propia

726 Audio y efectos de sonido

7261 Menu

Autor mrpolyLinkhttpopengameartorgcontentmenu-musicLicencia httpcreativecommonsorgpublicdomainzero10

7262 Game Over

Autor MacroLinkhttpopengameartorgcontentrest-outro-loopLicenciahttpcreativecommonsorglicensesby30

7263 Game Play

AutorRezonerLinkhttpopengameartorgcontenttrance-menuLicenciahttpcreativecommonsorglicensesby30

7264 Creacutedits

Autor -Linkhttpopengameartorgcontent1-minute Licenciahttpcreativecommonsorgpublicdomainzero10

7265 Ready

httpopengameartorgcontentui-accept-or-forwardhttpcreativecommonsorglicensesby30

7266 Pause_Resume

httpopengameartorgcontentcompletion-sound httpcreativecommonsorglicensesby30

7267 Quit

httpopengameartorgcontentfly-swatter-squish-sound httpcreativecommonsorgpublicdomainzero10

7268 Sheep

Paacutegina 78 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

httpopengameartorgcontentsheep-sound-bleats-yo-frankiehttpcreativecommonsorglicensesby30

El resto de efectos de audio han sido obtenidos de la siguiente paacutegina httpwwwpond5com

8Lineas abiertas del proyecto Se haraacute un repaso del proyecto por si existe alguacuten bug para solucionarlo Posteriormente deadaptara para que sea funcional en distintas resoluciones de pantalla Se antildeadiraacuten los power-upsque se definieron al principio del proyecto por temas de tiempo han quedado fuera de la entregaA su vez se balanceara el gameplay antildeadiendo alguna mecaacutenica de juego extra si procede

Se publicara el juego en Google Play y se creara un blog del juego se mirara la posibilidad dehacer funcionar el juego en el blog con webGL httpprojects3cometcom

Se ampliara la tabla de puntuaciones de la siguiente manera la tabla no solamente guardara lospuntos tambieacuten guardara el tiempo jugado nuacutemero de lobos ahuyentados nuacutemero de ovejassalvadas y nombre del usuario con 5 caracteres Se creara un un registro de puntuaciones globalconsultable desde el blog del videojuego

Finalmente se crearan maacutes niveles de juego con distribuciones diferentes alguacuten nivel podriacuteatambieacuten tener mecaacutenicas diferentes de juego con los mismos personajeshellip

9Bibliografiacutea utilizada

Titulo Beginning Android Games (Second Edition) ISBN 978-1-43024-677-0

Autor Mario Zechner Robert Green

Editorial Apress

Contenido Desarrollo de videojuegos para Android

Titulo Learning libGDX Game Development ISBN 978-1-78216-604-7

Autor Andreas Oehlke

Editorial PACKT Publishing

Contenido Desarrollo de videojuegos para Android con libGDX

Paacutegina 79 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

10Otros proyectos realizados

101 Remake Gradius Konami

Remake del famoso shooter de Konami lanzado para ordenadores MSX en 1986 programadocon C++ con SDL Aunque este juego existe para multitud de plataformas Ver articulo wikipedia

httpeswikipediaorgwikiGradius_videojuego

Blog del proyecto httpprojects3cometcom

102 Tales of Nimria mini RPG

Mini RPG en 2D programado en C++ con DirectX este mini RPG trata de salvar a una princesacapturada por unas malvadas criaturas

Blog del proyecto httpprojects3cometcom

102 Motocalipsis Bar 66 RTS RTS en 3D con ambiente motero los hechos de la historia suceden en un pequentildeo pueblo deTexas Programado en Unity con C

Blog del proyecto httpmotocalipsisbar66blogspotcomes

Paacutegina 80 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Creative Commons 40 license by-nc-sa

Attribution-NonCommercial-ShareAlike 40 International

===========================================================

Creative Commons Corporation (Creative Commons) is not a law firm anddoes not provide legal services or legal advice Distribution ofCreative Commons public licenses does not create a lawyer-client orother relationship Creative Commons makes its licenses and relatedinformation available on an as-is basis Creative Commons gives nowarranties regarding its licenses any material licensed under theirterms and conditions or any related information Creative Commonsdisclaims all liability for damages resulting from their use to thefullest extent possible

Using Creative Commons Public Licenses

Creative Commons public licenses provide a standard set of terms andconditions that creators and other rights holders may use to shareoriginal works of authorship and other material subject to copyrightand certain other rights specified in the public license below Thefollowing considerations are for informational purposes only are notexhaustive and do not form part of our licenses

Considerations for licensors Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights Our licenses are irrevocable Licensors should read and understand the terms and conditions of the license they choose before applying it Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected Licensors should clearly mark any material not subject to the license This includes other CC- licensed material or material used under an exception or limitation to copyright More considerations for licensors wikicreativecommonsorgConsiderations_for_licensors

Considerations for the public By using one of our public licenses a licensor grants the public permission to use the licensed material under specified terms and conditions If the licensors permission is not necessary for any reason--for example because of any applicable exception or limitation to copyright--then that use is not regulated by the license Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant Use of

Paacutegina 81 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria the licensed material may still be restricted for other reasons including because others have copyright or other rights in the material A licensor may make special requests such as asking that all changes be marked or described Although not required by our licenses you are encouraged to respect those requests where reasonable More_considerations for the public wikicreativecommonsorgConsiderations_for_licensees

===========================================================

Creative Commons Attribution-NonCommercial-ShareAlike 40 InternationalPublic License

By exercising the Licensed Rights (defined below) You accept and agreeto be bound by the terms and conditions of this Creative CommonsAttribution-NonCommercial-ShareAlike 40 International Public License(Public License) To the extent this Public License may beinterpreted as a contract You are granted the Licensed Rights inconsideration of Your acceptance of these terms and conditions and theLicensor grants You such rights in consideration of benefits theLicensor receives from making the Licensed Material available underthese terms and conditions

Section 1 -- Definitions

a Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated altered arranged transformed or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor For purposes of this Public License where the Licensed Material is a musical work performance or sound recording Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image

b Adapters License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License

c BY-NC-SA Compatible License means a license listed at creativecommonsorgcompatiblelicenses approved by Creative Commons as essentially the equivalent of this Public License

d Copyright and Similar Rights means copyright andor similar rights closely related to copyright including without limitation performance broadcast sound recording and Sui Generis Database

Paacutegina 82 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Rights without regard to how the rights are labeled or categorized For purposes of this Public License the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights

e Effective Technological Measures means those measures that in the absence of proper authority may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20 1996 andor similar international agreements

f Exceptions and Limitations means fair use fair dealing andor any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material

g License Elements means the license attributes listed in the name of a Creative Commons Public License The License Elements of this Public License are Attribution NonCommercial and ShareAlike

h Licensed Material means the artistic or literary work database or other material to which the Licensor applied this Public License

i Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license

j Licensor means the individual(s) or entity(ies) granting rights under this Public License

k NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation For purposes of this Public License the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange

l Share means to provide material to the public by any means or process that requires permission under the Licensed Rights such as reproduction public display public performance distribution dissemination communication or importation and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them

Paacutegina 83 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria m Sui Generis Database Rights means rights other than copyright resulting from Directive 969EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases as amended andor succeeded as well as other essentially equivalent rights anywhere in the world

n You means the individual or entity exercising the Licensed Rights under this Public License Your has a corresponding meaning

Section 2 -- Scope

a License grant

1 Subject to the terms and conditions of this Public License the Licensor hereby grants You a worldwide royalty-free non-sublicensable non-exclusive irrevocable license to exercise the Licensed Rights in the Licensed Material to

a reproduce and Share the Licensed Material in whole or in part for NonCommercial purposes only and

b produce reproduce and Share Adapted Material for NonCommercial purposes only

2 Exceptions and Limitations For the avoidance of doubt where Exceptions and Limitations apply to Your use this Public License does not apply and You do not need to comply with its terms and conditions

3 Term The term of this Public License is specified in Section 6(a)

4 Media and formats technical modifications allowed The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created and to make technical modifications necessary to do so The Licensor waives andor agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights including technical modifications necessary to circumvent Effective Technological Measures For purposes of this Public License simply making modifications authorized by this Section 2(a) (4) never produces Adapted Material

5 Downstream recipients

a Offer from the Licensor -- Licensed Material Every recipient of the Licensed Material automatically

Paacutegina 84 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License

b Additional offer from the Licensor -- Adapted Material Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapters License You apply

c No downstream restrictions You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material

6 No endorsement Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are or that Your use of the Licensed Material is connected with or sponsored endorsed or granted official status by the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i)

b Other rights

1 Moral rights such as the right of integrity are not licensed under this Public License nor are publicity privacy andor other similar personality rights however to the extent possible the Licensor waives andor agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights but not otherwise

2 Patent and trademark rights are not licensed under this Public License

3 To the extent possible the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme In all other cases the Licensor expressly reserves any right to collect such royalties including when the Licensed Material is used other than for NonCommercial purposes

Paacutegina 85 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 3 -- License Conditions

Your exercise of the Licensed Rights is expressly made subject to thefollowing conditions

a Attribution

1 If You Share the Licensed Material (including in modified form) You must

a retain the following if it is supplied by the Licensor with the Licensed Material

i identification of the creator(s) of the Licensed Material and any others designated to receive attribution in any reasonable manner requested by the Licensor (including by pseudonym if designated)

ii a copyright notice

iii a notice that refers to this Public License

iv a notice that refers to the disclaimer of warranties

v a URI or hyperlink to the Licensed Material to the extent reasonably practicable

b indicate if You modified the Licensed Material and retain an indication of any previous modifications and

c indicate the Licensed Material is licensed under this Public License and include the text of or the URI or hyperlink to this Public License

2 You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium means and context in which You Share the Licensed Material For example it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information 3 If requested by the Licensor You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable

Paacutegina 86 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria b ShareAlike

In addition to the conditions in Section 3(a) if You Share Adapted Material You produce the following conditions also apply

1 The Adapters License You apply must be a Creative Commons license with the same License Elements this version or later or a BY-NC-SA Compatible License

2 You must include the text of or the URI or hyperlink to the Adapters License You apply You may satisfy this condition in any reasonable manner based on the medium means and context in which You Share Adapted Material

3 You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to Adapted Material that restrict exercise of the rights granted under the Adapters License You apply

Section 4 -- Sui Generis Database Rights

Where the Licensed Rights include Sui Generis Database Rights thatapply to Your use of the Licensed Material

a for the avoidance of doubt Section 2(a)(1) grants You the right to extract reuse reproduce and Share all or a substantial portion of the contents of the database for NonCommercial purposes only

b if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material including for purposes of Section 3(b) and

c You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database

For the avoidance of doubt this Section 4 supplements and does notreplace Your obligations under this Public License where the LicensedRights include other Copyright and Similar Rights

Paacutegina 87 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 5 -- Disclaimer of Warranties and Limitation of Liability

a UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR TO THE EXTENT POSSIBLE THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL WHETHER EXPRESS IMPLIED STATUTORY OR OTHER THIS INCLUDES WITHOUT LIMITATION WARRANTIES OF TITLE MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE NON-INFRINGEMENT ABSENCE OF LATENT OR OTHER DEFECTS ACCURACY OR THE PRESENCE OR ABSENCE OF ERRORS WHETHER OR NOT KNOWN OR DISCOVERABLE WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART THIS DISCLAIMER MAY NOT APPLY TO YOU

b TO THE EXTENT POSSIBLE IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING WITHOUT LIMITATION NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT SPECIAL INDIRECT INCIDENTAL CONSEQUENTIAL PUNITIVE EXEMPLARY OR OTHER LOSSES COSTS EXPENSES OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES COSTS EXPENSES OR DAMAGES WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART THIS LIMITATION MAY NOT APPLY TO YOU

c The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that to the extent possible most closely approximates an absolute disclaimer and waiver of all liability

Section 6 -- Term and Termination

a This Public License applies for the term of the Copyright and Similar Rights licensed here However if You fail to comply with this Public License then Your rights under this Public License terminate automatically

b Where Your right to use the Licensed Material has terminated under Section 6(a) it reinstates

1 automatically as of the date the violation is cured provided it is cured within 30 days of Your discovery of the violation or

2 upon express reinstatement by the Licensor

For the avoidance of doubt this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License

Paacutegina 88 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

c For the avoidance of doubt the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time however doing so will not terminate this Public License

d Sections 1 5 6 7 and 8 survive termination of this Public License

Section 7 -- Other Terms and Conditions

a The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed

b Any arrangements understandings or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License

Section 8 -- Interpretation

a For the avoidance of doubt this Public License does not and shall not be interpreted to reduce limit restrict or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License

b To the extent possible if any provision of this Public License is deemed unenforceable it shall be automatically reformed to the minimum extent necessary to make it enforceable If the provision cannot be reformed it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions

c No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor

d Nothing in this Public License constitutes or may be interpreted as a limitation upon or waiver of any privileges and immunities that apply to the Licensor or You including from the legal processes of any jurisdiction or authority

===========================================================

Paacutegina 89 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaCreative Commons is not a party to its public licensesNotwithstanding Creative Commons may elect to apply one of its publiclicenses to material it publishes and in those instances will beconsidered the Licensor Except for the limited purpose of indicatingthat material is shared under a Creative Commons public license or asotherwise permitted by the Creative Commons policies published atcreativecommonsorgpolicies Creative Commons does not authorize theuse of the trademark Creative Commons or any other trademark or logoof Creative Commons without its prior written consent includingwithout limitation in connection with any unauthorized modificationsto any of its public licenses or any other arrangementsunderstandings or agreements concerning use of licensed material Forthe avoidance of doubt this paragraph does not form part of the publiclicenses

Creative Commons may be contacted at creativecommonsorg

Paacutegina 90 de 102

Page 10: Universitat Oberta de Catalunya UOC Ingeniería técnica en

102 Tales of Nimria mini RPG80102 Motocalipsis Bar 66 RTS80

Creative Commons 40 license by-nc-sa81

Iacutendice de ilustracionesilustracioacuten 1 Ciclo de vida en cascada4ilustracioacuten 11 Calendario proyecto7ilustracioacuten 2 Diagrama de gantt8ilustracioacuten 3 Diagrama de casos de usos actor jugador11ilustracioacuten 4 Diagrama de casos de usos personaje principal19ilustracioacuten 5 Diagrama de casos de usos enemigos24ilustracioacuten 6 Diagrama de clases videojuego28ilustracioacuten 7 Diagrama de clases de pantallas30ilustracioacuten 8 Maacutequina de estados del videojuego 31ilustracioacuten 9 Maacutequina de estados comportamiento oveja 32ilustracioacuten 10 Maacutequina de estados comportamiento lobo 33ilustracioacuten 11 Maacutequina de estados tutorial in game 34ilustraciones 12 y 13 pantallas juego Sheep amp Wolf 36ilustraciones 14 y 15 pantallas juego Sheep Up 37ilustraciones 16 y 17 pantallas juego Temple run38ilustraciones 18 y 19 pantallas juego Attack of the Spooklings39ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitas41ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintas pantallas43ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada44ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada45ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada46ilustracioacuten 241 Transiciones definidas entre pantallas47ilustracioacuten 242 Disentildeo pantallas con Gimp54ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en un videojuego55ilustracioacuten 26 Estructura baacutesica de un videojuego 58ilustracioacuten 27 Singleton59ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego 63ilustracioacuten 29 Diagrama de clases Assets 64ilustracioacuten 30 Diagrama de clases objetos 66ilustracioacuten 31 Diagrama de clases pantallas 68ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse69ilustracioacuten 33 Creacioacuten proyecto libGDX70ilustracioacuten 34 Creacioacuten proyecto libGDX70ilustracioacuten 35 Capas separadas por imaacutegenes71Ilustracioacuten 36 Texture packer 72ilustracioacuten 37 Posicioacuten texturas 73

iv

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

1Introduccioacuten

11 Justificacioacuten y contexto del proyecto

Este trabajo de fin de carrera en adelante TFC se centra en el desarrollo de aplicaciones paradispositivos moacuteviles con sistema operativo Android Actualmente existen multitud de aplicacionesNo obstante este TFC se quiere centrar en un subconjunto de aplicaciones focalizadas alentretenimiento conocidas por todo el mundo como videojuegos

Un videojuego es un software creado para el entretenimiento en general y basado en lainteraccioacuten entre una o varias personas y un aparato electroacutenico que ejecuta dicho videojuego Asiacutepues un videojuego es considerado un software cuyo fin directo es el entretenimiento

En estos uacuteltimos antildeos los smartphones y tabletas se han convertido en las nuevas plataformasmoacuteviles para juegos que compiten con los sistemas portaacutetiles claacutesicos que generalmente tienden aser maacutes cerrados

Los videojuegos se pueden clasificar en distintos geacuteneros estos son una forma de clasificacioacutenque designan un conjunto de videojuegos que poseen una serie de elementos comunes A lo largode la historia de los videojuegos aquellos elementos que han compartido varios de los mismos hanservido para clasificar como un geacutenero a aquellos que les han seguido en estilo y forma de lamisma manera que ha pasado con la muacutesica o el cine Como ejemplo se enumeran algunos de losgeacuteneros maacutes populares Lucha Disparos conocidos como Shooters Sigilo Plataformas ArcadeDeporte etc

Durante mucho tiempo los videojuegos estuvieron reservados para un tipo de usuario muyconcreto con un perfil muy especiacutefico la gran mayoriacutea eran hombres entre 15 y 25 antildeos Saliendode este perfil si se buscaban mujeres o personas mayores de 25 antildeos el nuacutemero de usuarioscaiacutea en picado y es que los videojuegos eran percibidos como el hobby de los adolescentesmasculinos No obstante en los uacuteltimos antildeos se ha visto coacutemo todo esto ha ido cambiando con unaumento tanto del puacuteblico femenino como la aparicioacuten en escena de usuarios con edades maacutesavanzadas

Este cambio ha venido motivado por diferentes motivos evolutivos dentro de la industria delvideojuego Uno de los motivos que ha provocado esto es la aparicioacuten de los teleacutefonos moacutevilesinteligentes tabletas y juegos online junto con gran cantidad de videojuegos de tipo casual Otroclaro motivo es que la mayoriacutea de los que jugaacutebamos hace 25 antildeos pues hoy seguimos jugandoya que hemos crecido con esta cultura y claro esta que a diacutea de hoy ya no tenemos la edad deentonces

12 Descripcioacuten del Proyecto Este proyecto se quiere centrar en el desarrollo de un videojuego de tipo casual para moacutevilesAndroid Estos son un tipo de videojuegos dirigidos a un puacuteblico de jugadores casuales Losvideojuegos casuales pueden tener cualquier tipo de mecaacutenica de juego y ser clasificados dentrode cualquier otro geacutenero Son diferenciados por sus reglas simples y de no requerir un excesivocompromiso en contraste con la mayoriacutea de juegos maacutes complejos No requieren una dedicacioacutende tiempo a largo plazo o habilidades especiales para jugar

Paacutegina 1 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Durante la realizacioacuten del proyecto se realizara el disentildeo del juego por disentildeo se entienderealizar un documento que defina el juego de forma generalizada mecaacutenicas personajes etceste documento es conocido como el ldquogame designrdquo el disentildeo de arte conocido como ldquoConcepartrdquo engloba todo lo relacionado con el aspecto graacutefico del juego estilos de personajes estilos degraacuteficos etc Finalmente se realizara el anaacutelisis disentildeo e implementacioacuten de laaplicacioacuten(videojuego) con las tecnologiacuteas escogidas para este proyecto

13 Objetivos

El objetivo principal de este TFC es adquirir experiencia en el desarrollo de videojuegos paraAndroid Sin embargo yendo maacutes allaacute de la plataforma tambieacuten existe un intereacutes por ampliarconocimientos en cuanto a programacioacuten y disentildeo de videojuegos en general

En cuanto al disentildeo y desarrollo del videojuego se pretende realizar un casual game con lassiguientes caracteriacutesticas

El juego consistiraacute en conducir unas ovejas descarriadas a su corral eacutestas con nuestra ayudadeberaacuten sortear los peligros que iraacuten apareciendo durante el camino hacia el deseado corral Elprincipal peligro que amenaza las ovejas son unos lobos malvados que quieren comeacuterselas Elvideojuego soacutelo dispondraacute de una uacutenica modalidad de juego para un uacutenico jugador Al tratarse deun juego casual el publico objetivo es muy amplio Se pretende conseguir un ldquolook amp feelrdquo conesteacutetica tipo cartoon en clave de humor El juego sera desarrollado en 2D con perspectiva cenital

131 Definicioacuten del videojuego

El nivel se describe como una pantalla estaacutetica con vista cenital en posicioacuten vertical Con estaacuteticase entiende que no hay ninguacuten tipo de scroll que haga desplazar la pantalla Siempre veremos lomismo

En la parte de arriba del todo apareceraacute un corral con una puerta la puerta se iraacute abriendo ycerrando de forma aleatoria Por los extremos de la pantalla habraacute arbustos que representaran loslimites del bosque De estos limites iraacuten saliendo lobos a la escena que se querraacuten comer a laspobres ovejas Estas ovejas permaneceraacuten en la parte de abajo de la pantalla e iraacuten saliendo a laescena ellas solas sin saber demasiado donde van(son ovejas descarriadas) nuestra misioacutenconsistiraacute en tirarlas hacia el corral para salvarlas de los malvados lobos metiendolas por lapuerta en los momentos que este abierta para lanzarlas tendremos que deslizar el dedo encimade ellas para darles impulso hacia el corral si no acertamos en meter la oveja en la puerta estarebotara como si de un pelota se tratase Los lobos iraacuten saliendo para sacarnos los lobos deencima deberemos deslizar nuestro dedo encima de ellos o tocarlos para ahuyentarlos De lobos habraacute de diferentes colores marrones grises y azulados Cada lobo loahuyentaremos de manera distinta

bull Marrones 1 pulsacioacuten o deslizar 1 vez el dedo sobre el lobobull Grises 2 pulsaciones o deslizar 2 veces el dedo sobre el lobobull Azulados 3 pulsaciones o deslizar 3 veces el dedo sobre el lobo

A parte de impedir que se coman las ovejas que estaacuten en camino hacia el corral tambieacutentendremos que evitar que los lobos lleguen a la parte de abajo donde estaacute el grupo de ovejas yaque esto nos haraacute perder vidas el juego inicialmente empezara con 3 vidas pudiendo alcanzar unmaacuteximo de 6 vidas en total cada 10000 puntos obtendremos un vida extra

Paacutegina 2 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Conforme el juego se va desarrollando eacuteste iraacute acumulando

bull Puntosbull Tiempo jugadobull Numero de lobos ahuyentadosbull Ovejas colocadas en el corral

Se tratara pues de ir mejorando nuestro propio reacutecord partida tras partida El juego iraacuteaumentando de dificultad durante el transcurso de la partida

Como apunte final el juego recibe el nombre de ldquoFling the sheeprdquo que traducido al espantildeolvendriacutea a ser algo como ldquolanzar las ovejasrdquo

Paacutegina 3 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

14 Planificacioacuten

141 Ciclo de vida

Un videojuego no deja de ser un proyecto de software por tanto para la realizacioacuten de esteproyecto se ha tomado como base el ciclo de vida claacutesico de cualquier proyecto de softwaremodificado ligeramente a las necesidades del proyecto Este ciclo de vida que tambieacuten sedenomina ciclo de vida en cascada se compone de las siguientes etapas

ilustracioacuten 1 Ciclo de vida en cascada

142 Planificacioacuten detallada del proyecto

En los siguientes apartados se recogen por cada etapa que compone el ciclo de vida las principales actividades realizadas con el objetivo de alcanzar el producto deseado dentro delos plazos definidos

1411 Anaacutelisis previo planificacioacuten

En este punto se ha abordado la visioacuten global del proyecto comprendida en establecer lospuntos iniciales necesarios para crear una planificacioacuten de tareas en funcioacuten de las actividades arealizar

Actividad Descripcioacuten

Disentildeo conceptual del videojuego Mecaacutenicas del videojuego

Definicioacuten de las tecnologiacuteas Tecnologiacuteas que se utilizaran en el desarrollo delvideojuego

Anaacutelisis de riesgos Posibles riesgos del proyecto

Planificacioacuten del proyecto Crear una planificacioacuten adaptada a los plazos de entregade este TFC

Paacutegina 4 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Redaccioacuten del documento Generacioacuten del plan de trabajo

Entrega de la PEC1 Entrega del documento

1412 Anaacutelisis de requisitos

En esta fase se ha detallado que necesidades debe cubrir el videojuego tanto desde un puntode vista funcional como desde un punto de vista arquitectoacutenico de la aplicacioacuten a disentildear se hadisentildeado un modelo troncal de clases para posteriormente desarrollar en base a estas todo elvideojuego No obstante en ninguacuten caso se ha entrado en detalle en las tecnologiacuteas a utilizar yadefinidas previamente

Actividad Descripcioacuten

Especificacioacuten de requisitos funcionales Definicioacuten de casos de usos

Disentildeo baacutesico estructura aplicacioacuten Diagrama baacutesico de clases

Especificacioacuten de requisitos funcionales Definicioacuten de maacutequinas de estado

1413 Disentildeo

En este apartado teniendo en cuenta que en este proyecto se va a desarrollar un videojuego seha realizado la recopilacioacuten conceptual de arte conjuntamente con el disentildeo de todas laspantallas que intervienen en el Conjuntamente con la seleccioacuten de los tipos de fuente que seutilizaran para el videojuego seleccioacuten de personajes y enemigos

Actividad Descripcioacuten

Definicioacuten de usuarios y contexto de uso delvideojuego

Conocer las caracteriacutesticas de los usuarios susnecesidades y objetivos asiacute como los contextosde uso

Disentildeo conceptual Un escenario de uso describe desde el puntode vista del usuario como seraacute utilizado unproducto determinado (es este caso unvideojuego) en un escenario determinado

Seleccioacuten de arte Seleccioacuten de arte ya hecho con licencias libresya que no se disponen de conocimientos dearte para abordar el disentildeo

Seleccioacuten de fuentes Seleccioacuten de los tipos de fuente adecuadospara el disentildeo del videojuego

Seleccioacuten de personajes y enemigos Seleccioacuten de personajes y enemigosdisponibles en la red con licencias libres ya queno se disponen de conocimientos de arte paraabordar el disentildeo

Disentildeo de pantallas que intervienen(prototipo) Con todo el arte fuentes y personajes serealizara el disentildeo de todas las pantallas queintervienen en el juego Realizacioacuten de unboceto a mano alzada Sketches y prototipo dealta fidelidad

Redaccioacuten del documento Generacioacuten del documento de disentildeo

Paacutegina 5 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Entrega de la PEC2 Entrega del documento

1414 Implementacioacuten y pruebas

En este punto se ha desarrollado la implementacioacuten del videojuego partiendo de todas lasdefiniciones de los apartados anteriores y las verificaciones oportunas para asegurar el correctofuncionamiento del videojuego

Actividad Descripcioacuten

Implementacioacuten de navegables y contenidos Implementacioacuten de la estructura de todas lapantallas del video juego y la navegabilidadentre ellas y las funciones principales de cadauna de ellas

Implementacioacuten del gameplay Implementacioacuten de la logica de juego

Implementacioacuten de sonido y efectos Implementacioacuten de los efectos de sonido y lamusica

Version alpha del videojuego En este punto se dispone de un videojuegofuncional listo para ser revisado y refinado

Pruebas y refinamiento de la implementacioacuten Pruebas y correcioacutenes de posibles errores

Preparacioacuten del paquete entregable y laredaccioacuten del documento

Testeo final y preparacioacuten del apk a entregarmas la redaccioacuten del documento estrutural delaplicacioacuten

Entrega de la PEC3 Entrega del documento

1415 Finalizacioacuten

En un proyecto de software esta parte quedariacutea focalizada en la fase de implantacioacuten y puesta enmarcha Sin embargo al tratarse de un videojuego esta fase quedariacutea focalizada en la fase delanzamiento del producto No obstante en este caso se ha utilizado para documentar todo eltrabajo realizado a lo largo de este TFC

Actividad Descripcioacuten

Redaccioacuten memoria final proyecto Redaccioacuten memoria final

Montaje presentacioacuten diapositivas Montaje presentacioacuten diapositivas

Montaje del video final presentacioacuten proyecto Montaje del video final presentacioacuten proyecto

Entrega final Entega final

Paacutegina 6 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria143 Temporalizacioacuten del proyecto

La siguiente ilustracioacuten muestra el calendario definido para el proyecto

ilustracioacuten 11 Calendario proyecto

Paacutegina 7 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

En la siguiente pagina se muestra una ilustracioacuten del diagrama de gantt correspondiente alcalendario mostrado en la ilustracioacuten 1

ilustracioacuten 2 Diagrama de gantt

Paacutegina 8 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

15 Herramientas y tecnologiacuteas utilizadas

Actualmente existen varios frameworks para desarrollar videojuegos sobre plataformas moacutevilesSe ha hecho un anaacutelisis comparativo preliminar entre Cocos2D-android1 Cocos2D-x y libGDXaunque existen otros estos tres son los maacutes nombrados y utilizados

Cocos2d-android1 Es un framework en Java basado en la versioacuten de cocos2d-android queesta basado en la versioacuten de cocos2d para iphone Este framework permite el desarrollo devideojuegos en 2D y se programa en Java en lugar de objective-c Para la versioacuten Cocos2d deiphone Actualmente este framework no parece tener mucha continuidad por parte de lacomunidad de desarrolladores aunque no estaacute discontinuado del todo

Cocos2D-x Es un framework en C++ multi-plataforma permite desarrollar para diferentesplataformas a la vez con el mismo coacutedigo Android iOS Bada Marmalade Windows Linux etcSin embargo aunque es un framework con una comunidad muy activa su documentacioacuten esbastante mejorable Se programa en C++ y es posible trabajar con distintos entornos de desarrollocomo Visual Studio o Eclipse El proceso de depuracioacuten con eclipse es algo complejo con C++JNIcon varios pasos a seguir para poder depurar A la vez su configuracioacuten en el entorno Eclipse noes trivial Finalmente tiene relativamente todaviacutea poco tiempo de vida

LibGDX Es un framework escrito en Java sobre C++ ya que las partes criacuteticas estaacuten escritascon coacutedigo nativo para conseguir el mejor rendimiento posible Tiene una comunidad dedesarrolladores muy activa y una documentacioacuten muy extensa Se programa con Java y permite ladepuracioacuten ejecutando la aplicacioacuten en el escritorio de la maacutequina sin tener que pasar por undispositivo real o uno virtual En caso de que se quiera probar en un dispositivo real es posiblehacerlo sin ninguacuten cambio sobre el coacutedigo Este hecho hace que el desarrollo sea maacutes fluidoTiene un rendimiento bastante alto ante cocos2d-x y otros frameworks existentes para eldesarrollo de videojuegos

Todo lo expuesto anteriormente provoca una inclinacioacuten definitiva a utilizar libGDX paraimplementar el videojuego Asiacute pues el videojuego seraacute escrito en Java utilizando el IDE Eclipseque es el soportado oficialmente para Android utilizando el framework libGDX

Para la realizacioacuten de este proyecto se han utilizado las siguientes herramientas

bull Planificacioacuten proyecto

Microsoft Project Professional 2010

bull Disentildeo

Gimp 28 Inkscape 048 TexturePacker 320 Microsoft Visio Professional 2010

bull Programacioacuten

Entorno de desarrollo Eclipse 421 Juno Android develompment tools ADT Android SDK

Paacutegina 9 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Framework libGDX 098 ObjectAid herramienta de visualizacioacuten de coacutedigo en UML para Eclipse Control de versiones Git utilizando como plataforma GitHub

bull Edicioacuten de audio

Audacity 203 GoldWave 569

bull Redaccioacuten de documentos

OpenOffice 401

bull Edicioacuten de viacutedeo

Adobe Premiere Pro CS55

16 Riesgos del proyecto

Se parte de una experiencia previa en desarrollo de videojuegos ver apartado 9 otros proyectosrealizados al final de este documento Aunque no se dispone de experiencia con la libreriacuteaescogida ni tampoco con programacioacuten sobre Android A nivel teacutecnico no se preveacute que puedansurgir muchos riesgos en liacuteneas generales No obstante existe la posibilidad de gastar maacutestiempo del previsto consultando documentacioacuten para lograr los objetivos establecidos

Existe un riesgo maacutes alto a nivel artiacutestico ya que no se dispone de ninguacuten conocimiento de artede ninguacuten tipo Por lo tanto muy probablemente a nivel artiacutestico el juego sea un poco justo Es poreste motivo que durante la realizacioacuten de este proyecto no se va a profundizar en temas de disentildeoartiacutestico en su lugar se utilizaran recursos de arte existentes en la red con licencias libres tipocreative commons o dominio puacuteblico Al final de este documento en el apartado 6 se puede ver unlistado de los recursos utilizados juntamente con un link a la obra y el nombre del autor si esteesta disponible Se haraacute una seleccioacuten de distintos tipos de recursos graacuteficos para posteriormentehacer el montaje de toda la parte graacutefica del videojuego En cuanto a la parte de audio la situacioacuten es exactamente la misma no se dispone de ninguacutenconocimiento para componer muacutesica ni efectos Por lo tanto se buscaraacuten sonidos y temasmusicales con licencias libres Intentando que estos queden integrados de la mejor maneraposible al videojuego

Finalmente existe el riesgo de que el gameplay definido en el disentildeo conceptual del videojuegouna vez puesto en praacutectica no sea del todo funcional o necesite de un balanceo para conseguirun juego equilibrado y jugable

Paacutegina 10 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2 Anaacutelisis funcional Basaacutendonos en el aparatado ldquo131 Definicioacuten del videojuegordquo se han definido los requisitosfuncionales necesarios para este con la definicioacuten de casos de uso Posteriormente se ha definidoun diagrama de clases inicial el cual ha servido como punto de partida para el desarrollo completodel videojuego A su vez se definen las maacutequinas de estado finitas utilizadas para el desarrollo

21 Requisitos funcionales casos de uso

En este apartado se presentan tres diagramas de casos de uso El primer diagrama engloba lavista generalizada del actor ldquojugadorrdquo y los casos de uso que describen los requisitos funcionalesdel sistema En los dos diagramas restantes se describen la vista generalizada del actor ldquoIArdquo porIA se entiende la inteligencia artificial del videojuego Los diagramas muestran los requisitosfuncionales de la IA para el personaje principal y los enemigos La IA interactuacutea con el sistema ypor tanto seraacute susceptible de analizar su uso de la aplicacioacuten

211 Diagrama casos de uso actor ldquoJugadorrdquo

ilustracioacuten 3 Diagrama de casos de usos actor jugador

Paacutegina 11 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Como se puede observar en la ilustracioacuten 3 el sistema solo dispone de un uacutenico actor Que eneste caso es el jugador del videojuego es decir representa todos los posibles usuarios quepueden jugar al videojuego

En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 3estos seraacuten desarrollados en la seccioacuten posterior

212 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

VJ01 Inicio videojuego Jugador

VJ02 Jugar Jugador

VJ03 Acceder puntuaciones maacuteximas Jugador

VJ31 Consultar puntuacione locales Jugador

VJ32 Salir puntuacione locales Jugador

VJ04 Acceder a las opciones Jugador

VJ41 Activar o desactivar muacutesica o efectos Jugador

VJ42 Acceder a la pantalla de creacuteditos Jugador

VJ421 Salir de la pantalla de creacuteditos Jugador

VJ43 Salir de las opciones Jugador

VJ05 Acceder a las instrucciones Jugador

VJ51 Salir de las intrucciones Jugador

VJ06 Salir del videojuego Jugador

213 Descripcioacuten textual de los casos de uso

2131 VJ01 Inicio videojuego

Identificador VJ01

Nombre Inicio videojuego

Autor Xavier Figuera

Resumen El usuario inicia el videojuego

Actor(es) Jugador

Precondiciones Ninguna el videojuego no habiacutea sido iniciado auacuten

Postcondiciones El usuario a iniciado el videojuego a visualizado la pantalla de introdurante un segundo y se encuentra en la pantalla del menuacute principal

Flujo normal 1 El usuario accede a la lista de aplicaciones de su dispositivo 2 Busca el acceso al videojuego3 Ejecuta el programa4 Se carga la aplicacioacuten5 El videojuego muestra la pantalla de intro

Paacutegina 12 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6 Se muestra el menuacute principal al jugador

Flujos alternativos Se podriacutea dar el caso que el usuario accediera al videojuego desde algunacceso directo en alguno de los escritorios del dispositivo

Inclusiones Ninguna

Extensiones Ninguna

2132 VJ02 Jugar

Identificador VJ02

Nombre Jugar

Autor Xavier Figuera

Resumen Jugar al videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario empieza a jugar

Flujo normal 1 El usuario pulsa el botoacuten play del menuacute principal 2 El usuario juega3 El usuario puede volver a jugar una vez finalizada la partida 4 El usuario puede salir del juego en cualquier momento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2133 VJ03 Acceder puntuaciones maacuteximas locales

Identificador VJ03

Nombre Acceder puntuaciones maacuteximas locales

Autor Xavier Figuera

Resumen Acceder a la pantalla de puntuaciones maacuteximas locales de las partidasrealizadas en el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla con la tabla de las 10 puntuacionesmaacuteximas

Flujo normal 1 El usuario pulsa el botoacuten Scores del menuacute principal 2 Al usuario le aparece la pantalla de puntuacioacuten

Paacutegina 13 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ31 Consultar puntuaciones localesVJ32 Salir de la puntuaciones locales

2134 VJ31 Consultar puntuaciones locales

Identificador VJ31

Nombre Consultar puntuaciones locales

Autor Xavier Figuera

Resumen Consulta de las puntuaciones maacuteximas locales de las partidas realizadasen el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Scores delmenuacute principal

Postcondiciones El usuario visualiza la tabla de las 10 puntuaciones maacuteximas

Flujo normal 1 El usuario visualiza una tabla con las 10 puntuaciones maacuteximas

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2135 VJ32 Salir puntuaciones locales

Identificador VJ32

Nombre Salir puntuaciones locales

Autor Xavier Figuera

Resumen Salir de las puntuaciones maacuteximas locales

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulso el botoacuten Scores

Postcondiciones El usuario sale de la tabla de puntuaciones

Flujo normal 1 El usuario pulsa el botoacuten salir en la pantalla tabla de puntuaciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 14 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2136 VJ04 Acceder a las opciones

Identificador VJ04

Nombre Acceder a la pantalla de opciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de opciones del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla de opciones

Flujo normal 1 El usuario pulsa el botoacuten Options del menuacute principal 2 Al usuario le aparece la pantalla de opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ41 Activar o desactivar muacutesica o efectos VJ42 Acceder a la pantalla de creacuteditosVJ43 Salir de las opciones

2137 VJ41 Activar o desactivar muacutesica o efectos

Identificador VJ041

Nombre Activar o desactivar muacutesica o efectos

Autor Xavier Figuera

Resumen Activar o desactivar muacutesica o efectos de audio del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal

Postcondiciones El usuario activa o desactiva la muacutesica o efectos del videojuego

Flujo normal 1 El usuario pulsa el botoacuten altavoz para activar o desactivar la muacutesica delvideojuego 2 El usuario pulsa el botoacuten notas musicales para activar o desactivar losefectos de audio del videojuego

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 15 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2138 VJ42 Acceder a la pantalla de creacuteditos

Identificador VJ42

Nombre Acceder a la pantalla de creacuteditos

Autor Xavier Figuera

Resumen Acceder a la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario se encuentra en la pantalla de opciones

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten credits para acceder a los creacuteditos2 El usuario puede desplazar el texto de los creacuteditos deslizando el dedosobre el texto hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ421 Salir de la pantalla de creacuteditos

2139 VJ421 Salir de la pantalla de creacuteditos

Identificador VJ421

Nombre Salir de la pantalla de creditos

Autor Xavier Figuera

Resumen Salir de la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal y ha accedido a la pantalla creacuteditos

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten salir para abandonar la pantalla para accedera los creacuteditos2 El usuario se encuentra de nuevo en la pantalla opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 16 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21310 VJ05 Acceder a las instrucciones

Identificador VJ05

Nombre Acceder a la pantalla de instrucciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten del menuacuteprincipal

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a las instrucciones2 El usuario puede desplazar el texto de las instrucciones deslizando eldedo sobre el hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ51 Salir de las instrucciones

21311 VJ51 Salir de las instrucciones

Identificador VJ51

Nombre Salir de las intrucciones

Autor Xavier Figuera

Resumen Salir de la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten en el menuacuteprincipal y ha accedido a la pantalla de instrucciones

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a la pantalla de instrucciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 17 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21312 VJ06 Salir del videojuego

Identificador VJ06

Nombre Salir del videojuego

Autor Xavier Figuera

Resumen Salir del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego

Postcondiciones El usuario abandona el videojuego

Flujo normal 1 El usuario pulsa el botoacuten exit de la aplicacioacuten para salir del videojuego oel botoacuten salir del dispositivo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 18 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214 Diagrama casos de uso actor ldquoIArdquo

Por IA se entiende inteligencia artificial es un elemento fundamental para dotar de realismo a unvideojuego Uno de los retos principales que se plantean a la hora de integrar comportamientosinteligentes es alcanzar un equilibrio entre la sensacioacuten de inteligencia y el tiempo de coacutemputoempleado por este subsistema Este equilibrio es de gran importancia en el caso de losvideojuegos Este planteamiento gira generalmente en torno a la generacioacuten de soluciones quesin ser oacuteptimas proporcionen una cierta sensacioacuten de inteligencia En concreto dichas solucionesdeberiacutean tener como meta que el jugador se enfrente a un reto que sea factible de manera quesuponga un estiacutemulo emocional y que consiga engancharlo al videojuego

En estos uacuteltimos antildeos la IA ha pasado de ser un componente secundario en el proceso dedesarrollo de videojuegos a convertirse en uno de los aspectos maacutes importantes Actualmentelograr un alto nivel de IA en un juego sigue siendo uno de los retos maacutes emocionantes y complejosy en ocasiones sirve para diferenciar un juego normal de uno realmente espectacular

Dentro de este proyecto de ha definido una IA baacutesica para dotar del realismo necesario alvideojuego propuesto En los siguientes diagramas se define esta IA en forma de casos de usospara su posterior implementacioacuten

2141 Diagrama casos de uso IA personaje principal (oveja)

ilustracioacuten 4 Diagrama de casos de usos personaje principal

Paacutegina 19 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 4estos seraacuten desarrollados en la seccioacuten posterior

21411 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA03 Salida oveja al escenario IA

IA031 Posicionamiento en pantalla de la oveja IA

IA032 Movimiento oveja IA

IA033 Oveja pastando IA

IA034 Lanzamiento oveja IA

IA035 Rebotes de la oveja IA

IA036 La oveja entra en el establo IA

IA037 Parar oveja IA

21412 Descripcioacuten textual de los casos de uso

214121 IA03 Salida ovejas al escenario

Identificador IA03

Nombre Salida oveja al escenario

Autor Xavier Figuera

Resumen Salida oveja al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones La oveja es instanciada de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Las ovejas se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA031 Posicionamiento en pantalla de las oveja

214122 IA031 Posicionamiento en pantalla de las oveja

Identificador IA031

Nombre Posicionamiento en pantalla de las oveja

Paacutegina 20 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Autor Xavier Figuera

Resumen Asignacioacuten inicial posicioacuten de las ovejas en pantalla siempre es la mismaposicioacuten esta queda fuera del rango visual de la pantalla

Actor(es) IA

Precondiciones La partida esta iniciada y la oveja instanciada

Postcondiciones La oveja queda posicionada en unas coordenadas fuera de la pantalla

Flujo normal 1 Se instancia la oveja2 La oveja queda posicionada en unas coordenadas uacutenicas fuera delrango visual de pantalla

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214123 IA032 Movimiento oveja

Identificador IA032

Nombre Movimiento oveja

Autor Xavier Figuera

Resumen Movimiento de las ovejas hacia el escenario

Actor(es) IA

Precondiciones La partida esta iniciada la oveja instanciada y posicionada

Postcondiciones La oveja se mueve hacia el escenario empieza a pastar

Flujo normal 1 La oveja se mueve hacia el escenario

Flujos alternativos Ninguno

Inclusiones IA034

Extensiones IA033 Oveja PastandoIA037 Parar oveja

214124 IA033 Oveja pastando

Identificador IA033

Nombre Oveja pastando

Autor Xavier Figuera

Resumen La ovejas permanecen en un espacio determinado de coordenadas depantalla mientras no sean lanzadas al escenario por el usuario

Actor(es) IA

Paacutegina 21 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Precondiciones La oveja ha salido al escenario

Postcondiciones La oveja se mueve dentro de un espacio determinado de forma indefinida

Flujo normal 1 La oveja se mueve de forma indefinida hasta que sea lanzada por elusuario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA034 Lanzamiento oveja

214125 IA034 Lanzamiento oveja

Identificador IA034

Nombre Lanzamiento oveja

Autor Xavier Figuera

Resumen La oveja es lanzada por el usuario y se acelera en funcioacuten de la fuerza delanzamiento

Actor(es) IA

Precondiciones La oveja se mueve

Postcondiciones La oveja ha sido lanzada

Flujo normal 1 La oveja se mueve de forma indefinida2 La oveja es lanzada3 La oveja acelera en funcioacuten de la fuerza de lanzamiento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214126 IA035 Rebotes de la oveja

Identificador IA035

Nombre Rebotes de la oveja

Autor Xavier Figuera

Resumen La oveja ha sido lanzada y rebota por el escenario

Actor(es) IA

Precondiciones La oveja ha sido lanzada

Postcondiciones La oveja rebota por el escenario

Flujo normal 1 La oveja ha sido lanzada y rebota por el escenario 2 La oveja entra en el establo si colisiona con la puerta y esta abierta

Paacutegina 22 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA036 La oveja entra en el establo

214127 IA036 La oveja entra en el establo

Identificador IA036

Nombre La oveja entra en el establo

Autor Xavier Figuera

Resumen La oveja entra en el establo

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario y la puerta del establo estaabierta

Postcondiciones La oveja entra en el establo

Flujo normal 1 La oveja entra en el establo si colisiona con la puerta y esta abierta

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214128 IA037 Parar oveja

Identificador IA037

Nombre Parar oveja

Autor Xavier Figuera

Resumen La oveja para si se hacen dos pulsaciones encima de ella

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario

Postcondiciones La oveja se para

Flujo normal 1 La oveja esta rebotando2 El usuario pulsa dos veces encima de ella3 La oveja se para

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 23 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2142 Diagrama casos de uso IA enemigos (lobo)

ilustracioacuten 5 Diagrama de casos de usos enemigos

21421 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA02 Salida lobo al escenario IA

IA021 Ojos por la derecha o por la izquierda IA

IA022 Escoje el tipo de lobo IA

IA023 Lobo por la derecha o por la izquierda IA

IA024 Salta a escena IA

IA025 Movimento lobo IA

Paacutegina 24 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21422 Descripcioacuten textual de los casos de uso

214221 IA02 Salida lobo al escenario

Identificador IA02

Nombre Salida lobo al escenario

Autor Xavier Figuera

Resumen Salida lobo al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones El lobo es instanciado de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Los lobos se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA02 IA021 IA022 IA023 IA024

214222 IA021 Ojos por la derecha o por la izquierda

Identificador IA021

Nombre Ojos por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Salida de ojos al escenario paso previo a que salte el lobo

Actor(es) IA

Precondiciones El lobo ha sido instanciado

Postcondiciones Aparecen unos ojos que se cierra y se abren por la derecha o izquierda dela pantalla de forma aleatoria

Flujo normal 1 El lobo ha sido instanciado2 Aparecen unos ojos que se cierran y se abren 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 25 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214223 IA022 Escoge el tipo de lobo

Identificador IA022

Nombre Escoge el tipo de lobo

Autor Xavier Figuera

Resumen Escoge el tipo de lobo de forma aleatoria de los tres definidos

Actor(es) IA

Precondiciones Han aparecido los ojos

Postcondiciones Ha escogido el tipo de lobo que saltara al escenario

Flujo normal 1 Han aparecido los ojos2 Ha escogido el tipo de lobo que saltara al escenario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214224 IA023 Lobo por la derecha o por la izquierda

Identificador IA023

Nombre Lobo por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Escoge de forma aleatoria el lado por donde debe aparecer el lobo

Actor(es) IA

Precondiciones Se ha seleccionado el tipo de lobo

Postcondiciones Se ha escogido el lado por donde apareceraacute

Flujo normal 1 Se ha escogido el lado por donde apareceraacute

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 26 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214225 IA024 Salta a escena

Identificador IA024

Nombre Salta a escena

Autor Xavier Figuera

Resumen El lobo salta a escena

Actor(es) IA

Precondiciones Se ha seleccionado el lado por donde debe aparecer y salta

Postcondiciones El lobo esta en escena

Flujo normal 1 Se ha seleccionado el lado por donde debe aparecer y salta2 El lobo esta en escena

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones A025

214226 IA025 Movimiento lobo

Identificador IA025

Nombre Movimiento lobo

Autor Xavier Figuera

Resumen El lobo esta en escena y se mueve

Actor(es) IA

Precondiciones El lobo ha saltado a la escena

Postcondiciones El lobo se mueve

Flujo normal 1 El lobo ha saltado a la escena2 El lobo se mueve

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 27 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

22 Disentildeo inicial diagrama de clases

221 Diagrama de clases inicial ldquoFling the sheeprdquo

ilustracioacuten 6 Diagrama de clases videojuego

En este apartado se define la estructura inicial de la aplicacioacuten a traveacutes del diagrama de clasesmostrado en la ilustracioacuten 6 Esto serviraacute como punto de partida para el completo disentildeo de laaplicacioacuten para su posterior implementacioacuten A continuacioacuten se pasan a detallar a modo resumidoque funcionalidad tiene cada una de las clases definidas en este diagrama

2211 Resumen clases videojuego

FlingTheSheepMain Clase principal desde donde se inicializaraacute la aplicacioacuten

Assets Esta clase contendraacute todos los recursos necesarios del juego texturas sonidos etcEstos seraacuten inicializados en el momento de iniciar el juego Existe una dependencia entre la claseFlingTheSheepMain y Assets ya que la instanciacioacuten de Assets esta condicionada por lainstanciacioacuten de la clase principal FlingTheSheepMain cuando se pone en marcha el videojuego

Paacutegina 28 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaWorldGameController Esta clase contendraacute la loacutegica del videojuego

AudioManager Clase destinada para controlar la reproduccioacuten de efectos de sonido y audio delvideojuego

Charcater Es la superclase que describe los comportamientos comunes de los personajes deella se extienden los personajes principales y los enemigos

Sheep Clase que representa el personaje principal

Wolf Clase que representa a los enemigos

AbstractGameObject Esta superclase recoge todos los comportamientos comunes de losobjetos del juego por objetos se entiende todos los componentes que forman el escenario delvideojuego De esta clase se extienden todos los objetos del videojuego

Grass Hierba que apareceraacute en el escenario

Flower Flores que apareceraacuten en el escenario

ThePen Establo donde hay que hacer llegar las ovejas

DoorPen Puerta del establo esta se abriraacute y se cerrara aleatoriamente

Hole Agujeros en el escenario

WoodFenceForest Valla de madera que apareceraacute en el escenario

Como se ha comentado este diagrama de clases es un diagrama inicial por tanto lo maacutesprobable es que durante el desarrollo del videojuego se antildeadan maacutes clases al disentildeo inicialmostrado en la ilustracioacuten 6 En el apartado 55 de este documento se muestran los diagramas declases definitivos

Paacutegina 29 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria222 Diagrama de clases inicial de pantallas

ilustracioacuten 7 Diagrama de clases de pantallas

Este diagrama recoge en forma de clases las pantallas iniciales definidas del videojuego Separte de una superclase llamada AbstractGameScreen que recogeraacute las operaciones comunes detodas ellas y de esta se extienden las pantallas concretas este diagrama solo muestra laspantallas maacutes baacutesicas definidas inicialmente estas serviraacuten como base para desarrollar elconjunto de pantallas total necesarias para este proyecto y que quedan recogidas en su totalidaden el apartado 4 ldquoDisentildeordquo de esta documento

A continuacioacuten se pasan a detallar a modo resumido cada una de ellas

2221 Resumen clases pantallas

IntroScreen Clase para la pantalla de intro

MenuScreen Clase que contiene el menuacute principal del videojuego GameScreen La clase game screen es la que contiene la pantalla donde se desarrolla todo elvideojuego

Paacutegina 30 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

23 Definicioacuten de maacutequinas de estado finitas

Como ya se ha introducido en el punto 212 la IA aplicada a los videojuegos dota a estos derealismo Existen distintas teacutecnicas para la implementacioacuten de esta Una de las maacutes consolidadases el uso de maacutequinas de estados finitas ya que tienen un coste computacional casi inexistenteya que no tienen ninguacuten coste de procesamiento asignado Las maacutequinas de estados permiten deforma faacutecil definir comportamientos Es por este motivo que han sido utilizadas no solamente para definir los comportamientos de laIA del videojuego sino tambieacuten para definir los distintos estados en que se puede encontrar elvideojuego durante su tiempo de vida A continuacioacuten se detallan los distintos diagramas de lasmaacutequinas de estados utilizadas para este proyecto conjuntamente con una explicacioacuten de cadauna de ellas

231 Maacutequina de estados del videojuego

ilustracioacuten 8 Maacutequina de estados del videojuego

La ilustracioacuten 8 nos muestra los estados que puede tomar el videojuego durante su tiempo devida

Este diagrama define los estados que puede tomar el videojuego una vez iniciado inicialmente eljuego se encuentra en el estado READY de este estado existe una transicioacuten al estado GAMEcuando el tiempo de READY finaliza READY lt=0 El estado game sera el estado en donde se

Paacutegina 31 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriadesarrollara todo el juego Des de este estado podemos pasar al estado PAUSE si pulsamos elbotoacuten de pausa del juego y desde el estado PUASE volvemos al estado GAME si volvemos apulsar el botoacuten pause Finalmente desde el estado GAME haremos la transicioacuten al estado GAMEOVER si nos arrebatan todas las vidas durante la partida Desde el estado GAME OVERpodremos volver a READY si decidimos hacer una nueva partida

232 Maacutequina de estados comportamiento oveja

ilustracioacuten 9 Maacutequina de estados comportamiento oveja La ilustracioacuten 9 muestra el comportamiento del personaje principal del videojuego que en estecaso es la oveja Se define el ciclo de vida de la oveja a traveacutes de sus comportamientos

APPEAR SHEEP La oveja aparece fuera del rango visual de la pantalla y empieza a moversepara que suceda la transicioacuten hacia el siguiente estado FOREST START la coordenada x debeser menor que 220

FOREST START La oveja seguiraacute movieacutendose en un espacio determinado de la pantalla hastaque sea lanzada en unas determinadas direcciones la direccioacuten queda determinada por lasvariables velocityX velocityY estas tomaran valores positivos o negativos determinando ladireccioacuten de lanzamiento esto queda reflejado en la condicioacuten de transicioacuten del estado FORESTSTART a FOREST DEEP Si realizamos el lanzamiento en esas determinadas direccionesharemos la transicioacuten al un nuevo estado FOREST DEEP

FOREST DEEP La oveja rebota por el escenario si colisiona con la puerta del corral y estaabierta hacemos la transicioacuten al estado ON THE PEN

Paacutegina 32 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ON THE PEN Finaliza el ciclo de vida de la oveja dentro del juego esta es devuelta al corral seincrementan puntos en el marcador de puntuacioacuten y se incrementa una unidad en el contador deovejas salvadas

233 Maacutequina de estados comportamiento lobo

ilustracioacuten 10 Maacutequina de estados comportamiento lobo La ilustracioacuten 10 muestra el comportamiento de los enemigos del videojuego que en este casoson los lobos Se define el ciclo de vida del lobo a traveacutes de sus comportamientos

APPEAR EYES Antes de aparecer los lobos a escena apareceraacuten sus ojos entre los matorralesdel bosque Cuando acaba el tiempo pasa al siguiente estado tiempo ojos lt= 0

APPEAR WOLF En este estado se seleccionara el tipo de lobo (habraacute 3 tipos distintos) el ladode la pantalla por donde apareceraacute posicioacuten y velocidad de salto como tambieacuten el tiempo ensegundos que tardara a saltar al escenario Una vez seleccionados todos estos paraacutemetros haraacutela transicioacuten al estado WHEN JUMP

WHEN JUMP Este estado simplemente esperara que pase el tiempo para que el lobo salte alescenario Un vez pase el tiempo el lobo apareceraacute en el escenario pasando a la transicioacuten JUMPON SCENE

JUMP ON SCENE En este estado se efectuara el salto a escena del lobo este saltara desde los

Paacutegina 33 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriamatorrales laterales de la pantallahacia el escenario dibujando un arco convexo Para realizar elsalto nos apoyaremos en la representacioacuten del calculo de la funcioacuten trigonomeacutetrica cosenosolamente en sus valores positivos por tanto cuando cosy lt 0 haremos la transicioacuten al estadoMOVE ya que el salto habraacute finalizado

MOVE En este estado los lobos se moveraacuten y podraacuten ser ahuyentados pulsando repetidas vecesencima de ellos las veces a pulsar queda sujeta al tipo de lobo que sea Des de este estadopodremos hacer a dos estado distintos dependiendo de lo que suceda Si conseguimos ahuyentaral lobo pasaremos al estado WOLF SCARED Si por el contrario el lobo atrapa a la ovejaharemos la transicioacuten al estado SHEEP TRAPPED en ambos estados finalizara el ciclo de vidadel lobo

WOLF SCARED Se habraacute ahuyentado el lobo se incrementa en uno el contador de lobosahuyentados y se suman puntos a la puntuacioacuten total En este estado finaliza el ciclo de vida dellobo

SHEEP TRAPPED El lobo habraacute atrapado una oveja se nos restara una vida En este estadofinaliza el ciclo de vida del lobo

234 Maacutequina de estados tutorial in game

ilustracioacuten 11 Maacutequina de estados tutorial in game La ilustracioacuten 11 muestra los distintos estados que toma el mini tutorial in game que apareceraacute laprimera vez que se juega En este las transiciones entre estados suceden de forma automaacutetica

Paacutegina 34 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriacada 5 segundos desde que se ha activado el primer estado Cada estado corresponderaacute a unacaja de texto mostrada en pantalla

3 Disentildeo

31 Estudio comparativo

Un estudio realizado en 2011 por la empresa Newzoo httpwwwnewzoocom empresainternacional dedicada a los estudios de mercado y enfocada por completo a la industria de losvideojuegos Ha realizado la primera encuesta a jugadores espantildeoles y una de las cosas que dicees La suma del volumen de negocio de juegos online (redes sociales juegos casualesjuegos para moacuteviles juegos MMO) superaraacute al del consumo en juegos para consolas en2011 Se puede ver un resumen del estudio en liacutenea en

httpwwweurogameresarticles2011-10-26-espana-gastara-1-600-millones-de-euros-en-videojuegos-en-2011

Con esta informacioacuten se puede ver que hacer un videojuego casual para una plataforma moacutevilcomo Android puede ser muy viable

Para este proyecto se realizaraacute un estudio comparativo (benchmarking) En la industria de losvideojuegos es habitual sacar tiacutetulos fijaacutendose en otros tiacutetulos que han conseguido gran eacutexito enel mercado La operativa consiste en mejorarlos dentro de otro contexto o hacer un videojuegocompletamente diferente pero basaacutendose en ocasiones en mecaacutenicas de alguacuten otro tiacutetulo que haconseguido un gran eacutexito

Existen en Google Play gran cantidad de juegos casuales que pueden servir como inspiracioacuten ycomo punto de inicio para hacer un planteamiento general de coacutemo disentildear el producto que sequiere desarrollar partiendo de los requisitos definidos en el apartado 131 de este documento Setomaraacuten como referencia algunos tiacutetulos para identificar patrones para ver coacutemo otros hansolucionado ciertas situaciones como pueden ser problemas de disentildeo o interaccioacuten entre otrosEn ninguacuten caso deberaacuten ser exactamente de la misma temaacutetica pero si que se miraraacute que seandel mismo tipo es decir casual games

El primer paso para realizar este estudio a sido ir a Google play y verificar si hay alguacuten juego conel mismo nombre que el que se pretende desarrollar ldquoFling the sheeprdquo No existe ninguacuten juego adiacutea de hoy con este nombre

El segundo paso a sido buscar tambieacuten en Google play videojuegos en los que aparezcanovejas solo poniendo en el buscador la palabra sheep nos aparecen muchiacutesimos juegos quetienen una temaacutetica donde aparecen ovejas Se ha verificado tambieacuten poniendo combinaciones depalabras relacionadas con el juego que se quiere implementar palabras como sheep wolves o sheep farm etc los resultados obtenidos son bastante elevados

Por la cantidad de juegos encontrados y los recursos de que se dispone como por ejemplo eltiempo no es posible analizarlos todos Si que se tomaran algunos juegos despueacutes de hacer unrepaso de los maacutes destacados Hay que decir que despueacutes de haber instalado algunos alguno deellos no ha acabado de funcionar correctamente en el dispositivo moacutevil

Tras estos pasos se escogeraacuten dos videojuegos de temaacutetica similar y dos videojuegos detemaacutetica diferente Los videojuegos escogidos para realizar el anaacutelisis comparativo son

Paacutegina 35 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria311 Sheep amp Wolf

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 12 y 13 pantallas juego Sheep amp Wolf Link httpsplaygooglecomstoreappsdetailsid=jscompanygamesSheepAndWolf_enter3

El juego consta de una mecaacutenica muy simple disponemos de un boomerang y un corazoacuten laperspectiva del juego es elevada y vemos coacutemo van bajando ovejas y lobos de forma aleatoria setrata de forma taacutectil dibujar la trayectoria del boomerang para eliminar los lobos sin tocar lasovejas y con el corazoacuten dibujar una trayectoria de forma taacutectil para tocar las ovejas y no los lobosconforme vamos tocando los lobos y las ovejas con el correspondiente objeto iremos sumandopuntos

Tiene cierta similitud con el que se quiere implementar ya que salen tambieacuten lobosovejas ytambieacuten que lo que se pretende implementar funcionara de forma taacutectil para lanzar las ovejas alcorral y ahuyentar a los lobos que amenazan a las ovejas

Tiene una perspectiva de caacutemara igual a la que se quiere implementar Tiene una mecaacutenica dejuego muy sencilla las opciones que ofrece son muy definidas y claras 3 botones al inicio deljuego grandes que nos indican las posibles opciones que tenemos dentro del juego Game StartGame Record Exit Un punto interesante de este juego es que las puntuaciones no se guardan anivel local de la aplicacioacuten sino que son compartidas en una pagina web asiacute se pueden ver laspuntuaciones a nivel mundial La navegacioacuten por las diferentes pantallas es correcta

Quizaacute un aspecto negativo del juego seriacutea que visualmente esta muy poco cuidado Aunque aveces si el juego produce mucha adiccioacuten el aspecto visual puede quedar en segundo teacutermino enjuegos para dispositivos moacuteviles En otros tipos de plataformas como consolas o PC el aspectovisual es un punto muy importante y que se debe trabajar mucho maacutes a fondo no obstante estono significa que en un dispositivo moacutevil no deba estarlo

Paacutegina 36 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez adictivo puntuaciones a nivel mundial Navegacioacuten correctaPuntos Negativos Poco cuidado visualmente no tiene pausaObservaciones No tiene un final definido a medida que avanzamos la dificultad aumenta

312 Sheep Up

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 14 y 15 pantallas juego Sheep Up Linkhttpsplaygooglecomstoreappsdetailsid=compgpublishandroidsheepuplive

A diferencia del anterior este visualmente esta mucho maacutes cuidado Es un juego en 3D dondeuna oveja de juguete esta guardada dentro de una caja de cartoacuten Va botando y tiene que irrecogiendo botones e ir subiendo por diferentes niveles para poder salir de la caja es un juego deplataformas tambieacuten con una mecaacutenica bastante sencilla

Este dispone de una pantalla que dura unos segundos y seguidamente sale el menuacute de opcionesdel juego a diferencia de lo visto anteriormente donde directamente saliacutea el menuacute de opcionesde juego El menuacute de opciones de juego tambieacuten es muy directo y claro Aparte del botoacuten playpara iniciar el juego el botoacuten opciones para configurar el audio del juego los efectos el idioma yver los creacuteditos Tiene el botoacuten store donde este juego tiene implementada la modalidad freemiumpara ir comprando diferentes objetos dentro de el que nos daraacuten ciertas ventajas dentro delgameplay La compra se podraacute realizar con monedas virtuales (los botones) que los habremos idorecogiendo durante los diferentes niveles jugados o tambieacuten podemos comprar cantidadesdeterminadas de botones a cambio de dinero de verdad Dispone de vinculacioacuten a redes socialescomo Twitter y Facebook

Puntos Positivos Sencillez adictivo vinculado a Twitter y el Facebook el juego se puede pararNavegacioacuten correctaPuntos Negativos La pantalla inicial tarda demasiado en desaparecer y no da ninguacuten tipo de

Paacutegina 37 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriainformacioacuten al usuario puede llegar a parecer que se a colgado debido al largo tiempo que tardaal menos con el dispositivo que se ha verificado

313 Temple Run

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 16 y 17 pantallas juego Temple runLinkhttpsplaygooglecomstoreappsdetailsid=comimangitemplerun Es un juego que no tiene final donde un explorador tiene que evitar la muerte superandodiferentes obstaacuteculos a traveacutes de diferentes pasillos tendremos que dibujar diferentes trazos deforma taacutectil para que el personaje gire salte o se deslice por el suelo al mismo tiempo tendremosque inclinar el teleacutefono para que el personaje vaya recogiendo monedas que podremos utilizarpara adquirir objetos y mejoras en la partida A medida que vamos recorriendo maacutes y maacutes metrosla dificultad aumenta y nos obligara a realizar maacutes acciones en un espacio de tiempo maacutes cortoasiacute pues los reflejos juegan un papel importante

Tambieacuten dispone de una pantalla que dura unos segundos seguida de un menuacute de opciones muyclaro y definido Este igual que el anterior dispone de una tienda donde se pueden comprarmejoras (potenciadores) con dinero virtual o real Los botones de inicio son muy similares al delanterior juego visto Dispone de vinculacioacuten a redes sociales como Twitter

Puntos Positivos Sencillez Adictivo vinculado a Twitter el juego se puede parar NavegacioacutencorrectaPuntos Negativos -

Paacutegina 38 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria314 Attack of the Spooklings

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 18 y 19 pantallas juego Attack of the SpooklingsLinkhttpsplaygooglecomstoreappsdetailsid=compicarogamesspooklings_free

Finalmente nos centramos en este casual con aspecto visual retro Otro juego que no disponede final y donde la dificultad va aumentando conforme el tiempo de juego aumenta El objetivo deljuego es matar a todos los Spooklings que quieren atacar nuestro poblado La forma de matar alos Spooklings es con el dedo deslizaacutendolo sobre la pantalla soacutelo que un Spookling llegue anuestro poblado en la parte inferior de la pantalla la partida finaliza Debemos evitar de todas lasformas posibles que lleguen a la parte inferior de la pantalla

Tambieacuten dispone de una pantalla de inicio y un menuacute inicial de juego claro y directo no disponede ninguna vinculacioacuten a redes sociales El juego no se puede parar La navegacioacuten por todas laspantallas es correcta teniendo pantalla de puntuaciones maacutes altas pantalla con mini tutorial decoacutemo jugar y unas opciones para configurar el audio y ver los creacuteditos del juego Sin embargo adiferencia de los otros tiene algunas fallas de disentildeo a nivel de transiciones entre pantallas yfuncionalidades baacutesicas que aparentemente no tienen mucho sentido Fuera de la pantalla dejuego no es posible abandonar la aplicacioacuten de ninguna de las maneras no hay botoacuten de salida yla tecla de ir hacia atraacutes no funciona la uacutenica manera de salir es matando el proceso Por otrolado durante la partida con el botoacuten de ir atraacutes conseguimos hacer pausa del juego pero de unaforma que no estaacute anunciada al usuario de ninguna manera con alguacuten icono visual que informa alusuario de la funcionalidad Una vez parado el juego con una tecla que no estaacute indicada enninguna parte como tal nos da dos opciones RESTART y QUIT con QUIT salimos de la aplicacioacutenalgo que no se puede hacer en ninguacuten otro punto de la aplicacioacuten Con RESTART vuelve aempezar la partida y se pierde la que teniacuteamos empezada En resumen si pulsamos este botoacuten noestaacute anunciado en ninguna parte por accidente durante una partida perdemos la partida ya que notenemos la opcioacuten de continuar puesto que o volvemos a empezar o salimos de la aplicacioacuten

Paacutegina 39 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez Muy adictivoPuntos Negativos Errores en el disentildeo de menuacutes y transiciones entre pantallas no tienevinculacioacuten a redes sociales no tiene pausa

Todo lo que se ha visto en este estudio comparativo nos da una idea de que el disentildeo que selleve a cabo debe cumplir las siguientes metas tener una mecaacutenica de juego adictiva y sencillaque la disposicioacuten de opciones e iconos han ser claras y dejar claro al usuario de forma visual queacutefuncionalidad tienen las transiciones y operativas baacutesicas deben estar bien indicadas eimplementadas El disentildeo visual debe ser lo mas cuidado posible aunque a veces en juegos paraeste tipo de dispositivos no es el que maacutes domina sobre todo si el juego tiene una mecaacutenica muyadictiva aunque si se consiguen las dos cosas mucho mejor Otro punto importante es tener unamecaacutenica freemium implementada dentro del juego con una tienda para comprar mejorasaplicables a la mecaacutenica de juego Otro punto importante es la vinculacioacuten del juego a redessociales y que recoja puntuaciones a nivel mundial y no locales del dispositivo todos estosingredientes le pueden dar al juego un plus que haga que el usuario vea el juego maacutes atractivo

Debido a temas de tiempo inicialmente se descarta para este proyecto la implementacioacuten de lassiguientes funcionalidades dentro del videojuego las puntuaciones a nivel mundial estas demomento quedaraacuten sujetas a nivel local del dispositivo tambieacuten se descarta la vinculacioacuten a redessociales y mecaacutenicas freemium

El resto de puntos comentados como las mecaacutenicas sencillas y adictivas aspecto visual lo maacutescuidado posible dentro de los recursos de que se dispone y la navegacioacuten entre pantallas ymenuacutes claros y sencillos seraacute lo que se transportaraacute al disentildeo y la posterior implementacioacuten delproyecto Es posible que durante la implementacioacuten del disentildeo mostrado en este documento semodifiquen algunos puntos por temas de balanceo y equilibrio del producto final

32 Perfiles de usuarios identificados

Los juegos casuales son juegos con mecaacutenicas simples Este hecho hace que esteacuten al alcancede cualquier usuario aunque eacuteste no sea un jugador experimentado acostumbrado a utilizar juegoscon mecaacutenicas maacutes complicadas que requieren de cierta experiencia previa Al mismo tiempo sonjuegos que pueden ser jugados en cortos espacios de tiempo Por tanto el tipo de usuario deestos juegos sera muy variado Podemos encontrar el perfil de usuario experimentado tanto enlas tecnologiacuteas como en los videojuegos y que tiene intereacutes por cualquier tipo de juego Y por otrolado encontramos el usuario poco experimentado pero que gracias a los smarphones y lasencillez de las mecaacutenicas de juego provoca que tambieacuten juegue

Todos tendraacuten un objetivo comuacuten pasar un rato jugando al juego Para mejorar su uacuteltimo reacutecordAunque en este tipo de juegos el usuario tambieacuten puede jugar sin buscar ninguacuten tipo de metaconcreta simplemente pasar un rato divertido sin necesidad de alcanzar ninguacuten tipo de reacutecord niobjetivo concreto Tambieacuten es importante mencionar que aunque los perfiles de usuarios son muyvariados existe una fuerte tendencia a que los jugadores de este tipo de juegos tiendan a sermaacutes grandes que los jugadores de otros tipos de videojuegos y suelen tener un intereacutes y tiempolimitado tanto para jugar como los videojuegos en general siendo normalmente del sexofemenino

Se detectan dos grandes grupos de perfiles de usuario los experimentados en jugar avideojuegos y los no experimentados en jugar videojuegos edades diferentes profesionesvariadas educacioacuten variada sexo variado Los usuarios de Android en general suelen pagarmucho menos por aplicaciones que otros grupos de usuarios como los de iphone por ejemplo

Paacutegina 40 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Los haacutebitos de consumo en los estados unidos ya no de los usuarios de juegos casuales sinode los usuarios de Android en general se definen de la siguiente manera soacutelo un 4 de estospaga por descargar una aplicacioacuten contra un 23 y un 31 de los usuarios de la App Store paraiPhone y iPad respectivamente tal y como muestra un estudio realizado por la empresa Statistacon las 100 aplicaciones maacutes descargadas

ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitasSe puede ver en linea en el link httpwwwstatistacomtopics983mobile-app-monetizationchart1400paid-apps-don-t-stand-a-chance-on-google-play

Se puede ver otro articulo similar en el siguiente link

httpwwwwayerlesscom201307usuarios-de-android-pagan-menos-por-apps-que-los-de-ios

La mayoriacutea de aplicaciones gratuitas utilizan la modalidad freemium que no es maacutes que ofrecerun producto baacutesico de forma gratuita y cobrar a los usuarios por opciones maacutes avanzadas oespeciales dentro de la misma aplicacioacuten No obstante tambieacuten es posible encontrar aplicacionescompletamente gratuitas sin la modalidad freemium

Como ya se ha dicho se han detectado inicialmente dos grandes grupos dentro de la masa deusuarios que son consumidores potenciales de juegos casuales Estos son los usuarios asiduos ajugar videojuegos de todo tipo y con experiencia en el uso de tecnologiacuteas en general es decirusuarios experimentados Por otro lado encontramos los que no tienen costumbre de jugar muchoy normalmente tampoco tienen una gran experiencia en el uso de tecnologiacuteas en general pero

Paacutegina 41 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debido a la simpleza de los videojuegos casuales eacutestos tambieacuten se convierten en jugadores yen muchas ocasiones se convierten en los usuarios que consumen maacutes este tipo de juegos Asiacutepues encontramos dos grandes grupos seguacuten unas caracteriacutesticas comunes experiencia previa osin experiencia ante los videojuegos y las tecnologiacuteas

33 Contextos de uso

331 iquest Doacutende

Al tratarse de un casual game para un dispositivo moacutevil el espacio de utilizacioacuten seraacute muyvariado Por tanto los usuarios podraacuten encontrarse en muchos lugares distintos como puedenser en casa en el tren en el metro en el autobuacutes al aire libre etc En definitiva el usuario podraacuteencontrarse en cualquier lugar

332 iquest Cuaacutendo

El tipo de juegos casuales tienden a ser juegos donde los usuarios realizan partidas cortas peroal mismo tiempo la naturaleza adictiva de estos hace que los usuarios puedan quedar atrapadosdurante varias horas repartidas en ratos diferentes o continuados dependiendo de la situacioacuten decada usuario Por tanto el cuaacutendo de este tipo de juegos puede ser muy variado casi en cualquiermomento que el usuario pueda dedicarle unos minutos o ratos maacutes largos durante su tiempolibre mientras se desplaza ya sea en tren en metro o en alguacuten otro medio de transporte que nonecesite estar pendiente del vehiacuteculo cuando esta en la cama etc

333 iquest En que entorno

Los entornos de utilizacioacuten pueden tambieacuten ser muy variados promovidos por doacutende y el cuaacutendoPor lo tanto el entorno tecnoloacutegico podraacute tambieacuten ser variado puede existir o no conexioacuten a lared en un entorno social muy diferente que podraacute ser maacutes privado o maacutes puacuteblico yconsecuentemente se dibujaraacute un entorno ambiental variado seguacuten el momento

4Disentildeo y ldquoConcept Artrdquo

41 Elementos presentes en la interfaz de la aplicacioacuten

Con todo lo que se ha visto en el apartado 31 estudio comparativo queda patente que la interfazde usuario debe ser clara y sencilla Seraacute necesario que contenga las siguientes pantallas

bull Pantalla de intro inicial que apareceraacute durante un segundobull Pantalla menuacute inicial del juego con las opciones Play Scores Options () How to play bull Pantalla de nivel donde se desarrolla el videojuegobull Pantalla high scores que mostrara la tabla de reacutecords con las 10 puntuaciones maacutes altasbull Pantalla how to play instrucciones de como jugar tambieacuten se integraran dentro del

videojuego y apareceraacuten durante la primera partida que se jueguebull Pantalla opciones podremos activar y desactivar el sonido y los efectos de audio A su vez

desde esta pantalla podremos acceder a la pantalla de creacuteditosbull Pantalla de creacuteditos pantalla doacutende se mostraran lo creacuteditos del videojuego bull Pantalla Ready pantalla de juego con el mensaje sobre impreso antes de empezar a

jugar apareceraacute durante 3 segundosbull Pantalla con los botones resume quit sobreimpresos en la pantalla de juego se accederaacute

Paacutegina 42 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaa ella con el botoacuten de pausa pausando el juego Desde ella podremos reanudar el juego oabandonar el juego

bull Pantalla game over con el resumen de los reacutecords conseguidos durante la partidapuntostiempo jugado numero de lobos ahuyentados y ovejas colocadas en el corralDesde esta pantalla tendremos dos botones Play again y Exit uno nos permitiraacute volver ajugar y el otro nos permitiraacute abandonar el juego tal y como su nombre indica

42 Flujos de interaccioacuten

En la siguiente ilustracioacuten se muestran los flujos de interaccioacuten definidos con las pantallasenumeradas en el apartado anterior Los flujos muestran la navegacioacuten que debe existir entre laspantallas del videojuego

ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintaspantallas

Paacutegina 43 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

43 Prototipaje

431 Sketches

En este apartado se muestran los primeros esbozos realizados a mano alzada estos intentanplasmar el disentildeo del juego en su totalidad Estos esbozos serviraacuten como punto de partida en unasegunda fase para realizar el prototipaje de todas las pantallas que intervienen en el videojuegoutilizando todo el material recopilado en la red

Tal y como ya se ha dicho en este mismo documento anteriormente no se dispone deconocimientos de disentildeo suficientes como para abordar un disentildeo de arte desde cero Por lo tantose han utilizado recursos ya disponibles en la red para el montaje de todos los graacuteficos delvideojuego Todos los recursos utilizados estaacuten bajo licencias creative commons o dominio puacuteblico A continuacioacuten se muestran los bocetos

ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 44 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 45 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada

En la siguiente paacutegina se muestran las transiciones definidas entre pantallas con los sketchesrealizados ilustracioacuten 241 Las transiciones toman como base el diagrama de flujos deinteraccioacuten definido en el apartado 42 de este documento ver ilustracioacuten 21

Paacutegina 46 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria432 Transiciones definidas entre pantallas

ilustracioacuten 241 Transiciones definidas entre pantallas

Paacutegina 47 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria433 Prototipo horizontal de alta fidelidad

4331 Pantalla inicial

Pantalla de inicio al ejecutar el juego apareceraacute esta pantalladurante un segundo

4332 Pantalla menuacute principal del juego

Pantalla de menuacute principal del juego desde esta pantallapodremos empezar a jugar (botoacuten Play) consultar la tabla depuntuaciones (botoacuten Scores) e ir a la pantalla de opciones deljuego (botoacuten Options) El interrogante de la parte inferiorderecha nos serviraacute para ir a la pantalla de instruccionesHOW TO PLAY para saber coacutemo se juega

Paacutegina 48 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4333 Pantalla de opciones

La pantalla de opciones nos permitiraacute deshabilitar la muacutesicadel juego y los efectos sonoros pasando el dedo sobre losiconos del altavoz y las notas musicales con el altavozdeshabilitaremos la muacutesica y con las notas musicalesdesactivaremos los efectos de audio La flecha naranja nosconduciraacute de nuevo a la pantalla de inicio del juego el botoacutencreacuteditos nos llevara a la pantalla de creacuteditos

4334 Pantalla de creacuteditos

Pantalla de creacuteditos en ella se muestran los nombres dequienes han disentildeado y programado el juego con la flechanaranja inferior volvemos a la pantalla de opcionesDeslizando el dedo sobre el texto se podraacute desplazar haciaarriba y hacia abajo

Paacutegina 49 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4335 Pantalla tabla de puntuaciones

Pantalla tabla de puntuaciones nos mostrara una tabla conlas 10 puntuaciones maacutes altas de todas las partidas jugadasEsta tabla se guardara de forma local en el dispositivo

4336 Pantalla de juego READY

Pantalla de juego READY Apareceraacute durante unossegundos una vez iniciada la partida Despueacutes de 3segundos pasara a la pantalla de juego que se muestra en elsiguiente apartado

Paacutegina 50 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4337 Pantalla de juego

La pantalla de la izquierda es donde se desarrollaraacute todo el gameplay en la parte superiorizquierda de la pantalla se muestran los puntos conseguidos y las vidas En la parte superiorderecha hay un botoacuten que permitiraacute pausar el juego una vez pausado mostraraacute la pantalla depausa con los botones RESUME y QUIT la pantalla se muestra en el apartado siguiente En laparte derecha se muestra otra pantalla ideacutentica a la de la izquierda donde se puede ver elgameplay baacutesico representado con flechas los lobos saldraacuten de los extremos de la pantalla yendohacia las ovejas las ovejas al mismo tiempo saldraacuten de la derecha de la pantalla y las tendremosque lanzarlas deslizando el dedo sobre ellas y lanzandolas hacia el establo La puerta se iraacuteabriendo y cerrando aleatoriamente los lobos una vez puestos en escena los podremos ahuyentardeslizando el dedo sobre ellos un nuacutemero de veces determinado en funcioacuten del color del lobocomo esta indicado en el apartado 131 de este documento

Paacutegina 51 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4338 Pantalla de pausa botones RESUME y QUIT

Pantalla de pausa que apareceraacute cuando se pause el juegoCon la opcioacuten RESUME continuaremos jugando con laopcioacuten QUIT se saldraacute de la partida y pasaraacute a la pantalla delmenuacute principal del juego descrita en el punto 322

4339 Pantalla GAME OVER

Pantalla GAME OVER apareceraacute cuando se hayanagotado todas las vidas Mostraraacute un resumen de los puntosconseguidos en la partida actual tiempo invertido en lapartida lobos ahuyentados y ovejas salvadas Con losbotones de la parte inferior podremos volver a jugar (botoacutenplay again) o salir del juego con el botoacuten exit este botoacuten nosconduciraacute a la pantalla de inicio de juego descrita en elapartado 322

Paacutegina 52 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria43310 Pantalla de instrucciones de juego HOW TO PLAY

Pantalla de instrucciones del juego nos haraacute una breveexplicacioacuten de coacutemo jugar Deslizando el dedo sobre el textose podraacute desplazar hacia arriba y hacia abajo El juegodispondraacute de unas mini instrucciones in game queapareceraacuten en la primera partida que se juegue en forma decajas de texto esta pantalla se muestra en el siguienteapartado

43311 Pantalla de instrucciones in game

Esta pantalla muestra el modo como quedaraacuten integradaslas instrucciones de juego dentro del gameplay Estasinstrucciones apareceraacuten solamente la primera vez que sejuegue

Paacutegina 53 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Todo el disentildeo mostrado en este apartado ha sido realizado con todos los recursos encontradosen la red todos ellos quedan recogidos en el apartado 6 Con el programa Gimp se ha montadotodo el disentildeo de alta fidelidad mostrado en este apartado Se ha trabajado con capas paradisponer de flexibilidad en la construccioacuten del disentildeo A su vez el hecho de tener los disentildeos porcapas nos permitiraacute poderlo exportar a la implementacioacuten del videojuego de una manera coacutemoday raacutepida en el apartado 5 implementacioacuten se hace referencia a como convertir el disentildeo realizadoen capas a recursos graacuteficos del videojuego

En la siguiente ilustracioacuten se muestra una captura del disentildeo de la pantalla de juego descrita enel apartado 4337 realizado con Gimp

ilustracioacuten 242 Disentildeo pantallas con Gimp

Paacutegina 54 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

5Implementacioacuten

51 Arquitectura global

511 Arquitectura del framework libGDX

LibGDX es un framework multiplataforma que actualmente soporta WindowsLinuxMac OS XAndroid iOS y HTML5 Esto permite escribir el coacutedigo una sola vez y desplegarlo en las distintasplataformas comentadas sin tener que modificar el coacutedigo LibGDX permite bajar a maacutes bajonivel si se desea ya que da acceso directo al sistema de ficheros dispositivos de entrada desonido y a OpenGL a traveacutes de la interfaz unificada OpenGL ES11 y 20

LibGDX ofrece a su vez un conjunto de APIs que ayudan en las tareas comunes de desarrollode videojuegos como son la presentacioacuten de sprites texto la creacioacuten de interfaces de usuario lareproduccioacuten de efectos de sonido y secuencias musicales y los distintos tipos de caacutelculosnecesarios en la programacioacuten de videojuegos

En algunas ocasiones LibGDX deja de lado el lenguaje Java y recurre a coacutedigo nativo paraconseguir un mejor rendimiento No obstante todas estas funciones quedan ocultas detraacutes de lasAPIs de Java De manera que en el momento de desarrollar un videojuego no hay quepreocuparse de realizar una compilacioacuten cruzada entre Java y C++

LibGDX es un framework maacutes que un motor de videojuegos que ayuda al desarrollo de estosgracias a las abstracciones de gran alcance que ofrece y deja en manos del programador elegircomo escribir su videojuego o aplicacioacuten

512 Visioacuten de los moacutedulos de libGDX

LibGDX comprende varios moacutedulos que proporcionan los servicios necesarios para crear laarquitectura tiacutepica de un videojuego

ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en unvideojuego

Paacutegina 55 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaA continuacioacuten de describen los moacutedulos mostrados en la ilustracioacuten 25

Input Proporciona un modelo de entrada unificado para todas las plataformas Soporta tecladopantalla taacutectil aceleroacutemetro y ratoacuten si esta disponible

Graphics Permite el dibujo de las imaacutegenes en pantalla usando el hardware proporcionado por laimplementacioacuten de Open GL ES las versiones soportadas son GL versioacuten 10 11 20

Files Proporciona los meacutetodos necesarios para las operaciones de lectura escritura totalmenteindependientes a los medios de comunicacioacuten existente

Audio Proporciona las herramientas necesarias para la reproduccioacuten de sonido para todas lasplataformas

Math Moacutedulo que proporciona los caacutelculos matemaacuteticos necesarios orientados al desarrollo devideojuegos

Physics LibGDX proporciona un wrapper completo al motor de fiacutesicas en 2D open sourcedesarrollado en C++ llamado Box2D

52 Arquitectura de un videojuego

521 Programa vs Aplicacioacuten

Una aplicacioacuten convencional sigue una secuencia loacutegica lineal reacciona cuando sucede alguacutenevento es decir responde a eventos como por ejemplo cuando se pulsa una tecla Por el contrarioun videojuego es maacutes complejo hace caacutelculos y dibuja en pantalla constantemente aunque no seproduzca ninguacuten evento

522 Estructura baacutesica de un videojuego

Programar videojuegos es una forma completamente diferente de programar software Ladiferencia principal entre una aplicacioacuten convencional y un videojuego radica en la gestioacuten deeventos tal y como se ha indicado anteriormente un programa ofrece respuestas a eventos y unavez son servidos permanece a la espera de una nueva orden en cambio un videojuego es unprograma que debe actuar en tiempo real tiene que estar haciendo caacutelculos y dibujando enpantalla constantemente No se puede esperar a que suceda un evento para poder actuaraunque el jugador no haga nada no presione una sola tecla no mueva el ratoacuten el juego tiene quecalcular el tiempo que lleva jugando en ese nivel si le va a atacar alguacuten enemigo si estaacute cargandoenergiacutea y por supuesto dibujar en pantalla todo lo que va sucediendo

La mayoriacutea de videojuegos estaacuten construidos bajo la misma estructura baacutesica sobre la cual correel programa Esta estructura puede tener variaciones pero de forma general se presenta de lasiguiente manera

Inicializacioacuten En esta primera etapa el juego se situacutea en su estado inicial Se realizan lasinicializaciones por lo que respecta a las libreriacuteas o motores que vayan a utilizarse de variables yestructuras de datos referentes a los atributos de las entidades o personajes escenariosconfiguraciones etc y de los diferentes recursos fiacutesicos que vayan a emplearse tales comograacuteficos o sonidos

Paacutegina 56 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Ciclo de juego En esta parte esta toda la accioacuten este ciclo se repite de manera indefinida hastaque el jugador pierda gane o salga del juego Este punto se puede dividir en tres partes quepodemos llamarlas entrada proceso y salida

Como entrada se entiende el punto donde se captura todo lo que hace el jugador comopresionar los botones de control mover el ratoacuten presionar las flechas del teclado tocar la pantallataacutectil y el resto de informacioacuten que recibe el juego

En la parte de proceso es donde se procesa toda la informacioacuten que se recibioacute en la entrada ytiene lugar la loacutegica del videojuego Por tanto es donde se realizan los caacutelculos de fiacutesicas si eljuego los requiere asiacute como tambieacuten los caacutelculos de la inteligencia artificial de esteconjuntamente con el tratamiento graacutefico

La salida es la encargada de enviar al jugador toda la informacioacuten que se ha procesado en laetapa anterior proceso Se muestra al jugador el resultado de lo que hizo con la visualizacioacuten enpantalla del estado actual del videojuego Tambieacuten es en este punto donde se hace sonar lamuacutesica y efectos de sonido

Por uacuteltimo y fuera del ciclo de juego esta la parte de finalizacioacuten esta parte es la encargada deliberar todos los recursos y memoria utilizada durante el transcurso del videojuego

Es importante diferenciar estas tres etapas del ciclo del videojuego y ver queacute tarea se delega encada una de ellas en la entrada tan soacutelo nos ocupamos de captar los posibles eventos el procesose encarga en primer lugar de procesar la entrada y maacutes adelante de la loacutegica del videojuego ypor uacuteltimo la capa de salida se encarga de visualizar y reproducir la muacutesica

Con estos puntos claros se puede mostrar la estructura principal de un videojuego En elsiguiente apartado se muestra esta estructura baacutesica a modo de esquema

Paacutegina 57 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

53 Esquema de la estructura baacutesica de un videojuego

Inicializacioacuten Creacioacuten de estructuras dedatos carga de recursos graacuteficos y sonidos

Entrada Gestioacuten de pantalla taacutectiljoystick teclado

Proceso Lanzamos una oveja al corralrebota la oveja salta un lobo al escenarioetc

Salida Mostrar graacuteficos y reproducirsonidos

ilustracioacuten 26 Estructura baacutesica de unvideojuego

Finalizacioacuten Liberar recursos

Paacutegina 58 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

54 Patrones de disentildeo

541 Introduccioacuten

En el disentildeo de cualquier aplicacioacuten como por ejemplo un videojuegono es posible abordarlo porcompleto El proceso de disentildeo de una aplicacioacuten suele ser iterativo y se realiza en diferentesetapas de forma que se vaya refinando con el tiempo Conseguir un disentildeo perfecto a la primeraes muy difiacutecil de conseguir El disentildeo de aplicaciones es complejo y la maacutes importante y que maacutesimpacto tiene no soacutelo sobre el producto final sino tambieacuten sobre su vida futura Ya que es en eldisentildeo en donde se definen las estructuras y entidades que se van a encargar de resolver elproblema planteado Como de bien se definan estas estructuras y entidades influiraacute en granmedida en el eacutexito o fracaso del proyecto y en la viabilidad de su mantenimiento

Los patrones de disentildeo son formas reconocidas y probadas de resolver problemas de disentildeo queson recurrentes en el tiempo No es maacutes que basarse en experiencias anteriores en problemassimilares aplicado soluciones probadas anteriormente en determinados contextos para alcanzarun mejor disentildeo maacutes raacutepidamente

Existen distintos patrones para distintos problemas de disentildeo No obstante en este documentosoacutelo se haraacute hincapieacute en los patrones utilizados para este proyecto Quedando fuera del alcancede este documento los demaacutes patrones existentes

542 Patrones de creacioacuten

Estos patrones nos proporcionan una solucioacuten relacionada con la construccioacuten de clases objetosy otras estructuras de datos Algunos ejemplos de patrones pueden ser Abstract Factory BuilderSingleton estos ofrecen mecanismos de creacioacuten de instancias de objetos y estructurasescalables dependiendo de las necesidades

543 Singleton

Para este proyecto se ha utilizado este patroacuten ya que era necesario tener una uacutenica instancia dealgunas determinadas clases En java cuando se utiliza el operador new es posible crear unainstancia de un objeto No obstante a veces es necesario tener una uacutenica instancia de un objetopor ejemplo para poder acceder a ella des de cualquier punto de la aplicacioacuten Seria un ejemplolapelota de un juego de pinball en donde podriacutea ser conveniente mantener una uacutenica instancia deeste objeto

La solucioacuten para garantizar que solo existe una instancia de un objeto se consigue impidiendoque ninguna otra clase pueda acceder al constructor por este motivo de declara el constructorcomo miacutenimo de forma protegida o privada y se proporciona un uacutenico punto (controlado) en dondese proporciona la uacutenica instancia En la siguiente ilustracioacuten se muestra el diagrama de clases delpatroacuten Singleton

ilustracioacuten 27 Singleton

Paacutegina 59 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria A continuacioacuten en el listado 543 se muestra una implementacioacuten baacutesica del patroacuten Singletonutilizada en el proyecto para la clase que maneja el audio del videojuego

Listado 543

1 package comthreecometflingthesheeputil23 import combadlogicgdxaudioMusic 4 import combadlogicgdxaudioSound56 public class AudioManager 7 8 public static final AudioManager instance = new AudioManager()910 private Music playingMusic11 private Sound playingSound1213 Singleton14 private AudioManager() 15 1617 1819 public void ResunmeMusic()20 21 if(playingMusic = null) playingMusicplay()22 2324 public void PlayMusic(Music musicfloat volumeboolean loop) 25 26 if(GamePreferencesinstancemusic) return27 playingMusic = music28 musicsetLooping(loop)29 musicsetVolume(volume)30 musicplay()31 3233 public void StopMusic()34 35 if(playingMusic = null) playingMusicstop()36 3738 public void PauseMusic()39 40 if(playingMusic = null) 41 if(playingMusicisPlaying()) 42 playingMusicpause()43 44 45 4647 public void PlaySound(Sound soundfloat volume) 48 49 if(GamePreferencesinstancesound) return50 playingSound = sound51 soundplay(volume)52 5354 public void PlaySound(Sound soundfloat volumefloat pitchfloat pan) 55 56 if(GamePreferencesinstancesound) return57 playingSound = sound58 soundplay(volume pitch pan)59 60

Esta clase maneja el audio del videojuego tanto efectos de sonido como la muacutesica es una clase

Paacutegina 60 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debe estar accesible des de cualquier punto de la aplicacioacuten y no tiene ninguacuten sentido que seinstancie repetidas veces soacutelo sera necesaria una instancia de dicha clase para poder manejar losaudios y muacutesicas Como se puede ver en la linea 14 del listado 543 se declara el constructorprivado y en la linea 8 se proporciona el punto donde se proporciona la uacutenica instancia de dichaclase a traveacutes de la variable instance declarada de forma publica para que se accesible desdecualquier otra clase y a su vez declarada de forma static y final Con final le decimos que estavariable ya no puede ser modificada una vez declarada es decir sera una constante Con static leindicamos que podremos utilizar la variable instance sin la necesidad de hacer ninguna instanciacon el operador new de la clase AudioManager

Existen varias clases en el videojuego que son singleton A continuacioacuten se nombran todas ellasAudioManager Assets WorldGameController CounterTime GamePreferences

55 Diagramas de clases definitivos

Se ha dividido en varios diagramas para facilitar su lectura se pueden ver los diagramas en lossiguientes apartados de este documento A continuacioacuten se pasan a comentar las clases descritasen ellos

56 Diagramas nuacutecleo videojuego

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep-android encontramoslas siguientes clases

MainActivity Hereda de AndroidAplication que a su vez hereda de Activity es donde se crea laaplicacioacuten crea una instancia de FlingTheSheepMain

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep encontramos laclase FlingTheSheepMain donde se instancia la pantalla de intro del juego dentro del meacutetodocreate

Siguiendo el esquema estructural de un videojuego descrito en el punto 53 de este documentola ilustracioacuten 28 detalla el diagrama de clases que engloba la inicializacioacuten del juego y el ciclo devida

La Inicializacioacuten queda recogida en la clase Assets esta clase es un singleton que instanciaotras clases que a su vez guardan todos los recursos del videojuego por recursos se entiendetexturas para los graacuteficos archivos de audio ficheros con informacioacuten necesaria para el juegoUna vez inicializado el hecho de ser un singleton nos permite acceder a estas clases a traveacutes dela clase assets des de cualquier punto de la aplicacioacuten En la ilustracioacuten 29 se detallan todas estasclases que engloba la clase assets Esta clase se encuentra el el paquetecomthreecometflingthesheepgame A continuacioacuten se comenta cada una de ellas con una brevedescripcioacuten

LevelDecoration Enumera todas las texturas de los objetos de decoracioacuten del videojuego floreshierba etc Son objetos que no tienen ninguna interaccioacuten con el juego simplemente decoran

AssetFontsScene2D Engloba los tipos distintos de fuente que se utilizan en el videojuego tipode letra medida y color

AssetSound Enumera todos los efectos de sonido del juego

Paacutegina 61 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAssetMusic Contiene todas las muacutesicas del juego

FileHandleHighScores Inicializa la tabla de puntuaciones local y la actualiza cada vez que serealiza una partida de juego

LevelObjects Engloba todos los objetos que tienen interaccioacuten con el videojuego por interaccioacutense entiende objetos que pueden colisionar con otros o que tienen alguacuten papel importante dentrode videojuego no son solo objetos de decoracioacuten

Character Contiene el protagonista del juego el personaje que lleva el jugador en esta caso lasovejas

NPCs En esta clase quedan englobadas las texturas de los enemigos en esta caso los lobos

GUI En esta clase se engloban todas las texturas utilizadas para la creacioacuten de la interfaz deusuario botones imaacutegenes

La clase Constants es una clase que declara varias constates estaacuteticas que son accesibles desde cualquier punto de la aplicacioacuten y se utilizan tanto en la inicializacioacuten como en el ciclo de vidadel videojuego La podemos encontrar en el paquete comthreecometflingthesheeputil

El ciclo de vida del videojuego entrada proceso y salida queda repartido en las siguientes clases

Entrada Gestioacuten pantalla taacutectil se realiza en la clase WorldGameController en el meacutetodollamado handleInput a su vez cada personaje(character) y enemigo(NPC) gestiona su propiaentrada de eventos a traveacutes de los meacutetodos sobre escritos touchDown fling y tap Ver ilustracioacuten30 clases Sheep y Wolf

Proceso Este apartado realiza la loacutegica del videojuego y es responsable de esto el meacutetodoupdate de la clase WorldGameController Dentro de este meacutetodo existe implementada lamaquina de estados descrita en el apartado 231 con todos los estados posibles que el juegopuede tener durante su ciclo de vida los estados son READYGAMEPAUSEGAME OVER Cadapersonaje y enemigo lleva implementado su propia loacutegica y maquina de estados dentro de susclases correspondientes Ver ilustracioacuten 30 clases Sheep y Wolf estas maacutequinas de estados sonlas descritas en los apartados 232 y 233 respectivamente

Salida La salida descrita en el apartado 53 queda recogida en la clase GameScreen Verilustracioacuten 31

Finalizacioacuten La finalizacioacuten liberacioacuten de recursos queda a cargo del meacutetodo sobre escrito hiderepartido por las distintas clases de la aplicacioacuten

Otras clases que intervienen en el ciclo de juego recogidas en la ilustracioacuten 28 sonCounterTime GamePreferences AudioManager a continuacioacuten se detalla la funcionalidad decada una de ellas

CounterTime Esta clase engloba el calculo de tiempo transcurrido desde que empieza el juegohasta que termina hace la funcioacuten de contador de tiempo interno

GamePreferences Esta clase hace persistente la configuracioacuten escogida por el usuario en lasopciones Es posible configurar el juego con o sin sonido al igual que los efectos de audio estaclase es la encargada de guardar esta configuracioacuten aunque abandonemos la aplicacioacuten

Paacutegina 62 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

AudioManager Clase que se encarga tanto de la reproduccioacuten de audio como los efectos desonido es su responsabilidad interrogar la configuracioacuten actual del sonido y efectos paradeterminar si tiene que realizar la reproduccioacuten de audio o efectos asiacute como tambieacuten determinarel volumen del sonido o si un audio hay que reproducirlo de forma ciacuteclica En el listado 543 deeste documento se puede ver el coacutedigo de esta clase como ejemplo de singleton

ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego

Paacutegina 63 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 29 Diagrama de clases Assets

57 Diagrama de clases objetos videojuego

En la ilustracioacuten 30 de este documento se detalla el diagrama de clases referente a los objetosdel videojuego Por objetos se entiende personaje principal enemigos juntamente con todos loselementos que forman el conjunto del escenario del videojuego

En primer lugar cabe destacar la existencia de la clase abstracta AbstractGameObject Estaclase abstracta define los meacutetodos comunes de todos los objetos del juego Por las necesidadesde implementacioacuten no se han definido meacutetodos abstractos no obstante la clase se define comoabstracta ya que va a ser la superclase de todos los objetos del videojuego y por tanto no se van arealizar instancias de esta A continuacioacuten se enumeran las clases que se extienden de esta y querecogen todos los objetos del juego ya sean con o sin interaccioacuten en el

Paacutegina 64 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaGrass Hole Flower Flowers Stump ForestLeft ForestRight ThePen WoodFenceForestWoodFencePen DoorPen BorderGrassLeft BorderGrassRight PotionPurple AubergineRedPuddle Tree GrassField

Estas clases corresponden a los objetos que constituyen el escenario del videojuego Las clasesSheep y Wolf corresponden al personaje del videojuego y a los enemigos respectivamente estasclases no solamente contienen el meacutetodo para ser dibujadas en pantalla igual que las anterioressino que tambieacuten poseen toda la loacutegica para el comportamiento de cada una de ellas este puntocorresponderiacutea a la fase de proceso de la estructura baacutesica de un videojuego detallada en elpunto 53 de este documento Existe para cada personaje y enemigo una maquina de estadosimplementada que indica en que estado se encuentra en cada momento aplicando la loacutegicacorrespondiente para ese estado Ver las enumeraciones SHEEP_STATE y WOLF_STATE de lailustracioacuten 30 estas corresponden a las maacutequinas de estado definidas en los apartados 232 y233 respectivamente

Finalmente en la ilustracioacuten 30 aparecen las clases GameScreen y WorldGameController

La clase GameScreen como se vera en el apartado 58 es la clase que engloba todo lorelacionado con la pantalla del juego o nivel En ella se instancian todos los objetos descritosanteriormente para la creacioacuten del nivel asiacute como tambieacuten la creacioacuten de la GUI del videojuegobotones textos sobreimpresos y cajas de textos Es por este motivo que en la clase GameScreenexisten dependencias u asociaciones hacia todos los objetos dependiendo del tipo de declaracioacutende estos

La clase WorldGameController contiene la implementacioacuten de gran parte de la loacutegica delvideojuego esta clase formariacutea parte de la etapa de proceso dentro de la estructura baacutesica de unvideojuego descrita en el apartado 53 de este documento

Existe tambieacuten en esta clase una asociacioacuten hacia la clase GameScreen ya que des de la claseWorldGameController que es donde se encuentra gran parte de la loacutegica es necesario accedera la instancia de GameScreen para interactuar con varios elementos visuales que manipulan laloacutegica del videjuego

En la siguiente hoja se muestra la ilustracioacuten 30 correspondiente a todo los descrito en esteapartado

Paacutegina 65 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 30 Diagrama de clases objetos

Paacutegina 66 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

58 Diagrama de clases pantallas videojuego

En la ilustracioacuten 31 quedan recogidas todas las clases que intervienen en la creacioacuten depantallas del videjuego por pantallas se entine la pantalla de intro la del menuacute principal la deopciones etc Estas clases engloban todo lo necesario para la construccioacuten y visualizacioacuten deestas A continuacioacuten se detallan cada una de las clases

AbstractGameScreen Esta clase abstracta recoge todos los meacutetodos abstractos que sonimplementados en cada una de las clases que a continuacioacuten se detallan(pantallas) con la loacutegicanecesaria seguacuten las necesidades de cada pantalla No se crea ninguna instancia de esta clase

IntroScreen Corresponde a la pantalla de intro del videojuego descrita en el apartado 4331

MenuScreen Corresponde a la pantalla del menuacute inicial del juego des de aquiacute podemos escogersi jugar consultar la tabla de puntuaciones local ir a las opciones o a la pantalla de ayuda delvideojuego descrita en el apartado 4332 OptionsScreenPantalla de opciones descrita en el apartado 4333

CreditsScreen Pantalla de creacuteditosdescrita en el apartado 4334

HighScoresScreen Pantalla en donde se recoge la puntuacioacuten local del videojuegodescrita en elapartado 4335

GameScreen Pantalla general esta clase engloba toda la loacutegica del nivel del juego a su vezengloba la pantalla inicial de nivel READY la pantalla de pausa del juego y la de game overdescritas en los apartados 4336 4337 4338 4339

HowToPlayScreen El videojuego dispone de un tutorial in game que solo aparece la primera vezque jugamos a el y en las siguientes partidas ya no vuelve aparecer maacutes descrita en el apartado43311 No obstante existe una pantalla en donde podemos ver este tutorial fuera del juego estaclase esta destinada a contener los datos de esta pantalla descrita en el apartado 43310

TextGUI Esta clase contiene todos los textos sobreimpresos que existen en el videojuego En ellaesta la loacutegica de cada uno de estos textos para que sean posicionados y visualizados desde lasdistintas partes del videojuego

TUTORIAL_INGAME_STATE Esta enumeracioacuten enumera los estados de la maquina de estadosutilizada para mostrar el tutorial in game dentro del videojuego la primera vez que jugamos lamaacutequina de estados esta implementada dentro de la clase TextGUI la maacutequina corresponde a ladescrita en el apartado 234

En la siguiente hoja se muestra la ilustracioacuten correspondiente a todo los descrito en esteapartado

Paacutegina 67 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 31 Diagrama de clases pantallas

Paacutegina 68 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

59 Configurar el entorno de desarrollo

Antes de empezar a desarrollar juegos con libGDX es necesario instalar y configurar el entornode desarrollo Para ello se utilizaraacute Eclipse como entorno de desarrollo integrado IDE A su vez secreara un proyecto que nos serviraacute como base para el desarrollo de este

Es posible desarrollar con otros entornos distintos a Eclipse pero el hecho que Eclipse sea elentrono de desarrollo soportado oficialmente ha sido motivo suficiente para escogerlo para esteproyecto como entorno de desarrollo

591 Instalacioacuten

Para poder instalar el entorno de desarrollo nos haraacute falta primero instalar el Java DevelopmentKit(JDK) para posteriormente poder instalar eclipse

Una vez instalados seraacute necesario bajar el framework libGDX del siguiente enlace

httplibgdxbadlogicgamescomdownloadhtml

Tambieacuten sera necesario instalar el Android SDK seguidamente tendremos que ejecutar eclipse yinstalar los plugins necesarios para poder desarrollar con Android El plugin necesario paradesarrollar con Eclipse sobre Android de llama ADT (Android Developer Tools) Para instalar esteplugin debemos dirigirnos a Help--gtInstall new software tal y como muestra la siguiente ilustracioacuten

ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse

Paacutegina 69 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez el entorno de desarrollo preparado seraacute el momento de descomprimir el frameworklibGDX se recomienda descomprimirlo en la raiacutez ClibGDX en esta caso ya que trabajamos bajoWindows

Una vez descomprimido dentro de la la carpeta encontramos una aplicacioacuten llamada gdx-setup-uijar Esta aplicacioacuten nos ayuda a crear un proyecto ya configurado con las libreriacuteas necesariaslisto para ser importado a Eclipse y empezar a desarrollar con libGDX para Android O paracualquier otra de las plataformas soportadas por el framework En este caso se configura elproyecto para Android y para Escritorio de esta manera podremos verificar durante el desarrollodel proyecto los avances sin necesidad de instalarlo en un dispositivo Android ya sea fiacutesico ovirtual

Las siguientes ilustraciones muestran la configuracioacuten a realizar

ilustracioacuten 33 Creacioacuten proyecto libGDX Habraacute que pulsar en el botoacuten Create y con ello accederemos a la siguiente ilustracioacuten

ilustracioacuten 34 Creacioacuten proyecto libGDX

Paacutegina 70 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez configuradas todas las opciones le daremos al paso 4 Open the generation screen ygeneraremos el proyecto Esto proyecto sera importable a eclipse desde la opcioacuten Import delpropio IDE La configuracioacuten del proyecto tambieacuten es posible hacerla a mano no obstante esta aplicacioacutennos ahorra tiempo y posibles errores en el momento de configurarlo dentro del entorno ya quepara hacerlo a mano existen distintos pasos a seguir para conseguir lo mismo que se consiguecon esta aplicacioacuten con escasos clicks de ratoacuten

510 Traspaso del disentildeo a texturas

Todo el disentildeo realizado en el apartado 4 seraacute necesario pasarlo a texturas para posteriormenteutilizarlo en la implementacioacuten del juego como recursos graacuteficos

Una textura es una imagen digital cualquiera en cualquiera de los formatos habituales jpg pnggif tga etc Para poderla cargar dentro de un videojuego y manipularla haraacute falta una libreriacuteaespecializada para ello esto se podria programar para para el caso de este proyecto utilizamos elpropio framework libGDX para realizar esta tarea que a su vez envuelve el uso de OpenGL

Las texturas en OpenGL deben ser siempre potencias de 2163264128256 etc del contrarionos daraacute problemas y no funcionaraacute

El primer paso sera desmontar todas las capas pieza por pieza por decirlo de alguna manera ycrear ficheros de cada una de las capas de forma separada para guardarlas todas en una carpetacon un nombre identificativo Ver la siguiente ilustracioacuten

ilustracioacuten 35 Capas separadas por imaacutegenes

Paacutegina 71 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez realizado este paso deberemos juntarlas todas de nuevo en una uacutenica textura que seapotencia de 2 Trataacutendose de un juego para moacutevil las texturas no deberiacutean ser mayores de1024x1024 y no se podraacuten cargar muchas de ellas en memoria por razones obvias de recursosdel tipo de dispositivo

Para juntarlas utilizaremos una aplicacioacuten llamada Texture Packer esta nos juntara las texturasde repartieacutendola de forma que quepan en una tamantildeo de textura definido que en este caso serade 1024x1024 en caso de caber en una uacutenica textura el programa generara 2 texturas siempreoptimizadas a potencias de 2 La siguiente ilustracioacuten muestra el programa Texture packer

Ilustracioacuten 36 Texture packer El formato de salida de las textura sera png ya que necesitamos mantener el canal alpha deestas activado para los objetos sean correctamente dibujados en la escena del videojuego

Conjuntamente con la textura la aplicacioacuten nos generara un archivo de texto que contendraacute elnombre de la textura y la posicioacuten donde se encuentra dentro de la textura generada de1024x1024 Ver la siguiente ilustracioacuten en la siguiente paacutegina

Paacutegina 72 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 37 Posicioacuten texturas De esta manera podremos cargar las texturas en la fase inicializacioacuten en la clase Assets descritaen la ilustracioacuten 29 en forma de diagrama de clases

511 Implementacioacuten de las maacutequinas de estado

La implementacioacuten de las maacutequinas de estado se realiza con una estructura enumconjuntamente con una estructura switch case El siguiente listado muestra la declaracioacuten del laestructura enum implementada en la clase WorldGameController la implementacioacuten de todas lasmaacutequinas se realiza del mismo modo por tanto se toma esta como ejemplo en representacioacuten detodas las implementadas en el videojuego

Listado 5111

1 private enum GAME_STATE READYGAMEPAUSEGAME_OVER2 private GAME_STATE gameState34 gameState = GAME_STATEREADY

Paacutegina 73 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLa siguiente tabla muestra un trozo de la estructura switch case implementada en el meacutetodoupdate de la clase WorldGameController

Listado 5112

1 public void update(float deltaTime)2 3 switch(gameState)4 5 case READY6 if(audioReady) 7 AudioManagerinstancePlaySound(Assetsinstancesoundready 8 ConstantsVOLUME_AUDIO_EFFECTS)9 audioReady = false10 11 if(timeLeftShowReadyScreen gt 0)12 13 if(deltaTime lt 03f ) 14 timeLeftShowReadyScreen -=deltaTime15 16 if(timeLeftShowReadyScreen lt 0)17 18 gameScreensetVisibilityGUI()19 timeLeftShowReadyScreen = 020 CounterTimeinstancestartTime()21 22 AudioManagerinstancePlayMusic(Assetsinstancemusiclevel01 23 ConstantsVOLUME_MUSIC_GAME true)24 gameState = GAME_STATEGAME 2526 27 28 break 29 case GAME30 updateGame() 31 if(timeOpenDoorPen gt 0)32 33 if(deltaTime lt 03f ) 34 timeOpenDoorPen -= deltaTime35 36 if(timeOpenDoorPen lt= 0) 37 gameScreengetDoorPen()setVisibility(gameScreengetDoorPen()getVisibility())38

En este listado podemos ver el estado READY y un trozo del estado GAME de la maacutequina deestados definida en el apartado 231 de este documento inicialmente la maacutequina toma el estadoREADY como se puede ver en la linea 4 del listado 5111 este estado se ira repitiendo a cadavuelta del ciclo de vida del videojuego hasta que cambie el estado de juego a GAME estosucederaacute una vez transcurridos 3 segundos tal y como se puede ver en la linea 24 del listado5112 Hay que tener en cuenta que un videojuego tal y como se ha definido en el apartado 522de este documento forma un bucle infinito por tanto la funcioacuten update de la linea 1 de este listadose repetiraacute de forma indefinida durante la ejecucioacuten del nivel de juego y cada vuelta ejecutaraacute elestado en que se encuentre la maacutequina de estados

Paacutegina 74 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6Conclusiones El desarrollo del proyecto ha sido tal y como se esperaba en lineas generales no han habidograndes desviaciones de tiempo ni durante el disentildeo ni en el posterior desarrollo de este Cabedestacar que el hecho de poder probar el proyecto ejecutaacutendolo en la propia maacutequina donde se hadesarrollado sin tener que utilizar un dispositivo real o virtual cada vez que se ha querido verificarha hecho que el desarrollo sea mucho maacutes fluido que sino se hubiera contado con el escenariodescrito Esto no significa que en ciertos momentos del desarrollo no se haya probado con undispositivo real Android Dejando a parte la gran ventaja que esto significa ya que una vezdesarrollado el esfuerzo realizado nos sirve para distintas plataformas casi sin tener que tocarnada del coacutedigo

Por tanto el hecho de haber escogido libGDX para el desarrollo ha sido una buena eleccioacuten Estambieacuten una buena eleccioacuten escoger un framework o un motor focalizado al desarrollo devideojuegos si se quiere implementar uno ya sea para Android o para cualquier plataforma

Existe la posibilidad de desarrollarlo sin ninguacuten tipo de framework o motor pero hay que tenerclaro que se quiere hacer exactamente y a donde se quiere llegar es decir si lo que se quiere escentrarse en la programacioacuten de videojuegos es mucho mejor partir de un framework o motor yaque de esta forma nos desligamos de programar ciertos apartados que estaacuten maacutes focalizados a laprogramacioacuten de frameworks o motores para videojuegos que no a la programacioacuten devideojuegos en si

Yendo maacutes allaacute de donde el programador se quiere centrar existe otro factor importante a teneren cuenta en el momento de plantear un proyecto llamado tiempo con el tiempo de que se hadispuesto para este proyecto queda auacuten maacutes justificado la eleccioacuten de este framework pararealizarlo Ya que probablemente sin el debido al esfuerzo mayor en programar apartados que noson exclusivos del videojuego pudieran haber existido desviaciones de tiempo importantes enrelacioacuten al calendario propuesto

Ha quedado fuera del proyecto por temas de tiempo realizar animaciones a todos los personajesdel videojuego para conseguir una mejor experiencia de usuario y un nivel de acabado superiorFuera del proyecto tambieacuten ha quedado la implementacioacuten no solo de unas puntuacionesmaacuteximas a nivel local sino tambieacuten unas a nivel mundial consultables a traveacutes de una paacutegina webA su vez no solo guardariacutea la puntuacioacuten maacutexima sino tambieacuten el tiempo jugado las ovejassalvadas y los lobos ahuyentados Tambieacuten ha quedado fuera de este proyecto la realizacioacuten deun blog dedicado al videojuego Todos estos apartados se implementaran en breve fuera de esteTFC

7Recursos utilizados

71 Portada documento

Jake Maymar httpwwwflickrcomphotosmaymar5334789030httpcreativecommonsorglicensesby-sa20deeden

72 Recursos utilizados para el disentildeo del videojuego

Para realizar todo el disentildeo visual del videojuego se ha recurrido a diferentes fuentes de arte

Paacutegina 75 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriasujetas a licencias creative commons y dominio puacuteblico A continuacioacuten se detalla una lista decada recurso con su autor en el caso de que no haya sido publicado de forma anoacutenimajuntamente con el link donde se ha encontrado

721 Fotografiacutea pantalla intro videojuego y usuarios

Michael Karrerhttpwwwflickrcomphotosmichael_karrer78438470httpcreativecommonsorglicensesby-nc20deeden

Jodi Womackhttpwwwflickrcomphotosjodiwomack6217578512httpcreativecommonsorglicensesby20deeden

Tony Alterhttpwwwflickrcomphotos78428166N008279647916httpcreativecommonsorglicensesby20deeden

Gage Skidmore (Nina Dobrev)httpwwwflickrcomphotosgageskidmore5980906910httpcreativecommonsorglicensesby-sa20deeden

722 Iconos y botones

7221 Altavoz

Autor httpwwwiconshockcom Link httpswwwiconfindercomicons67771audio_speaker_iconsize=128Licencia Free for commercial use

7222 Nota Musical

Autor httpwwwdezinerfoliocomLink httpswwwiconfindercomicons58679music_iconsize=128Licencia Free for commercial use

7223 Flecha salida

Autorhttptayteldeviantartcom Linkhttpswwwiconfindercomicons41696arrow_back_grey_left_orange_iconsize=128LicenciaFree for commercial use (Include link to authors website) 7224 Icono de pausa

AutorhttpwwwwebdesignerdepotcomLink httpswwwiconfindercomicons40716blue_button_pause_iconsize=64Licencia Free for commercial use

7225 Icono interrogante (help)

AutorhttpwwwdoublejdesigncoukLinkhttpwwwiconarchivecomshowravenna-3d-icons-by-double-j-designHelp-iconhtml

Paacutegina 76 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLicencia httpcreativecommonsorglicensesby30

7226 Botones (Play Score Options)

AutorydLinkhttpopengameartorgcontentbuttons-variationsLicenciahttp creativecommonsorgpublicdomainzero10

723 Recursos graacuteficos 2D componentes escenario

7231 Ojos lobos

AutorCreek23Link httpopengameartorgcontentgnu-the-gnu-mascotLicencia httpcreativecommonsorglicensesby-sa30

7232 Ovejas y lobos

Autor lemmlingLink httpopenclipartorguser-clipartslemmlingLicencia httpopenclipartorgshare

7233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY

AutorSamLink httpopengameartorgcontentcountry-fieldLicencia httpcreativecommonsorgpublicdomainzero10

7234 Escenario

Daniel EddelandLinkhttpopengameartorgcontentlpc-farming-tilesets-magic-animations-and-ui-elementsLicenciahttpcreativecommonsorglicensesby-sa30

724 Fuentes

7241 ThinckheadAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10 7242 MisfortuneAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7243 TabaqueraAutor deFharoLink httpwwwdafontcomesfernando-harod3419l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7244 Press Start Font

Paacutegina 77 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAutor desconegutLink httpwwwzone38netfontpressstartLicencia httpscriptssilorgcmsscriptspagephpsite_id=nrsiampid=OFL

725 Otros

Todos los demaacutes recursos no nombrados en esta lista como el fondo de pantalla del menuacuteprincipal de inicio del juego y las letras del titulo del juego Fling the sheep impresas sobre lapantalla del menuacute inicial son de elaboracioacuten propia

726 Audio y efectos de sonido

7261 Menu

Autor mrpolyLinkhttpopengameartorgcontentmenu-musicLicencia httpcreativecommonsorgpublicdomainzero10

7262 Game Over

Autor MacroLinkhttpopengameartorgcontentrest-outro-loopLicenciahttpcreativecommonsorglicensesby30

7263 Game Play

AutorRezonerLinkhttpopengameartorgcontenttrance-menuLicenciahttpcreativecommonsorglicensesby30

7264 Creacutedits

Autor -Linkhttpopengameartorgcontent1-minute Licenciahttpcreativecommonsorgpublicdomainzero10

7265 Ready

httpopengameartorgcontentui-accept-or-forwardhttpcreativecommonsorglicensesby30

7266 Pause_Resume

httpopengameartorgcontentcompletion-sound httpcreativecommonsorglicensesby30

7267 Quit

httpopengameartorgcontentfly-swatter-squish-sound httpcreativecommonsorgpublicdomainzero10

7268 Sheep

Paacutegina 78 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

httpopengameartorgcontentsheep-sound-bleats-yo-frankiehttpcreativecommonsorglicensesby30

El resto de efectos de audio han sido obtenidos de la siguiente paacutegina httpwwwpond5com

8Lineas abiertas del proyecto Se haraacute un repaso del proyecto por si existe alguacuten bug para solucionarlo Posteriormente deadaptara para que sea funcional en distintas resoluciones de pantalla Se antildeadiraacuten los power-upsque se definieron al principio del proyecto por temas de tiempo han quedado fuera de la entregaA su vez se balanceara el gameplay antildeadiendo alguna mecaacutenica de juego extra si procede

Se publicara el juego en Google Play y se creara un blog del juego se mirara la posibilidad dehacer funcionar el juego en el blog con webGL httpprojects3cometcom

Se ampliara la tabla de puntuaciones de la siguiente manera la tabla no solamente guardara lospuntos tambieacuten guardara el tiempo jugado nuacutemero de lobos ahuyentados nuacutemero de ovejassalvadas y nombre del usuario con 5 caracteres Se creara un un registro de puntuaciones globalconsultable desde el blog del videojuego

Finalmente se crearan maacutes niveles de juego con distribuciones diferentes alguacuten nivel podriacuteatambieacuten tener mecaacutenicas diferentes de juego con los mismos personajeshellip

9Bibliografiacutea utilizada

Titulo Beginning Android Games (Second Edition) ISBN 978-1-43024-677-0

Autor Mario Zechner Robert Green

Editorial Apress

Contenido Desarrollo de videojuegos para Android

Titulo Learning libGDX Game Development ISBN 978-1-78216-604-7

Autor Andreas Oehlke

Editorial PACKT Publishing

Contenido Desarrollo de videojuegos para Android con libGDX

Paacutegina 79 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

10Otros proyectos realizados

101 Remake Gradius Konami

Remake del famoso shooter de Konami lanzado para ordenadores MSX en 1986 programadocon C++ con SDL Aunque este juego existe para multitud de plataformas Ver articulo wikipedia

httpeswikipediaorgwikiGradius_videojuego

Blog del proyecto httpprojects3cometcom

102 Tales of Nimria mini RPG

Mini RPG en 2D programado en C++ con DirectX este mini RPG trata de salvar a una princesacapturada por unas malvadas criaturas

Blog del proyecto httpprojects3cometcom

102 Motocalipsis Bar 66 RTS RTS en 3D con ambiente motero los hechos de la historia suceden en un pequentildeo pueblo deTexas Programado en Unity con C

Blog del proyecto httpmotocalipsisbar66blogspotcomes

Paacutegina 80 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Creative Commons 40 license by-nc-sa

Attribution-NonCommercial-ShareAlike 40 International

===========================================================

Creative Commons Corporation (Creative Commons) is not a law firm anddoes not provide legal services or legal advice Distribution ofCreative Commons public licenses does not create a lawyer-client orother relationship Creative Commons makes its licenses and relatedinformation available on an as-is basis Creative Commons gives nowarranties regarding its licenses any material licensed under theirterms and conditions or any related information Creative Commonsdisclaims all liability for damages resulting from their use to thefullest extent possible

Using Creative Commons Public Licenses

Creative Commons public licenses provide a standard set of terms andconditions that creators and other rights holders may use to shareoriginal works of authorship and other material subject to copyrightand certain other rights specified in the public license below Thefollowing considerations are for informational purposes only are notexhaustive and do not form part of our licenses

Considerations for licensors Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights Our licenses are irrevocable Licensors should read and understand the terms and conditions of the license they choose before applying it Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected Licensors should clearly mark any material not subject to the license This includes other CC- licensed material or material used under an exception or limitation to copyright More considerations for licensors wikicreativecommonsorgConsiderations_for_licensors

Considerations for the public By using one of our public licenses a licensor grants the public permission to use the licensed material under specified terms and conditions If the licensors permission is not necessary for any reason--for example because of any applicable exception or limitation to copyright--then that use is not regulated by the license Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant Use of

Paacutegina 81 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria the licensed material may still be restricted for other reasons including because others have copyright or other rights in the material A licensor may make special requests such as asking that all changes be marked or described Although not required by our licenses you are encouraged to respect those requests where reasonable More_considerations for the public wikicreativecommonsorgConsiderations_for_licensees

===========================================================

Creative Commons Attribution-NonCommercial-ShareAlike 40 InternationalPublic License

By exercising the Licensed Rights (defined below) You accept and agreeto be bound by the terms and conditions of this Creative CommonsAttribution-NonCommercial-ShareAlike 40 International Public License(Public License) To the extent this Public License may beinterpreted as a contract You are granted the Licensed Rights inconsideration of Your acceptance of these terms and conditions and theLicensor grants You such rights in consideration of benefits theLicensor receives from making the Licensed Material available underthese terms and conditions

Section 1 -- Definitions

a Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated altered arranged transformed or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor For purposes of this Public License where the Licensed Material is a musical work performance or sound recording Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image

b Adapters License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License

c BY-NC-SA Compatible License means a license listed at creativecommonsorgcompatiblelicenses approved by Creative Commons as essentially the equivalent of this Public License

d Copyright and Similar Rights means copyright andor similar rights closely related to copyright including without limitation performance broadcast sound recording and Sui Generis Database

Paacutegina 82 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Rights without regard to how the rights are labeled or categorized For purposes of this Public License the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights

e Effective Technological Measures means those measures that in the absence of proper authority may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20 1996 andor similar international agreements

f Exceptions and Limitations means fair use fair dealing andor any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material

g License Elements means the license attributes listed in the name of a Creative Commons Public License The License Elements of this Public License are Attribution NonCommercial and ShareAlike

h Licensed Material means the artistic or literary work database or other material to which the Licensor applied this Public License

i Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license

j Licensor means the individual(s) or entity(ies) granting rights under this Public License

k NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation For purposes of this Public License the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange

l Share means to provide material to the public by any means or process that requires permission under the Licensed Rights such as reproduction public display public performance distribution dissemination communication or importation and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them

Paacutegina 83 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria m Sui Generis Database Rights means rights other than copyright resulting from Directive 969EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases as amended andor succeeded as well as other essentially equivalent rights anywhere in the world

n You means the individual or entity exercising the Licensed Rights under this Public License Your has a corresponding meaning

Section 2 -- Scope

a License grant

1 Subject to the terms and conditions of this Public License the Licensor hereby grants You a worldwide royalty-free non-sublicensable non-exclusive irrevocable license to exercise the Licensed Rights in the Licensed Material to

a reproduce and Share the Licensed Material in whole or in part for NonCommercial purposes only and

b produce reproduce and Share Adapted Material for NonCommercial purposes only

2 Exceptions and Limitations For the avoidance of doubt where Exceptions and Limitations apply to Your use this Public License does not apply and You do not need to comply with its terms and conditions

3 Term The term of this Public License is specified in Section 6(a)

4 Media and formats technical modifications allowed The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created and to make technical modifications necessary to do so The Licensor waives andor agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights including technical modifications necessary to circumvent Effective Technological Measures For purposes of this Public License simply making modifications authorized by this Section 2(a) (4) never produces Adapted Material

5 Downstream recipients

a Offer from the Licensor -- Licensed Material Every recipient of the Licensed Material automatically

Paacutegina 84 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License

b Additional offer from the Licensor -- Adapted Material Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapters License You apply

c No downstream restrictions You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material

6 No endorsement Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are or that Your use of the Licensed Material is connected with or sponsored endorsed or granted official status by the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i)

b Other rights

1 Moral rights such as the right of integrity are not licensed under this Public License nor are publicity privacy andor other similar personality rights however to the extent possible the Licensor waives andor agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights but not otherwise

2 Patent and trademark rights are not licensed under this Public License

3 To the extent possible the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme In all other cases the Licensor expressly reserves any right to collect such royalties including when the Licensed Material is used other than for NonCommercial purposes

Paacutegina 85 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 3 -- License Conditions

Your exercise of the Licensed Rights is expressly made subject to thefollowing conditions

a Attribution

1 If You Share the Licensed Material (including in modified form) You must

a retain the following if it is supplied by the Licensor with the Licensed Material

i identification of the creator(s) of the Licensed Material and any others designated to receive attribution in any reasonable manner requested by the Licensor (including by pseudonym if designated)

ii a copyright notice

iii a notice that refers to this Public License

iv a notice that refers to the disclaimer of warranties

v a URI or hyperlink to the Licensed Material to the extent reasonably practicable

b indicate if You modified the Licensed Material and retain an indication of any previous modifications and

c indicate the Licensed Material is licensed under this Public License and include the text of or the URI or hyperlink to this Public License

2 You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium means and context in which You Share the Licensed Material For example it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information 3 If requested by the Licensor You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable

Paacutegina 86 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria b ShareAlike

In addition to the conditions in Section 3(a) if You Share Adapted Material You produce the following conditions also apply

1 The Adapters License You apply must be a Creative Commons license with the same License Elements this version or later or a BY-NC-SA Compatible License

2 You must include the text of or the URI or hyperlink to the Adapters License You apply You may satisfy this condition in any reasonable manner based on the medium means and context in which You Share Adapted Material

3 You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to Adapted Material that restrict exercise of the rights granted under the Adapters License You apply

Section 4 -- Sui Generis Database Rights

Where the Licensed Rights include Sui Generis Database Rights thatapply to Your use of the Licensed Material

a for the avoidance of doubt Section 2(a)(1) grants You the right to extract reuse reproduce and Share all or a substantial portion of the contents of the database for NonCommercial purposes only

b if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material including for purposes of Section 3(b) and

c You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database

For the avoidance of doubt this Section 4 supplements and does notreplace Your obligations under this Public License where the LicensedRights include other Copyright and Similar Rights

Paacutegina 87 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 5 -- Disclaimer of Warranties and Limitation of Liability

a UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR TO THE EXTENT POSSIBLE THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL WHETHER EXPRESS IMPLIED STATUTORY OR OTHER THIS INCLUDES WITHOUT LIMITATION WARRANTIES OF TITLE MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE NON-INFRINGEMENT ABSENCE OF LATENT OR OTHER DEFECTS ACCURACY OR THE PRESENCE OR ABSENCE OF ERRORS WHETHER OR NOT KNOWN OR DISCOVERABLE WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART THIS DISCLAIMER MAY NOT APPLY TO YOU

b TO THE EXTENT POSSIBLE IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING WITHOUT LIMITATION NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT SPECIAL INDIRECT INCIDENTAL CONSEQUENTIAL PUNITIVE EXEMPLARY OR OTHER LOSSES COSTS EXPENSES OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES COSTS EXPENSES OR DAMAGES WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART THIS LIMITATION MAY NOT APPLY TO YOU

c The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that to the extent possible most closely approximates an absolute disclaimer and waiver of all liability

Section 6 -- Term and Termination

a This Public License applies for the term of the Copyright and Similar Rights licensed here However if You fail to comply with this Public License then Your rights under this Public License terminate automatically

b Where Your right to use the Licensed Material has terminated under Section 6(a) it reinstates

1 automatically as of the date the violation is cured provided it is cured within 30 days of Your discovery of the violation or

2 upon express reinstatement by the Licensor

For the avoidance of doubt this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License

Paacutegina 88 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

c For the avoidance of doubt the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time however doing so will not terminate this Public License

d Sections 1 5 6 7 and 8 survive termination of this Public License

Section 7 -- Other Terms and Conditions

a The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed

b Any arrangements understandings or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License

Section 8 -- Interpretation

a For the avoidance of doubt this Public License does not and shall not be interpreted to reduce limit restrict or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License

b To the extent possible if any provision of this Public License is deemed unenforceable it shall be automatically reformed to the minimum extent necessary to make it enforceable If the provision cannot be reformed it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions

c No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor

d Nothing in this Public License constitutes or may be interpreted as a limitation upon or waiver of any privileges and immunities that apply to the Licensor or You including from the legal processes of any jurisdiction or authority

===========================================================

Paacutegina 89 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaCreative Commons is not a party to its public licensesNotwithstanding Creative Commons may elect to apply one of its publiclicenses to material it publishes and in those instances will beconsidered the Licensor Except for the limited purpose of indicatingthat material is shared under a Creative Commons public license or asotherwise permitted by the Creative Commons policies published atcreativecommonsorgpolicies Creative Commons does not authorize theuse of the trademark Creative Commons or any other trademark or logoof Creative Commons without its prior written consent includingwithout limitation in connection with any unauthorized modificationsto any of its public licenses or any other arrangementsunderstandings or agreements concerning use of licensed material Forthe avoidance of doubt this paragraph does not form part of the publiclicenses

Creative Commons may be contacted at creativecommonsorg

Paacutegina 90 de 102

Page 11: Universitat Oberta de Catalunya UOC Ingeniería técnica en

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

1Introduccioacuten

11 Justificacioacuten y contexto del proyecto

Este trabajo de fin de carrera en adelante TFC se centra en el desarrollo de aplicaciones paradispositivos moacuteviles con sistema operativo Android Actualmente existen multitud de aplicacionesNo obstante este TFC se quiere centrar en un subconjunto de aplicaciones focalizadas alentretenimiento conocidas por todo el mundo como videojuegos

Un videojuego es un software creado para el entretenimiento en general y basado en lainteraccioacuten entre una o varias personas y un aparato electroacutenico que ejecuta dicho videojuego Asiacutepues un videojuego es considerado un software cuyo fin directo es el entretenimiento

En estos uacuteltimos antildeos los smartphones y tabletas se han convertido en las nuevas plataformasmoacuteviles para juegos que compiten con los sistemas portaacutetiles claacutesicos que generalmente tienden aser maacutes cerrados

Los videojuegos se pueden clasificar en distintos geacuteneros estos son una forma de clasificacioacutenque designan un conjunto de videojuegos que poseen una serie de elementos comunes A lo largode la historia de los videojuegos aquellos elementos que han compartido varios de los mismos hanservido para clasificar como un geacutenero a aquellos que les han seguido en estilo y forma de lamisma manera que ha pasado con la muacutesica o el cine Como ejemplo se enumeran algunos de losgeacuteneros maacutes populares Lucha Disparos conocidos como Shooters Sigilo Plataformas ArcadeDeporte etc

Durante mucho tiempo los videojuegos estuvieron reservados para un tipo de usuario muyconcreto con un perfil muy especiacutefico la gran mayoriacutea eran hombres entre 15 y 25 antildeos Saliendode este perfil si se buscaban mujeres o personas mayores de 25 antildeos el nuacutemero de usuarioscaiacutea en picado y es que los videojuegos eran percibidos como el hobby de los adolescentesmasculinos No obstante en los uacuteltimos antildeos se ha visto coacutemo todo esto ha ido cambiando con unaumento tanto del puacuteblico femenino como la aparicioacuten en escena de usuarios con edades maacutesavanzadas

Este cambio ha venido motivado por diferentes motivos evolutivos dentro de la industria delvideojuego Uno de los motivos que ha provocado esto es la aparicioacuten de los teleacutefonos moacutevilesinteligentes tabletas y juegos online junto con gran cantidad de videojuegos de tipo casual Otroclaro motivo es que la mayoriacutea de los que jugaacutebamos hace 25 antildeos pues hoy seguimos jugandoya que hemos crecido con esta cultura y claro esta que a diacutea de hoy ya no tenemos la edad deentonces

12 Descripcioacuten del Proyecto Este proyecto se quiere centrar en el desarrollo de un videojuego de tipo casual para moacutevilesAndroid Estos son un tipo de videojuegos dirigidos a un puacuteblico de jugadores casuales Losvideojuegos casuales pueden tener cualquier tipo de mecaacutenica de juego y ser clasificados dentrode cualquier otro geacutenero Son diferenciados por sus reglas simples y de no requerir un excesivocompromiso en contraste con la mayoriacutea de juegos maacutes complejos No requieren una dedicacioacutende tiempo a largo plazo o habilidades especiales para jugar

Paacutegina 1 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Durante la realizacioacuten del proyecto se realizara el disentildeo del juego por disentildeo se entienderealizar un documento que defina el juego de forma generalizada mecaacutenicas personajes etceste documento es conocido como el ldquogame designrdquo el disentildeo de arte conocido como ldquoConcepartrdquo engloba todo lo relacionado con el aspecto graacutefico del juego estilos de personajes estilos degraacuteficos etc Finalmente se realizara el anaacutelisis disentildeo e implementacioacuten de laaplicacioacuten(videojuego) con las tecnologiacuteas escogidas para este proyecto

13 Objetivos

El objetivo principal de este TFC es adquirir experiencia en el desarrollo de videojuegos paraAndroid Sin embargo yendo maacutes allaacute de la plataforma tambieacuten existe un intereacutes por ampliarconocimientos en cuanto a programacioacuten y disentildeo de videojuegos en general

En cuanto al disentildeo y desarrollo del videojuego se pretende realizar un casual game con lassiguientes caracteriacutesticas

El juego consistiraacute en conducir unas ovejas descarriadas a su corral eacutestas con nuestra ayudadeberaacuten sortear los peligros que iraacuten apareciendo durante el camino hacia el deseado corral Elprincipal peligro que amenaza las ovejas son unos lobos malvados que quieren comeacuterselas Elvideojuego soacutelo dispondraacute de una uacutenica modalidad de juego para un uacutenico jugador Al tratarse deun juego casual el publico objetivo es muy amplio Se pretende conseguir un ldquolook amp feelrdquo conesteacutetica tipo cartoon en clave de humor El juego sera desarrollado en 2D con perspectiva cenital

131 Definicioacuten del videojuego

El nivel se describe como una pantalla estaacutetica con vista cenital en posicioacuten vertical Con estaacuteticase entiende que no hay ninguacuten tipo de scroll que haga desplazar la pantalla Siempre veremos lomismo

En la parte de arriba del todo apareceraacute un corral con una puerta la puerta se iraacute abriendo ycerrando de forma aleatoria Por los extremos de la pantalla habraacute arbustos que representaran loslimites del bosque De estos limites iraacuten saliendo lobos a la escena que se querraacuten comer a laspobres ovejas Estas ovejas permaneceraacuten en la parte de abajo de la pantalla e iraacuten saliendo a laescena ellas solas sin saber demasiado donde van(son ovejas descarriadas) nuestra misioacutenconsistiraacute en tirarlas hacia el corral para salvarlas de los malvados lobos metiendolas por lapuerta en los momentos que este abierta para lanzarlas tendremos que deslizar el dedo encimade ellas para darles impulso hacia el corral si no acertamos en meter la oveja en la puerta estarebotara como si de un pelota se tratase Los lobos iraacuten saliendo para sacarnos los lobos deencima deberemos deslizar nuestro dedo encima de ellos o tocarlos para ahuyentarlos De lobos habraacute de diferentes colores marrones grises y azulados Cada lobo loahuyentaremos de manera distinta

bull Marrones 1 pulsacioacuten o deslizar 1 vez el dedo sobre el lobobull Grises 2 pulsaciones o deslizar 2 veces el dedo sobre el lobobull Azulados 3 pulsaciones o deslizar 3 veces el dedo sobre el lobo

A parte de impedir que se coman las ovejas que estaacuten en camino hacia el corral tambieacutentendremos que evitar que los lobos lleguen a la parte de abajo donde estaacute el grupo de ovejas yaque esto nos haraacute perder vidas el juego inicialmente empezara con 3 vidas pudiendo alcanzar unmaacuteximo de 6 vidas en total cada 10000 puntos obtendremos un vida extra

Paacutegina 2 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Conforme el juego se va desarrollando eacuteste iraacute acumulando

bull Puntosbull Tiempo jugadobull Numero de lobos ahuyentadosbull Ovejas colocadas en el corral

Se tratara pues de ir mejorando nuestro propio reacutecord partida tras partida El juego iraacuteaumentando de dificultad durante el transcurso de la partida

Como apunte final el juego recibe el nombre de ldquoFling the sheeprdquo que traducido al espantildeolvendriacutea a ser algo como ldquolanzar las ovejasrdquo

Paacutegina 3 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

14 Planificacioacuten

141 Ciclo de vida

Un videojuego no deja de ser un proyecto de software por tanto para la realizacioacuten de esteproyecto se ha tomado como base el ciclo de vida claacutesico de cualquier proyecto de softwaremodificado ligeramente a las necesidades del proyecto Este ciclo de vida que tambieacuten sedenomina ciclo de vida en cascada se compone de las siguientes etapas

ilustracioacuten 1 Ciclo de vida en cascada

142 Planificacioacuten detallada del proyecto

En los siguientes apartados se recogen por cada etapa que compone el ciclo de vida las principales actividades realizadas con el objetivo de alcanzar el producto deseado dentro delos plazos definidos

1411 Anaacutelisis previo planificacioacuten

En este punto se ha abordado la visioacuten global del proyecto comprendida en establecer lospuntos iniciales necesarios para crear una planificacioacuten de tareas en funcioacuten de las actividades arealizar

Actividad Descripcioacuten

Disentildeo conceptual del videojuego Mecaacutenicas del videojuego

Definicioacuten de las tecnologiacuteas Tecnologiacuteas que se utilizaran en el desarrollo delvideojuego

Anaacutelisis de riesgos Posibles riesgos del proyecto

Planificacioacuten del proyecto Crear una planificacioacuten adaptada a los plazos de entregade este TFC

Paacutegina 4 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Redaccioacuten del documento Generacioacuten del plan de trabajo

Entrega de la PEC1 Entrega del documento

1412 Anaacutelisis de requisitos

En esta fase se ha detallado que necesidades debe cubrir el videojuego tanto desde un puntode vista funcional como desde un punto de vista arquitectoacutenico de la aplicacioacuten a disentildear se hadisentildeado un modelo troncal de clases para posteriormente desarrollar en base a estas todo elvideojuego No obstante en ninguacuten caso se ha entrado en detalle en las tecnologiacuteas a utilizar yadefinidas previamente

Actividad Descripcioacuten

Especificacioacuten de requisitos funcionales Definicioacuten de casos de usos

Disentildeo baacutesico estructura aplicacioacuten Diagrama baacutesico de clases

Especificacioacuten de requisitos funcionales Definicioacuten de maacutequinas de estado

1413 Disentildeo

En este apartado teniendo en cuenta que en este proyecto se va a desarrollar un videojuego seha realizado la recopilacioacuten conceptual de arte conjuntamente con el disentildeo de todas laspantallas que intervienen en el Conjuntamente con la seleccioacuten de los tipos de fuente que seutilizaran para el videojuego seleccioacuten de personajes y enemigos

Actividad Descripcioacuten

Definicioacuten de usuarios y contexto de uso delvideojuego

Conocer las caracteriacutesticas de los usuarios susnecesidades y objetivos asiacute como los contextosde uso

Disentildeo conceptual Un escenario de uso describe desde el puntode vista del usuario como seraacute utilizado unproducto determinado (es este caso unvideojuego) en un escenario determinado

Seleccioacuten de arte Seleccioacuten de arte ya hecho con licencias libresya que no se disponen de conocimientos dearte para abordar el disentildeo

Seleccioacuten de fuentes Seleccioacuten de los tipos de fuente adecuadospara el disentildeo del videojuego

Seleccioacuten de personajes y enemigos Seleccioacuten de personajes y enemigosdisponibles en la red con licencias libres ya queno se disponen de conocimientos de arte paraabordar el disentildeo

Disentildeo de pantallas que intervienen(prototipo) Con todo el arte fuentes y personajes serealizara el disentildeo de todas las pantallas queintervienen en el juego Realizacioacuten de unboceto a mano alzada Sketches y prototipo dealta fidelidad

Redaccioacuten del documento Generacioacuten del documento de disentildeo

Paacutegina 5 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Entrega de la PEC2 Entrega del documento

1414 Implementacioacuten y pruebas

En este punto se ha desarrollado la implementacioacuten del videojuego partiendo de todas lasdefiniciones de los apartados anteriores y las verificaciones oportunas para asegurar el correctofuncionamiento del videojuego

Actividad Descripcioacuten

Implementacioacuten de navegables y contenidos Implementacioacuten de la estructura de todas lapantallas del video juego y la navegabilidadentre ellas y las funciones principales de cadauna de ellas

Implementacioacuten del gameplay Implementacioacuten de la logica de juego

Implementacioacuten de sonido y efectos Implementacioacuten de los efectos de sonido y lamusica

Version alpha del videojuego En este punto se dispone de un videojuegofuncional listo para ser revisado y refinado

Pruebas y refinamiento de la implementacioacuten Pruebas y correcioacutenes de posibles errores

Preparacioacuten del paquete entregable y laredaccioacuten del documento

Testeo final y preparacioacuten del apk a entregarmas la redaccioacuten del documento estrutural delaplicacioacuten

Entrega de la PEC3 Entrega del documento

1415 Finalizacioacuten

En un proyecto de software esta parte quedariacutea focalizada en la fase de implantacioacuten y puesta enmarcha Sin embargo al tratarse de un videojuego esta fase quedariacutea focalizada en la fase delanzamiento del producto No obstante en este caso se ha utilizado para documentar todo eltrabajo realizado a lo largo de este TFC

Actividad Descripcioacuten

Redaccioacuten memoria final proyecto Redaccioacuten memoria final

Montaje presentacioacuten diapositivas Montaje presentacioacuten diapositivas

Montaje del video final presentacioacuten proyecto Montaje del video final presentacioacuten proyecto

Entrega final Entega final

Paacutegina 6 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria143 Temporalizacioacuten del proyecto

La siguiente ilustracioacuten muestra el calendario definido para el proyecto

ilustracioacuten 11 Calendario proyecto

Paacutegina 7 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

En la siguiente pagina se muestra una ilustracioacuten del diagrama de gantt correspondiente alcalendario mostrado en la ilustracioacuten 1

ilustracioacuten 2 Diagrama de gantt

Paacutegina 8 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

15 Herramientas y tecnologiacuteas utilizadas

Actualmente existen varios frameworks para desarrollar videojuegos sobre plataformas moacutevilesSe ha hecho un anaacutelisis comparativo preliminar entre Cocos2D-android1 Cocos2D-x y libGDXaunque existen otros estos tres son los maacutes nombrados y utilizados

Cocos2d-android1 Es un framework en Java basado en la versioacuten de cocos2d-android queesta basado en la versioacuten de cocos2d para iphone Este framework permite el desarrollo devideojuegos en 2D y se programa en Java en lugar de objective-c Para la versioacuten Cocos2d deiphone Actualmente este framework no parece tener mucha continuidad por parte de lacomunidad de desarrolladores aunque no estaacute discontinuado del todo

Cocos2D-x Es un framework en C++ multi-plataforma permite desarrollar para diferentesplataformas a la vez con el mismo coacutedigo Android iOS Bada Marmalade Windows Linux etcSin embargo aunque es un framework con una comunidad muy activa su documentacioacuten esbastante mejorable Se programa en C++ y es posible trabajar con distintos entornos de desarrollocomo Visual Studio o Eclipse El proceso de depuracioacuten con eclipse es algo complejo con C++JNIcon varios pasos a seguir para poder depurar A la vez su configuracioacuten en el entorno Eclipse noes trivial Finalmente tiene relativamente todaviacutea poco tiempo de vida

LibGDX Es un framework escrito en Java sobre C++ ya que las partes criacuteticas estaacuten escritascon coacutedigo nativo para conseguir el mejor rendimiento posible Tiene una comunidad dedesarrolladores muy activa y una documentacioacuten muy extensa Se programa con Java y permite ladepuracioacuten ejecutando la aplicacioacuten en el escritorio de la maacutequina sin tener que pasar por undispositivo real o uno virtual En caso de que se quiera probar en un dispositivo real es posiblehacerlo sin ninguacuten cambio sobre el coacutedigo Este hecho hace que el desarrollo sea maacutes fluidoTiene un rendimiento bastante alto ante cocos2d-x y otros frameworks existentes para eldesarrollo de videojuegos

Todo lo expuesto anteriormente provoca una inclinacioacuten definitiva a utilizar libGDX paraimplementar el videojuego Asiacute pues el videojuego seraacute escrito en Java utilizando el IDE Eclipseque es el soportado oficialmente para Android utilizando el framework libGDX

Para la realizacioacuten de este proyecto se han utilizado las siguientes herramientas

bull Planificacioacuten proyecto

Microsoft Project Professional 2010

bull Disentildeo

Gimp 28 Inkscape 048 TexturePacker 320 Microsoft Visio Professional 2010

bull Programacioacuten

Entorno de desarrollo Eclipse 421 Juno Android develompment tools ADT Android SDK

Paacutegina 9 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Framework libGDX 098 ObjectAid herramienta de visualizacioacuten de coacutedigo en UML para Eclipse Control de versiones Git utilizando como plataforma GitHub

bull Edicioacuten de audio

Audacity 203 GoldWave 569

bull Redaccioacuten de documentos

OpenOffice 401

bull Edicioacuten de viacutedeo

Adobe Premiere Pro CS55

16 Riesgos del proyecto

Se parte de una experiencia previa en desarrollo de videojuegos ver apartado 9 otros proyectosrealizados al final de este documento Aunque no se dispone de experiencia con la libreriacuteaescogida ni tampoco con programacioacuten sobre Android A nivel teacutecnico no se preveacute que puedansurgir muchos riesgos en liacuteneas generales No obstante existe la posibilidad de gastar maacutestiempo del previsto consultando documentacioacuten para lograr los objetivos establecidos

Existe un riesgo maacutes alto a nivel artiacutestico ya que no se dispone de ninguacuten conocimiento de artede ninguacuten tipo Por lo tanto muy probablemente a nivel artiacutestico el juego sea un poco justo Es poreste motivo que durante la realizacioacuten de este proyecto no se va a profundizar en temas de disentildeoartiacutestico en su lugar se utilizaran recursos de arte existentes en la red con licencias libres tipocreative commons o dominio puacuteblico Al final de este documento en el apartado 6 se puede ver unlistado de los recursos utilizados juntamente con un link a la obra y el nombre del autor si esteesta disponible Se haraacute una seleccioacuten de distintos tipos de recursos graacuteficos para posteriormentehacer el montaje de toda la parte graacutefica del videojuego En cuanto a la parte de audio la situacioacuten es exactamente la misma no se dispone de ninguacutenconocimiento para componer muacutesica ni efectos Por lo tanto se buscaraacuten sonidos y temasmusicales con licencias libres Intentando que estos queden integrados de la mejor maneraposible al videojuego

Finalmente existe el riesgo de que el gameplay definido en el disentildeo conceptual del videojuegouna vez puesto en praacutectica no sea del todo funcional o necesite de un balanceo para conseguirun juego equilibrado y jugable

Paacutegina 10 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2 Anaacutelisis funcional Basaacutendonos en el aparatado ldquo131 Definicioacuten del videojuegordquo se han definido los requisitosfuncionales necesarios para este con la definicioacuten de casos de uso Posteriormente se ha definidoun diagrama de clases inicial el cual ha servido como punto de partida para el desarrollo completodel videojuego A su vez se definen las maacutequinas de estado finitas utilizadas para el desarrollo

21 Requisitos funcionales casos de uso

En este apartado se presentan tres diagramas de casos de uso El primer diagrama engloba lavista generalizada del actor ldquojugadorrdquo y los casos de uso que describen los requisitos funcionalesdel sistema En los dos diagramas restantes se describen la vista generalizada del actor ldquoIArdquo porIA se entiende la inteligencia artificial del videojuego Los diagramas muestran los requisitosfuncionales de la IA para el personaje principal y los enemigos La IA interactuacutea con el sistema ypor tanto seraacute susceptible de analizar su uso de la aplicacioacuten

211 Diagrama casos de uso actor ldquoJugadorrdquo

ilustracioacuten 3 Diagrama de casos de usos actor jugador

Paacutegina 11 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Como se puede observar en la ilustracioacuten 3 el sistema solo dispone de un uacutenico actor Que eneste caso es el jugador del videojuego es decir representa todos los posibles usuarios quepueden jugar al videojuego

En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 3estos seraacuten desarrollados en la seccioacuten posterior

212 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

VJ01 Inicio videojuego Jugador

VJ02 Jugar Jugador

VJ03 Acceder puntuaciones maacuteximas Jugador

VJ31 Consultar puntuacione locales Jugador

VJ32 Salir puntuacione locales Jugador

VJ04 Acceder a las opciones Jugador

VJ41 Activar o desactivar muacutesica o efectos Jugador

VJ42 Acceder a la pantalla de creacuteditos Jugador

VJ421 Salir de la pantalla de creacuteditos Jugador

VJ43 Salir de las opciones Jugador

VJ05 Acceder a las instrucciones Jugador

VJ51 Salir de las intrucciones Jugador

VJ06 Salir del videojuego Jugador

213 Descripcioacuten textual de los casos de uso

2131 VJ01 Inicio videojuego

Identificador VJ01

Nombre Inicio videojuego

Autor Xavier Figuera

Resumen El usuario inicia el videojuego

Actor(es) Jugador

Precondiciones Ninguna el videojuego no habiacutea sido iniciado auacuten

Postcondiciones El usuario a iniciado el videojuego a visualizado la pantalla de introdurante un segundo y se encuentra en la pantalla del menuacute principal

Flujo normal 1 El usuario accede a la lista de aplicaciones de su dispositivo 2 Busca el acceso al videojuego3 Ejecuta el programa4 Se carga la aplicacioacuten5 El videojuego muestra la pantalla de intro

Paacutegina 12 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6 Se muestra el menuacute principal al jugador

Flujos alternativos Se podriacutea dar el caso que el usuario accediera al videojuego desde algunacceso directo en alguno de los escritorios del dispositivo

Inclusiones Ninguna

Extensiones Ninguna

2132 VJ02 Jugar

Identificador VJ02

Nombre Jugar

Autor Xavier Figuera

Resumen Jugar al videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario empieza a jugar

Flujo normal 1 El usuario pulsa el botoacuten play del menuacute principal 2 El usuario juega3 El usuario puede volver a jugar una vez finalizada la partida 4 El usuario puede salir del juego en cualquier momento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2133 VJ03 Acceder puntuaciones maacuteximas locales

Identificador VJ03

Nombre Acceder puntuaciones maacuteximas locales

Autor Xavier Figuera

Resumen Acceder a la pantalla de puntuaciones maacuteximas locales de las partidasrealizadas en el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla con la tabla de las 10 puntuacionesmaacuteximas

Flujo normal 1 El usuario pulsa el botoacuten Scores del menuacute principal 2 Al usuario le aparece la pantalla de puntuacioacuten

Paacutegina 13 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ31 Consultar puntuaciones localesVJ32 Salir de la puntuaciones locales

2134 VJ31 Consultar puntuaciones locales

Identificador VJ31

Nombre Consultar puntuaciones locales

Autor Xavier Figuera

Resumen Consulta de las puntuaciones maacuteximas locales de las partidas realizadasen el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Scores delmenuacute principal

Postcondiciones El usuario visualiza la tabla de las 10 puntuaciones maacuteximas

Flujo normal 1 El usuario visualiza una tabla con las 10 puntuaciones maacuteximas

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2135 VJ32 Salir puntuaciones locales

Identificador VJ32

Nombre Salir puntuaciones locales

Autor Xavier Figuera

Resumen Salir de las puntuaciones maacuteximas locales

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulso el botoacuten Scores

Postcondiciones El usuario sale de la tabla de puntuaciones

Flujo normal 1 El usuario pulsa el botoacuten salir en la pantalla tabla de puntuaciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 14 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2136 VJ04 Acceder a las opciones

Identificador VJ04

Nombre Acceder a la pantalla de opciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de opciones del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla de opciones

Flujo normal 1 El usuario pulsa el botoacuten Options del menuacute principal 2 Al usuario le aparece la pantalla de opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ41 Activar o desactivar muacutesica o efectos VJ42 Acceder a la pantalla de creacuteditosVJ43 Salir de las opciones

2137 VJ41 Activar o desactivar muacutesica o efectos

Identificador VJ041

Nombre Activar o desactivar muacutesica o efectos

Autor Xavier Figuera

Resumen Activar o desactivar muacutesica o efectos de audio del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal

Postcondiciones El usuario activa o desactiva la muacutesica o efectos del videojuego

Flujo normal 1 El usuario pulsa el botoacuten altavoz para activar o desactivar la muacutesica delvideojuego 2 El usuario pulsa el botoacuten notas musicales para activar o desactivar losefectos de audio del videojuego

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 15 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2138 VJ42 Acceder a la pantalla de creacuteditos

Identificador VJ42

Nombre Acceder a la pantalla de creacuteditos

Autor Xavier Figuera

Resumen Acceder a la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario se encuentra en la pantalla de opciones

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten credits para acceder a los creacuteditos2 El usuario puede desplazar el texto de los creacuteditos deslizando el dedosobre el texto hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ421 Salir de la pantalla de creacuteditos

2139 VJ421 Salir de la pantalla de creacuteditos

Identificador VJ421

Nombre Salir de la pantalla de creditos

Autor Xavier Figuera

Resumen Salir de la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal y ha accedido a la pantalla creacuteditos

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten salir para abandonar la pantalla para accedera los creacuteditos2 El usuario se encuentra de nuevo en la pantalla opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 16 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21310 VJ05 Acceder a las instrucciones

Identificador VJ05

Nombre Acceder a la pantalla de instrucciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten del menuacuteprincipal

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a las instrucciones2 El usuario puede desplazar el texto de las instrucciones deslizando eldedo sobre el hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ51 Salir de las instrucciones

21311 VJ51 Salir de las instrucciones

Identificador VJ51

Nombre Salir de las intrucciones

Autor Xavier Figuera

Resumen Salir de la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten en el menuacuteprincipal y ha accedido a la pantalla de instrucciones

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a la pantalla de instrucciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 17 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21312 VJ06 Salir del videojuego

Identificador VJ06

Nombre Salir del videojuego

Autor Xavier Figuera

Resumen Salir del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego

Postcondiciones El usuario abandona el videojuego

Flujo normal 1 El usuario pulsa el botoacuten exit de la aplicacioacuten para salir del videojuego oel botoacuten salir del dispositivo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 18 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214 Diagrama casos de uso actor ldquoIArdquo

Por IA se entiende inteligencia artificial es un elemento fundamental para dotar de realismo a unvideojuego Uno de los retos principales que se plantean a la hora de integrar comportamientosinteligentes es alcanzar un equilibrio entre la sensacioacuten de inteligencia y el tiempo de coacutemputoempleado por este subsistema Este equilibrio es de gran importancia en el caso de losvideojuegos Este planteamiento gira generalmente en torno a la generacioacuten de soluciones quesin ser oacuteptimas proporcionen una cierta sensacioacuten de inteligencia En concreto dichas solucionesdeberiacutean tener como meta que el jugador se enfrente a un reto que sea factible de manera quesuponga un estiacutemulo emocional y que consiga engancharlo al videojuego

En estos uacuteltimos antildeos la IA ha pasado de ser un componente secundario en el proceso dedesarrollo de videojuegos a convertirse en uno de los aspectos maacutes importantes Actualmentelograr un alto nivel de IA en un juego sigue siendo uno de los retos maacutes emocionantes y complejosy en ocasiones sirve para diferenciar un juego normal de uno realmente espectacular

Dentro de este proyecto de ha definido una IA baacutesica para dotar del realismo necesario alvideojuego propuesto En los siguientes diagramas se define esta IA en forma de casos de usospara su posterior implementacioacuten

2141 Diagrama casos de uso IA personaje principal (oveja)

ilustracioacuten 4 Diagrama de casos de usos personaje principal

Paacutegina 19 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 4estos seraacuten desarrollados en la seccioacuten posterior

21411 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA03 Salida oveja al escenario IA

IA031 Posicionamiento en pantalla de la oveja IA

IA032 Movimiento oveja IA

IA033 Oveja pastando IA

IA034 Lanzamiento oveja IA

IA035 Rebotes de la oveja IA

IA036 La oveja entra en el establo IA

IA037 Parar oveja IA

21412 Descripcioacuten textual de los casos de uso

214121 IA03 Salida ovejas al escenario

Identificador IA03

Nombre Salida oveja al escenario

Autor Xavier Figuera

Resumen Salida oveja al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones La oveja es instanciada de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Las ovejas se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA031 Posicionamiento en pantalla de las oveja

214122 IA031 Posicionamiento en pantalla de las oveja

Identificador IA031

Nombre Posicionamiento en pantalla de las oveja

Paacutegina 20 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Autor Xavier Figuera

Resumen Asignacioacuten inicial posicioacuten de las ovejas en pantalla siempre es la mismaposicioacuten esta queda fuera del rango visual de la pantalla

Actor(es) IA

Precondiciones La partida esta iniciada y la oveja instanciada

Postcondiciones La oveja queda posicionada en unas coordenadas fuera de la pantalla

Flujo normal 1 Se instancia la oveja2 La oveja queda posicionada en unas coordenadas uacutenicas fuera delrango visual de pantalla

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214123 IA032 Movimiento oveja

Identificador IA032

Nombre Movimiento oveja

Autor Xavier Figuera

Resumen Movimiento de las ovejas hacia el escenario

Actor(es) IA

Precondiciones La partida esta iniciada la oveja instanciada y posicionada

Postcondiciones La oveja se mueve hacia el escenario empieza a pastar

Flujo normal 1 La oveja se mueve hacia el escenario

Flujos alternativos Ninguno

Inclusiones IA034

Extensiones IA033 Oveja PastandoIA037 Parar oveja

214124 IA033 Oveja pastando

Identificador IA033

Nombre Oveja pastando

Autor Xavier Figuera

Resumen La ovejas permanecen en un espacio determinado de coordenadas depantalla mientras no sean lanzadas al escenario por el usuario

Actor(es) IA

Paacutegina 21 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Precondiciones La oveja ha salido al escenario

Postcondiciones La oveja se mueve dentro de un espacio determinado de forma indefinida

Flujo normal 1 La oveja se mueve de forma indefinida hasta que sea lanzada por elusuario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA034 Lanzamiento oveja

214125 IA034 Lanzamiento oveja

Identificador IA034

Nombre Lanzamiento oveja

Autor Xavier Figuera

Resumen La oveja es lanzada por el usuario y se acelera en funcioacuten de la fuerza delanzamiento

Actor(es) IA

Precondiciones La oveja se mueve

Postcondiciones La oveja ha sido lanzada

Flujo normal 1 La oveja se mueve de forma indefinida2 La oveja es lanzada3 La oveja acelera en funcioacuten de la fuerza de lanzamiento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214126 IA035 Rebotes de la oveja

Identificador IA035

Nombre Rebotes de la oveja

Autor Xavier Figuera

Resumen La oveja ha sido lanzada y rebota por el escenario

Actor(es) IA

Precondiciones La oveja ha sido lanzada

Postcondiciones La oveja rebota por el escenario

Flujo normal 1 La oveja ha sido lanzada y rebota por el escenario 2 La oveja entra en el establo si colisiona con la puerta y esta abierta

Paacutegina 22 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA036 La oveja entra en el establo

214127 IA036 La oveja entra en el establo

Identificador IA036

Nombre La oveja entra en el establo

Autor Xavier Figuera

Resumen La oveja entra en el establo

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario y la puerta del establo estaabierta

Postcondiciones La oveja entra en el establo

Flujo normal 1 La oveja entra en el establo si colisiona con la puerta y esta abierta

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214128 IA037 Parar oveja

Identificador IA037

Nombre Parar oveja

Autor Xavier Figuera

Resumen La oveja para si se hacen dos pulsaciones encima de ella

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario

Postcondiciones La oveja se para

Flujo normal 1 La oveja esta rebotando2 El usuario pulsa dos veces encima de ella3 La oveja se para

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 23 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2142 Diagrama casos de uso IA enemigos (lobo)

ilustracioacuten 5 Diagrama de casos de usos enemigos

21421 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA02 Salida lobo al escenario IA

IA021 Ojos por la derecha o por la izquierda IA

IA022 Escoje el tipo de lobo IA

IA023 Lobo por la derecha o por la izquierda IA

IA024 Salta a escena IA

IA025 Movimento lobo IA

Paacutegina 24 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21422 Descripcioacuten textual de los casos de uso

214221 IA02 Salida lobo al escenario

Identificador IA02

Nombre Salida lobo al escenario

Autor Xavier Figuera

Resumen Salida lobo al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones El lobo es instanciado de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Los lobos se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA02 IA021 IA022 IA023 IA024

214222 IA021 Ojos por la derecha o por la izquierda

Identificador IA021

Nombre Ojos por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Salida de ojos al escenario paso previo a que salte el lobo

Actor(es) IA

Precondiciones El lobo ha sido instanciado

Postcondiciones Aparecen unos ojos que se cierra y se abren por la derecha o izquierda dela pantalla de forma aleatoria

Flujo normal 1 El lobo ha sido instanciado2 Aparecen unos ojos que se cierran y se abren 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 25 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214223 IA022 Escoge el tipo de lobo

Identificador IA022

Nombre Escoge el tipo de lobo

Autor Xavier Figuera

Resumen Escoge el tipo de lobo de forma aleatoria de los tres definidos

Actor(es) IA

Precondiciones Han aparecido los ojos

Postcondiciones Ha escogido el tipo de lobo que saltara al escenario

Flujo normal 1 Han aparecido los ojos2 Ha escogido el tipo de lobo que saltara al escenario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214224 IA023 Lobo por la derecha o por la izquierda

Identificador IA023

Nombre Lobo por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Escoge de forma aleatoria el lado por donde debe aparecer el lobo

Actor(es) IA

Precondiciones Se ha seleccionado el tipo de lobo

Postcondiciones Se ha escogido el lado por donde apareceraacute

Flujo normal 1 Se ha escogido el lado por donde apareceraacute

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 26 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214225 IA024 Salta a escena

Identificador IA024

Nombre Salta a escena

Autor Xavier Figuera

Resumen El lobo salta a escena

Actor(es) IA

Precondiciones Se ha seleccionado el lado por donde debe aparecer y salta

Postcondiciones El lobo esta en escena

Flujo normal 1 Se ha seleccionado el lado por donde debe aparecer y salta2 El lobo esta en escena

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones A025

214226 IA025 Movimiento lobo

Identificador IA025

Nombre Movimiento lobo

Autor Xavier Figuera

Resumen El lobo esta en escena y se mueve

Actor(es) IA

Precondiciones El lobo ha saltado a la escena

Postcondiciones El lobo se mueve

Flujo normal 1 El lobo ha saltado a la escena2 El lobo se mueve

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 27 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

22 Disentildeo inicial diagrama de clases

221 Diagrama de clases inicial ldquoFling the sheeprdquo

ilustracioacuten 6 Diagrama de clases videojuego

En este apartado se define la estructura inicial de la aplicacioacuten a traveacutes del diagrama de clasesmostrado en la ilustracioacuten 6 Esto serviraacute como punto de partida para el completo disentildeo de laaplicacioacuten para su posterior implementacioacuten A continuacioacuten se pasan a detallar a modo resumidoque funcionalidad tiene cada una de las clases definidas en este diagrama

2211 Resumen clases videojuego

FlingTheSheepMain Clase principal desde donde se inicializaraacute la aplicacioacuten

Assets Esta clase contendraacute todos los recursos necesarios del juego texturas sonidos etcEstos seraacuten inicializados en el momento de iniciar el juego Existe una dependencia entre la claseFlingTheSheepMain y Assets ya que la instanciacioacuten de Assets esta condicionada por lainstanciacioacuten de la clase principal FlingTheSheepMain cuando se pone en marcha el videojuego

Paacutegina 28 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaWorldGameController Esta clase contendraacute la loacutegica del videojuego

AudioManager Clase destinada para controlar la reproduccioacuten de efectos de sonido y audio delvideojuego

Charcater Es la superclase que describe los comportamientos comunes de los personajes deella se extienden los personajes principales y los enemigos

Sheep Clase que representa el personaje principal

Wolf Clase que representa a los enemigos

AbstractGameObject Esta superclase recoge todos los comportamientos comunes de losobjetos del juego por objetos se entiende todos los componentes que forman el escenario delvideojuego De esta clase se extienden todos los objetos del videojuego

Grass Hierba que apareceraacute en el escenario

Flower Flores que apareceraacuten en el escenario

ThePen Establo donde hay que hacer llegar las ovejas

DoorPen Puerta del establo esta se abriraacute y se cerrara aleatoriamente

Hole Agujeros en el escenario

WoodFenceForest Valla de madera que apareceraacute en el escenario

Como se ha comentado este diagrama de clases es un diagrama inicial por tanto lo maacutesprobable es que durante el desarrollo del videojuego se antildeadan maacutes clases al disentildeo inicialmostrado en la ilustracioacuten 6 En el apartado 55 de este documento se muestran los diagramas declases definitivos

Paacutegina 29 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria222 Diagrama de clases inicial de pantallas

ilustracioacuten 7 Diagrama de clases de pantallas

Este diagrama recoge en forma de clases las pantallas iniciales definidas del videojuego Separte de una superclase llamada AbstractGameScreen que recogeraacute las operaciones comunes detodas ellas y de esta se extienden las pantallas concretas este diagrama solo muestra laspantallas maacutes baacutesicas definidas inicialmente estas serviraacuten como base para desarrollar elconjunto de pantallas total necesarias para este proyecto y que quedan recogidas en su totalidaden el apartado 4 ldquoDisentildeordquo de esta documento

A continuacioacuten se pasan a detallar a modo resumido cada una de ellas

2221 Resumen clases pantallas

IntroScreen Clase para la pantalla de intro

MenuScreen Clase que contiene el menuacute principal del videojuego GameScreen La clase game screen es la que contiene la pantalla donde se desarrolla todo elvideojuego

Paacutegina 30 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

23 Definicioacuten de maacutequinas de estado finitas

Como ya se ha introducido en el punto 212 la IA aplicada a los videojuegos dota a estos derealismo Existen distintas teacutecnicas para la implementacioacuten de esta Una de las maacutes consolidadases el uso de maacutequinas de estados finitas ya que tienen un coste computacional casi inexistenteya que no tienen ninguacuten coste de procesamiento asignado Las maacutequinas de estados permiten deforma faacutecil definir comportamientos Es por este motivo que han sido utilizadas no solamente para definir los comportamientos de laIA del videojuego sino tambieacuten para definir los distintos estados en que se puede encontrar elvideojuego durante su tiempo de vida A continuacioacuten se detallan los distintos diagramas de lasmaacutequinas de estados utilizadas para este proyecto conjuntamente con una explicacioacuten de cadauna de ellas

231 Maacutequina de estados del videojuego

ilustracioacuten 8 Maacutequina de estados del videojuego

La ilustracioacuten 8 nos muestra los estados que puede tomar el videojuego durante su tiempo devida

Este diagrama define los estados que puede tomar el videojuego una vez iniciado inicialmente eljuego se encuentra en el estado READY de este estado existe una transicioacuten al estado GAMEcuando el tiempo de READY finaliza READY lt=0 El estado game sera el estado en donde se

Paacutegina 31 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriadesarrollara todo el juego Des de este estado podemos pasar al estado PAUSE si pulsamos elbotoacuten de pausa del juego y desde el estado PUASE volvemos al estado GAME si volvemos apulsar el botoacuten pause Finalmente desde el estado GAME haremos la transicioacuten al estado GAMEOVER si nos arrebatan todas las vidas durante la partida Desde el estado GAME OVERpodremos volver a READY si decidimos hacer una nueva partida

232 Maacutequina de estados comportamiento oveja

ilustracioacuten 9 Maacutequina de estados comportamiento oveja La ilustracioacuten 9 muestra el comportamiento del personaje principal del videojuego que en estecaso es la oveja Se define el ciclo de vida de la oveja a traveacutes de sus comportamientos

APPEAR SHEEP La oveja aparece fuera del rango visual de la pantalla y empieza a moversepara que suceda la transicioacuten hacia el siguiente estado FOREST START la coordenada x debeser menor que 220

FOREST START La oveja seguiraacute movieacutendose en un espacio determinado de la pantalla hastaque sea lanzada en unas determinadas direcciones la direccioacuten queda determinada por lasvariables velocityX velocityY estas tomaran valores positivos o negativos determinando ladireccioacuten de lanzamiento esto queda reflejado en la condicioacuten de transicioacuten del estado FORESTSTART a FOREST DEEP Si realizamos el lanzamiento en esas determinadas direccionesharemos la transicioacuten al un nuevo estado FOREST DEEP

FOREST DEEP La oveja rebota por el escenario si colisiona con la puerta del corral y estaabierta hacemos la transicioacuten al estado ON THE PEN

Paacutegina 32 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ON THE PEN Finaliza el ciclo de vida de la oveja dentro del juego esta es devuelta al corral seincrementan puntos en el marcador de puntuacioacuten y se incrementa una unidad en el contador deovejas salvadas

233 Maacutequina de estados comportamiento lobo

ilustracioacuten 10 Maacutequina de estados comportamiento lobo La ilustracioacuten 10 muestra el comportamiento de los enemigos del videojuego que en este casoson los lobos Se define el ciclo de vida del lobo a traveacutes de sus comportamientos

APPEAR EYES Antes de aparecer los lobos a escena apareceraacuten sus ojos entre los matorralesdel bosque Cuando acaba el tiempo pasa al siguiente estado tiempo ojos lt= 0

APPEAR WOLF En este estado se seleccionara el tipo de lobo (habraacute 3 tipos distintos) el ladode la pantalla por donde apareceraacute posicioacuten y velocidad de salto como tambieacuten el tiempo ensegundos que tardara a saltar al escenario Una vez seleccionados todos estos paraacutemetros haraacutela transicioacuten al estado WHEN JUMP

WHEN JUMP Este estado simplemente esperara que pase el tiempo para que el lobo salte alescenario Un vez pase el tiempo el lobo apareceraacute en el escenario pasando a la transicioacuten JUMPON SCENE

JUMP ON SCENE En este estado se efectuara el salto a escena del lobo este saltara desde los

Paacutegina 33 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriamatorrales laterales de la pantallahacia el escenario dibujando un arco convexo Para realizar elsalto nos apoyaremos en la representacioacuten del calculo de la funcioacuten trigonomeacutetrica cosenosolamente en sus valores positivos por tanto cuando cosy lt 0 haremos la transicioacuten al estadoMOVE ya que el salto habraacute finalizado

MOVE En este estado los lobos se moveraacuten y podraacuten ser ahuyentados pulsando repetidas vecesencima de ellos las veces a pulsar queda sujeta al tipo de lobo que sea Des de este estadopodremos hacer a dos estado distintos dependiendo de lo que suceda Si conseguimos ahuyentaral lobo pasaremos al estado WOLF SCARED Si por el contrario el lobo atrapa a la ovejaharemos la transicioacuten al estado SHEEP TRAPPED en ambos estados finalizara el ciclo de vidadel lobo

WOLF SCARED Se habraacute ahuyentado el lobo se incrementa en uno el contador de lobosahuyentados y se suman puntos a la puntuacioacuten total En este estado finaliza el ciclo de vida dellobo

SHEEP TRAPPED El lobo habraacute atrapado una oveja se nos restara una vida En este estadofinaliza el ciclo de vida del lobo

234 Maacutequina de estados tutorial in game

ilustracioacuten 11 Maacutequina de estados tutorial in game La ilustracioacuten 11 muestra los distintos estados que toma el mini tutorial in game que apareceraacute laprimera vez que se juega En este las transiciones entre estados suceden de forma automaacutetica

Paacutegina 34 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriacada 5 segundos desde que se ha activado el primer estado Cada estado corresponderaacute a unacaja de texto mostrada en pantalla

3 Disentildeo

31 Estudio comparativo

Un estudio realizado en 2011 por la empresa Newzoo httpwwwnewzoocom empresainternacional dedicada a los estudios de mercado y enfocada por completo a la industria de losvideojuegos Ha realizado la primera encuesta a jugadores espantildeoles y una de las cosas que dicees La suma del volumen de negocio de juegos online (redes sociales juegos casualesjuegos para moacuteviles juegos MMO) superaraacute al del consumo en juegos para consolas en2011 Se puede ver un resumen del estudio en liacutenea en

httpwwweurogameresarticles2011-10-26-espana-gastara-1-600-millones-de-euros-en-videojuegos-en-2011

Con esta informacioacuten se puede ver que hacer un videojuego casual para una plataforma moacutevilcomo Android puede ser muy viable

Para este proyecto se realizaraacute un estudio comparativo (benchmarking) En la industria de losvideojuegos es habitual sacar tiacutetulos fijaacutendose en otros tiacutetulos que han conseguido gran eacutexito enel mercado La operativa consiste en mejorarlos dentro de otro contexto o hacer un videojuegocompletamente diferente pero basaacutendose en ocasiones en mecaacutenicas de alguacuten otro tiacutetulo que haconseguido un gran eacutexito

Existen en Google Play gran cantidad de juegos casuales que pueden servir como inspiracioacuten ycomo punto de inicio para hacer un planteamiento general de coacutemo disentildear el producto que sequiere desarrollar partiendo de los requisitos definidos en el apartado 131 de este documento Setomaraacuten como referencia algunos tiacutetulos para identificar patrones para ver coacutemo otros hansolucionado ciertas situaciones como pueden ser problemas de disentildeo o interaccioacuten entre otrosEn ninguacuten caso deberaacuten ser exactamente de la misma temaacutetica pero si que se miraraacute que seandel mismo tipo es decir casual games

El primer paso para realizar este estudio a sido ir a Google play y verificar si hay alguacuten juego conel mismo nombre que el que se pretende desarrollar ldquoFling the sheeprdquo No existe ninguacuten juego adiacutea de hoy con este nombre

El segundo paso a sido buscar tambieacuten en Google play videojuegos en los que aparezcanovejas solo poniendo en el buscador la palabra sheep nos aparecen muchiacutesimos juegos quetienen una temaacutetica donde aparecen ovejas Se ha verificado tambieacuten poniendo combinaciones depalabras relacionadas con el juego que se quiere implementar palabras como sheep wolves o sheep farm etc los resultados obtenidos son bastante elevados

Por la cantidad de juegos encontrados y los recursos de que se dispone como por ejemplo eltiempo no es posible analizarlos todos Si que se tomaran algunos juegos despueacutes de hacer unrepaso de los maacutes destacados Hay que decir que despueacutes de haber instalado algunos alguno deellos no ha acabado de funcionar correctamente en el dispositivo moacutevil

Tras estos pasos se escogeraacuten dos videojuegos de temaacutetica similar y dos videojuegos detemaacutetica diferente Los videojuegos escogidos para realizar el anaacutelisis comparativo son

Paacutegina 35 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria311 Sheep amp Wolf

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 12 y 13 pantallas juego Sheep amp Wolf Link httpsplaygooglecomstoreappsdetailsid=jscompanygamesSheepAndWolf_enter3

El juego consta de una mecaacutenica muy simple disponemos de un boomerang y un corazoacuten laperspectiva del juego es elevada y vemos coacutemo van bajando ovejas y lobos de forma aleatoria setrata de forma taacutectil dibujar la trayectoria del boomerang para eliminar los lobos sin tocar lasovejas y con el corazoacuten dibujar una trayectoria de forma taacutectil para tocar las ovejas y no los lobosconforme vamos tocando los lobos y las ovejas con el correspondiente objeto iremos sumandopuntos

Tiene cierta similitud con el que se quiere implementar ya que salen tambieacuten lobosovejas ytambieacuten que lo que se pretende implementar funcionara de forma taacutectil para lanzar las ovejas alcorral y ahuyentar a los lobos que amenazan a las ovejas

Tiene una perspectiva de caacutemara igual a la que se quiere implementar Tiene una mecaacutenica dejuego muy sencilla las opciones que ofrece son muy definidas y claras 3 botones al inicio deljuego grandes que nos indican las posibles opciones que tenemos dentro del juego Game StartGame Record Exit Un punto interesante de este juego es que las puntuaciones no se guardan anivel local de la aplicacioacuten sino que son compartidas en una pagina web asiacute se pueden ver laspuntuaciones a nivel mundial La navegacioacuten por las diferentes pantallas es correcta

Quizaacute un aspecto negativo del juego seriacutea que visualmente esta muy poco cuidado Aunque aveces si el juego produce mucha adiccioacuten el aspecto visual puede quedar en segundo teacutermino enjuegos para dispositivos moacuteviles En otros tipos de plataformas como consolas o PC el aspectovisual es un punto muy importante y que se debe trabajar mucho maacutes a fondo no obstante estono significa que en un dispositivo moacutevil no deba estarlo

Paacutegina 36 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez adictivo puntuaciones a nivel mundial Navegacioacuten correctaPuntos Negativos Poco cuidado visualmente no tiene pausaObservaciones No tiene un final definido a medida que avanzamos la dificultad aumenta

312 Sheep Up

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 14 y 15 pantallas juego Sheep Up Linkhttpsplaygooglecomstoreappsdetailsid=compgpublishandroidsheepuplive

A diferencia del anterior este visualmente esta mucho maacutes cuidado Es un juego en 3D dondeuna oveja de juguete esta guardada dentro de una caja de cartoacuten Va botando y tiene que irrecogiendo botones e ir subiendo por diferentes niveles para poder salir de la caja es un juego deplataformas tambieacuten con una mecaacutenica bastante sencilla

Este dispone de una pantalla que dura unos segundos y seguidamente sale el menuacute de opcionesdel juego a diferencia de lo visto anteriormente donde directamente saliacutea el menuacute de opcionesde juego El menuacute de opciones de juego tambieacuten es muy directo y claro Aparte del botoacuten playpara iniciar el juego el botoacuten opciones para configurar el audio del juego los efectos el idioma yver los creacuteditos Tiene el botoacuten store donde este juego tiene implementada la modalidad freemiumpara ir comprando diferentes objetos dentro de el que nos daraacuten ciertas ventajas dentro delgameplay La compra se podraacute realizar con monedas virtuales (los botones) que los habremos idorecogiendo durante los diferentes niveles jugados o tambieacuten podemos comprar cantidadesdeterminadas de botones a cambio de dinero de verdad Dispone de vinculacioacuten a redes socialescomo Twitter y Facebook

Puntos Positivos Sencillez adictivo vinculado a Twitter y el Facebook el juego se puede pararNavegacioacuten correctaPuntos Negativos La pantalla inicial tarda demasiado en desaparecer y no da ninguacuten tipo de

Paacutegina 37 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriainformacioacuten al usuario puede llegar a parecer que se a colgado debido al largo tiempo que tardaal menos con el dispositivo que se ha verificado

313 Temple Run

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 16 y 17 pantallas juego Temple runLinkhttpsplaygooglecomstoreappsdetailsid=comimangitemplerun Es un juego que no tiene final donde un explorador tiene que evitar la muerte superandodiferentes obstaacuteculos a traveacutes de diferentes pasillos tendremos que dibujar diferentes trazos deforma taacutectil para que el personaje gire salte o se deslice por el suelo al mismo tiempo tendremosque inclinar el teleacutefono para que el personaje vaya recogiendo monedas que podremos utilizarpara adquirir objetos y mejoras en la partida A medida que vamos recorriendo maacutes y maacutes metrosla dificultad aumenta y nos obligara a realizar maacutes acciones en un espacio de tiempo maacutes cortoasiacute pues los reflejos juegan un papel importante

Tambieacuten dispone de una pantalla que dura unos segundos seguida de un menuacute de opciones muyclaro y definido Este igual que el anterior dispone de una tienda donde se pueden comprarmejoras (potenciadores) con dinero virtual o real Los botones de inicio son muy similares al delanterior juego visto Dispone de vinculacioacuten a redes sociales como Twitter

Puntos Positivos Sencillez Adictivo vinculado a Twitter el juego se puede parar NavegacioacutencorrectaPuntos Negativos -

Paacutegina 38 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria314 Attack of the Spooklings

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 18 y 19 pantallas juego Attack of the SpooklingsLinkhttpsplaygooglecomstoreappsdetailsid=compicarogamesspooklings_free

Finalmente nos centramos en este casual con aspecto visual retro Otro juego que no disponede final y donde la dificultad va aumentando conforme el tiempo de juego aumenta El objetivo deljuego es matar a todos los Spooklings que quieren atacar nuestro poblado La forma de matar alos Spooklings es con el dedo deslizaacutendolo sobre la pantalla soacutelo que un Spookling llegue anuestro poblado en la parte inferior de la pantalla la partida finaliza Debemos evitar de todas lasformas posibles que lleguen a la parte inferior de la pantalla

Tambieacuten dispone de una pantalla de inicio y un menuacute inicial de juego claro y directo no disponede ninguna vinculacioacuten a redes sociales El juego no se puede parar La navegacioacuten por todas laspantallas es correcta teniendo pantalla de puntuaciones maacutes altas pantalla con mini tutorial decoacutemo jugar y unas opciones para configurar el audio y ver los creacuteditos del juego Sin embargo adiferencia de los otros tiene algunas fallas de disentildeo a nivel de transiciones entre pantallas yfuncionalidades baacutesicas que aparentemente no tienen mucho sentido Fuera de la pantalla dejuego no es posible abandonar la aplicacioacuten de ninguna de las maneras no hay botoacuten de salida yla tecla de ir hacia atraacutes no funciona la uacutenica manera de salir es matando el proceso Por otrolado durante la partida con el botoacuten de ir atraacutes conseguimos hacer pausa del juego pero de unaforma que no estaacute anunciada al usuario de ninguna manera con alguacuten icono visual que informa alusuario de la funcionalidad Una vez parado el juego con una tecla que no estaacute indicada enninguna parte como tal nos da dos opciones RESTART y QUIT con QUIT salimos de la aplicacioacutenalgo que no se puede hacer en ninguacuten otro punto de la aplicacioacuten Con RESTART vuelve aempezar la partida y se pierde la que teniacuteamos empezada En resumen si pulsamos este botoacuten noestaacute anunciado en ninguna parte por accidente durante una partida perdemos la partida ya que notenemos la opcioacuten de continuar puesto que o volvemos a empezar o salimos de la aplicacioacuten

Paacutegina 39 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez Muy adictivoPuntos Negativos Errores en el disentildeo de menuacutes y transiciones entre pantallas no tienevinculacioacuten a redes sociales no tiene pausa

Todo lo que se ha visto en este estudio comparativo nos da una idea de que el disentildeo que selleve a cabo debe cumplir las siguientes metas tener una mecaacutenica de juego adictiva y sencillaque la disposicioacuten de opciones e iconos han ser claras y dejar claro al usuario de forma visual queacutefuncionalidad tienen las transiciones y operativas baacutesicas deben estar bien indicadas eimplementadas El disentildeo visual debe ser lo mas cuidado posible aunque a veces en juegos paraeste tipo de dispositivos no es el que maacutes domina sobre todo si el juego tiene una mecaacutenica muyadictiva aunque si se consiguen las dos cosas mucho mejor Otro punto importante es tener unamecaacutenica freemium implementada dentro del juego con una tienda para comprar mejorasaplicables a la mecaacutenica de juego Otro punto importante es la vinculacioacuten del juego a redessociales y que recoja puntuaciones a nivel mundial y no locales del dispositivo todos estosingredientes le pueden dar al juego un plus que haga que el usuario vea el juego maacutes atractivo

Debido a temas de tiempo inicialmente se descarta para este proyecto la implementacioacuten de lassiguientes funcionalidades dentro del videojuego las puntuaciones a nivel mundial estas demomento quedaraacuten sujetas a nivel local del dispositivo tambieacuten se descarta la vinculacioacuten a redessociales y mecaacutenicas freemium

El resto de puntos comentados como las mecaacutenicas sencillas y adictivas aspecto visual lo maacutescuidado posible dentro de los recursos de que se dispone y la navegacioacuten entre pantallas ymenuacutes claros y sencillos seraacute lo que se transportaraacute al disentildeo y la posterior implementacioacuten delproyecto Es posible que durante la implementacioacuten del disentildeo mostrado en este documento semodifiquen algunos puntos por temas de balanceo y equilibrio del producto final

32 Perfiles de usuarios identificados

Los juegos casuales son juegos con mecaacutenicas simples Este hecho hace que esteacuten al alcancede cualquier usuario aunque eacuteste no sea un jugador experimentado acostumbrado a utilizar juegoscon mecaacutenicas maacutes complicadas que requieren de cierta experiencia previa Al mismo tiempo sonjuegos que pueden ser jugados en cortos espacios de tiempo Por tanto el tipo de usuario deestos juegos sera muy variado Podemos encontrar el perfil de usuario experimentado tanto enlas tecnologiacuteas como en los videojuegos y que tiene intereacutes por cualquier tipo de juego Y por otrolado encontramos el usuario poco experimentado pero que gracias a los smarphones y lasencillez de las mecaacutenicas de juego provoca que tambieacuten juegue

Todos tendraacuten un objetivo comuacuten pasar un rato jugando al juego Para mejorar su uacuteltimo reacutecordAunque en este tipo de juegos el usuario tambieacuten puede jugar sin buscar ninguacuten tipo de metaconcreta simplemente pasar un rato divertido sin necesidad de alcanzar ninguacuten tipo de reacutecord niobjetivo concreto Tambieacuten es importante mencionar que aunque los perfiles de usuarios son muyvariados existe una fuerte tendencia a que los jugadores de este tipo de juegos tiendan a sermaacutes grandes que los jugadores de otros tipos de videojuegos y suelen tener un intereacutes y tiempolimitado tanto para jugar como los videojuegos en general siendo normalmente del sexofemenino

Se detectan dos grandes grupos de perfiles de usuario los experimentados en jugar avideojuegos y los no experimentados en jugar videojuegos edades diferentes profesionesvariadas educacioacuten variada sexo variado Los usuarios de Android en general suelen pagarmucho menos por aplicaciones que otros grupos de usuarios como los de iphone por ejemplo

Paacutegina 40 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Los haacutebitos de consumo en los estados unidos ya no de los usuarios de juegos casuales sinode los usuarios de Android en general se definen de la siguiente manera soacutelo un 4 de estospaga por descargar una aplicacioacuten contra un 23 y un 31 de los usuarios de la App Store paraiPhone y iPad respectivamente tal y como muestra un estudio realizado por la empresa Statistacon las 100 aplicaciones maacutes descargadas

ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitasSe puede ver en linea en el link httpwwwstatistacomtopics983mobile-app-monetizationchart1400paid-apps-don-t-stand-a-chance-on-google-play

Se puede ver otro articulo similar en el siguiente link

httpwwwwayerlesscom201307usuarios-de-android-pagan-menos-por-apps-que-los-de-ios

La mayoriacutea de aplicaciones gratuitas utilizan la modalidad freemium que no es maacutes que ofrecerun producto baacutesico de forma gratuita y cobrar a los usuarios por opciones maacutes avanzadas oespeciales dentro de la misma aplicacioacuten No obstante tambieacuten es posible encontrar aplicacionescompletamente gratuitas sin la modalidad freemium

Como ya se ha dicho se han detectado inicialmente dos grandes grupos dentro de la masa deusuarios que son consumidores potenciales de juegos casuales Estos son los usuarios asiduos ajugar videojuegos de todo tipo y con experiencia en el uso de tecnologiacuteas en general es decirusuarios experimentados Por otro lado encontramos los que no tienen costumbre de jugar muchoy normalmente tampoco tienen una gran experiencia en el uso de tecnologiacuteas en general pero

Paacutegina 41 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debido a la simpleza de los videojuegos casuales eacutestos tambieacuten se convierten en jugadores yen muchas ocasiones se convierten en los usuarios que consumen maacutes este tipo de juegos Asiacutepues encontramos dos grandes grupos seguacuten unas caracteriacutesticas comunes experiencia previa osin experiencia ante los videojuegos y las tecnologiacuteas

33 Contextos de uso

331 iquest Doacutende

Al tratarse de un casual game para un dispositivo moacutevil el espacio de utilizacioacuten seraacute muyvariado Por tanto los usuarios podraacuten encontrarse en muchos lugares distintos como puedenser en casa en el tren en el metro en el autobuacutes al aire libre etc En definitiva el usuario podraacuteencontrarse en cualquier lugar

332 iquest Cuaacutendo

El tipo de juegos casuales tienden a ser juegos donde los usuarios realizan partidas cortas peroal mismo tiempo la naturaleza adictiva de estos hace que los usuarios puedan quedar atrapadosdurante varias horas repartidas en ratos diferentes o continuados dependiendo de la situacioacuten decada usuario Por tanto el cuaacutendo de este tipo de juegos puede ser muy variado casi en cualquiermomento que el usuario pueda dedicarle unos minutos o ratos maacutes largos durante su tiempolibre mientras se desplaza ya sea en tren en metro o en alguacuten otro medio de transporte que nonecesite estar pendiente del vehiacuteculo cuando esta en la cama etc

333 iquest En que entorno

Los entornos de utilizacioacuten pueden tambieacuten ser muy variados promovidos por doacutende y el cuaacutendoPor lo tanto el entorno tecnoloacutegico podraacute tambieacuten ser variado puede existir o no conexioacuten a lared en un entorno social muy diferente que podraacute ser maacutes privado o maacutes puacuteblico yconsecuentemente se dibujaraacute un entorno ambiental variado seguacuten el momento

4Disentildeo y ldquoConcept Artrdquo

41 Elementos presentes en la interfaz de la aplicacioacuten

Con todo lo que se ha visto en el apartado 31 estudio comparativo queda patente que la interfazde usuario debe ser clara y sencilla Seraacute necesario que contenga las siguientes pantallas

bull Pantalla de intro inicial que apareceraacute durante un segundobull Pantalla menuacute inicial del juego con las opciones Play Scores Options () How to play bull Pantalla de nivel donde se desarrolla el videojuegobull Pantalla high scores que mostrara la tabla de reacutecords con las 10 puntuaciones maacutes altasbull Pantalla how to play instrucciones de como jugar tambieacuten se integraran dentro del

videojuego y apareceraacuten durante la primera partida que se jueguebull Pantalla opciones podremos activar y desactivar el sonido y los efectos de audio A su vez

desde esta pantalla podremos acceder a la pantalla de creacuteditosbull Pantalla de creacuteditos pantalla doacutende se mostraran lo creacuteditos del videojuego bull Pantalla Ready pantalla de juego con el mensaje sobre impreso antes de empezar a

jugar apareceraacute durante 3 segundosbull Pantalla con los botones resume quit sobreimpresos en la pantalla de juego se accederaacute

Paacutegina 42 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaa ella con el botoacuten de pausa pausando el juego Desde ella podremos reanudar el juego oabandonar el juego

bull Pantalla game over con el resumen de los reacutecords conseguidos durante la partidapuntostiempo jugado numero de lobos ahuyentados y ovejas colocadas en el corralDesde esta pantalla tendremos dos botones Play again y Exit uno nos permitiraacute volver ajugar y el otro nos permitiraacute abandonar el juego tal y como su nombre indica

42 Flujos de interaccioacuten

En la siguiente ilustracioacuten se muestran los flujos de interaccioacuten definidos con las pantallasenumeradas en el apartado anterior Los flujos muestran la navegacioacuten que debe existir entre laspantallas del videojuego

ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintaspantallas

Paacutegina 43 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

43 Prototipaje

431 Sketches

En este apartado se muestran los primeros esbozos realizados a mano alzada estos intentanplasmar el disentildeo del juego en su totalidad Estos esbozos serviraacuten como punto de partida en unasegunda fase para realizar el prototipaje de todas las pantallas que intervienen en el videojuegoutilizando todo el material recopilado en la red

Tal y como ya se ha dicho en este mismo documento anteriormente no se dispone deconocimientos de disentildeo suficientes como para abordar un disentildeo de arte desde cero Por lo tantose han utilizado recursos ya disponibles en la red para el montaje de todos los graacuteficos delvideojuego Todos los recursos utilizados estaacuten bajo licencias creative commons o dominio puacuteblico A continuacioacuten se muestran los bocetos

ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 44 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 45 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada

En la siguiente paacutegina se muestran las transiciones definidas entre pantallas con los sketchesrealizados ilustracioacuten 241 Las transiciones toman como base el diagrama de flujos deinteraccioacuten definido en el apartado 42 de este documento ver ilustracioacuten 21

Paacutegina 46 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria432 Transiciones definidas entre pantallas

ilustracioacuten 241 Transiciones definidas entre pantallas

Paacutegina 47 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria433 Prototipo horizontal de alta fidelidad

4331 Pantalla inicial

Pantalla de inicio al ejecutar el juego apareceraacute esta pantalladurante un segundo

4332 Pantalla menuacute principal del juego

Pantalla de menuacute principal del juego desde esta pantallapodremos empezar a jugar (botoacuten Play) consultar la tabla depuntuaciones (botoacuten Scores) e ir a la pantalla de opciones deljuego (botoacuten Options) El interrogante de la parte inferiorderecha nos serviraacute para ir a la pantalla de instruccionesHOW TO PLAY para saber coacutemo se juega

Paacutegina 48 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4333 Pantalla de opciones

La pantalla de opciones nos permitiraacute deshabilitar la muacutesicadel juego y los efectos sonoros pasando el dedo sobre losiconos del altavoz y las notas musicales con el altavozdeshabilitaremos la muacutesica y con las notas musicalesdesactivaremos los efectos de audio La flecha naranja nosconduciraacute de nuevo a la pantalla de inicio del juego el botoacutencreacuteditos nos llevara a la pantalla de creacuteditos

4334 Pantalla de creacuteditos

Pantalla de creacuteditos en ella se muestran los nombres dequienes han disentildeado y programado el juego con la flechanaranja inferior volvemos a la pantalla de opcionesDeslizando el dedo sobre el texto se podraacute desplazar haciaarriba y hacia abajo

Paacutegina 49 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4335 Pantalla tabla de puntuaciones

Pantalla tabla de puntuaciones nos mostrara una tabla conlas 10 puntuaciones maacutes altas de todas las partidas jugadasEsta tabla se guardara de forma local en el dispositivo

4336 Pantalla de juego READY

Pantalla de juego READY Apareceraacute durante unossegundos una vez iniciada la partida Despueacutes de 3segundos pasara a la pantalla de juego que se muestra en elsiguiente apartado

Paacutegina 50 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4337 Pantalla de juego

La pantalla de la izquierda es donde se desarrollaraacute todo el gameplay en la parte superiorizquierda de la pantalla se muestran los puntos conseguidos y las vidas En la parte superiorderecha hay un botoacuten que permitiraacute pausar el juego una vez pausado mostraraacute la pantalla depausa con los botones RESUME y QUIT la pantalla se muestra en el apartado siguiente En laparte derecha se muestra otra pantalla ideacutentica a la de la izquierda donde se puede ver elgameplay baacutesico representado con flechas los lobos saldraacuten de los extremos de la pantalla yendohacia las ovejas las ovejas al mismo tiempo saldraacuten de la derecha de la pantalla y las tendremosque lanzarlas deslizando el dedo sobre ellas y lanzandolas hacia el establo La puerta se iraacuteabriendo y cerrando aleatoriamente los lobos una vez puestos en escena los podremos ahuyentardeslizando el dedo sobre ellos un nuacutemero de veces determinado en funcioacuten del color del lobocomo esta indicado en el apartado 131 de este documento

Paacutegina 51 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4338 Pantalla de pausa botones RESUME y QUIT

Pantalla de pausa que apareceraacute cuando se pause el juegoCon la opcioacuten RESUME continuaremos jugando con laopcioacuten QUIT se saldraacute de la partida y pasaraacute a la pantalla delmenuacute principal del juego descrita en el punto 322

4339 Pantalla GAME OVER

Pantalla GAME OVER apareceraacute cuando se hayanagotado todas las vidas Mostraraacute un resumen de los puntosconseguidos en la partida actual tiempo invertido en lapartida lobos ahuyentados y ovejas salvadas Con losbotones de la parte inferior podremos volver a jugar (botoacutenplay again) o salir del juego con el botoacuten exit este botoacuten nosconduciraacute a la pantalla de inicio de juego descrita en elapartado 322

Paacutegina 52 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria43310 Pantalla de instrucciones de juego HOW TO PLAY

Pantalla de instrucciones del juego nos haraacute una breveexplicacioacuten de coacutemo jugar Deslizando el dedo sobre el textose podraacute desplazar hacia arriba y hacia abajo El juegodispondraacute de unas mini instrucciones in game queapareceraacuten en la primera partida que se juegue en forma decajas de texto esta pantalla se muestra en el siguienteapartado

43311 Pantalla de instrucciones in game

Esta pantalla muestra el modo como quedaraacuten integradaslas instrucciones de juego dentro del gameplay Estasinstrucciones apareceraacuten solamente la primera vez que sejuegue

Paacutegina 53 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Todo el disentildeo mostrado en este apartado ha sido realizado con todos los recursos encontradosen la red todos ellos quedan recogidos en el apartado 6 Con el programa Gimp se ha montadotodo el disentildeo de alta fidelidad mostrado en este apartado Se ha trabajado con capas paradisponer de flexibilidad en la construccioacuten del disentildeo A su vez el hecho de tener los disentildeos porcapas nos permitiraacute poderlo exportar a la implementacioacuten del videojuego de una manera coacutemoday raacutepida en el apartado 5 implementacioacuten se hace referencia a como convertir el disentildeo realizadoen capas a recursos graacuteficos del videojuego

En la siguiente ilustracioacuten se muestra una captura del disentildeo de la pantalla de juego descrita enel apartado 4337 realizado con Gimp

ilustracioacuten 242 Disentildeo pantallas con Gimp

Paacutegina 54 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

5Implementacioacuten

51 Arquitectura global

511 Arquitectura del framework libGDX

LibGDX es un framework multiplataforma que actualmente soporta WindowsLinuxMac OS XAndroid iOS y HTML5 Esto permite escribir el coacutedigo una sola vez y desplegarlo en las distintasplataformas comentadas sin tener que modificar el coacutedigo LibGDX permite bajar a maacutes bajonivel si se desea ya que da acceso directo al sistema de ficheros dispositivos de entrada desonido y a OpenGL a traveacutes de la interfaz unificada OpenGL ES11 y 20

LibGDX ofrece a su vez un conjunto de APIs que ayudan en las tareas comunes de desarrollode videojuegos como son la presentacioacuten de sprites texto la creacioacuten de interfaces de usuario lareproduccioacuten de efectos de sonido y secuencias musicales y los distintos tipos de caacutelculosnecesarios en la programacioacuten de videojuegos

En algunas ocasiones LibGDX deja de lado el lenguaje Java y recurre a coacutedigo nativo paraconseguir un mejor rendimiento No obstante todas estas funciones quedan ocultas detraacutes de lasAPIs de Java De manera que en el momento de desarrollar un videojuego no hay quepreocuparse de realizar una compilacioacuten cruzada entre Java y C++

LibGDX es un framework maacutes que un motor de videojuegos que ayuda al desarrollo de estosgracias a las abstracciones de gran alcance que ofrece y deja en manos del programador elegircomo escribir su videojuego o aplicacioacuten

512 Visioacuten de los moacutedulos de libGDX

LibGDX comprende varios moacutedulos que proporcionan los servicios necesarios para crear laarquitectura tiacutepica de un videojuego

ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en unvideojuego

Paacutegina 55 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaA continuacioacuten de describen los moacutedulos mostrados en la ilustracioacuten 25

Input Proporciona un modelo de entrada unificado para todas las plataformas Soporta tecladopantalla taacutectil aceleroacutemetro y ratoacuten si esta disponible

Graphics Permite el dibujo de las imaacutegenes en pantalla usando el hardware proporcionado por laimplementacioacuten de Open GL ES las versiones soportadas son GL versioacuten 10 11 20

Files Proporciona los meacutetodos necesarios para las operaciones de lectura escritura totalmenteindependientes a los medios de comunicacioacuten existente

Audio Proporciona las herramientas necesarias para la reproduccioacuten de sonido para todas lasplataformas

Math Moacutedulo que proporciona los caacutelculos matemaacuteticos necesarios orientados al desarrollo devideojuegos

Physics LibGDX proporciona un wrapper completo al motor de fiacutesicas en 2D open sourcedesarrollado en C++ llamado Box2D

52 Arquitectura de un videojuego

521 Programa vs Aplicacioacuten

Una aplicacioacuten convencional sigue una secuencia loacutegica lineal reacciona cuando sucede alguacutenevento es decir responde a eventos como por ejemplo cuando se pulsa una tecla Por el contrarioun videojuego es maacutes complejo hace caacutelculos y dibuja en pantalla constantemente aunque no seproduzca ninguacuten evento

522 Estructura baacutesica de un videojuego

Programar videojuegos es una forma completamente diferente de programar software Ladiferencia principal entre una aplicacioacuten convencional y un videojuego radica en la gestioacuten deeventos tal y como se ha indicado anteriormente un programa ofrece respuestas a eventos y unavez son servidos permanece a la espera de una nueva orden en cambio un videojuego es unprograma que debe actuar en tiempo real tiene que estar haciendo caacutelculos y dibujando enpantalla constantemente No se puede esperar a que suceda un evento para poder actuaraunque el jugador no haga nada no presione una sola tecla no mueva el ratoacuten el juego tiene quecalcular el tiempo que lleva jugando en ese nivel si le va a atacar alguacuten enemigo si estaacute cargandoenergiacutea y por supuesto dibujar en pantalla todo lo que va sucediendo

La mayoriacutea de videojuegos estaacuten construidos bajo la misma estructura baacutesica sobre la cual correel programa Esta estructura puede tener variaciones pero de forma general se presenta de lasiguiente manera

Inicializacioacuten En esta primera etapa el juego se situacutea en su estado inicial Se realizan lasinicializaciones por lo que respecta a las libreriacuteas o motores que vayan a utilizarse de variables yestructuras de datos referentes a los atributos de las entidades o personajes escenariosconfiguraciones etc y de los diferentes recursos fiacutesicos que vayan a emplearse tales comograacuteficos o sonidos

Paacutegina 56 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Ciclo de juego En esta parte esta toda la accioacuten este ciclo se repite de manera indefinida hastaque el jugador pierda gane o salga del juego Este punto se puede dividir en tres partes quepodemos llamarlas entrada proceso y salida

Como entrada se entiende el punto donde se captura todo lo que hace el jugador comopresionar los botones de control mover el ratoacuten presionar las flechas del teclado tocar la pantallataacutectil y el resto de informacioacuten que recibe el juego

En la parte de proceso es donde se procesa toda la informacioacuten que se recibioacute en la entrada ytiene lugar la loacutegica del videojuego Por tanto es donde se realizan los caacutelculos de fiacutesicas si eljuego los requiere asiacute como tambieacuten los caacutelculos de la inteligencia artificial de esteconjuntamente con el tratamiento graacutefico

La salida es la encargada de enviar al jugador toda la informacioacuten que se ha procesado en laetapa anterior proceso Se muestra al jugador el resultado de lo que hizo con la visualizacioacuten enpantalla del estado actual del videojuego Tambieacuten es en este punto donde se hace sonar lamuacutesica y efectos de sonido

Por uacuteltimo y fuera del ciclo de juego esta la parte de finalizacioacuten esta parte es la encargada deliberar todos los recursos y memoria utilizada durante el transcurso del videojuego

Es importante diferenciar estas tres etapas del ciclo del videojuego y ver queacute tarea se delega encada una de ellas en la entrada tan soacutelo nos ocupamos de captar los posibles eventos el procesose encarga en primer lugar de procesar la entrada y maacutes adelante de la loacutegica del videojuego ypor uacuteltimo la capa de salida se encarga de visualizar y reproducir la muacutesica

Con estos puntos claros se puede mostrar la estructura principal de un videojuego En elsiguiente apartado se muestra esta estructura baacutesica a modo de esquema

Paacutegina 57 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

53 Esquema de la estructura baacutesica de un videojuego

Inicializacioacuten Creacioacuten de estructuras dedatos carga de recursos graacuteficos y sonidos

Entrada Gestioacuten de pantalla taacutectiljoystick teclado

Proceso Lanzamos una oveja al corralrebota la oveja salta un lobo al escenarioetc

Salida Mostrar graacuteficos y reproducirsonidos

ilustracioacuten 26 Estructura baacutesica de unvideojuego

Finalizacioacuten Liberar recursos

Paacutegina 58 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

54 Patrones de disentildeo

541 Introduccioacuten

En el disentildeo de cualquier aplicacioacuten como por ejemplo un videojuegono es posible abordarlo porcompleto El proceso de disentildeo de una aplicacioacuten suele ser iterativo y se realiza en diferentesetapas de forma que se vaya refinando con el tiempo Conseguir un disentildeo perfecto a la primeraes muy difiacutecil de conseguir El disentildeo de aplicaciones es complejo y la maacutes importante y que maacutesimpacto tiene no soacutelo sobre el producto final sino tambieacuten sobre su vida futura Ya que es en eldisentildeo en donde se definen las estructuras y entidades que se van a encargar de resolver elproblema planteado Como de bien se definan estas estructuras y entidades influiraacute en granmedida en el eacutexito o fracaso del proyecto y en la viabilidad de su mantenimiento

Los patrones de disentildeo son formas reconocidas y probadas de resolver problemas de disentildeo queson recurrentes en el tiempo No es maacutes que basarse en experiencias anteriores en problemassimilares aplicado soluciones probadas anteriormente en determinados contextos para alcanzarun mejor disentildeo maacutes raacutepidamente

Existen distintos patrones para distintos problemas de disentildeo No obstante en este documentosoacutelo se haraacute hincapieacute en los patrones utilizados para este proyecto Quedando fuera del alcancede este documento los demaacutes patrones existentes

542 Patrones de creacioacuten

Estos patrones nos proporcionan una solucioacuten relacionada con la construccioacuten de clases objetosy otras estructuras de datos Algunos ejemplos de patrones pueden ser Abstract Factory BuilderSingleton estos ofrecen mecanismos de creacioacuten de instancias de objetos y estructurasescalables dependiendo de las necesidades

543 Singleton

Para este proyecto se ha utilizado este patroacuten ya que era necesario tener una uacutenica instancia dealgunas determinadas clases En java cuando se utiliza el operador new es posible crear unainstancia de un objeto No obstante a veces es necesario tener una uacutenica instancia de un objetopor ejemplo para poder acceder a ella des de cualquier punto de la aplicacioacuten Seria un ejemplolapelota de un juego de pinball en donde podriacutea ser conveniente mantener una uacutenica instancia deeste objeto

La solucioacuten para garantizar que solo existe una instancia de un objeto se consigue impidiendoque ninguna otra clase pueda acceder al constructor por este motivo de declara el constructorcomo miacutenimo de forma protegida o privada y se proporciona un uacutenico punto (controlado) en dondese proporciona la uacutenica instancia En la siguiente ilustracioacuten se muestra el diagrama de clases delpatroacuten Singleton

ilustracioacuten 27 Singleton

Paacutegina 59 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria A continuacioacuten en el listado 543 se muestra una implementacioacuten baacutesica del patroacuten Singletonutilizada en el proyecto para la clase que maneja el audio del videojuego

Listado 543

1 package comthreecometflingthesheeputil23 import combadlogicgdxaudioMusic 4 import combadlogicgdxaudioSound56 public class AudioManager 7 8 public static final AudioManager instance = new AudioManager()910 private Music playingMusic11 private Sound playingSound1213 Singleton14 private AudioManager() 15 1617 1819 public void ResunmeMusic()20 21 if(playingMusic = null) playingMusicplay()22 2324 public void PlayMusic(Music musicfloat volumeboolean loop) 25 26 if(GamePreferencesinstancemusic) return27 playingMusic = music28 musicsetLooping(loop)29 musicsetVolume(volume)30 musicplay()31 3233 public void StopMusic()34 35 if(playingMusic = null) playingMusicstop()36 3738 public void PauseMusic()39 40 if(playingMusic = null) 41 if(playingMusicisPlaying()) 42 playingMusicpause()43 44 45 4647 public void PlaySound(Sound soundfloat volume) 48 49 if(GamePreferencesinstancesound) return50 playingSound = sound51 soundplay(volume)52 5354 public void PlaySound(Sound soundfloat volumefloat pitchfloat pan) 55 56 if(GamePreferencesinstancesound) return57 playingSound = sound58 soundplay(volume pitch pan)59 60

Esta clase maneja el audio del videojuego tanto efectos de sonido como la muacutesica es una clase

Paacutegina 60 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debe estar accesible des de cualquier punto de la aplicacioacuten y no tiene ninguacuten sentido que seinstancie repetidas veces soacutelo sera necesaria una instancia de dicha clase para poder manejar losaudios y muacutesicas Como se puede ver en la linea 14 del listado 543 se declara el constructorprivado y en la linea 8 se proporciona el punto donde se proporciona la uacutenica instancia de dichaclase a traveacutes de la variable instance declarada de forma publica para que se accesible desdecualquier otra clase y a su vez declarada de forma static y final Con final le decimos que estavariable ya no puede ser modificada una vez declarada es decir sera una constante Con static leindicamos que podremos utilizar la variable instance sin la necesidad de hacer ninguna instanciacon el operador new de la clase AudioManager

Existen varias clases en el videojuego que son singleton A continuacioacuten se nombran todas ellasAudioManager Assets WorldGameController CounterTime GamePreferences

55 Diagramas de clases definitivos

Se ha dividido en varios diagramas para facilitar su lectura se pueden ver los diagramas en lossiguientes apartados de este documento A continuacioacuten se pasan a comentar las clases descritasen ellos

56 Diagramas nuacutecleo videojuego

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep-android encontramoslas siguientes clases

MainActivity Hereda de AndroidAplication que a su vez hereda de Activity es donde se crea laaplicacioacuten crea una instancia de FlingTheSheepMain

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep encontramos laclase FlingTheSheepMain donde se instancia la pantalla de intro del juego dentro del meacutetodocreate

Siguiendo el esquema estructural de un videojuego descrito en el punto 53 de este documentola ilustracioacuten 28 detalla el diagrama de clases que engloba la inicializacioacuten del juego y el ciclo devida

La Inicializacioacuten queda recogida en la clase Assets esta clase es un singleton que instanciaotras clases que a su vez guardan todos los recursos del videojuego por recursos se entiendetexturas para los graacuteficos archivos de audio ficheros con informacioacuten necesaria para el juegoUna vez inicializado el hecho de ser un singleton nos permite acceder a estas clases a traveacutes dela clase assets des de cualquier punto de la aplicacioacuten En la ilustracioacuten 29 se detallan todas estasclases que engloba la clase assets Esta clase se encuentra el el paquetecomthreecometflingthesheepgame A continuacioacuten se comenta cada una de ellas con una brevedescripcioacuten

LevelDecoration Enumera todas las texturas de los objetos de decoracioacuten del videojuego floreshierba etc Son objetos que no tienen ninguna interaccioacuten con el juego simplemente decoran

AssetFontsScene2D Engloba los tipos distintos de fuente que se utilizan en el videojuego tipode letra medida y color

AssetSound Enumera todos los efectos de sonido del juego

Paacutegina 61 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAssetMusic Contiene todas las muacutesicas del juego

FileHandleHighScores Inicializa la tabla de puntuaciones local y la actualiza cada vez que serealiza una partida de juego

LevelObjects Engloba todos los objetos que tienen interaccioacuten con el videojuego por interaccioacutense entiende objetos que pueden colisionar con otros o que tienen alguacuten papel importante dentrode videojuego no son solo objetos de decoracioacuten

Character Contiene el protagonista del juego el personaje que lleva el jugador en esta caso lasovejas

NPCs En esta clase quedan englobadas las texturas de los enemigos en esta caso los lobos

GUI En esta clase se engloban todas las texturas utilizadas para la creacioacuten de la interfaz deusuario botones imaacutegenes

La clase Constants es una clase que declara varias constates estaacuteticas que son accesibles desde cualquier punto de la aplicacioacuten y se utilizan tanto en la inicializacioacuten como en el ciclo de vidadel videojuego La podemos encontrar en el paquete comthreecometflingthesheeputil

El ciclo de vida del videojuego entrada proceso y salida queda repartido en las siguientes clases

Entrada Gestioacuten pantalla taacutectil se realiza en la clase WorldGameController en el meacutetodollamado handleInput a su vez cada personaje(character) y enemigo(NPC) gestiona su propiaentrada de eventos a traveacutes de los meacutetodos sobre escritos touchDown fling y tap Ver ilustracioacuten30 clases Sheep y Wolf

Proceso Este apartado realiza la loacutegica del videojuego y es responsable de esto el meacutetodoupdate de la clase WorldGameController Dentro de este meacutetodo existe implementada lamaquina de estados descrita en el apartado 231 con todos los estados posibles que el juegopuede tener durante su ciclo de vida los estados son READYGAMEPAUSEGAME OVER Cadapersonaje y enemigo lleva implementado su propia loacutegica y maquina de estados dentro de susclases correspondientes Ver ilustracioacuten 30 clases Sheep y Wolf estas maacutequinas de estados sonlas descritas en los apartados 232 y 233 respectivamente

Salida La salida descrita en el apartado 53 queda recogida en la clase GameScreen Verilustracioacuten 31

Finalizacioacuten La finalizacioacuten liberacioacuten de recursos queda a cargo del meacutetodo sobre escrito hiderepartido por las distintas clases de la aplicacioacuten

Otras clases que intervienen en el ciclo de juego recogidas en la ilustracioacuten 28 sonCounterTime GamePreferences AudioManager a continuacioacuten se detalla la funcionalidad decada una de ellas

CounterTime Esta clase engloba el calculo de tiempo transcurrido desde que empieza el juegohasta que termina hace la funcioacuten de contador de tiempo interno

GamePreferences Esta clase hace persistente la configuracioacuten escogida por el usuario en lasopciones Es posible configurar el juego con o sin sonido al igual que los efectos de audio estaclase es la encargada de guardar esta configuracioacuten aunque abandonemos la aplicacioacuten

Paacutegina 62 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

AudioManager Clase que se encarga tanto de la reproduccioacuten de audio como los efectos desonido es su responsabilidad interrogar la configuracioacuten actual del sonido y efectos paradeterminar si tiene que realizar la reproduccioacuten de audio o efectos asiacute como tambieacuten determinarel volumen del sonido o si un audio hay que reproducirlo de forma ciacuteclica En el listado 543 deeste documento se puede ver el coacutedigo de esta clase como ejemplo de singleton

ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego

Paacutegina 63 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 29 Diagrama de clases Assets

57 Diagrama de clases objetos videojuego

En la ilustracioacuten 30 de este documento se detalla el diagrama de clases referente a los objetosdel videojuego Por objetos se entiende personaje principal enemigos juntamente con todos loselementos que forman el conjunto del escenario del videojuego

En primer lugar cabe destacar la existencia de la clase abstracta AbstractGameObject Estaclase abstracta define los meacutetodos comunes de todos los objetos del juego Por las necesidadesde implementacioacuten no se han definido meacutetodos abstractos no obstante la clase se define comoabstracta ya que va a ser la superclase de todos los objetos del videojuego y por tanto no se van arealizar instancias de esta A continuacioacuten se enumeran las clases que se extienden de esta y querecogen todos los objetos del juego ya sean con o sin interaccioacuten en el

Paacutegina 64 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaGrass Hole Flower Flowers Stump ForestLeft ForestRight ThePen WoodFenceForestWoodFencePen DoorPen BorderGrassLeft BorderGrassRight PotionPurple AubergineRedPuddle Tree GrassField

Estas clases corresponden a los objetos que constituyen el escenario del videojuego Las clasesSheep y Wolf corresponden al personaje del videojuego y a los enemigos respectivamente estasclases no solamente contienen el meacutetodo para ser dibujadas en pantalla igual que las anterioressino que tambieacuten poseen toda la loacutegica para el comportamiento de cada una de ellas este puntocorresponderiacutea a la fase de proceso de la estructura baacutesica de un videojuego detallada en elpunto 53 de este documento Existe para cada personaje y enemigo una maquina de estadosimplementada que indica en que estado se encuentra en cada momento aplicando la loacutegicacorrespondiente para ese estado Ver las enumeraciones SHEEP_STATE y WOLF_STATE de lailustracioacuten 30 estas corresponden a las maacutequinas de estado definidas en los apartados 232 y233 respectivamente

Finalmente en la ilustracioacuten 30 aparecen las clases GameScreen y WorldGameController

La clase GameScreen como se vera en el apartado 58 es la clase que engloba todo lorelacionado con la pantalla del juego o nivel En ella se instancian todos los objetos descritosanteriormente para la creacioacuten del nivel asiacute como tambieacuten la creacioacuten de la GUI del videojuegobotones textos sobreimpresos y cajas de textos Es por este motivo que en la clase GameScreenexisten dependencias u asociaciones hacia todos los objetos dependiendo del tipo de declaracioacutende estos

La clase WorldGameController contiene la implementacioacuten de gran parte de la loacutegica delvideojuego esta clase formariacutea parte de la etapa de proceso dentro de la estructura baacutesica de unvideojuego descrita en el apartado 53 de este documento

Existe tambieacuten en esta clase una asociacioacuten hacia la clase GameScreen ya que des de la claseWorldGameController que es donde se encuentra gran parte de la loacutegica es necesario accedera la instancia de GameScreen para interactuar con varios elementos visuales que manipulan laloacutegica del videjuego

En la siguiente hoja se muestra la ilustracioacuten 30 correspondiente a todo los descrito en esteapartado

Paacutegina 65 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 30 Diagrama de clases objetos

Paacutegina 66 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

58 Diagrama de clases pantallas videojuego

En la ilustracioacuten 31 quedan recogidas todas las clases que intervienen en la creacioacuten depantallas del videjuego por pantallas se entine la pantalla de intro la del menuacute principal la deopciones etc Estas clases engloban todo lo necesario para la construccioacuten y visualizacioacuten deestas A continuacioacuten se detallan cada una de las clases

AbstractGameScreen Esta clase abstracta recoge todos los meacutetodos abstractos que sonimplementados en cada una de las clases que a continuacioacuten se detallan(pantallas) con la loacutegicanecesaria seguacuten las necesidades de cada pantalla No se crea ninguna instancia de esta clase

IntroScreen Corresponde a la pantalla de intro del videojuego descrita en el apartado 4331

MenuScreen Corresponde a la pantalla del menuacute inicial del juego des de aquiacute podemos escogersi jugar consultar la tabla de puntuaciones local ir a las opciones o a la pantalla de ayuda delvideojuego descrita en el apartado 4332 OptionsScreenPantalla de opciones descrita en el apartado 4333

CreditsScreen Pantalla de creacuteditosdescrita en el apartado 4334

HighScoresScreen Pantalla en donde se recoge la puntuacioacuten local del videojuegodescrita en elapartado 4335

GameScreen Pantalla general esta clase engloba toda la loacutegica del nivel del juego a su vezengloba la pantalla inicial de nivel READY la pantalla de pausa del juego y la de game overdescritas en los apartados 4336 4337 4338 4339

HowToPlayScreen El videojuego dispone de un tutorial in game que solo aparece la primera vezque jugamos a el y en las siguientes partidas ya no vuelve aparecer maacutes descrita en el apartado43311 No obstante existe una pantalla en donde podemos ver este tutorial fuera del juego estaclase esta destinada a contener los datos de esta pantalla descrita en el apartado 43310

TextGUI Esta clase contiene todos los textos sobreimpresos que existen en el videojuego En ellaesta la loacutegica de cada uno de estos textos para que sean posicionados y visualizados desde lasdistintas partes del videojuego

TUTORIAL_INGAME_STATE Esta enumeracioacuten enumera los estados de la maquina de estadosutilizada para mostrar el tutorial in game dentro del videojuego la primera vez que jugamos lamaacutequina de estados esta implementada dentro de la clase TextGUI la maacutequina corresponde a ladescrita en el apartado 234

En la siguiente hoja se muestra la ilustracioacuten correspondiente a todo los descrito en esteapartado

Paacutegina 67 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 31 Diagrama de clases pantallas

Paacutegina 68 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

59 Configurar el entorno de desarrollo

Antes de empezar a desarrollar juegos con libGDX es necesario instalar y configurar el entornode desarrollo Para ello se utilizaraacute Eclipse como entorno de desarrollo integrado IDE A su vez secreara un proyecto que nos serviraacute como base para el desarrollo de este

Es posible desarrollar con otros entornos distintos a Eclipse pero el hecho que Eclipse sea elentrono de desarrollo soportado oficialmente ha sido motivo suficiente para escogerlo para esteproyecto como entorno de desarrollo

591 Instalacioacuten

Para poder instalar el entorno de desarrollo nos haraacute falta primero instalar el Java DevelopmentKit(JDK) para posteriormente poder instalar eclipse

Una vez instalados seraacute necesario bajar el framework libGDX del siguiente enlace

httplibgdxbadlogicgamescomdownloadhtml

Tambieacuten sera necesario instalar el Android SDK seguidamente tendremos que ejecutar eclipse yinstalar los plugins necesarios para poder desarrollar con Android El plugin necesario paradesarrollar con Eclipse sobre Android de llama ADT (Android Developer Tools) Para instalar esteplugin debemos dirigirnos a Help--gtInstall new software tal y como muestra la siguiente ilustracioacuten

ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse

Paacutegina 69 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez el entorno de desarrollo preparado seraacute el momento de descomprimir el frameworklibGDX se recomienda descomprimirlo en la raiacutez ClibGDX en esta caso ya que trabajamos bajoWindows

Una vez descomprimido dentro de la la carpeta encontramos una aplicacioacuten llamada gdx-setup-uijar Esta aplicacioacuten nos ayuda a crear un proyecto ya configurado con las libreriacuteas necesariaslisto para ser importado a Eclipse y empezar a desarrollar con libGDX para Android O paracualquier otra de las plataformas soportadas por el framework En este caso se configura elproyecto para Android y para Escritorio de esta manera podremos verificar durante el desarrollodel proyecto los avances sin necesidad de instalarlo en un dispositivo Android ya sea fiacutesico ovirtual

Las siguientes ilustraciones muestran la configuracioacuten a realizar

ilustracioacuten 33 Creacioacuten proyecto libGDX Habraacute que pulsar en el botoacuten Create y con ello accederemos a la siguiente ilustracioacuten

ilustracioacuten 34 Creacioacuten proyecto libGDX

Paacutegina 70 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez configuradas todas las opciones le daremos al paso 4 Open the generation screen ygeneraremos el proyecto Esto proyecto sera importable a eclipse desde la opcioacuten Import delpropio IDE La configuracioacuten del proyecto tambieacuten es posible hacerla a mano no obstante esta aplicacioacutennos ahorra tiempo y posibles errores en el momento de configurarlo dentro del entorno ya quepara hacerlo a mano existen distintos pasos a seguir para conseguir lo mismo que se consiguecon esta aplicacioacuten con escasos clicks de ratoacuten

510 Traspaso del disentildeo a texturas

Todo el disentildeo realizado en el apartado 4 seraacute necesario pasarlo a texturas para posteriormenteutilizarlo en la implementacioacuten del juego como recursos graacuteficos

Una textura es una imagen digital cualquiera en cualquiera de los formatos habituales jpg pnggif tga etc Para poderla cargar dentro de un videojuego y manipularla haraacute falta una libreriacuteaespecializada para ello esto se podria programar para para el caso de este proyecto utilizamos elpropio framework libGDX para realizar esta tarea que a su vez envuelve el uso de OpenGL

Las texturas en OpenGL deben ser siempre potencias de 2163264128256 etc del contrarionos daraacute problemas y no funcionaraacute

El primer paso sera desmontar todas las capas pieza por pieza por decirlo de alguna manera ycrear ficheros de cada una de las capas de forma separada para guardarlas todas en una carpetacon un nombre identificativo Ver la siguiente ilustracioacuten

ilustracioacuten 35 Capas separadas por imaacutegenes

Paacutegina 71 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez realizado este paso deberemos juntarlas todas de nuevo en una uacutenica textura que seapotencia de 2 Trataacutendose de un juego para moacutevil las texturas no deberiacutean ser mayores de1024x1024 y no se podraacuten cargar muchas de ellas en memoria por razones obvias de recursosdel tipo de dispositivo

Para juntarlas utilizaremos una aplicacioacuten llamada Texture Packer esta nos juntara las texturasde repartieacutendola de forma que quepan en una tamantildeo de textura definido que en este caso serade 1024x1024 en caso de caber en una uacutenica textura el programa generara 2 texturas siempreoptimizadas a potencias de 2 La siguiente ilustracioacuten muestra el programa Texture packer

Ilustracioacuten 36 Texture packer El formato de salida de las textura sera png ya que necesitamos mantener el canal alpha deestas activado para los objetos sean correctamente dibujados en la escena del videojuego

Conjuntamente con la textura la aplicacioacuten nos generara un archivo de texto que contendraacute elnombre de la textura y la posicioacuten donde se encuentra dentro de la textura generada de1024x1024 Ver la siguiente ilustracioacuten en la siguiente paacutegina

Paacutegina 72 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 37 Posicioacuten texturas De esta manera podremos cargar las texturas en la fase inicializacioacuten en la clase Assets descritaen la ilustracioacuten 29 en forma de diagrama de clases

511 Implementacioacuten de las maacutequinas de estado

La implementacioacuten de las maacutequinas de estado se realiza con una estructura enumconjuntamente con una estructura switch case El siguiente listado muestra la declaracioacuten del laestructura enum implementada en la clase WorldGameController la implementacioacuten de todas lasmaacutequinas se realiza del mismo modo por tanto se toma esta como ejemplo en representacioacuten detodas las implementadas en el videojuego

Listado 5111

1 private enum GAME_STATE READYGAMEPAUSEGAME_OVER2 private GAME_STATE gameState34 gameState = GAME_STATEREADY

Paacutegina 73 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLa siguiente tabla muestra un trozo de la estructura switch case implementada en el meacutetodoupdate de la clase WorldGameController

Listado 5112

1 public void update(float deltaTime)2 3 switch(gameState)4 5 case READY6 if(audioReady) 7 AudioManagerinstancePlaySound(Assetsinstancesoundready 8 ConstantsVOLUME_AUDIO_EFFECTS)9 audioReady = false10 11 if(timeLeftShowReadyScreen gt 0)12 13 if(deltaTime lt 03f ) 14 timeLeftShowReadyScreen -=deltaTime15 16 if(timeLeftShowReadyScreen lt 0)17 18 gameScreensetVisibilityGUI()19 timeLeftShowReadyScreen = 020 CounterTimeinstancestartTime()21 22 AudioManagerinstancePlayMusic(Assetsinstancemusiclevel01 23 ConstantsVOLUME_MUSIC_GAME true)24 gameState = GAME_STATEGAME 2526 27 28 break 29 case GAME30 updateGame() 31 if(timeOpenDoorPen gt 0)32 33 if(deltaTime lt 03f ) 34 timeOpenDoorPen -= deltaTime35 36 if(timeOpenDoorPen lt= 0) 37 gameScreengetDoorPen()setVisibility(gameScreengetDoorPen()getVisibility())38

En este listado podemos ver el estado READY y un trozo del estado GAME de la maacutequina deestados definida en el apartado 231 de este documento inicialmente la maacutequina toma el estadoREADY como se puede ver en la linea 4 del listado 5111 este estado se ira repitiendo a cadavuelta del ciclo de vida del videojuego hasta que cambie el estado de juego a GAME estosucederaacute una vez transcurridos 3 segundos tal y como se puede ver en la linea 24 del listado5112 Hay que tener en cuenta que un videojuego tal y como se ha definido en el apartado 522de este documento forma un bucle infinito por tanto la funcioacuten update de la linea 1 de este listadose repetiraacute de forma indefinida durante la ejecucioacuten del nivel de juego y cada vuelta ejecutaraacute elestado en que se encuentre la maacutequina de estados

Paacutegina 74 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6Conclusiones El desarrollo del proyecto ha sido tal y como se esperaba en lineas generales no han habidograndes desviaciones de tiempo ni durante el disentildeo ni en el posterior desarrollo de este Cabedestacar que el hecho de poder probar el proyecto ejecutaacutendolo en la propia maacutequina donde se hadesarrollado sin tener que utilizar un dispositivo real o virtual cada vez que se ha querido verificarha hecho que el desarrollo sea mucho maacutes fluido que sino se hubiera contado con el escenariodescrito Esto no significa que en ciertos momentos del desarrollo no se haya probado con undispositivo real Android Dejando a parte la gran ventaja que esto significa ya que una vezdesarrollado el esfuerzo realizado nos sirve para distintas plataformas casi sin tener que tocarnada del coacutedigo

Por tanto el hecho de haber escogido libGDX para el desarrollo ha sido una buena eleccioacuten Estambieacuten una buena eleccioacuten escoger un framework o un motor focalizado al desarrollo devideojuegos si se quiere implementar uno ya sea para Android o para cualquier plataforma

Existe la posibilidad de desarrollarlo sin ninguacuten tipo de framework o motor pero hay que tenerclaro que se quiere hacer exactamente y a donde se quiere llegar es decir si lo que se quiere escentrarse en la programacioacuten de videojuegos es mucho mejor partir de un framework o motor yaque de esta forma nos desligamos de programar ciertos apartados que estaacuten maacutes focalizados a laprogramacioacuten de frameworks o motores para videojuegos que no a la programacioacuten devideojuegos en si

Yendo maacutes allaacute de donde el programador se quiere centrar existe otro factor importante a teneren cuenta en el momento de plantear un proyecto llamado tiempo con el tiempo de que se hadispuesto para este proyecto queda auacuten maacutes justificado la eleccioacuten de este framework pararealizarlo Ya que probablemente sin el debido al esfuerzo mayor en programar apartados que noson exclusivos del videojuego pudieran haber existido desviaciones de tiempo importantes enrelacioacuten al calendario propuesto

Ha quedado fuera del proyecto por temas de tiempo realizar animaciones a todos los personajesdel videojuego para conseguir una mejor experiencia de usuario y un nivel de acabado superiorFuera del proyecto tambieacuten ha quedado la implementacioacuten no solo de unas puntuacionesmaacuteximas a nivel local sino tambieacuten unas a nivel mundial consultables a traveacutes de una paacutegina webA su vez no solo guardariacutea la puntuacioacuten maacutexima sino tambieacuten el tiempo jugado las ovejassalvadas y los lobos ahuyentados Tambieacuten ha quedado fuera de este proyecto la realizacioacuten deun blog dedicado al videojuego Todos estos apartados se implementaran en breve fuera de esteTFC

7Recursos utilizados

71 Portada documento

Jake Maymar httpwwwflickrcomphotosmaymar5334789030httpcreativecommonsorglicensesby-sa20deeden

72 Recursos utilizados para el disentildeo del videojuego

Para realizar todo el disentildeo visual del videojuego se ha recurrido a diferentes fuentes de arte

Paacutegina 75 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriasujetas a licencias creative commons y dominio puacuteblico A continuacioacuten se detalla una lista decada recurso con su autor en el caso de que no haya sido publicado de forma anoacutenimajuntamente con el link donde se ha encontrado

721 Fotografiacutea pantalla intro videojuego y usuarios

Michael Karrerhttpwwwflickrcomphotosmichael_karrer78438470httpcreativecommonsorglicensesby-nc20deeden

Jodi Womackhttpwwwflickrcomphotosjodiwomack6217578512httpcreativecommonsorglicensesby20deeden

Tony Alterhttpwwwflickrcomphotos78428166N008279647916httpcreativecommonsorglicensesby20deeden

Gage Skidmore (Nina Dobrev)httpwwwflickrcomphotosgageskidmore5980906910httpcreativecommonsorglicensesby-sa20deeden

722 Iconos y botones

7221 Altavoz

Autor httpwwwiconshockcom Link httpswwwiconfindercomicons67771audio_speaker_iconsize=128Licencia Free for commercial use

7222 Nota Musical

Autor httpwwwdezinerfoliocomLink httpswwwiconfindercomicons58679music_iconsize=128Licencia Free for commercial use

7223 Flecha salida

Autorhttptayteldeviantartcom Linkhttpswwwiconfindercomicons41696arrow_back_grey_left_orange_iconsize=128LicenciaFree for commercial use (Include link to authors website) 7224 Icono de pausa

AutorhttpwwwwebdesignerdepotcomLink httpswwwiconfindercomicons40716blue_button_pause_iconsize=64Licencia Free for commercial use

7225 Icono interrogante (help)

AutorhttpwwwdoublejdesigncoukLinkhttpwwwiconarchivecomshowravenna-3d-icons-by-double-j-designHelp-iconhtml

Paacutegina 76 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLicencia httpcreativecommonsorglicensesby30

7226 Botones (Play Score Options)

AutorydLinkhttpopengameartorgcontentbuttons-variationsLicenciahttp creativecommonsorgpublicdomainzero10

723 Recursos graacuteficos 2D componentes escenario

7231 Ojos lobos

AutorCreek23Link httpopengameartorgcontentgnu-the-gnu-mascotLicencia httpcreativecommonsorglicensesby-sa30

7232 Ovejas y lobos

Autor lemmlingLink httpopenclipartorguser-clipartslemmlingLicencia httpopenclipartorgshare

7233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY

AutorSamLink httpopengameartorgcontentcountry-fieldLicencia httpcreativecommonsorgpublicdomainzero10

7234 Escenario

Daniel EddelandLinkhttpopengameartorgcontentlpc-farming-tilesets-magic-animations-and-ui-elementsLicenciahttpcreativecommonsorglicensesby-sa30

724 Fuentes

7241 ThinckheadAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10 7242 MisfortuneAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7243 TabaqueraAutor deFharoLink httpwwwdafontcomesfernando-harod3419l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7244 Press Start Font

Paacutegina 77 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAutor desconegutLink httpwwwzone38netfontpressstartLicencia httpscriptssilorgcmsscriptspagephpsite_id=nrsiampid=OFL

725 Otros

Todos los demaacutes recursos no nombrados en esta lista como el fondo de pantalla del menuacuteprincipal de inicio del juego y las letras del titulo del juego Fling the sheep impresas sobre lapantalla del menuacute inicial son de elaboracioacuten propia

726 Audio y efectos de sonido

7261 Menu

Autor mrpolyLinkhttpopengameartorgcontentmenu-musicLicencia httpcreativecommonsorgpublicdomainzero10

7262 Game Over

Autor MacroLinkhttpopengameartorgcontentrest-outro-loopLicenciahttpcreativecommonsorglicensesby30

7263 Game Play

AutorRezonerLinkhttpopengameartorgcontenttrance-menuLicenciahttpcreativecommonsorglicensesby30

7264 Creacutedits

Autor -Linkhttpopengameartorgcontent1-minute Licenciahttpcreativecommonsorgpublicdomainzero10

7265 Ready

httpopengameartorgcontentui-accept-or-forwardhttpcreativecommonsorglicensesby30

7266 Pause_Resume

httpopengameartorgcontentcompletion-sound httpcreativecommonsorglicensesby30

7267 Quit

httpopengameartorgcontentfly-swatter-squish-sound httpcreativecommonsorgpublicdomainzero10

7268 Sheep

Paacutegina 78 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

httpopengameartorgcontentsheep-sound-bleats-yo-frankiehttpcreativecommonsorglicensesby30

El resto de efectos de audio han sido obtenidos de la siguiente paacutegina httpwwwpond5com

8Lineas abiertas del proyecto Se haraacute un repaso del proyecto por si existe alguacuten bug para solucionarlo Posteriormente deadaptara para que sea funcional en distintas resoluciones de pantalla Se antildeadiraacuten los power-upsque se definieron al principio del proyecto por temas de tiempo han quedado fuera de la entregaA su vez se balanceara el gameplay antildeadiendo alguna mecaacutenica de juego extra si procede

Se publicara el juego en Google Play y se creara un blog del juego se mirara la posibilidad dehacer funcionar el juego en el blog con webGL httpprojects3cometcom

Se ampliara la tabla de puntuaciones de la siguiente manera la tabla no solamente guardara lospuntos tambieacuten guardara el tiempo jugado nuacutemero de lobos ahuyentados nuacutemero de ovejassalvadas y nombre del usuario con 5 caracteres Se creara un un registro de puntuaciones globalconsultable desde el blog del videojuego

Finalmente se crearan maacutes niveles de juego con distribuciones diferentes alguacuten nivel podriacuteatambieacuten tener mecaacutenicas diferentes de juego con los mismos personajeshellip

9Bibliografiacutea utilizada

Titulo Beginning Android Games (Second Edition) ISBN 978-1-43024-677-0

Autor Mario Zechner Robert Green

Editorial Apress

Contenido Desarrollo de videojuegos para Android

Titulo Learning libGDX Game Development ISBN 978-1-78216-604-7

Autor Andreas Oehlke

Editorial PACKT Publishing

Contenido Desarrollo de videojuegos para Android con libGDX

Paacutegina 79 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

10Otros proyectos realizados

101 Remake Gradius Konami

Remake del famoso shooter de Konami lanzado para ordenadores MSX en 1986 programadocon C++ con SDL Aunque este juego existe para multitud de plataformas Ver articulo wikipedia

httpeswikipediaorgwikiGradius_videojuego

Blog del proyecto httpprojects3cometcom

102 Tales of Nimria mini RPG

Mini RPG en 2D programado en C++ con DirectX este mini RPG trata de salvar a una princesacapturada por unas malvadas criaturas

Blog del proyecto httpprojects3cometcom

102 Motocalipsis Bar 66 RTS RTS en 3D con ambiente motero los hechos de la historia suceden en un pequentildeo pueblo deTexas Programado en Unity con C

Blog del proyecto httpmotocalipsisbar66blogspotcomes

Paacutegina 80 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Creative Commons 40 license by-nc-sa

Attribution-NonCommercial-ShareAlike 40 International

===========================================================

Creative Commons Corporation (Creative Commons) is not a law firm anddoes not provide legal services or legal advice Distribution ofCreative Commons public licenses does not create a lawyer-client orother relationship Creative Commons makes its licenses and relatedinformation available on an as-is basis Creative Commons gives nowarranties regarding its licenses any material licensed under theirterms and conditions or any related information Creative Commonsdisclaims all liability for damages resulting from their use to thefullest extent possible

Using Creative Commons Public Licenses

Creative Commons public licenses provide a standard set of terms andconditions that creators and other rights holders may use to shareoriginal works of authorship and other material subject to copyrightand certain other rights specified in the public license below Thefollowing considerations are for informational purposes only are notexhaustive and do not form part of our licenses

Considerations for licensors Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights Our licenses are irrevocable Licensors should read and understand the terms and conditions of the license they choose before applying it Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected Licensors should clearly mark any material not subject to the license This includes other CC- licensed material or material used under an exception or limitation to copyright More considerations for licensors wikicreativecommonsorgConsiderations_for_licensors

Considerations for the public By using one of our public licenses a licensor grants the public permission to use the licensed material under specified terms and conditions If the licensors permission is not necessary for any reason--for example because of any applicable exception or limitation to copyright--then that use is not regulated by the license Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant Use of

Paacutegina 81 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria the licensed material may still be restricted for other reasons including because others have copyright or other rights in the material A licensor may make special requests such as asking that all changes be marked or described Although not required by our licenses you are encouraged to respect those requests where reasonable More_considerations for the public wikicreativecommonsorgConsiderations_for_licensees

===========================================================

Creative Commons Attribution-NonCommercial-ShareAlike 40 InternationalPublic License

By exercising the Licensed Rights (defined below) You accept and agreeto be bound by the terms and conditions of this Creative CommonsAttribution-NonCommercial-ShareAlike 40 International Public License(Public License) To the extent this Public License may beinterpreted as a contract You are granted the Licensed Rights inconsideration of Your acceptance of these terms and conditions and theLicensor grants You such rights in consideration of benefits theLicensor receives from making the Licensed Material available underthese terms and conditions

Section 1 -- Definitions

a Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated altered arranged transformed or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor For purposes of this Public License where the Licensed Material is a musical work performance or sound recording Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image

b Adapters License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License

c BY-NC-SA Compatible License means a license listed at creativecommonsorgcompatiblelicenses approved by Creative Commons as essentially the equivalent of this Public License

d Copyright and Similar Rights means copyright andor similar rights closely related to copyright including without limitation performance broadcast sound recording and Sui Generis Database

Paacutegina 82 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Rights without regard to how the rights are labeled or categorized For purposes of this Public License the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights

e Effective Technological Measures means those measures that in the absence of proper authority may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20 1996 andor similar international agreements

f Exceptions and Limitations means fair use fair dealing andor any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material

g License Elements means the license attributes listed in the name of a Creative Commons Public License The License Elements of this Public License are Attribution NonCommercial and ShareAlike

h Licensed Material means the artistic or literary work database or other material to which the Licensor applied this Public License

i Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license

j Licensor means the individual(s) or entity(ies) granting rights under this Public License

k NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation For purposes of this Public License the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange

l Share means to provide material to the public by any means or process that requires permission under the Licensed Rights such as reproduction public display public performance distribution dissemination communication or importation and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them

Paacutegina 83 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria m Sui Generis Database Rights means rights other than copyright resulting from Directive 969EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases as amended andor succeeded as well as other essentially equivalent rights anywhere in the world

n You means the individual or entity exercising the Licensed Rights under this Public License Your has a corresponding meaning

Section 2 -- Scope

a License grant

1 Subject to the terms and conditions of this Public License the Licensor hereby grants You a worldwide royalty-free non-sublicensable non-exclusive irrevocable license to exercise the Licensed Rights in the Licensed Material to

a reproduce and Share the Licensed Material in whole or in part for NonCommercial purposes only and

b produce reproduce and Share Adapted Material for NonCommercial purposes only

2 Exceptions and Limitations For the avoidance of doubt where Exceptions and Limitations apply to Your use this Public License does not apply and You do not need to comply with its terms and conditions

3 Term The term of this Public License is specified in Section 6(a)

4 Media and formats technical modifications allowed The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created and to make technical modifications necessary to do so The Licensor waives andor agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights including technical modifications necessary to circumvent Effective Technological Measures For purposes of this Public License simply making modifications authorized by this Section 2(a) (4) never produces Adapted Material

5 Downstream recipients

a Offer from the Licensor -- Licensed Material Every recipient of the Licensed Material automatically

Paacutegina 84 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License

b Additional offer from the Licensor -- Adapted Material Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapters License You apply

c No downstream restrictions You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material

6 No endorsement Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are or that Your use of the Licensed Material is connected with or sponsored endorsed or granted official status by the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i)

b Other rights

1 Moral rights such as the right of integrity are not licensed under this Public License nor are publicity privacy andor other similar personality rights however to the extent possible the Licensor waives andor agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights but not otherwise

2 Patent and trademark rights are not licensed under this Public License

3 To the extent possible the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme In all other cases the Licensor expressly reserves any right to collect such royalties including when the Licensed Material is used other than for NonCommercial purposes

Paacutegina 85 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 3 -- License Conditions

Your exercise of the Licensed Rights is expressly made subject to thefollowing conditions

a Attribution

1 If You Share the Licensed Material (including in modified form) You must

a retain the following if it is supplied by the Licensor with the Licensed Material

i identification of the creator(s) of the Licensed Material and any others designated to receive attribution in any reasonable manner requested by the Licensor (including by pseudonym if designated)

ii a copyright notice

iii a notice that refers to this Public License

iv a notice that refers to the disclaimer of warranties

v a URI or hyperlink to the Licensed Material to the extent reasonably practicable

b indicate if You modified the Licensed Material and retain an indication of any previous modifications and

c indicate the Licensed Material is licensed under this Public License and include the text of or the URI or hyperlink to this Public License

2 You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium means and context in which You Share the Licensed Material For example it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information 3 If requested by the Licensor You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable

Paacutegina 86 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria b ShareAlike

In addition to the conditions in Section 3(a) if You Share Adapted Material You produce the following conditions also apply

1 The Adapters License You apply must be a Creative Commons license with the same License Elements this version or later or a BY-NC-SA Compatible License

2 You must include the text of or the URI or hyperlink to the Adapters License You apply You may satisfy this condition in any reasonable manner based on the medium means and context in which You Share Adapted Material

3 You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to Adapted Material that restrict exercise of the rights granted under the Adapters License You apply

Section 4 -- Sui Generis Database Rights

Where the Licensed Rights include Sui Generis Database Rights thatapply to Your use of the Licensed Material

a for the avoidance of doubt Section 2(a)(1) grants You the right to extract reuse reproduce and Share all or a substantial portion of the contents of the database for NonCommercial purposes only

b if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material including for purposes of Section 3(b) and

c You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database

For the avoidance of doubt this Section 4 supplements and does notreplace Your obligations under this Public License where the LicensedRights include other Copyright and Similar Rights

Paacutegina 87 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 5 -- Disclaimer of Warranties and Limitation of Liability

a UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR TO THE EXTENT POSSIBLE THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL WHETHER EXPRESS IMPLIED STATUTORY OR OTHER THIS INCLUDES WITHOUT LIMITATION WARRANTIES OF TITLE MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE NON-INFRINGEMENT ABSENCE OF LATENT OR OTHER DEFECTS ACCURACY OR THE PRESENCE OR ABSENCE OF ERRORS WHETHER OR NOT KNOWN OR DISCOVERABLE WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART THIS DISCLAIMER MAY NOT APPLY TO YOU

b TO THE EXTENT POSSIBLE IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING WITHOUT LIMITATION NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT SPECIAL INDIRECT INCIDENTAL CONSEQUENTIAL PUNITIVE EXEMPLARY OR OTHER LOSSES COSTS EXPENSES OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES COSTS EXPENSES OR DAMAGES WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART THIS LIMITATION MAY NOT APPLY TO YOU

c The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that to the extent possible most closely approximates an absolute disclaimer and waiver of all liability

Section 6 -- Term and Termination

a This Public License applies for the term of the Copyright and Similar Rights licensed here However if You fail to comply with this Public License then Your rights under this Public License terminate automatically

b Where Your right to use the Licensed Material has terminated under Section 6(a) it reinstates

1 automatically as of the date the violation is cured provided it is cured within 30 days of Your discovery of the violation or

2 upon express reinstatement by the Licensor

For the avoidance of doubt this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License

Paacutegina 88 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

c For the avoidance of doubt the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time however doing so will not terminate this Public License

d Sections 1 5 6 7 and 8 survive termination of this Public License

Section 7 -- Other Terms and Conditions

a The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed

b Any arrangements understandings or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License

Section 8 -- Interpretation

a For the avoidance of doubt this Public License does not and shall not be interpreted to reduce limit restrict or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License

b To the extent possible if any provision of this Public License is deemed unenforceable it shall be automatically reformed to the minimum extent necessary to make it enforceable If the provision cannot be reformed it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions

c No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor

d Nothing in this Public License constitutes or may be interpreted as a limitation upon or waiver of any privileges and immunities that apply to the Licensor or You including from the legal processes of any jurisdiction or authority

===========================================================

Paacutegina 89 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaCreative Commons is not a party to its public licensesNotwithstanding Creative Commons may elect to apply one of its publiclicenses to material it publishes and in those instances will beconsidered the Licensor Except for the limited purpose of indicatingthat material is shared under a Creative Commons public license or asotherwise permitted by the Creative Commons policies published atcreativecommonsorgpolicies Creative Commons does not authorize theuse of the trademark Creative Commons or any other trademark or logoof Creative Commons without its prior written consent includingwithout limitation in connection with any unauthorized modificationsto any of its public licenses or any other arrangementsunderstandings or agreements concerning use of licensed material Forthe avoidance of doubt this paragraph does not form part of the publiclicenses

Creative Commons may be contacted at creativecommonsorg

Paacutegina 90 de 102

Page 12: Universitat Oberta de Catalunya UOC Ingeniería técnica en

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Durante la realizacioacuten del proyecto se realizara el disentildeo del juego por disentildeo se entienderealizar un documento que defina el juego de forma generalizada mecaacutenicas personajes etceste documento es conocido como el ldquogame designrdquo el disentildeo de arte conocido como ldquoConcepartrdquo engloba todo lo relacionado con el aspecto graacutefico del juego estilos de personajes estilos degraacuteficos etc Finalmente se realizara el anaacutelisis disentildeo e implementacioacuten de laaplicacioacuten(videojuego) con las tecnologiacuteas escogidas para este proyecto

13 Objetivos

El objetivo principal de este TFC es adquirir experiencia en el desarrollo de videojuegos paraAndroid Sin embargo yendo maacutes allaacute de la plataforma tambieacuten existe un intereacutes por ampliarconocimientos en cuanto a programacioacuten y disentildeo de videojuegos en general

En cuanto al disentildeo y desarrollo del videojuego se pretende realizar un casual game con lassiguientes caracteriacutesticas

El juego consistiraacute en conducir unas ovejas descarriadas a su corral eacutestas con nuestra ayudadeberaacuten sortear los peligros que iraacuten apareciendo durante el camino hacia el deseado corral Elprincipal peligro que amenaza las ovejas son unos lobos malvados que quieren comeacuterselas Elvideojuego soacutelo dispondraacute de una uacutenica modalidad de juego para un uacutenico jugador Al tratarse deun juego casual el publico objetivo es muy amplio Se pretende conseguir un ldquolook amp feelrdquo conesteacutetica tipo cartoon en clave de humor El juego sera desarrollado en 2D con perspectiva cenital

131 Definicioacuten del videojuego

El nivel se describe como una pantalla estaacutetica con vista cenital en posicioacuten vertical Con estaacuteticase entiende que no hay ninguacuten tipo de scroll que haga desplazar la pantalla Siempre veremos lomismo

En la parte de arriba del todo apareceraacute un corral con una puerta la puerta se iraacute abriendo ycerrando de forma aleatoria Por los extremos de la pantalla habraacute arbustos que representaran loslimites del bosque De estos limites iraacuten saliendo lobos a la escena que se querraacuten comer a laspobres ovejas Estas ovejas permaneceraacuten en la parte de abajo de la pantalla e iraacuten saliendo a laescena ellas solas sin saber demasiado donde van(son ovejas descarriadas) nuestra misioacutenconsistiraacute en tirarlas hacia el corral para salvarlas de los malvados lobos metiendolas por lapuerta en los momentos que este abierta para lanzarlas tendremos que deslizar el dedo encimade ellas para darles impulso hacia el corral si no acertamos en meter la oveja en la puerta estarebotara como si de un pelota se tratase Los lobos iraacuten saliendo para sacarnos los lobos deencima deberemos deslizar nuestro dedo encima de ellos o tocarlos para ahuyentarlos De lobos habraacute de diferentes colores marrones grises y azulados Cada lobo loahuyentaremos de manera distinta

bull Marrones 1 pulsacioacuten o deslizar 1 vez el dedo sobre el lobobull Grises 2 pulsaciones o deslizar 2 veces el dedo sobre el lobobull Azulados 3 pulsaciones o deslizar 3 veces el dedo sobre el lobo

A parte de impedir que se coman las ovejas que estaacuten en camino hacia el corral tambieacutentendremos que evitar que los lobos lleguen a la parte de abajo donde estaacute el grupo de ovejas yaque esto nos haraacute perder vidas el juego inicialmente empezara con 3 vidas pudiendo alcanzar unmaacuteximo de 6 vidas en total cada 10000 puntos obtendremos un vida extra

Paacutegina 2 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Conforme el juego se va desarrollando eacuteste iraacute acumulando

bull Puntosbull Tiempo jugadobull Numero de lobos ahuyentadosbull Ovejas colocadas en el corral

Se tratara pues de ir mejorando nuestro propio reacutecord partida tras partida El juego iraacuteaumentando de dificultad durante el transcurso de la partida

Como apunte final el juego recibe el nombre de ldquoFling the sheeprdquo que traducido al espantildeolvendriacutea a ser algo como ldquolanzar las ovejasrdquo

Paacutegina 3 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

14 Planificacioacuten

141 Ciclo de vida

Un videojuego no deja de ser un proyecto de software por tanto para la realizacioacuten de esteproyecto se ha tomado como base el ciclo de vida claacutesico de cualquier proyecto de softwaremodificado ligeramente a las necesidades del proyecto Este ciclo de vida que tambieacuten sedenomina ciclo de vida en cascada se compone de las siguientes etapas

ilustracioacuten 1 Ciclo de vida en cascada

142 Planificacioacuten detallada del proyecto

En los siguientes apartados se recogen por cada etapa que compone el ciclo de vida las principales actividades realizadas con el objetivo de alcanzar el producto deseado dentro delos plazos definidos

1411 Anaacutelisis previo planificacioacuten

En este punto se ha abordado la visioacuten global del proyecto comprendida en establecer lospuntos iniciales necesarios para crear una planificacioacuten de tareas en funcioacuten de las actividades arealizar

Actividad Descripcioacuten

Disentildeo conceptual del videojuego Mecaacutenicas del videojuego

Definicioacuten de las tecnologiacuteas Tecnologiacuteas que se utilizaran en el desarrollo delvideojuego

Anaacutelisis de riesgos Posibles riesgos del proyecto

Planificacioacuten del proyecto Crear una planificacioacuten adaptada a los plazos de entregade este TFC

Paacutegina 4 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Redaccioacuten del documento Generacioacuten del plan de trabajo

Entrega de la PEC1 Entrega del documento

1412 Anaacutelisis de requisitos

En esta fase se ha detallado que necesidades debe cubrir el videojuego tanto desde un puntode vista funcional como desde un punto de vista arquitectoacutenico de la aplicacioacuten a disentildear se hadisentildeado un modelo troncal de clases para posteriormente desarrollar en base a estas todo elvideojuego No obstante en ninguacuten caso se ha entrado en detalle en las tecnologiacuteas a utilizar yadefinidas previamente

Actividad Descripcioacuten

Especificacioacuten de requisitos funcionales Definicioacuten de casos de usos

Disentildeo baacutesico estructura aplicacioacuten Diagrama baacutesico de clases

Especificacioacuten de requisitos funcionales Definicioacuten de maacutequinas de estado

1413 Disentildeo

En este apartado teniendo en cuenta que en este proyecto se va a desarrollar un videojuego seha realizado la recopilacioacuten conceptual de arte conjuntamente con el disentildeo de todas laspantallas que intervienen en el Conjuntamente con la seleccioacuten de los tipos de fuente que seutilizaran para el videojuego seleccioacuten de personajes y enemigos

Actividad Descripcioacuten

Definicioacuten de usuarios y contexto de uso delvideojuego

Conocer las caracteriacutesticas de los usuarios susnecesidades y objetivos asiacute como los contextosde uso

Disentildeo conceptual Un escenario de uso describe desde el puntode vista del usuario como seraacute utilizado unproducto determinado (es este caso unvideojuego) en un escenario determinado

Seleccioacuten de arte Seleccioacuten de arte ya hecho con licencias libresya que no se disponen de conocimientos dearte para abordar el disentildeo

Seleccioacuten de fuentes Seleccioacuten de los tipos de fuente adecuadospara el disentildeo del videojuego

Seleccioacuten de personajes y enemigos Seleccioacuten de personajes y enemigosdisponibles en la red con licencias libres ya queno se disponen de conocimientos de arte paraabordar el disentildeo

Disentildeo de pantallas que intervienen(prototipo) Con todo el arte fuentes y personajes serealizara el disentildeo de todas las pantallas queintervienen en el juego Realizacioacuten de unboceto a mano alzada Sketches y prototipo dealta fidelidad

Redaccioacuten del documento Generacioacuten del documento de disentildeo

Paacutegina 5 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Entrega de la PEC2 Entrega del documento

1414 Implementacioacuten y pruebas

En este punto se ha desarrollado la implementacioacuten del videojuego partiendo de todas lasdefiniciones de los apartados anteriores y las verificaciones oportunas para asegurar el correctofuncionamiento del videojuego

Actividad Descripcioacuten

Implementacioacuten de navegables y contenidos Implementacioacuten de la estructura de todas lapantallas del video juego y la navegabilidadentre ellas y las funciones principales de cadauna de ellas

Implementacioacuten del gameplay Implementacioacuten de la logica de juego

Implementacioacuten de sonido y efectos Implementacioacuten de los efectos de sonido y lamusica

Version alpha del videojuego En este punto se dispone de un videojuegofuncional listo para ser revisado y refinado

Pruebas y refinamiento de la implementacioacuten Pruebas y correcioacutenes de posibles errores

Preparacioacuten del paquete entregable y laredaccioacuten del documento

Testeo final y preparacioacuten del apk a entregarmas la redaccioacuten del documento estrutural delaplicacioacuten

Entrega de la PEC3 Entrega del documento

1415 Finalizacioacuten

En un proyecto de software esta parte quedariacutea focalizada en la fase de implantacioacuten y puesta enmarcha Sin embargo al tratarse de un videojuego esta fase quedariacutea focalizada en la fase delanzamiento del producto No obstante en este caso se ha utilizado para documentar todo eltrabajo realizado a lo largo de este TFC

Actividad Descripcioacuten

Redaccioacuten memoria final proyecto Redaccioacuten memoria final

Montaje presentacioacuten diapositivas Montaje presentacioacuten diapositivas

Montaje del video final presentacioacuten proyecto Montaje del video final presentacioacuten proyecto

Entrega final Entega final

Paacutegina 6 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria143 Temporalizacioacuten del proyecto

La siguiente ilustracioacuten muestra el calendario definido para el proyecto

ilustracioacuten 11 Calendario proyecto

Paacutegina 7 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

En la siguiente pagina se muestra una ilustracioacuten del diagrama de gantt correspondiente alcalendario mostrado en la ilustracioacuten 1

ilustracioacuten 2 Diagrama de gantt

Paacutegina 8 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

15 Herramientas y tecnologiacuteas utilizadas

Actualmente existen varios frameworks para desarrollar videojuegos sobre plataformas moacutevilesSe ha hecho un anaacutelisis comparativo preliminar entre Cocos2D-android1 Cocos2D-x y libGDXaunque existen otros estos tres son los maacutes nombrados y utilizados

Cocos2d-android1 Es un framework en Java basado en la versioacuten de cocos2d-android queesta basado en la versioacuten de cocos2d para iphone Este framework permite el desarrollo devideojuegos en 2D y se programa en Java en lugar de objective-c Para la versioacuten Cocos2d deiphone Actualmente este framework no parece tener mucha continuidad por parte de lacomunidad de desarrolladores aunque no estaacute discontinuado del todo

Cocos2D-x Es un framework en C++ multi-plataforma permite desarrollar para diferentesplataformas a la vez con el mismo coacutedigo Android iOS Bada Marmalade Windows Linux etcSin embargo aunque es un framework con una comunidad muy activa su documentacioacuten esbastante mejorable Se programa en C++ y es posible trabajar con distintos entornos de desarrollocomo Visual Studio o Eclipse El proceso de depuracioacuten con eclipse es algo complejo con C++JNIcon varios pasos a seguir para poder depurar A la vez su configuracioacuten en el entorno Eclipse noes trivial Finalmente tiene relativamente todaviacutea poco tiempo de vida

LibGDX Es un framework escrito en Java sobre C++ ya que las partes criacuteticas estaacuten escritascon coacutedigo nativo para conseguir el mejor rendimiento posible Tiene una comunidad dedesarrolladores muy activa y una documentacioacuten muy extensa Se programa con Java y permite ladepuracioacuten ejecutando la aplicacioacuten en el escritorio de la maacutequina sin tener que pasar por undispositivo real o uno virtual En caso de que se quiera probar en un dispositivo real es posiblehacerlo sin ninguacuten cambio sobre el coacutedigo Este hecho hace que el desarrollo sea maacutes fluidoTiene un rendimiento bastante alto ante cocos2d-x y otros frameworks existentes para eldesarrollo de videojuegos

Todo lo expuesto anteriormente provoca una inclinacioacuten definitiva a utilizar libGDX paraimplementar el videojuego Asiacute pues el videojuego seraacute escrito en Java utilizando el IDE Eclipseque es el soportado oficialmente para Android utilizando el framework libGDX

Para la realizacioacuten de este proyecto se han utilizado las siguientes herramientas

bull Planificacioacuten proyecto

Microsoft Project Professional 2010

bull Disentildeo

Gimp 28 Inkscape 048 TexturePacker 320 Microsoft Visio Professional 2010

bull Programacioacuten

Entorno de desarrollo Eclipse 421 Juno Android develompment tools ADT Android SDK

Paacutegina 9 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Framework libGDX 098 ObjectAid herramienta de visualizacioacuten de coacutedigo en UML para Eclipse Control de versiones Git utilizando como plataforma GitHub

bull Edicioacuten de audio

Audacity 203 GoldWave 569

bull Redaccioacuten de documentos

OpenOffice 401

bull Edicioacuten de viacutedeo

Adobe Premiere Pro CS55

16 Riesgos del proyecto

Se parte de una experiencia previa en desarrollo de videojuegos ver apartado 9 otros proyectosrealizados al final de este documento Aunque no se dispone de experiencia con la libreriacuteaescogida ni tampoco con programacioacuten sobre Android A nivel teacutecnico no se preveacute que puedansurgir muchos riesgos en liacuteneas generales No obstante existe la posibilidad de gastar maacutestiempo del previsto consultando documentacioacuten para lograr los objetivos establecidos

Existe un riesgo maacutes alto a nivel artiacutestico ya que no se dispone de ninguacuten conocimiento de artede ninguacuten tipo Por lo tanto muy probablemente a nivel artiacutestico el juego sea un poco justo Es poreste motivo que durante la realizacioacuten de este proyecto no se va a profundizar en temas de disentildeoartiacutestico en su lugar se utilizaran recursos de arte existentes en la red con licencias libres tipocreative commons o dominio puacuteblico Al final de este documento en el apartado 6 se puede ver unlistado de los recursos utilizados juntamente con un link a la obra y el nombre del autor si esteesta disponible Se haraacute una seleccioacuten de distintos tipos de recursos graacuteficos para posteriormentehacer el montaje de toda la parte graacutefica del videojuego En cuanto a la parte de audio la situacioacuten es exactamente la misma no se dispone de ninguacutenconocimiento para componer muacutesica ni efectos Por lo tanto se buscaraacuten sonidos y temasmusicales con licencias libres Intentando que estos queden integrados de la mejor maneraposible al videojuego

Finalmente existe el riesgo de que el gameplay definido en el disentildeo conceptual del videojuegouna vez puesto en praacutectica no sea del todo funcional o necesite de un balanceo para conseguirun juego equilibrado y jugable

Paacutegina 10 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2 Anaacutelisis funcional Basaacutendonos en el aparatado ldquo131 Definicioacuten del videojuegordquo se han definido los requisitosfuncionales necesarios para este con la definicioacuten de casos de uso Posteriormente se ha definidoun diagrama de clases inicial el cual ha servido como punto de partida para el desarrollo completodel videojuego A su vez se definen las maacutequinas de estado finitas utilizadas para el desarrollo

21 Requisitos funcionales casos de uso

En este apartado se presentan tres diagramas de casos de uso El primer diagrama engloba lavista generalizada del actor ldquojugadorrdquo y los casos de uso que describen los requisitos funcionalesdel sistema En los dos diagramas restantes se describen la vista generalizada del actor ldquoIArdquo porIA se entiende la inteligencia artificial del videojuego Los diagramas muestran los requisitosfuncionales de la IA para el personaje principal y los enemigos La IA interactuacutea con el sistema ypor tanto seraacute susceptible de analizar su uso de la aplicacioacuten

211 Diagrama casos de uso actor ldquoJugadorrdquo

ilustracioacuten 3 Diagrama de casos de usos actor jugador

Paacutegina 11 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Como se puede observar en la ilustracioacuten 3 el sistema solo dispone de un uacutenico actor Que eneste caso es el jugador del videojuego es decir representa todos los posibles usuarios quepueden jugar al videojuego

En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 3estos seraacuten desarrollados en la seccioacuten posterior

212 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

VJ01 Inicio videojuego Jugador

VJ02 Jugar Jugador

VJ03 Acceder puntuaciones maacuteximas Jugador

VJ31 Consultar puntuacione locales Jugador

VJ32 Salir puntuacione locales Jugador

VJ04 Acceder a las opciones Jugador

VJ41 Activar o desactivar muacutesica o efectos Jugador

VJ42 Acceder a la pantalla de creacuteditos Jugador

VJ421 Salir de la pantalla de creacuteditos Jugador

VJ43 Salir de las opciones Jugador

VJ05 Acceder a las instrucciones Jugador

VJ51 Salir de las intrucciones Jugador

VJ06 Salir del videojuego Jugador

213 Descripcioacuten textual de los casos de uso

2131 VJ01 Inicio videojuego

Identificador VJ01

Nombre Inicio videojuego

Autor Xavier Figuera

Resumen El usuario inicia el videojuego

Actor(es) Jugador

Precondiciones Ninguna el videojuego no habiacutea sido iniciado auacuten

Postcondiciones El usuario a iniciado el videojuego a visualizado la pantalla de introdurante un segundo y se encuentra en la pantalla del menuacute principal

Flujo normal 1 El usuario accede a la lista de aplicaciones de su dispositivo 2 Busca el acceso al videojuego3 Ejecuta el programa4 Se carga la aplicacioacuten5 El videojuego muestra la pantalla de intro

Paacutegina 12 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6 Se muestra el menuacute principal al jugador

Flujos alternativos Se podriacutea dar el caso que el usuario accediera al videojuego desde algunacceso directo en alguno de los escritorios del dispositivo

Inclusiones Ninguna

Extensiones Ninguna

2132 VJ02 Jugar

Identificador VJ02

Nombre Jugar

Autor Xavier Figuera

Resumen Jugar al videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario empieza a jugar

Flujo normal 1 El usuario pulsa el botoacuten play del menuacute principal 2 El usuario juega3 El usuario puede volver a jugar una vez finalizada la partida 4 El usuario puede salir del juego en cualquier momento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2133 VJ03 Acceder puntuaciones maacuteximas locales

Identificador VJ03

Nombre Acceder puntuaciones maacuteximas locales

Autor Xavier Figuera

Resumen Acceder a la pantalla de puntuaciones maacuteximas locales de las partidasrealizadas en el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla con la tabla de las 10 puntuacionesmaacuteximas

Flujo normal 1 El usuario pulsa el botoacuten Scores del menuacute principal 2 Al usuario le aparece la pantalla de puntuacioacuten

Paacutegina 13 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ31 Consultar puntuaciones localesVJ32 Salir de la puntuaciones locales

2134 VJ31 Consultar puntuaciones locales

Identificador VJ31

Nombre Consultar puntuaciones locales

Autor Xavier Figuera

Resumen Consulta de las puntuaciones maacuteximas locales de las partidas realizadasen el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Scores delmenuacute principal

Postcondiciones El usuario visualiza la tabla de las 10 puntuaciones maacuteximas

Flujo normal 1 El usuario visualiza una tabla con las 10 puntuaciones maacuteximas

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2135 VJ32 Salir puntuaciones locales

Identificador VJ32

Nombre Salir puntuaciones locales

Autor Xavier Figuera

Resumen Salir de las puntuaciones maacuteximas locales

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulso el botoacuten Scores

Postcondiciones El usuario sale de la tabla de puntuaciones

Flujo normal 1 El usuario pulsa el botoacuten salir en la pantalla tabla de puntuaciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 14 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2136 VJ04 Acceder a las opciones

Identificador VJ04

Nombre Acceder a la pantalla de opciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de opciones del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla de opciones

Flujo normal 1 El usuario pulsa el botoacuten Options del menuacute principal 2 Al usuario le aparece la pantalla de opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ41 Activar o desactivar muacutesica o efectos VJ42 Acceder a la pantalla de creacuteditosVJ43 Salir de las opciones

2137 VJ41 Activar o desactivar muacutesica o efectos

Identificador VJ041

Nombre Activar o desactivar muacutesica o efectos

Autor Xavier Figuera

Resumen Activar o desactivar muacutesica o efectos de audio del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal

Postcondiciones El usuario activa o desactiva la muacutesica o efectos del videojuego

Flujo normal 1 El usuario pulsa el botoacuten altavoz para activar o desactivar la muacutesica delvideojuego 2 El usuario pulsa el botoacuten notas musicales para activar o desactivar losefectos de audio del videojuego

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 15 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2138 VJ42 Acceder a la pantalla de creacuteditos

Identificador VJ42

Nombre Acceder a la pantalla de creacuteditos

Autor Xavier Figuera

Resumen Acceder a la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario se encuentra en la pantalla de opciones

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten credits para acceder a los creacuteditos2 El usuario puede desplazar el texto de los creacuteditos deslizando el dedosobre el texto hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ421 Salir de la pantalla de creacuteditos

2139 VJ421 Salir de la pantalla de creacuteditos

Identificador VJ421

Nombre Salir de la pantalla de creditos

Autor Xavier Figuera

Resumen Salir de la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal y ha accedido a la pantalla creacuteditos

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten salir para abandonar la pantalla para accedera los creacuteditos2 El usuario se encuentra de nuevo en la pantalla opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 16 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21310 VJ05 Acceder a las instrucciones

Identificador VJ05

Nombre Acceder a la pantalla de instrucciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten del menuacuteprincipal

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a las instrucciones2 El usuario puede desplazar el texto de las instrucciones deslizando eldedo sobre el hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ51 Salir de las instrucciones

21311 VJ51 Salir de las instrucciones

Identificador VJ51

Nombre Salir de las intrucciones

Autor Xavier Figuera

Resumen Salir de la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten en el menuacuteprincipal y ha accedido a la pantalla de instrucciones

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a la pantalla de instrucciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 17 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21312 VJ06 Salir del videojuego

Identificador VJ06

Nombre Salir del videojuego

Autor Xavier Figuera

Resumen Salir del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego

Postcondiciones El usuario abandona el videojuego

Flujo normal 1 El usuario pulsa el botoacuten exit de la aplicacioacuten para salir del videojuego oel botoacuten salir del dispositivo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 18 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214 Diagrama casos de uso actor ldquoIArdquo

Por IA se entiende inteligencia artificial es un elemento fundamental para dotar de realismo a unvideojuego Uno de los retos principales que se plantean a la hora de integrar comportamientosinteligentes es alcanzar un equilibrio entre la sensacioacuten de inteligencia y el tiempo de coacutemputoempleado por este subsistema Este equilibrio es de gran importancia en el caso de losvideojuegos Este planteamiento gira generalmente en torno a la generacioacuten de soluciones quesin ser oacuteptimas proporcionen una cierta sensacioacuten de inteligencia En concreto dichas solucionesdeberiacutean tener como meta que el jugador se enfrente a un reto que sea factible de manera quesuponga un estiacutemulo emocional y que consiga engancharlo al videojuego

En estos uacuteltimos antildeos la IA ha pasado de ser un componente secundario en el proceso dedesarrollo de videojuegos a convertirse en uno de los aspectos maacutes importantes Actualmentelograr un alto nivel de IA en un juego sigue siendo uno de los retos maacutes emocionantes y complejosy en ocasiones sirve para diferenciar un juego normal de uno realmente espectacular

Dentro de este proyecto de ha definido una IA baacutesica para dotar del realismo necesario alvideojuego propuesto En los siguientes diagramas se define esta IA en forma de casos de usospara su posterior implementacioacuten

2141 Diagrama casos de uso IA personaje principal (oveja)

ilustracioacuten 4 Diagrama de casos de usos personaje principal

Paacutegina 19 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 4estos seraacuten desarrollados en la seccioacuten posterior

21411 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA03 Salida oveja al escenario IA

IA031 Posicionamiento en pantalla de la oveja IA

IA032 Movimiento oveja IA

IA033 Oveja pastando IA

IA034 Lanzamiento oveja IA

IA035 Rebotes de la oveja IA

IA036 La oveja entra en el establo IA

IA037 Parar oveja IA

21412 Descripcioacuten textual de los casos de uso

214121 IA03 Salida ovejas al escenario

Identificador IA03

Nombre Salida oveja al escenario

Autor Xavier Figuera

Resumen Salida oveja al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones La oveja es instanciada de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Las ovejas se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA031 Posicionamiento en pantalla de las oveja

214122 IA031 Posicionamiento en pantalla de las oveja

Identificador IA031

Nombre Posicionamiento en pantalla de las oveja

Paacutegina 20 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Autor Xavier Figuera

Resumen Asignacioacuten inicial posicioacuten de las ovejas en pantalla siempre es la mismaposicioacuten esta queda fuera del rango visual de la pantalla

Actor(es) IA

Precondiciones La partida esta iniciada y la oveja instanciada

Postcondiciones La oveja queda posicionada en unas coordenadas fuera de la pantalla

Flujo normal 1 Se instancia la oveja2 La oveja queda posicionada en unas coordenadas uacutenicas fuera delrango visual de pantalla

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214123 IA032 Movimiento oveja

Identificador IA032

Nombre Movimiento oveja

Autor Xavier Figuera

Resumen Movimiento de las ovejas hacia el escenario

Actor(es) IA

Precondiciones La partida esta iniciada la oveja instanciada y posicionada

Postcondiciones La oveja se mueve hacia el escenario empieza a pastar

Flujo normal 1 La oveja se mueve hacia el escenario

Flujos alternativos Ninguno

Inclusiones IA034

Extensiones IA033 Oveja PastandoIA037 Parar oveja

214124 IA033 Oveja pastando

Identificador IA033

Nombre Oveja pastando

Autor Xavier Figuera

Resumen La ovejas permanecen en un espacio determinado de coordenadas depantalla mientras no sean lanzadas al escenario por el usuario

Actor(es) IA

Paacutegina 21 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Precondiciones La oveja ha salido al escenario

Postcondiciones La oveja se mueve dentro de un espacio determinado de forma indefinida

Flujo normal 1 La oveja se mueve de forma indefinida hasta que sea lanzada por elusuario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA034 Lanzamiento oveja

214125 IA034 Lanzamiento oveja

Identificador IA034

Nombre Lanzamiento oveja

Autor Xavier Figuera

Resumen La oveja es lanzada por el usuario y se acelera en funcioacuten de la fuerza delanzamiento

Actor(es) IA

Precondiciones La oveja se mueve

Postcondiciones La oveja ha sido lanzada

Flujo normal 1 La oveja se mueve de forma indefinida2 La oveja es lanzada3 La oveja acelera en funcioacuten de la fuerza de lanzamiento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214126 IA035 Rebotes de la oveja

Identificador IA035

Nombre Rebotes de la oveja

Autor Xavier Figuera

Resumen La oveja ha sido lanzada y rebota por el escenario

Actor(es) IA

Precondiciones La oveja ha sido lanzada

Postcondiciones La oveja rebota por el escenario

Flujo normal 1 La oveja ha sido lanzada y rebota por el escenario 2 La oveja entra en el establo si colisiona con la puerta y esta abierta

Paacutegina 22 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA036 La oveja entra en el establo

214127 IA036 La oveja entra en el establo

Identificador IA036

Nombre La oveja entra en el establo

Autor Xavier Figuera

Resumen La oveja entra en el establo

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario y la puerta del establo estaabierta

Postcondiciones La oveja entra en el establo

Flujo normal 1 La oveja entra en el establo si colisiona con la puerta y esta abierta

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214128 IA037 Parar oveja

Identificador IA037

Nombre Parar oveja

Autor Xavier Figuera

Resumen La oveja para si se hacen dos pulsaciones encima de ella

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario

Postcondiciones La oveja se para

Flujo normal 1 La oveja esta rebotando2 El usuario pulsa dos veces encima de ella3 La oveja se para

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 23 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2142 Diagrama casos de uso IA enemigos (lobo)

ilustracioacuten 5 Diagrama de casos de usos enemigos

21421 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA02 Salida lobo al escenario IA

IA021 Ojos por la derecha o por la izquierda IA

IA022 Escoje el tipo de lobo IA

IA023 Lobo por la derecha o por la izquierda IA

IA024 Salta a escena IA

IA025 Movimento lobo IA

Paacutegina 24 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21422 Descripcioacuten textual de los casos de uso

214221 IA02 Salida lobo al escenario

Identificador IA02

Nombre Salida lobo al escenario

Autor Xavier Figuera

Resumen Salida lobo al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones El lobo es instanciado de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Los lobos se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA02 IA021 IA022 IA023 IA024

214222 IA021 Ojos por la derecha o por la izquierda

Identificador IA021

Nombre Ojos por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Salida de ojos al escenario paso previo a que salte el lobo

Actor(es) IA

Precondiciones El lobo ha sido instanciado

Postcondiciones Aparecen unos ojos que se cierra y se abren por la derecha o izquierda dela pantalla de forma aleatoria

Flujo normal 1 El lobo ha sido instanciado2 Aparecen unos ojos que se cierran y se abren 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 25 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214223 IA022 Escoge el tipo de lobo

Identificador IA022

Nombre Escoge el tipo de lobo

Autor Xavier Figuera

Resumen Escoge el tipo de lobo de forma aleatoria de los tres definidos

Actor(es) IA

Precondiciones Han aparecido los ojos

Postcondiciones Ha escogido el tipo de lobo que saltara al escenario

Flujo normal 1 Han aparecido los ojos2 Ha escogido el tipo de lobo que saltara al escenario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214224 IA023 Lobo por la derecha o por la izquierda

Identificador IA023

Nombre Lobo por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Escoge de forma aleatoria el lado por donde debe aparecer el lobo

Actor(es) IA

Precondiciones Se ha seleccionado el tipo de lobo

Postcondiciones Se ha escogido el lado por donde apareceraacute

Flujo normal 1 Se ha escogido el lado por donde apareceraacute

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 26 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214225 IA024 Salta a escena

Identificador IA024

Nombre Salta a escena

Autor Xavier Figuera

Resumen El lobo salta a escena

Actor(es) IA

Precondiciones Se ha seleccionado el lado por donde debe aparecer y salta

Postcondiciones El lobo esta en escena

Flujo normal 1 Se ha seleccionado el lado por donde debe aparecer y salta2 El lobo esta en escena

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones A025

214226 IA025 Movimiento lobo

Identificador IA025

Nombre Movimiento lobo

Autor Xavier Figuera

Resumen El lobo esta en escena y se mueve

Actor(es) IA

Precondiciones El lobo ha saltado a la escena

Postcondiciones El lobo se mueve

Flujo normal 1 El lobo ha saltado a la escena2 El lobo se mueve

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 27 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

22 Disentildeo inicial diagrama de clases

221 Diagrama de clases inicial ldquoFling the sheeprdquo

ilustracioacuten 6 Diagrama de clases videojuego

En este apartado se define la estructura inicial de la aplicacioacuten a traveacutes del diagrama de clasesmostrado en la ilustracioacuten 6 Esto serviraacute como punto de partida para el completo disentildeo de laaplicacioacuten para su posterior implementacioacuten A continuacioacuten se pasan a detallar a modo resumidoque funcionalidad tiene cada una de las clases definidas en este diagrama

2211 Resumen clases videojuego

FlingTheSheepMain Clase principal desde donde se inicializaraacute la aplicacioacuten

Assets Esta clase contendraacute todos los recursos necesarios del juego texturas sonidos etcEstos seraacuten inicializados en el momento de iniciar el juego Existe una dependencia entre la claseFlingTheSheepMain y Assets ya que la instanciacioacuten de Assets esta condicionada por lainstanciacioacuten de la clase principal FlingTheSheepMain cuando se pone en marcha el videojuego

Paacutegina 28 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaWorldGameController Esta clase contendraacute la loacutegica del videojuego

AudioManager Clase destinada para controlar la reproduccioacuten de efectos de sonido y audio delvideojuego

Charcater Es la superclase que describe los comportamientos comunes de los personajes deella se extienden los personajes principales y los enemigos

Sheep Clase que representa el personaje principal

Wolf Clase que representa a los enemigos

AbstractGameObject Esta superclase recoge todos los comportamientos comunes de losobjetos del juego por objetos se entiende todos los componentes que forman el escenario delvideojuego De esta clase se extienden todos los objetos del videojuego

Grass Hierba que apareceraacute en el escenario

Flower Flores que apareceraacuten en el escenario

ThePen Establo donde hay que hacer llegar las ovejas

DoorPen Puerta del establo esta se abriraacute y se cerrara aleatoriamente

Hole Agujeros en el escenario

WoodFenceForest Valla de madera que apareceraacute en el escenario

Como se ha comentado este diagrama de clases es un diagrama inicial por tanto lo maacutesprobable es que durante el desarrollo del videojuego se antildeadan maacutes clases al disentildeo inicialmostrado en la ilustracioacuten 6 En el apartado 55 de este documento se muestran los diagramas declases definitivos

Paacutegina 29 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria222 Diagrama de clases inicial de pantallas

ilustracioacuten 7 Diagrama de clases de pantallas

Este diagrama recoge en forma de clases las pantallas iniciales definidas del videojuego Separte de una superclase llamada AbstractGameScreen que recogeraacute las operaciones comunes detodas ellas y de esta se extienden las pantallas concretas este diagrama solo muestra laspantallas maacutes baacutesicas definidas inicialmente estas serviraacuten como base para desarrollar elconjunto de pantallas total necesarias para este proyecto y que quedan recogidas en su totalidaden el apartado 4 ldquoDisentildeordquo de esta documento

A continuacioacuten se pasan a detallar a modo resumido cada una de ellas

2221 Resumen clases pantallas

IntroScreen Clase para la pantalla de intro

MenuScreen Clase que contiene el menuacute principal del videojuego GameScreen La clase game screen es la que contiene la pantalla donde se desarrolla todo elvideojuego

Paacutegina 30 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

23 Definicioacuten de maacutequinas de estado finitas

Como ya se ha introducido en el punto 212 la IA aplicada a los videojuegos dota a estos derealismo Existen distintas teacutecnicas para la implementacioacuten de esta Una de las maacutes consolidadases el uso de maacutequinas de estados finitas ya que tienen un coste computacional casi inexistenteya que no tienen ninguacuten coste de procesamiento asignado Las maacutequinas de estados permiten deforma faacutecil definir comportamientos Es por este motivo que han sido utilizadas no solamente para definir los comportamientos de laIA del videojuego sino tambieacuten para definir los distintos estados en que se puede encontrar elvideojuego durante su tiempo de vida A continuacioacuten se detallan los distintos diagramas de lasmaacutequinas de estados utilizadas para este proyecto conjuntamente con una explicacioacuten de cadauna de ellas

231 Maacutequina de estados del videojuego

ilustracioacuten 8 Maacutequina de estados del videojuego

La ilustracioacuten 8 nos muestra los estados que puede tomar el videojuego durante su tiempo devida

Este diagrama define los estados que puede tomar el videojuego una vez iniciado inicialmente eljuego se encuentra en el estado READY de este estado existe una transicioacuten al estado GAMEcuando el tiempo de READY finaliza READY lt=0 El estado game sera el estado en donde se

Paacutegina 31 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriadesarrollara todo el juego Des de este estado podemos pasar al estado PAUSE si pulsamos elbotoacuten de pausa del juego y desde el estado PUASE volvemos al estado GAME si volvemos apulsar el botoacuten pause Finalmente desde el estado GAME haremos la transicioacuten al estado GAMEOVER si nos arrebatan todas las vidas durante la partida Desde el estado GAME OVERpodremos volver a READY si decidimos hacer una nueva partida

232 Maacutequina de estados comportamiento oveja

ilustracioacuten 9 Maacutequina de estados comportamiento oveja La ilustracioacuten 9 muestra el comportamiento del personaje principal del videojuego que en estecaso es la oveja Se define el ciclo de vida de la oveja a traveacutes de sus comportamientos

APPEAR SHEEP La oveja aparece fuera del rango visual de la pantalla y empieza a moversepara que suceda la transicioacuten hacia el siguiente estado FOREST START la coordenada x debeser menor que 220

FOREST START La oveja seguiraacute movieacutendose en un espacio determinado de la pantalla hastaque sea lanzada en unas determinadas direcciones la direccioacuten queda determinada por lasvariables velocityX velocityY estas tomaran valores positivos o negativos determinando ladireccioacuten de lanzamiento esto queda reflejado en la condicioacuten de transicioacuten del estado FORESTSTART a FOREST DEEP Si realizamos el lanzamiento en esas determinadas direccionesharemos la transicioacuten al un nuevo estado FOREST DEEP

FOREST DEEP La oveja rebota por el escenario si colisiona con la puerta del corral y estaabierta hacemos la transicioacuten al estado ON THE PEN

Paacutegina 32 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ON THE PEN Finaliza el ciclo de vida de la oveja dentro del juego esta es devuelta al corral seincrementan puntos en el marcador de puntuacioacuten y se incrementa una unidad en el contador deovejas salvadas

233 Maacutequina de estados comportamiento lobo

ilustracioacuten 10 Maacutequina de estados comportamiento lobo La ilustracioacuten 10 muestra el comportamiento de los enemigos del videojuego que en este casoson los lobos Se define el ciclo de vida del lobo a traveacutes de sus comportamientos

APPEAR EYES Antes de aparecer los lobos a escena apareceraacuten sus ojos entre los matorralesdel bosque Cuando acaba el tiempo pasa al siguiente estado tiempo ojos lt= 0

APPEAR WOLF En este estado se seleccionara el tipo de lobo (habraacute 3 tipos distintos) el ladode la pantalla por donde apareceraacute posicioacuten y velocidad de salto como tambieacuten el tiempo ensegundos que tardara a saltar al escenario Una vez seleccionados todos estos paraacutemetros haraacutela transicioacuten al estado WHEN JUMP

WHEN JUMP Este estado simplemente esperara que pase el tiempo para que el lobo salte alescenario Un vez pase el tiempo el lobo apareceraacute en el escenario pasando a la transicioacuten JUMPON SCENE

JUMP ON SCENE En este estado se efectuara el salto a escena del lobo este saltara desde los

Paacutegina 33 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriamatorrales laterales de la pantallahacia el escenario dibujando un arco convexo Para realizar elsalto nos apoyaremos en la representacioacuten del calculo de la funcioacuten trigonomeacutetrica cosenosolamente en sus valores positivos por tanto cuando cosy lt 0 haremos la transicioacuten al estadoMOVE ya que el salto habraacute finalizado

MOVE En este estado los lobos se moveraacuten y podraacuten ser ahuyentados pulsando repetidas vecesencima de ellos las veces a pulsar queda sujeta al tipo de lobo que sea Des de este estadopodremos hacer a dos estado distintos dependiendo de lo que suceda Si conseguimos ahuyentaral lobo pasaremos al estado WOLF SCARED Si por el contrario el lobo atrapa a la ovejaharemos la transicioacuten al estado SHEEP TRAPPED en ambos estados finalizara el ciclo de vidadel lobo

WOLF SCARED Se habraacute ahuyentado el lobo se incrementa en uno el contador de lobosahuyentados y se suman puntos a la puntuacioacuten total En este estado finaliza el ciclo de vida dellobo

SHEEP TRAPPED El lobo habraacute atrapado una oveja se nos restara una vida En este estadofinaliza el ciclo de vida del lobo

234 Maacutequina de estados tutorial in game

ilustracioacuten 11 Maacutequina de estados tutorial in game La ilustracioacuten 11 muestra los distintos estados que toma el mini tutorial in game que apareceraacute laprimera vez que se juega En este las transiciones entre estados suceden de forma automaacutetica

Paacutegina 34 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriacada 5 segundos desde que se ha activado el primer estado Cada estado corresponderaacute a unacaja de texto mostrada en pantalla

3 Disentildeo

31 Estudio comparativo

Un estudio realizado en 2011 por la empresa Newzoo httpwwwnewzoocom empresainternacional dedicada a los estudios de mercado y enfocada por completo a la industria de losvideojuegos Ha realizado la primera encuesta a jugadores espantildeoles y una de las cosas que dicees La suma del volumen de negocio de juegos online (redes sociales juegos casualesjuegos para moacuteviles juegos MMO) superaraacute al del consumo en juegos para consolas en2011 Se puede ver un resumen del estudio en liacutenea en

httpwwweurogameresarticles2011-10-26-espana-gastara-1-600-millones-de-euros-en-videojuegos-en-2011

Con esta informacioacuten se puede ver que hacer un videojuego casual para una plataforma moacutevilcomo Android puede ser muy viable

Para este proyecto se realizaraacute un estudio comparativo (benchmarking) En la industria de losvideojuegos es habitual sacar tiacutetulos fijaacutendose en otros tiacutetulos que han conseguido gran eacutexito enel mercado La operativa consiste en mejorarlos dentro de otro contexto o hacer un videojuegocompletamente diferente pero basaacutendose en ocasiones en mecaacutenicas de alguacuten otro tiacutetulo que haconseguido un gran eacutexito

Existen en Google Play gran cantidad de juegos casuales que pueden servir como inspiracioacuten ycomo punto de inicio para hacer un planteamiento general de coacutemo disentildear el producto que sequiere desarrollar partiendo de los requisitos definidos en el apartado 131 de este documento Setomaraacuten como referencia algunos tiacutetulos para identificar patrones para ver coacutemo otros hansolucionado ciertas situaciones como pueden ser problemas de disentildeo o interaccioacuten entre otrosEn ninguacuten caso deberaacuten ser exactamente de la misma temaacutetica pero si que se miraraacute que seandel mismo tipo es decir casual games

El primer paso para realizar este estudio a sido ir a Google play y verificar si hay alguacuten juego conel mismo nombre que el que se pretende desarrollar ldquoFling the sheeprdquo No existe ninguacuten juego adiacutea de hoy con este nombre

El segundo paso a sido buscar tambieacuten en Google play videojuegos en los que aparezcanovejas solo poniendo en el buscador la palabra sheep nos aparecen muchiacutesimos juegos quetienen una temaacutetica donde aparecen ovejas Se ha verificado tambieacuten poniendo combinaciones depalabras relacionadas con el juego que se quiere implementar palabras como sheep wolves o sheep farm etc los resultados obtenidos son bastante elevados

Por la cantidad de juegos encontrados y los recursos de que se dispone como por ejemplo eltiempo no es posible analizarlos todos Si que se tomaran algunos juegos despueacutes de hacer unrepaso de los maacutes destacados Hay que decir que despueacutes de haber instalado algunos alguno deellos no ha acabado de funcionar correctamente en el dispositivo moacutevil

Tras estos pasos se escogeraacuten dos videojuegos de temaacutetica similar y dos videojuegos detemaacutetica diferente Los videojuegos escogidos para realizar el anaacutelisis comparativo son

Paacutegina 35 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria311 Sheep amp Wolf

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 12 y 13 pantallas juego Sheep amp Wolf Link httpsplaygooglecomstoreappsdetailsid=jscompanygamesSheepAndWolf_enter3

El juego consta de una mecaacutenica muy simple disponemos de un boomerang y un corazoacuten laperspectiva del juego es elevada y vemos coacutemo van bajando ovejas y lobos de forma aleatoria setrata de forma taacutectil dibujar la trayectoria del boomerang para eliminar los lobos sin tocar lasovejas y con el corazoacuten dibujar una trayectoria de forma taacutectil para tocar las ovejas y no los lobosconforme vamos tocando los lobos y las ovejas con el correspondiente objeto iremos sumandopuntos

Tiene cierta similitud con el que se quiere implementar ya que salen tambieacuten lobosovejas ytambieacuten que lo que se pretende implementar funcionara de forma taacutectil para lanzar las ovejas alcorral y ahuyentar a los lobos que amenazan a las ovejas

Tiene una perspectiva de caacutemara igual a la que se quiere implementar Tiene una mecaacutenica dejuego muy sencilla las opciones que ofrece son muy definidas y claras 3 botones al inicio deljuego grandes que nos indican las posibles opciones que tenemos dentro del juego Game StartGame Record Exit Un punto interesante de este juego es que las puntuaciones no se guardan anivel local de la aplicacioacuten sino que son compartidas en una pagina web asiacute se pueden ver laspuntuaciones a nivel mundial La navegacioacuten por las diferentes pantallas es correcta

Quizaacute un aspecto negativo del juego seriacutea que visualmente esta muy poco cuidado Aunque aveces si el juego produce mucha adiccioacuten el aspecto visual puede quedar en segundo teacutermino enjuegos para dispositivos moacuteviles En otros tipos de plataformas como consolas o PC el aspectovisual es un punto muy importante y que se debe trabajar mucho maacutes a fondo no obstante estono significa que en un dispositivo moacutevil no deba estarlo

Paacutegina 36 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez adictivo puntuaciones a nivel mundial Navegacioacuten correctaPuntos Negativos Poco cuidado visualmente no tiene pausaObservaciones No tiene un final definido a medida que avanzamos la dificultad aumenta

312 Sheep Up

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 14 y 15 pantallas juego Sheep Up Linkhttpsplaygooglecomstoreappsdetailsid=compgpublishandroidsheepuplive

A diferencia del anterior este visualmente esta mucho maacutes cuidado Es un juego en 3D dondeuna oveja de juguete esta guardada dentro de una caja de cartoacuten Va botando y tiene que irrecogiendo botones e ir subiendo por diferentes niveles para poder salir de la caja es un juego deplataformas tambieacuten con una mecaacutenica bastante sencilla

Este dispone de una pantalla que dura unos segundos y seguidamente sale el menuacute de opcionesdel juego a diferencia de lo visto anteriormente donde directamente saliacutea el menuacute de opcionesde juego El menuacute de opciones de juego tambieacuten es muy directo y claro Aparte del botoacuten playpara iniciar el juego el botoacuten opciones para configurar el audio del juego los efectos el idioma yver los creacuteditos Tiene el botoacuten store donde este juego tiene implementada la modalidad freemiumpara ir comprando diferentes objetos dentro de el que nos daraacuten ciertas ventajas dentro delgameplay La compra se podraacute realizar con monedas virtuales (los botones) que los habremos idorecogiendo durante los diferentes niveles jugados o tambieacuten podemos comprar cantidadesdeterminadas de botones a cambio de dinero de verdad Dispone de vinculacioacuten a redes socialescomo Twitter y Facebook

Puntos Positivos Sencillez adictivo vinculado a Twitter y el Facebook el juego se puede pararNavegacioacuten correctaPuntos Negativos La pantalla inicial tarda demasiado en desaparecer y no da ninguacuten tipo de

Paacutegina 37 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriainformacioacuten al usuario puede llegar a parecer que se a colgado debido al largo tiempo que tardaal menos con el dispositivo que se ha verificado

313 Temple Run

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 16 y 17 pantallas juego Temple runLinkhttpsplaygooglecomstoreappsdetailsid=comimangitemplerun Es un juego que no tiene final donde un explorador tiene que evitar la muerte superandodiferentes obstaacuteculos a traveacutes de diferentes pasillos tendremos que dibujar diferentes trazos deforma taacutectil para que el personaje gire salte o se deslice por el suelo al mismo tiempo tendremosque inclinar el teleacutefono para que el personaje vaya recogiendo monedas que podremos utilizarpara adquirir objetos y mejoras en la partida A medida que vamos recorriendo maacutes y maacutes metrosla dificultad aumenta y nos obligara a realizar maacutes acciones en un espacio de tiempo maacutes cortoasiacute pues los reflejos juegan un papel importante

Tambieacuten dispone de una pantalla que dura unos segundos seguida de un menuacute de opciones muyclaro y definido Este igual que el anterior dispone de una tienda donde se pueden comprarmejoras (potenciadores) con dinero virtual o real Los botones de inicio son muy similares al delanterior juego visto Dispone de vinculacioacuten a redes sociales como Twitter

Puntos Positivos Sencillez Adictivo vinculado a Twitter el juego se puede parar NavegacioacutencorrectaPuntos Negativos -

Paacutegina 38 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria314 Attack of the Spooklings

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 18 y 19 pantallas juego Attack of the SpooklingsLinkhttpsplaygooglecomstoreappsdetailsid=compicarogamesspooklings_free

Finalmente nos centramos en este casual con aspecto visual retro Otro juego que no disponede final y donde la dificultad va aumentando conforme el tiempo de juego aumenta El objetivo deljuego es matar a todos los Spooklings que quieren atacar nuestro poblado La forma de matar alos Spooklings es con el dedo deslizaacutendolo sobre la pantalla soacutelo que un Spookling llegue anuestro poblado en la parte inferior de la pantalla la partida finaliza Debemos evitar de todas lasformas posibles que lleguen a la parte inferior de la pantalla

Tambieacuten dispone de una pantalla de inicio y un menuacute inicial de juego claro y directo no disponede ninguna vinculacioacuten a redes sociales El juego no se puede parar La navegacioacuten por todas laspantallas es correcta teniendo pantalla de puntuaciones maacutes altas pantalla con mini tutorial decoacutemo jugar y unas opciones para configurar el audio y ver los creacuteditos del juego Sin embargo adiferencia de los otros tiene algunas fallas de disentildeo a nivel de transiciones entre pantallas yfuncionalidades baacutesicas que aparentemente no tienen mucho sentido Fuera de la pantalla dejuego no es posible abandonar la aplicacioacuten de ninguna de las maneras no hay botoacuten de salida yla tecla de ir hacia atraacutes no funciona la uacutenica manera de salir es matando el proceso Por otrolado durante la partida con el botoacuten de ir atraacutes conseguimos hacer pausa del juego pero de unaforma que no estaacute anunciada al usuario de ninguna manera con alguacuten icono visual que informa alusuario de la funcionalidad Una vez parado el juego con una tecla que no estaacute indicada enninguna parte como tal nos da dos opciones RESTART y QUIT con QUIT salimos de la aplicacioacutenalgo que no se puede hacer en ninguacuten otro punto de la aplicacioacuten Con RESTART vuelve aempezar la partida y se pierde la que teniacuteamos empezada En resumen si pulsamos este botoacuten noestaacute anunciado en ninguna parte por accidente durante una partida perdemos la partida ya que notenemos la opcioacuten de continuar puesto que o volvemos a empezar o salimos de la aplicacioacuten

Paacutegina 39 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez Muy adictivoPuntos Negativos Errores en el disentildeo de menuacutes y transiciones entre pantallas no tienevinculacioacuten a redes sociales no tiene pausa

Todo lo que se ha visto en este estudio comparativo nos da una idea de que el disentildeo que selleve a cabo debe cumplir las siguientes metas tener una mecaacutenica de juego adictiva y sencillaque la disposicioacuten de opciones e iconos han ser claras y dejar claro al usuario de forma visual queacutefuncionalidad tienen las transiciones y operativas baacutesicas deben estar bien indicadas eimplementadas El disentildeo visual debe ser lo mas cuidado posible aunque a veces en juegos paraeste tipo de dispositivos no es el que maacutes domina sobre todo si el juego tiene una mecaacutenica muyadictiva aunque si se consiguen las dos cosas mucho mejor Otro punto importante es tener unamecaacutenica freemium implementada dentro del juego con una tienda para comprar mejorasaplicables a la mecaacutenica de juego Otro punto importante es la vinculacioacuten del juego a redessociales y que recoja puntuaciones a nivel mundial y no locales del dispositivo todos estosingredientes le pueden dar al juego un plus que haga que el usuario vea el juego maacutes atractivo

Debido a temas de tiempo inicialmente se descarta para este proyecto la implementacioacuten de lassiguientes funcionalidades dentro del videojuego las puntuaciones a nivel mundial estas demomento quedaraacuten sujetas a nivel local del dispositivo tambieacuten se descarta la vinculacioacuten a redessociales y mecaacutenicas freemium

El resto de puntos comentados como las mecaacutenicas sencillas y adictivas aspecto visual lo maacutescuidado posible dentro de los recursos de que se dispone y la navegacioacuten entre pantallas ymenuacutes claros y sencillos seraacute lo que se transportaraacute al disentildeo y la posterior implementacioacuten delproyecto Es posible que durante la implementacioacuten del disentildeo mostrado en este documento semodifiquen algunos puntos por temas de balanceo y equilibrio del producto final

32 Perfiles de usuarios identificados

Los juegos casuales son juegos con mecaacutenicas simples Este hecho hace que esteacuten al alcancede cualquier usuario aunque eacuteste no sea un jugador experimentado acostumbrado a utilizar juegoscon mecaacutenicas maacutes complicadas que requieren de cierta experiencia previa Al mismo tiempo sonjuegos que pueden ser jugados en cortos espacios de tiempo Por tanto el tipo de usuario deestos juegos sera muy variado Podemos encontrar el perfil de usuario experimentado tanto enlas tecnologiacuteas como en los videojuegos y que tiene intereacutes por cualquier tipo de juego Y por otrolado encontramos el usuario poco experimentado pero que gracias a los smarphones y lasencillez de las mecaacutenicas de juego provoca que tambieacuten juegue

Todos tendraacuten un objetivo comuacuten pasar un rato jugando al juego Para mejorar su uacuteltimo reacutecordAunque en este tipo de juegos el usuario tambieacuten puede jugar sin buscar ninguacuten tipo de metaconcreta simplemente pasar un rato divertido sin necesidad de alcanzar ninguacuten tipo de reacutecord niobjetivo concreto Tambieacuten es importante mencionar que aunque los perfiles de usuarios son muyvariados existe una fuerte tendencia a que los jugadores de este tipo de juegos tiendan a sermaacutes grandes que los jugadores de otros tipos de videojuegos y suelen tener un intereacutes y tiempolimitado tanto para jugar como los videojuegos en general siendo normalmente del sexofemenino

Se detectan dos grandes grupos de perfiles de usuario los experimentados en jugar avideojuegos y los no experimentados en jugar videojuegos edades diferentes profesionesvariadas educacioacuten variada sexo variado Los usuarios de Android en general suelen pagarmucho menos por aplicaciones que otros grupos de usuarios como los de iphone por ejemplo

Paacutegina 40 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Los haacutebitos de consumo en los estados unidos ya no de los usuarios de juegos casuales sinode los usuarios de Android en general se definen de la siguiente manera soacutelo un 4 de estospaga por descargar una aplicacioacuten contra un 23 y un 31 de los usuarios de la App Store paraiPhone y iPad respectivamente tal y como muestra un estudio realizado por la empresa Statistacon las 100 aplicaciones maacutes descargadas

ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitasSe puede ver en linea en el link httpwwwstatistacomtopics983mobile-app-monetizationchart1400paid-apps-don-t-stand-a-chance-on-google-play

Se puede ver otro articulo similar en el siguiente link

httpwwwwayerlesscom201307usuarios-de-android-pagan-menos-por-apps-que-los-de-ios

La mayoriacutea de aplicaciones gratuitas utilizan la modalidad freemium que no es maacutes que ofrecerun producto baacutesico de forma gratuita y cobrar a los usuarios por opciones maacutes avanzadas oespeciales dentro de la misma aplicacioacuten No obstante tambieacuten es posible encontrar aplicacionescompletamente gratuitas sin la modalidad freemium

Como ya se ha dicho se han detectado inicialmente dos grandes grupos dentro de la masa deusuarios que son consumidores potenciales de juegos casuales Estos son los usuarios asiduos ajugar videojuegos de todo tipo y con experiencia en el uso de tecnologiacuteas en general es decirusuarios experimentados Por otro lado encontramos los que no tienen costumbre de jugar muchoy normalmente tampoco tienen una gran experiencia en el uso de tecnologiacuteas en general pero

Paacutegina 41 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debido a la simpleza de los videojuegos casuales eacutestos tambieacuten se convierten en jugadores yen muchas ocasiones se convierten en los usuarios que consumen maacutes este tipo de juegos Asiacutepues encontramos dos grandes grupos seguacuten unas caracteriacutesticas comunes experiencia previa osin experiencia ante los videojuegos y las tecnologiacuteas

33 Contextos de uso

331 iquest Doacutende

Al tratarse de un casual game para un dispositivo moacutevil el espacio de utilizacioacuten seraacute muyvariado Por tanto los usuarios podraacuten encontrarse en muchos lugares distintos como puedenser en casa en el tren en el metro en el autobuacutes al aire libre etc En definitiva el usuario podraacuteencontrarse en cualquier lugar

332 iquest Cuaacutendo

El tipo de juegos casuales tienden a ser juegos donde los usuarios realizan partidas cortas peroal mismo tiempo la naturaleza adictiva de estos hace que los usuarios puedan quedar atrapadosdurante varias horas repartidas en ratos diferentes o continuados dependiendo de la situacioacuten decada usuario Por tanto el cuaacutendo de este tipo de juegos puede ser muy variado casi en cualquiermomento que el usuario pueda dedicarle unos minutos o ratos maacutes largos durante su tiempolibre mientras se desplaza ya sea en tren en metro o en alguacuten otro medio de transporte que nonecesite estar pendiente del vehiacuteculo cuando esta en la cama etc

333 iquest En que entorno

Los entornos de utilizacioacuten pueden tambieacuten ser muy variados promovidos por doacutende y el cuaacutendoPor lo tanto el entorno tecnoloacutegico podraacute tambieacuten ser variado puede existir o no conexioacuten a lared en un entorno social muy diferente que podraacute ser maacutes privado o maacutes puacuteblico yconsecuentemente se dibujaraacute un entorno ambiental variado seguacuten el momento

4Disentildeo y ldquoConcept Artrdquo

41 Elementos presentes en la interfaz de la aplicacioacuten

Con todo lo que se ha visto en el apartado 31 estudio comparativo queda patente que la interfazde usuario debe ser clara y sencilla Seraacute necesario que contenga las siguientes pantallas

bull Pantalla de intro inicial que apareceraacute durante un segundobull Pantalla menuacute inicial del juego con las opciones Play Scores Options () How to play bull Pantalla de nivel donde se desarrolla el videojuegobull Pantalla high scores que mostrara la tabla de reacutecords con las 10 puntuaciones maacutes altasbull Pantalla how to play instrucciones de como jugar tambieacuten se integraran dentro del

videojuego y apareceraacuten durante la primera partida que se jueguebull Pantalla opciones podremos activar y desactivar el sonido y los efectos de audio A su vez

desde esta pantalla podremos acceder a la pantalla de creacuteditosbull Pantalla de creacuteditos pantalla doacutende se mostraran lo creacuteditos del videojuego bull Pantalla Ready pantalla de juego con el mensaje sobre impreso antes de empezar a

jugar apareceraacute durante 3 segundosbull Pantalla con los botones resume quit sobreimpresos en la pantalla de juego se accederaacute

Paacutegina 42 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaa ella con el botoacuten de pausa pausando el juego Desde ella podremos reanudar el juego oabandonar el juego

bull Pantalla game over con el resumen de los reacutecords conseguidos durante la partidapuntostiempo jugado numero de lobos ahuyentados y ovejas colocadas en el corralDesde esta pantalla tendremos dos botones Play again y Exit uno nos permitiraacute volver ajugar y el otro nos permitiraacute abandonar el juego tal y como su nombre indica

42 Flujos de interaccioacuten

En la siguiente ilustracioacuten se muestran los flujos de interaccioacuten definidos con las pantallasenumeradas en el apartado anterior Los flujos muestran la navegacioacuten que debe existir entre laspantallas del videojuego

ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintaspantallas

Paacutegina 43 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

43 Prototipaje

431 Sketches

En este apartado se muestran los primeros esbozos realizados a mano alzada estos intentanplasmar el disentildeo del juego en su totalidad Estos esbozos serviraacuten como punto de partida en unasegunda fase para realizar el prototipaje de todas las pantallas que intervienen en el videojuegoutilizando todo el material recopilado en la red

Tal y como ya se ha dicho en este mismo documento anteriormente no se dispone deconocimientos de disentildeo suficientes como para abordar un disentildeo de arte desde cero Por lo tantose han utilizado recursos ya disponibles en la red para el montaje de todos los graacuteficos delvideojuego Todos los recursos utilizados estaacuten bajo licencias creative commons o dominio puacuteblico A continuacioacuten se muestran los bocetos

ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 44 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 45 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada

En la siguiente paacutegina se muestran las transiciones definidas entre pantallas con los sketchesrealizados ilustracioacuten 241 Las transiciones toman como base el diagrama de flujos deinteraccioacuten definido en el apartado 42 de este documento ver ilustracioacuten 21

Paacutegina 46 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria432 Transiciones definidas entre pantallas

ilustracioacuten 241 Transiciones definidas entre pantallas

Paacutegina 47 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria433 Prototipo horizontal de alta fidelidad

4331 Pantalla inicial

Pantalla de inicio al ejecutar el juego apareceraacute esta pantalladurante un segundo

4332 Pantalla menuacute principal del juego

Pantalla de menuacute principal del juego desde esta pantallapodremos empezar a jugar (botoacuten Play) consultar la tabla depuntuaciones (botoacuten Scores) e ir a la pantalla de opciones deljuego (botoacuten Options) El interrogante de la parte inferiorderecha nos serviraacute para ir a la pantalla de instruccionesHOW TO PLAY para saber coacutemo se juega

Paacutegina 48 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4333 Pantalla de opciones

La pantalla de opciones nos permitiraacute deshabilitar la muacutesicadel juego y los efectos sonoros pasando el dedo sobre losiconos del altavoz y las notas musicales con el altavozdeshabilitaremos la muacutesica y con las notas musicalesdesactivaremos los efectos de audio La flecha naranja nosconduciraacute de nuevo a la pantalla de inicio del juego el botoacutencreacuteditos nos llevara a la pantalla de creacuteditos

4334 Pantalla de creacuteditos

Pantalla de creacuteditos en ella se muestran los nombres dequienes han disentildeado y programado el juego con la flechanaranja inferior volvemos a la pantalla de opcionesDeslizando el dedo sobre el texto se podraacute desplazar haciaarriba y hacia abajo

Paacutegina 49 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4335 Pantalla tabla de puntuaciones

Pantalla tabla de puntuaciones nos mostrara una tabla conlas 10 puntuaciones maacutes altas de todas las partidas jugadasEsta tabla se guardara de forma local en el dispositivo

4336 Pantalla de juego READY

Pantalla de juego READY Apareceraacute durante unossegundos una vez iniciada la partida Despueacutes de 3segundos pasara a la pantalla de juego que se muestra en elsiguiente apartado

Paacutegina 50 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4337 Pantalla de juego

La pantalla de la izquierda es donde se desarrollaraacute todo el gameplay en la parte superiorizquierda de la pantalla se muestran los puntos conseguidos y las vidas En la parte superiorderecha hay un botoacuten que permitiraacute pausar el juego una vez pausado mostraraacute la pantalla depausa con los botones RESUME y QUIT la pantalla se muestra en el apartado siguiente En laparte derecha se muestra otra pantalla ideacutentica a la de la izquierda donde se puede ver elgameplay baacutesico representado con flechas los lobos saldraacuten de los extremos de la pantalla yendohacia las ovejas las ovejas al mismo tiempo saldraacuten de la derecha de la pantalla y las tendremosque lanzarlas deslizando el dedo sobre ellas y lanzandolas hacia el establo La puerta se iraacuteabriendo y cerrando aleatoriamente los lobos una vez puestos en escena los podremos ahuyentardeslizando el dedo sobre ellos un nuacutemero de veces determinado en funcioacuten del color del lobocomo esta indicado en el apartado 131 de este documento

Paacutegina 51 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4338 Pantalla de pausa botones RESUME y QUIT

Pantalla de pausa que apareceraacute cuando se pause el juegoCon la opcioacuten RESUME continuaremos jugando con laopcioacuten QUIT se saldraacute de la partida y pasaraacute a la pantalla delmenuacute principal del juego descrita en el punto 322

4339 Pantalla GAME OVER

Pantalla GAME OVER apareceraacute cuando se hayanagotado todas las vidas Mostraraacute un resumen de los puntosconseguidos en la partida actual tiempo invertido en lapartida lobos ahuyentados y ovejas salvadas Con losbotones de la parte inferior podremos volver a jugar (botoacutenplay again) o salir del juego con el botoacuten exit este botoacuten nosconduciraacute a la pantalla de inicio de juego descrita en elapartado 322

Paacutegina 52 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria43310 Pantalla de instrucciones de juego HOW TO PLAY

Pantalla de instrucciones del juego nos haraacute una breveexplicacioacuten de coacutemo jugar Deslizando el dedo sobre el textose podraacute desplazar hacia arriba y hacia abajo El juegodispondraacute de unas mini instrucciones in game queapareceraacuten en la primera partida que se juegue en forma decajas de texto esta pantalla se muestra en el siguienteapartado

43311 Pantalla de instrucciones in game

Esta pantalla muestra el modo como quedaraacuten integradaslas instrucciones de juego dentro del gameplay Estasinstrucciones apareceraacuten solamente la primera vez que sejuegue

Paacutegina 53 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Todo el disentildeo mostrado en este apartado ha sido realizado con todos los recursos encontradosen la red todos ellos quedan recogidos en el apartado 6 Con el programa Gimp se ha montadotodo el disentildeo de alta fidelidad mostrado en este apartado Se ha trabajado con capas paradisponer de flexibilidad en la construccioacuten del disentildeo A su vez el hecho de tener los disentildeos porcapas nos permitiraacute poderlo exportar a la implementacioacuten del videojuego de una manera coacutemoday raacutepida en el apartado 5 implementacioacuten se hace referencia a como convertir el disentildeo realizadoen capas a recursos graacuteficos del videojuego

En la siguiente ilustracioacuten se muestra una captura del disentildeo de la pantalla de juego descrita enel apartado 4337 realizado con Gimp

ilustracioacuten 242 Disentildeo pantallas con Gimp

Paacutegina 54 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

5Implementacioacuten

51 Arquitectura global

511 Arquitectura del framework libGDX

LibGDX es un framework multiplataforma que actualmente soporta WindowsLinuxMac OS XAndroid iOS y HTML5 Esto permite escribir el coacutedigo una sola vez y desplegarlo en las distintasplataformas comentadas sin tener que modificar el coacutedigo LibGDX permite bajar a maacutes bajonivel si se desea ya que da acceso directo al sistema de ficheros dispositivos de entrada desonido y a OpenGL a traveacutes de la interfaz unificada OpenGL ES11 y 20

LibGDX ofrece a su vez un conjunto de APIs que ayudan en las tareas comunes de desarrollode videojuegos como son la presentacioacuten de sprites texto la creacioacuten de interfaces de usuario lareproduccioacuten de efectos de sonido y secuencias musicales y los distintos tipos de caacutelculosnecesarios en la programacioacuten de videojuegos

En algunas ocasiones LibGDX deja de lado el lenguaje Java y recurre a coacutedigo nativo paraconseguir un mejor rendimiento No obstante todas estas funciones quedan ocultas detraacutes de lasAPIs de Java De manera que en el momento de desarrollar un videojuego no hay quepreocuparse de realizar una compilacioacuten cruzada entre Java y C++

LibGDX es un framework maacutes que un motor de videojuegos que ayuda al desarrollo de estosgracias a las abstracciones de gran alcance que ofrece y deja en manos del programador elegircomo escribir su videojuego o aplicacioacuten

512 Visioacuten de los moacutedulos de libGDX

LibGDX comprende varios moacutedulos que proporcionan los servicios necesarios para crear laarquitectura tiacutepica de un videojuego

ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en unvideojuego

Paacutegina 55 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaA continuacioacuten de describen los moacutedulos mostrados en la ilustracioacuten 25

Input Proporciona un modelo de entrada unificado para todas las plataformas Soporta tecladopantalla taacutectil aceleroacutemetro y ratoacuten si esta disponible

Graphics Permite el dibujo de las imaacutegenes en pantalla usando el hardware proporcionado por laimplementacioacuten de Open GL ES las versiones soportadas son GL versioacuten 10 11 20

Files Proporciona los meacutetodos necesarios para las operaciones de lectura escritura totalmenteindependientes a los medios de comunicacioacuten existente

Audio Proporciona las herramientas necesarias para la reproduccioacuten de sonido para todas lasplataformas

Math Moacutedulo que proporciona los caacutelculos matemaacuteticos necesarios orientados al desarrollo devideojuegos

Physics LibGDX proporciona un wrapper completo al motor de fiacutesicas en 2D open sourcedesarrollado en C++ llamado Box2D

52 Arquitectura de un videojuego

521 Programa vs Aplicacioacuten

Una aplicacioacuten convencional sigue una secuencia loacutegica lineal reacciona cuando sucede alguacutenevento es decir responde a eventos como por ejemplo cuando se pulsa una tecla Por el contrarioun videojuego es maacutes complejo hace caacutelculos y dibuja en pantalla constantemente aunque no seproduzca ninguacuten evento

522 Estructura baacutesica de un videojuego

Programar videojuegos es una forma completamente diferente de programar software Ladiferencia principal entre una aplicacioacuten convencional y un videojuego radica en la gestioacuten deeventos tal y como se ha indicado anteriormente un programa ofrece respuestas a eventos y unavez son servidos permanece a la espera de una nueva orden en cambio un videojuego es unprograma que debe actuar en tiempo real tiene que estar haciendo caacutelculos y dibujando enpantalla constantemente No se puede esperar a que suceda un evento para poder actuaraunque el jugador no haga nada no presione una sola tecla no mueva el ratoacuten el juego tiene quecalcular el tiempo que lleva jugando en ese nivel si le va a atacar alguacuten enemigo si estaacute cargandoenergiacutea y por supuesto dibujar en pantalla todo lo que va sucediendo

La mayoriacutea de videojuegos estaacuten construidos bajo la misma estructura baacutesica sobre la cual correel programa Esta estructura puede tener variaciones pero de forma general se presenta de lasiguiente manera

Inicializacioacuten En esta primera etapa el juego se situacutea en su estado inicial Se realizan lasinicializaciones por lo que respecta a las libreriacuteas o motores que vayan a utilizarse de variables yestructuras de datos referentes a los atributos de las entidades o personajes escenariosconfiguraciones etc y de los diferentes recursos fiacutesicos que vayan a emplearse tales comograacuteficos o sonidos

Paacutegina 56 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Ciclo de juego En esta parte esta toda la accioacuten este ciclo se repite de manera indefinida hastaque el jugador pierda gane o salga del juego Este punto se puede dividir en tres partes quepodemos llamarlas entrada proceso y salida

Como entrada se entiende el punto donde se captura todo lo que hace el jugador comopresionar los botones de control mover el ratoacuten presionar las flechas del teclado tocar la pantallataacutectil y el resto de informacioacuten que recibe el juego

En la parte de proceso es donde se procesa toda la informacioacuten que se recibioacute en la entrada ytiene lugar la loacutegica del videojuego Por tanto es donde se realizan los caacutelculos de fiacutesicas si eljuego los requiere asiacute como tambieacuten los caacutelculos de la inteligencia artificial de esteconjuntamente con el tratamiento graacutefico

La salida es la encargada de enviar al jugador toda la informacioacuten que se ha procesado en laetapa anterior proceso Se muestra al jugador el resultado de lo que hizo con la visualizacioacuten enpantalla del estado actual del videojuego Tambieacuten es en este punto donde se hace sonar lamuacutesica y efectos de sonido

Por uacuteltimo y fuera del ciclo de juego esta la parte de finalizacioacuten esta parte es la encargada deliberar todos los recursos y memoria utilizada durante el transcurso del videojuego

Es importante diferenciar estas tres etapas del ciclo del videojuego y ver queacute tarea se delega encada una de ellas en la entrada tan soacutelo nos ocupamos de captar los posibles eventos el procesose encarga en primer lugar de procesar la entrada y maacutes adelante de la loacutegica del videojuego ypor uacuteltimo la capa de salida se encarga de visualizar y reproducir la muacutesica

Con estos puntos claros se puede mostrar la estructura principal de un videojuego En elsiguiente apartado se muestra esta estructura baacutesica a modo de esquema

Paacutegina 57 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

53 Esquema de la estructura baacutesica de un videojuego

Inicializacioacuten Creacioacuten de estructuras dedatos carga de recursos graacuteficos y sonidos

Entrada Gestioacuten de pantalla taacutectiljoystick teclado

Proceso Lanzamos una oveja al corralrebota la oveja salta un lobo al escenarioetc

Salida Mostrar graacuteficos y reproducirsonidos

ilustracioacuten 26 Estructura baacutesica de unvideojuego

Finalizacioacuten Liberar recursos

Paacutegina 58 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

54 Patrones de disentildeo

541 Introduccioacuten

En el disentildeo de cualquier aplicacioacuten como por ejemplo un videojuegono es posible abordarlo porcompleto El proceso de disentildeo de una aplicacioacuten suele ser iterativo y se realiza en diferentesetapas de forma que se vaya refinando con el tiempo Conseguir un disentildeo perfecto a la primeraes muy difiacutecil de conseguir El disentildeo de aplicaciones es complejo y la maacutes importante y que maacutesimpacto tiene no soacutelo sobre el producto final sino tambieacuten sobre su vida futura Ya que es en eldisentildeo en donde se definen las estructuras y entidades que se van a encargar de resolver elproblema planteado Como de bien se definan estas estructuras y entidades influiraacute en granmedida en el eacutexito o fracaso del proyecto y en la viabilidad de su mantenimiento

Los patrones de disentildeo son formas reconocidas y probadas de resolver problemas de disentildeo queson recurrentes en el tiempo No es maacutes que basarse en experiencias anteriores en problemassimilares aplicado soluciones probadas anteriormente en determinados contextos para alcanzarun mejor disentildeo maacutes raacutepidamente

Existen distintos patrones para distintos problemas de disentildeo No obstante en este documentosoacutelo se haraacute hincapieacute en los patrones utilizados para este proyecto Quedando fuera del alcancede este documento los demaacutes patrones existentes

542 Patrones de creacioacuten

Estos patrones nos proporcionan una solucioacuten relacionada con la construccioacuten de clases objetosy otras estructuras de datos Algunos ejemplos de patrones pueden ser Abstract Factory BuilderSingleton estos ofrecen mecanismos de creacioacuten de instancias de objetos y estructurasescalables dependiendo de las necesidades

543 Singleton

Para este proyecto se ha utilizado este patroacuten ya que era necesario tener una uacutenica instancia dealgunas determinadas clases En java cuando se utiliza el operador new es posible crear unainstancia de un objeto No obstante a veces es necesario tener una uacutenica instancia de un objetopor ejemplo para poder acceder a ella des de cualquier punto de la aplicacioacuten Seria un ejemplolapelota de un juego de pinball en donde podriacutea ser conveniente mantener una uacutenica instancia deeste objeto

La solucioacuten para garantizar que solo existe una instancia de un objeto se consigue impidiendoque ninguna otra clase pueda acceder al constructor por este motivo de declara el constructorcomo miacutenimo de forma protegida o privada y se proporciona un uacutenico punto (controlado) en dondese proporciona la uacutenica instancia En la siguiente ilustracioacuten se muestra el diagrama de clases delpatroacuten Singleton

ilustracioacuten 27 Singleton

Paacutegina 59 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria A continuacioacuten en el listado 543 se muestra una implementacioacuten baacutesica del patroacuten Singletonutilizada en el proyecto para la clase que maneja el audio del videojuego

Listado 543

1 package comthreecometflingthesheeputil23 import combadlogicgdxaudioMusic 4 import combadlogicgdxaudioSound56 public class AudioManager 7 8 public static final AudioManager instance = new AudioManager()910 private Music playingMusic11 private Sound playingSound1213 Singleton14 private AudioManager() 15 1617 1819 public void ResunmeMusic()20 21 if(playingMusic = null) playingMusicplay()22 2324 public void PlayMusic(Music musicfloat volumeboolean loop) 25 26 if(GamePreferencesinstancemusic) return27 playingMusic = music28 musicsetLooping(loop)29 musicsetVolume(volume)30 musicplay()31 3233 public void StopMusic()34 35 if(playingMusic = null) playingMusicstop()36 3738 public void PauseMusic()39 40 if(playingMusic = null) 41 if(playingMusicisPlaying()) 42 playingMusicpause()43 44 45 4647 public void PlaySound(Sound soundfloat volume) 48 49 if(GamePreferencesinstancesound) return50 playingSound = sound51 soundplay(volume)52 5354 public void PlaySound(Sound soundfloat volumefloat pitchfloat pan) 55 56 if(GamePreferencesinstancesound) return57 playingSound = sound58 soundplay(volume pitch pan)59 60

Esta clase maneja el audio del videojuego tanto efectos de sonido como la muacutesica es una clase

Paacutegina 60 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debe estar accesible des de cualquier punto de la aplicacioacuten y no tiene ninguacuten sentido que seinstancie repetidas veces soacutelo sera necesaria una instancia de dicha clase para poder manejar losaudios y muacutesicas Como se puede ver en la linea 14 del listado 543 se declara el constructorprivado y en la linea 8 se proporciona el punto donde se proporciona la uacutenica instancia de dichaclase a traveacutes de la variable instance declarada de forma publica para que se accesible desdecualquier otra clase y a su vez declarada de forma static y final Con final le decimos que estavariable ya no puede ser modificada una vez declarada es decir sera una constante Con static leindicamos que podremos utilizar la variable instance sin la necesidad de hacer ninguna instanciacon el operador new de la clase AudioManager

Existen varias clases en el videojuego que son singleton A continuacioacuten se nombran todas ellasAudioManager Assets WorldGameController CounterTime GamePreferences

55 Diagramas de clases definitivos

Se ha dividido en varios diagramas para facilitar su lectura se pueden ver los diagramas en lossiguientes apartados de este documento A continuacioacuten se pasan a comentar las clases descritasen ellos

56 Diagramas nuacutecleo videojuego

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep-android encontramoslas siguientes clases

MainActivity Hereda de AndroidAplication que a su vez hereda de Activity es donde se crea laaplicacioacuten crea una instancia de FlingTheSheepMain

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep encontramos laclase FlingTheSheepMain donde se instancia la pantalla de intro del juego dentro del meacutetodocreate

Siguiendo el esquema estructural de un videojuego descrito en el punto 53 de este documentola ilustracioacuten 28 detalla el diagrama de clases que engloba la inicializacioacuten del juego y el ciclo devida

La Inicializacioacuten queda recogida en la clase Assets esta clase es un singleton que instanciaotras clases que a su vez guardan todos los recursos del videojuego por recursos se entiendetexturas para los graacuteficos archivos de audio ficheros con informacioacuten necesaria para el juegoUna vez inicializado el hecho de ser un singleton nos permite acceder a estas clases a traveacutes dela clase assets des de cualquier punto de la aplicacioacuten En la ilustracioacuten 29 se detallan todas estasclases que engloba la clase assets Esta clase se encuentra el el paquetecomthreecometflingthesheepgame A continuacioacuten se comenta cada una de ellas con una brevedescripcioacuten

LevelDecoration Enumera todas las texturas de los objetos de decoracioacuten del videojuego floreshierba etc Son objetos que no tienen ninguna interaccioacuten con el juego simplemente decoran

AssetFontsScene2D Engloba los tipos distintos de fuente que se utilizan en el videojuego tipode letra medida y color

AssetSound Enumera todos los efectos de sonido del juego

Paacutegina 61 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAssetMusic Contiene todas las muacutesicas del juego

FileHandleHighScores Inicializa la tabla de puntuaciones local y la actualiza cada vez que serealiza una partida de juego

LevelObjects Engloba todos los objetos que tienen interaccioacuten con el videojuego por interaccioacutense entiende objetos que pueden colisionar con otros o que tienen alguacuten papel importante dentrode videojuego no son solo objetos de decoracioacuten

Character Contiene el protagonista del juego el personaje que lleva el jugador en esta caso lasovejas

NPCs En esta clase quedan englobadas las texturas de los enemigos en esta caso los lobos

GUI En esta clase se engloban todas las texturas utilizadas para la creacioacuten de la interfaz deusuario botones imaacutegenes

La clase Constants es una clase que declara varias constates estaacuteticas que son accesibles desde cualquier punto de la aplicacioacuten y se utilizan tanto en la inicializacioacuten como en el ciclo de vidadel videojuego La podemos encontrar en el paquete comthreecometflingthesheeputil

El ciclo de vida del videojuego entrada proceso y salida queda repartido en las siguientes clases

Entrada Gestioacuten pantalla taacutectil se realiza en la clase WorldGameController en el meacutetodollamado handleInput a su vez cada personaje(character) y enemigo(NPC) gestiona su propiaentrada de eventos a traveacutes de los meacutetodos sobre escritos touchDown fling y tap Ver ilustracioacuten30 clases Sheep y Wolf

Proceso Este apartado realiza la loacutegica del videojuego y es responsable de esto el meacutetodoupdate de la clase WorldGameController Dentro de este meacutetodo existe implementada lamaquina de estados descrita en el apartado 231 con todos los estados posibles que el juegopuede tener durante su ciclo de vida los estados son READYGAMEPAUSEGAME OVER Cadapersonaje y enemigo lleva implementado su propia loacutegica y maquina de estados dentro de susclases correspondientes Ver ilustracioacuten 30 clases Sheep y Wolf estas maacutequinas de estados sonlas descritas en los apartados 232 y 233 respectivamente

Salida La salida descrita en el apartado 53 queda recogida en la clase GameScreen Verilustracioacuten 31

Finalizacioacuten La finalizacioacuten liberacioacuten de recursos queda a cargo del meacutetodo sobre escrito hiderepartido por las distintas clases de la aplicacioacuten

Otras clases que intervienen en el ciclo de juego recogidas en la ilustracioacuten 28 sonCounterTime GamePreferences AudioManager a continuacioacuten se detalla la funcionalidad decada una de ellas

CounterTime Esta clase engloba el calculo de tiempo transcurrido desde que empieza el juegohasta que termina hace la funcioacuten de contador de tiempo interno

GamePreferences Esta clase hace persistente la configuracioacuten escogida por el usuario en lasopciones Es posible configurar el juego con o sin sonido al igual que los efectos de audio estaclase es la encargada de guardar esta configuracioacuten aunque abandonemos la aplicacioacuten

Paacutegina 62 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

AudioManager Clase que se encarga tanto de la reproduccioacuten de audio como los efectos desonido es su responsabilidad interrogar la configuracioacuten actual del sonido y efectos paradeterminar si tiene que realizar la reproduccioacuten de audio o efectos asiacute como tambieacuten determinarel volumen del sonido o si un audio hay que reproducirlo de forma ciacuteclica En el listado 543 deeste documento se puede ver el coacutedigo de esta clase como ejemplo de singleton

ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego

Paacutegina 63 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 29 Diagrama de clases Assets

57 Diagrama de clases objetos videojuego

En la ilustracioacuten 30 de este documento se detalla el diagrama de clases referente a los objetosdel videojuego Por objetos se entiende personaje principal enemigos juntamente con todos loselementos que forman el conjunto del escenario del videojuego

En primer lugar cabe destacar la existencia de la clase abstracta AbstractGameObject Estaclase abstracta define los meacutetodos comunes de todos los objetos del juego Por las necesidadesde implementacioacuten no se han definido meacutetodos abstractos no obstante la clase se define comoabstracta ya que va a ser la superclase de todos los objetos del videojuego y por tanto no se van arealizar instancias de esta A continuacioacuten se enumeran las clases que se extienden de esta y querecogen todos los objetos del juego ya sean con o sin interaccioacuten en el

Paacutegina 64 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaGrass Hole Flower Flowers Stump ForestLeft ForestRight ThePen WoodFenceForestWoodFencePen DoorPen BorderGrassLeft BorderGrassRight PotionPurple AubergineRedPuddle Tree GrassField

Estas clases corresponden a los objetos que constituyen el escenario del videojuego Las clasesSheep y Wolf corresponden al personaje del videojuego y a los enemigos respectivamente estasclases no solamente contienen el meacutetodo para ser dibujadas en pantalla igual que las anterioressino que tambieacuten poseen toda la loacutegica para el comportamiento de cada una de ellas este puntocorresponderiacutea a la fase de proceso de la estructura baacutesica de un videojuego detallada en elpunto 53 de este documento Existe para cada personaje y enemigo una maquina de estadosimplementada que indica en que estado se encuentra en cada momento aplicando la loacutegicacorrespondiente para ese estado Ver las enumeraciones SHEEP_STATE y WOLF_STATE de lailustracioacuten 30 estas corresponden a las maacutequinas de estado definidas en los apartados 232 y233 respectivamente

Finalmente en la ilustracioacuten 30 aparecen las clases GameScreen y WorldGameController

La clase GameScreen como se vera en el apartado 58 es la clase que engloba todo lorelacionado con la pantalla del juego o nivel En ella se instancian todos los objetos descritosanteriormente para la creacioacuten del nivel asiacute como tambieacuten la creacioacuten de la GUI del videojuegobotones textos sobreimpresos y cajas de textos Es por este motivo que en la clase GameScreenexisten dependencias u asociaciones hacia todos los objetos dependiendo del tipo de declaracioacutende estos

La clase WorldGameController contiene la implementacioacuten de gran parte de la loacutegica delvideojuego esta clase formariacutea parte de la etapa de proceso dentro de la estructura baacutesica de unvideojuego descrita en el apartado 53 de este documento

Existe tambieacuten en esta clase una asociacioacuten hacia la clase GameScreen ya que des de la claseWorldGameController que es donde se encuentra gran parte de la loacutegica es necesario accedera la instancia de GameScreen para interactuar con varios elementos visuales que manipulan laloacutegica del videjuego

En la siguiente hoja se muestra la ilustracioacuten 30 correspondiente a todo los descrito en esteapartado

Paacutegina 65 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 30 Diagrama de clases objetos

Paacutegina 66 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

58 Diagrama de clases pantallas videojuego

En la ilustracioacuten 31 quedan recogidas todas las clases que intervienen en la creacioacuten depantallas del videjuego por pantallas se entine la pantalla de intro la del menuacute principal la deopciones etc Estas clases engloban todo lo necesario para la construccioacuten y visualizacioacuten deestas A continuacioacuten se detallan cada una de las clases

AbstractGameScreen Esta clase abstracta recoge todos los meacutetodos abstractos que sonimplementados en cada una de las clases que a continuacioacuten se detallan(pantallas) con la loacutegicanecesaria seguacuten las necesidades de cada pantalla No se crea ninguna instancia de esta clase

IntroScreen Corresponde a la pantalla de intro del videojuego descrita en el apartado 4331

MenuScreen Corresponde a la pantalla del menuacute inicial del juego des de aquiacute podemos escogersi jugar consultar la tabla de puntuaciones local ir a las opciones o a la pantalla de ayuda delvideojuego descrita en el apartado 4332 OptionsScreenPantalla de opciones descrita en el apartado 4333

CreditsScreen Pantalla de creacuteditosdescrita en el apartado 4334

HighScoresScreen Pantalla en donde se recoge la puntuacioacuten local del videojuegodescrita en elapartado 4335

GameScreen Pantalla general esta clase engloba toda la loacutegica del nivel del juego a su vezengloba la pantalla inicial de nivel READY la pantalla de pausa del juego y la de game overdescritas en los apartados 4336 4337 4338 4339

HowToPlayScreen El videojuego dispone de un tutorial in game que solo aparece la primera vezque jugamos a el y en las siguientes partidas ya no vuelve aparecer maacutes descrita en el apartado43311 No obstante existe una pantalla en donde podemos ver este tutorial fuera del juego estaclase esta destinada a contener los datos de esta pantalla descrita en el apartado 43310

TextGUI Esta clase contiene todos los textos sobreimpresos que existen en el videojuego En ellaesta la loacutegica de cada uno de estos textos para que sean posicionados y visualizados desde lasdistintas partes del videojuego

TUTORIAL_INGAME_STATE Esta enumeracioacuten enumera los estados de la maquina de estadosutilizada para mostrar el tutorial in game dentro del videojuego la primera vez que jugamos lamaacutequina de estados esta implementada dentro de la clase TextGUI la maacutequina corresponde a ladescrita en el apartado 234

En la siguiente hoja se muestra la ilustracioacuten correspondiente a todo los descrito en esteapartado

Paacutegina 67 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 31 Diagrama de clases pantallas

Paacutegina 68 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

59 Configurar el entorno de desarrollo

Antes de empezar a desarrollar juegos con libGDX es necesario instalar y configurar el entornode desarrollo Para ello se utilizaraacute Eclipse como entorno de desarrollo integrado IDE A su vez secreara un proyecto que nos serviraacute como base para el desarrollo de este

Es posible desarrollar con otros entornos distintos a Eclipse pero el hecho que Eclipse sea elentrono de desarrollo soportado oficialmente ha sido motivo suficiente para escogerlo para esteproyecto como entorno de desarrollo

591 Instalacioacuten

Para poder instalar el entorno de desarrollo nos haraacute falta primero instalar el Java DevelopmentKit(JDK) para posteriormente poder instalar eclipse

Una vez instalados seraacute necesario bajar el framework libGDX del siguiente enlace

httplibgdxbadlogicgamescomdownloadhtml

Tambieacuten sera necesario instalar el Android SDK seguidamente tendremos que ejecutar eclipse yinstalar los plugins necesarios para poder desarrollar con Android El plugin necesario paradesarrollar con Eclipse sobre Android de llama ADT (Android Developer Tools) Para instalar esteplugin debemos dirigirnos a Help--gtInstall new software tal y como muestra la siguiente ilustracioacuten

ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse

Paacutegina 69 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez el entorno de desarrollo preparado seraacute el momento de descomprimir el frameworklibGDX se recomienda descomprimirlo en la raiacutez ClibGDX en esta caso ya que trabajamos bajoWindows

Una vez descomprimido dentro de la la carpeta encontramos una aplicacioacuten llamada gdx-setup-uijar Esta aplicacioacuten nos ayuda a crear un proyecto ya configurado con las libreriacuteas necesariaslisto para ser importado a Eclipse y empezar a desarrollar con libGDX para Android O paracualquier otra de las plataformas soportadas por el framework En este caso se configura elproyecto para Android y para Escritorio de esta manera podremos verificar durante el desarrollodel proyecto los avances sin necesidad de instalarlo en un dispositivo Android ya sea fiacutesico ovirtual

Las siguientes ilustraciones muestran la configuracioacuten a realizar

ilustracioacuten 33 Creacioacuten proyecto libGDX Habraacute que pulsar en el botoacuten Create y con ello accederemos a la siguiente ilustracioacuten

ilustracioacuten 34 Creacioacuten proyecto libGDX

Paacutegina 70 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez configuradas todas las opciones le daremos al paso 4 Open the generation screen ygeneraremos el proyecto Esto proyecto sera importable a eclipse desde la opcioacuten Import delpropio IDE La configuracioacuten del proyecto tambieacuten es posible hacerla a mano no obstante esta aplicacioacutennos ahorra tiempo y posibles errores en el momento de configurarlo dentro del entorno ya quepara hacerlo a mano existen distintos pasos a seguir para conseguir lo mismo que se consiguecon esta aplicacioacuten con escasos clicks de ratoacuten

510 Traspaso del disentildeo a texturas

Todo el disentildeo realizado en el apartado 4 seraacute necesario pasarlo a texturas para posteriormenteutilizarlo en la implementacioacuten del juego como recursos graacuteficos

Una textura es una imagen digital cualquiera en cualquiera de los formatos habituales jpg pnggif tga etc Para poderla cargar dentro de un videojuego y manipularla haraacute falta una libreriacuteaespecializada para ello esto se podria programar para para el caso de este proyecto utilizamos elpropio framework libGDX para realizar esta tarea que a su vez envuelve el uso de OpenGL

Las texturas en OpenGL deben ser siempre potencias de 2163264128256 etc del contrarionos daraacute problemas y no funcionaraacute

El primer paso sera desmontar todas las capas pieza por pieza por decirlo de alguna manera ycrear ficheros de cada una de las capas de forma separada para guardarlas todas en una carpetacon un nombre identificativo Ver la siguiente ilustracioacuten

ilustracioacuten 35 Capas separadas por imaacutegenes

Paacutegina 71 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez realizado este paso deberemos juntarlas todas de nuevo en una uacutenica textura que seapotencia de 2 Trataacutendose de un juego para moacutevil las texturas no deberiacutean ser mayores de1024x1024 y no se podraacuten cargar muchas de ellas en memoria por razones obvias de recursosdel tipo de dispositivo

Para juntarlas utilizaremos una aplicacioacuten llamada Texture Packer esta nos juntara las texturasde repartieacutendola de forma que quepan en una tamantildeo de textura definido que en este caso serade 1024x1024 en caso de caber en una uacutenica textura el programa generara 2 texturas siempreoptimizadas a potencias de 2 La siguiente ilustracioacuten muestra el programa Texture packer

Ilustracioacuten 36 Texture packer El formato de salida de las textura sera png ya que necesitamos mantener el canal alpha deestas activado para los objetos sean correctamente dibujados en la escena del videojuego

Conjuntamente con la textura la aplicacioacuten nos generara un archivo de texto que contendraacute elnombre de la textura y la posicioacuten donde se encuentra dentro de la textura generada de1024x1024 Ver la siguiente ilustracioacuten en la siguiente paacutegina

Paacutegina 72 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 37 Posicioacuten texturas De esta manera podremos cargar las texturas en la fase inicializacioacuten en la clase Assets descritaen la ilustracioacuten 29 en forma de diagrama de clases

511 Implementacioacuten de las maacutequinas de estado

La implementacioacuten de las maacutequinas de estado se realiza con una estructura enumconjuntamente con una estructura switch case El siguiente listado muestra la declaracioacuten del laestructura enum implementada en la clase WorldGameController la implementacioacuten de todas lasmaacutequinas se realiza del mismo modo por tanto se toma esta como ejemplo en representacioacuten detodas las implementadas en el videojuego

Listado 5111

1 private enum GAME_STATE READYGAMEPAUSEGAME_OVER2 private GAME_STATE gameState34 gameState = GAME_STATEREADY

Paacutegina 73 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLa siguiente tabla muestra un trozo de la estructura switch case implementada en el meacutetodoupdate de la clase WorldGameController

Listado 5112

1 public void update(float deltaTime)2 3 switch(gameState)4 5 case READY6 if(audioReady) 7 AudioManagerinstancePlaySound(Assetsinstancesoundready 8 ConstantsVOLUME_AUDIO_EFFECTS)9 audioReady = false10 11 if(timeLeftShowReadyScreen gt 0)12 13 if(deltaTime lt 03f ) 14 timeLeftShowReadyScreen -=deltaTime15 16 if(timeLeftShowReadyScreen lt 0)17 18 gameScreensetVisibilityGUI()19 timeLeftShowReadyScreen = 020 CounterTimeinstancestartTime()21 22 AudioManagerinstancePlayMusic(Assetsinstancemusiclevel01 23 ConstantsVOLUME_MUSIC_GAME true)24 gameState = GAME_STATEGAME 2526 27 28 break 29 case GAME30 updateGame() 31 if(timeOpenDoorPen gt 0)32 33 if(deltaTime lt 03f ) 34 timeOpenDoorPen -= deltaTime35 36 if(timeOpenDoorPen lt= 0) 37 gameScreengetDoorPen()setVisibility(gameScreengetDoorPen()getVisibility())38

En este listado podemos ver el estado READY y un trozo del estado GAME de la maacutequina deestados definida en el apartado 231 de este documento inicialmente la maacutequina toma el estadoREADY como se puede ver en la linea 4 del listado 5111 este estado se ira repitiendo a cadavuelta del ciclo de vida del videojuego hasta que cambie el estado de juego a GAME estosucederaacute una vez transcurridos 3 segundos tal y como se puede ver en la linea 24 del listado5112 Hay que tener en cuenta que un videojuego tal y como se ha definido en el apartado 522de este documento forma un bucle infinito por tanto la funcioacuten update de la linea 1 de este listadose repetiraacute de forma indefinida durante la ejecucioacuten del nivel de juego y cada vuelta ejecutaraacute elestado en que se encuentre la maacutequina de estados

Paacutegina 74 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6Conclusiones El desarrollo del proyecto ha sido tal y como se esperaba en lineas generales no han habidograndes desviaciones de tiempo ni durante el disentildeo ni en el posterior desarrollo de este Cabedestacar que el hecho de poder probar el proyecto ejecutaacutendolo en la propia maacutequina donde se hadesarrollado sin tener que utilizar un dispositivo real o virtual cada vez que se ha querido verificarha hecho que el desarrollo sea mucho maacutes fluido que sino se hubiera contado con el escenariodescrito Esto no significa que en ciertos momentos del desarrollo no se haya probado con undispositivo real Android Dejando a parte la gran ventaja que esto significa ya que una vezdesarrollado el esfuerzo realizado nos sirve para distintas plataformas casi sin tener que tocarnada del coacutedigo

Por tanto el hecho de haber escogido libGDX para el desarrollo ha sido una buena eleccioacuten Estambieacuten una buena eleccioacuten escoger un framework o un motor focalizado al desarrollo devideojuegos si se quiere implementar uno ya sea para Android o para cualquier plataforma

Existe la posibilidad de desarrollarlo sin ninguacuten tipo de framework o motor pero hay que tenerclaro que se quiere hacer exactamente y a donde se quiere llegar es decir si lo que se quiere escentrarse en la programacioacuten de videojuegos es mucho mejor partir de un framework o motor yaque de esta forma nos desligamos de programar ciertos apartados que estaacuten maacutes focalizados a laprogramacioacuten de frameworks o motores para videojuegos que no a la programacioacuten devideojuegos en si

Yendo maacutes allaacute de donde el programador se quiere centrar existe otro factor importante a teneren cuenta en el momento de plantear un proyecto llamado tiempo con el tiempo de que se hadispuesto para este proyecto queda auacuten maacutes justificado la eleccioacuten de este framework pararealizarlo Ya que probablemente sin el debido al esfuerzo mayor en programar apartados que noson exclusivos del videojuego pudieran haber existido desviaciones de tiempo importantes enrelacioacuten al calendario propuesto

Ha quedado fuera del proyecto por temas de tiempo realizar animaciones a todos los personajesdel videojuego para conseguir una mejor experiencia de usuario y un nivel de acabado superiorFuera del proyecto tambieacuten ha quedado la implementacioacuten no solo de unas puntuacionesmaacuteximas a nivel local sino tambieacuten unas a nivel mundial consultables a traveacutes de una paacutegina webA su vez no solo guardariacutea la puntuacioacuten maacutexima sino tambieacuten el tiempo jugado las ovejassalvadas y los lobos ahuyentados Tambieacuten ha quedado fuera de este proyecto la realizacioacuten deun blog dedicado al videojuego Todos estos apartados se implementaran en breve fuera de esteTFC

7Recursos utilizados

71 Portada documento

Jake Maymar httpwwwflickrcomphotosmaymar5334789030httpcreativecommonsorglicensesby-sa20deeden

72 Recursos utilizados para el disentildeo del videojuego

Para realizar todo el disentildeo visual del videojuego se ha recurrido a diferentes fuentes de arte

Paacutegina 75 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriasujetas a licencias creative commons y dominio puacuteblico A continuacioacuten se detalla una lista decada recurso con su autor en el caso de que no haya sido publicado de forma anoacutenimajuntamente con el link donde se ha encontrado

721 Fotografiacutea pantalla intro videojuego y usuarios

Michael Karrerhttpwwwflickrcomphotosmichael_karrer78438470httpcreativecommonsorglicensesby-nc20deeden

Jodi Womackhttpwwwflickrcomphotosjodiwomack6217578512httpcreativecommonsorglicensesby20deeden

Tony Alterhttpwwwflickrcomphotos78428166N008279647916httpcreativecommonsorglicensesby20deeden

Gage Skidmore (Nina Dobrev)httpwwwflickrcomphotosgageskidmore5980906910httpcreativecommonsorglicensesby-sa20deeden

722 Iconos y botones

7221 Altavoz

Autor httpwwwiconshockcom Link httpswwwiconfindercomicons67771audio_speaker_iconsize=128Licencia Free for commercial use

7222 Nota Musical

Autor httpwwwdezinerfoliocomLink httpswwwiconfindercomicons58679music_iconsize=128Licencia Free for commercial use

7223 Flecha salida

Autorhttptayteldeviantartcom Linkhttpswwwiconfindercomicons41696arrow_back_grey_left_orange_iconsize=128LicenciaFree for commercial use (Include link to authors website) 7224 Icono de pausa

AutorhttpwwwwebdesignerdepotcomLink httpswwwiconfindercomicons40716blue_button_pause_iconsize=64Licencia Free for commercial use

7225 Icono interrogante (help)

AutorhttpwwwdoublejdesigncoukLinkhttpwwwiconarchivecomshowravenna-3d-icons-by-double-j-designHelp-iconhtml

Paacutegina 76 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLicencia httpcreativecommonsorglicensesby30

7226 Botones (Play Score Options)

AutorydLinkhttpopengameartorgcontentbuttons-variationsLicenciahttp creativecommonsorgpublicdomainzero10

723 Recursos graacuteficos 2D componentes escenario

7231 Ojos lobos

AutorCreek23Link httpopengameartorgcontentgnu-the-gnu-mascotLicencia httpcreativecommonsorglicensesby-sa30

7232 Ovejas y lobos

Autor lemmlingLink httpopenclipartorguser-clipartslemmlingLicencia httpopenclipartorgshare

7233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY

AutorSamLink httpopengameartorgcontentcountry-fieldLicencia httpcreativecommonsorgpublicdomainzero10

7234 Escenario

Daniel EddelandLinkhttpopengameartorgcontentlpc-farming-tilesets-magic-animations-and-ui-elementsLicenciahttpcreativecommonsorglicensesby-sa30

724 Fuentes

7241 ThinckheadAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10 7242 MisfortuneAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7243 TabaqueraAutor deFharoLink httpwwwdafontcomesfernando-harod3419l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7244 Press Start Font

Paacutegina 77 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAutor desconegutLink httpwwwzone38netfontpressstartLicencia httpscriptssilorgcmsscriptspagephpsite_id=nrsiampid=OFL

725 Otros

Todos los demaacutes recursos no nombrados en esta lista como el fondo de pantalla del menuacuteprincipal de inicio del juego y las letras del titulo del juego Fling the sheep impresas sobre lapantalla del menuacute inicial son de elaboracioacuten propia

726 Audio y efectos de sonido

7261 Menu

Autor mrpolyLinkhttpopengameartorgcontentmenu-musicLicencia httpcreativecommonsorgpublicdomainzero10

7262 Game Over

Autor MacroLinkhttpopengameartorgcontentrest-outro-loopLicenciahttpcreativecommonsorglicensesby30

7263 Game Play

AutorRezonerLinkhttpopengameartorgcontenttrance-menuLicenciahttpcreativecommonsorglicensesby30

7264 Creacutedits

Autor -Linkhttpopengameartorgcontent1-minute Licenciahttpcreativecommonsorgpublicdomainzero10

7265 Ready

httpopengameartorgcontentui-accept-or-forwardhttpcreativecommonsorglicensesby30

7266 Pause_Resume

httpopengameartorgcontentcompletion-sound httpcreativecommonsorglicensesby30

7267 Quit

httpopengameartorgcontentfly-swatter-squish-sound httpcreativecommonsorgpublicdomainzero10

7268 Sheep

Paacutegina 78 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

httpopengameartorgcontentsheep-sound-bleats-yo-frankiehttpcreativecommonsorglicensesby30

El resto de efectos de audio han sido obtenidos de la siguiente paacutegina httpwwwpond5com

8Lineas abiertas del proyecto Se haraacute un repaso del proyecto por si existe alguacuten bug para solucionarlo Posteriormente deadaptara para que sea funcional en distintas resoluciones de pantalla Se antildeadiraacuten los power-upsque se definieron al principio del proyecto por temas de tiempo han quedado fuera de la entregaA su vez se balanceara el gameplay antildeadiendo alguna mecaacutenica de juego extra si procede

Se publicara el juego en Google Play y se creara un blog del juego se mirara la posibilidad dehacer funcionar el juego en el blog con webGL httpprojects3cometcom

Se ampliara la tabla de puntuaciones de la siguiente manera la tabla no solamente guardara lospuntos tambieacuten guardara el tiempo jugado nuacutemero de lobos ahuyentados nuacutemero de ovejassalvadas y nombre del usuario con 5 caracteres Se creara un un registro de puntuaciones globalconsultable desde el blog del videojuego

Finalmente se crearan maacutes niveles de juego con distribuciones diferentes alguacuten nivel podriacuteatambieacuten tener mecaacutenicas diferentes de juego con los mismos personajeshellip

9Bibliografiacutea utilizada

Titulo Beginning Android Games (Second Edition) ISBN 978-1-43024-677-0

Autor Mario Zechner Robert Green

Editorial Apress

Contenido Desarrollo de videojuegos para Android

Titulo Learning libGDX Game Development ISBN 978-1-78216-604-7

Autor Andreas Oehlke

Editorial PACKT Publishing

Contenido Desarrollo de videojuegos para Android con libGDX

Paacutegina 79 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

10Otros proyectos realizados

101 Remake Gradius Konami

Remake del famoso shooter de Konami lanzado para ordenadores MSX en 1986 programadocon C++ con SDL Aunque este juego existe para multitud de plataformas Ver articulo wikipedia

httpeswikipediaorgwikiGradius_videojuego

Blog del proyecto httpprojects3cometcom

102 Tales of Nimria mini RPG

Mini RPG en 2D programado en C++ con DirectX este mini RPG trata de salvar a una princesacapturada por unas malvadas criaturas

Blog del proyecto httpprojects3cometcom

102 Motocalipsis Bar 66 RTS RTS en 3D con ambiente motero los hechos de la historia suceden en un pequentildeo pueblo deTexas Programado en Unity con C

Blog del proyecto httpmotocalipsisbar66blogspotcomes

Paacutegina 80 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Creative Commons 40 license by-nc-sa

Attribution-NonCommercial-ShareAlike 40 International

===========================================================

Creative Commons Corporation (Creative Commons) is not a law firm anddoes not provide legal services or legal advice Distribution ofCreative Commons public licenses does not create a lawyer-client orother relationship Creative Commons makes its licenses and relatedinformation available on an as-is basis Creative Commons gives nowarranties regarding its licenses any material licensed under theirterms and conditions or any related information Creative Commonsdisclaims all liability for damages resulting from their use to thefullest extent possible

Using Creative Commons Public Licenses

Creative Commons public licenses provide a standard set of terms andconditions that creators and other rights holders may use to shareoriginal works of authorship and other material subject to copyrightand certain other rights specified in the public license below Thefollowing considerations are for informational purposes only are notexhaustive and do not form part of our licenses

Considerations for licensors Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights Our licenses are irrevocable Licensors should read and understand the terms and conditions of the license they choose before applying it Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected Licensors should clearly mark any material not subject to the license This includes other CC- licensed material or material used under an exception or limitation to copyright More considerations for licensors wikicreativecommonsorgConsiderations_for_licensors

Considerations for the public By using one of our public licenses a licensor grants the public permission to use the licensed material under specified terms and conditions If the licensors permission is not necessary for any reason--for example because of any applicable exception or limitation to copyright--then that use is not regulated by the license Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant Use of

Paacutegina 81 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria the licensed material may still be restricted for other reasons including because others have copyright or other rights in the material A licensor may make special requests such as asking that all changes be marked or described Although not required by our licenses you are encouraged to respect those requests where reasonable More_considerations for the public wikicreativecommonsorgConsiderations_for_licensees

===========================================================

Creative Commons Attribution-NonCommercial-ShareAlike 40 InternationalPublic License

By exercising the Licensed Rights (defined below) You accept and agreeto be bound by the terms and conditions of this Creative CommonsAttribution-NonCommercial-ShareAlike 40 International Public License(Public License) To the extent this Public License may beinterpreted as a contract You are granted the Licensed Rights inconsideration of Your acceptance of these terms and conditions and theLicensor grants You such rights in consideration of benefits theLicensor receives from making the Licensed Material available underthese terms and conditions

Section 1 -- Definitions

a Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated altered arranged transformed or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor For purposes of this Public License where the Licensed Material is a musical work performance or sound recording Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image

b Adapters License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License

c BY-NC-SA Compatible License means a license listed at creativecommonsorgcompatiblelicenses approved by Creative Commons as essentially the equivalent of this Public License

d Copyright and Similar Rights means copyright andor similar rights closely related to copyright including without limitation performance broadcast sound recording and Sui Generis Database

Paacutegina 82 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Rights without regard to how the rights are labeled or categorized For purposes of this Public License the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights

e Effective Technological Measures means those measures that in the absence of proper authority may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20 1996 andor similar international agreements

f Exceptions and Limitations means fair use fair dealing andor any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material

g License Elements means the license attributes listed in the name of a Creative Commons Public License The License Elements of this Public License are Attribution NonCommercial and ShareAlike

h Licensed Material means the artistic or literary work database or other material to which the Licensor applied this Public License

i Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license

j Licensor means the individual(s) or entity(ies) granting rights under this Public License

k NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation For purposes of this Public License the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange

l Share means to provide material to the public by any means or process that requires permission under the Licensed Rights such as reproduction public display public performance distribution dissemination communication or importation and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them

Paacutegina 83 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria m Sui Generis Database Rights means rights other than copyright resulting from Directive 969EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases as amended andor succeeded as well as other essentially equivalent rights anywhere in the world

n You means the individual or entity exercising the Licensed Rights under this Public License Your has a corresponding meaning

Section 2 -- Scope

a License grant

1 Subject to the terms and conditions of this Public License the Licensor hereby grants You a worldwide royalty-free non-sublicensable non-exclusive irrevocable license to exercise the Licensed Rights in the Licensed Material to

a reproduce and Share the Licensed Material in whole or in part for NonCommercial purposes only and

b produce reproduce and Share Adapted Material for NonCommercial purposes only

2 Exceptions and Limitations For the avoidance of doubt where Exceptions and Limitations apply to Your use this Public License does not apply and You do not need to comply with its terms and conditions

3 Term The term of this Public License is specified in Section 6(a)

4 Media and formats technical modifications allowed The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created and to make technical modifications necessary to do so The Licensor waives andor agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights including technical modifications necessary to circumvent Effective Technological Measures For purposes of this Public License simply making modifications authorized by this Section 2(a) (4) never produces Adapted Material

5 Downstream recipients

a Offer from the Licensor -- Licensed Material Every recipient of the Licensed Material automatically

Paacutegina 84 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License

b Additional offer from the Licensor -- Adapted Material Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapters License You apply

c No downstream restrictions You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material

6 No endorsement Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are or that Your use of the Licensed Material is connected with or sponsored endorsed or granted official status by the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i)

b Other rights

1 Moral rights such as the right of integrity are not licensed under this Public License nor are publicity privacy andor other similar personality rights however to the extent possible the Licensor waives andor agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights but not otherwise

2 Patent and trademark rights are not licensed under this Public License

3 To the extent possible the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme In all other cases the Licensor expressly reserves any right to collect such royalties including when the Licensed Material is used other than for NonCommercial purposes

Paacutegina 85 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 3 -- License Conditions

Your exercise of the Licensed Rights is expressly made subject to thefollowing conditions

a Attribution

1 If You Share the Licensed Material (including in modified form) You must

a retain the following if it is supplied by the Licensor with the Licensed Material

i identification of the creator(s) of the Licensed Material and any others designated to receive attribution in any reasonable manner requested by the Licensor (including by pseudonym if designated)

ii a copyright notice

iii a notice that refers to this Public License

iv a notice that refers to the disclaimer of warranties

v a URI or hyperlink to the Licensed Material to the extent reasonably practicable

b indicate if You modified the Licensed Material and retain an indication of any previous modifications and

c indicate the Licensed Material is licensed under this Public License and include the text of or the URI or hyperlink to this Public License

2 You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium means and context in which You Share the Licensed Material For example it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information 3 If requested by the Licensor You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable

Paacutegina 86 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria b ShareAlike

In addition to the conditions in Section 3(a) if You Share Adapted Material You produce the following conditions also apply

1 The Adapters License You apply must be a Creative Commons license with the same License Elements this version or later or a BY-NC-SA Compatible License

2 You must include the text of or the URI or hyperlink to the Adapters License You apply You may satisfy this condition in any reasonable manner based on the medium means and context in which You Share Adapted Material

3 You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to Adapted Material that restrict exercise of the rights granted under the Adapters License You apply

Section 4 -- Sui Generis Database Rights

Where the Licensed Rights include Sui Generis Database Rights thatapply to Your use of the Licensed Material

a for the avoidance of doubt Section 2(a)(1) grants You the right to extract reuse reproduce and Share all or a substantial portion of the contents of the database for NonCommercial purposes only

b if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material including for purposes of Section 3(b) and

c You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database

For the avoidance of doubt this Section 4 supplements and does notreplace Your obligations under this Public License where the LicensedRights include other Copyright and Similar Rights

Paacutegina 87 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 5 -- Disclaimer of Warranties and Limitation of Liability

a UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR TO THE EXTENT POSSIBLE THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL WHETHER EXPRESS IMPLIED STATUTORY OR OTHER THIS INCLUDES WITHOUT LIMITATION WARRANTIES OF TITLE MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE NON-INFRINGEMENT ABSENCE OF LATENT OR OTHER DEFECTS ACCURACY OR THE PRESENCE OR ABSENCE OF ERRORS WHETHER OR NOT KNOWN OR DISCOVERABLE WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART THIS DISCLAIMER MAY NOT APPLY TO YOU

b TO THE EXTENT POSSIBLE IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING WITHOUT LIMITATION NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT SPECIAL INDIRECT INCIDENTAL CONSEQUENTIAL PUNITIVE EXEMPLARY OR OTHER LOSSES COSTS EXPENSES OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES COSTS EXPENSES OR DAMAGES WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART THIS LIMITATION MAY NOT APPLY TO YOU

c The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that to the extent possible most closely approximates an absolute disclaimer and waiver of all liability

Section 6 -- Term and Termination

a This Public License applies for the term of the Copyright and Similar Rights licensed here However if You fail to comply with this Public License then Your rights under this Public License terminate automatically

b Where Your right to use the Licensed Material has terminated under Section 6(a) it reinstates

1 automatically as of the date the violation is cured provided it is cured within 30 days of Your discovery of the violation or

2 upon express reinstatement by the Licensor

For the avoidance of doubt this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License

Paacutegina 88 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

c For the avoidance of doubt the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time however doing so will not terminate this Public License

d Sections 1 5 6 7 and 8 survive termination of this Public License

Section 7 -- Other Terms and Conditions

a The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed

b Any arrangements understandings or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License

Section 8 -- Interpretation

a For the avoidance of doubt this Public License does not and shall not be interpreted to reduce limit restrict or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License

b To the extent possible if any provision of this Public License is deemed unenforceable it shall be automatically reformed to the minimum extent necessary to make it enforceable If the provision cannot be reformed it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions

c No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor

d Nothing in this Public License constitutes or may be interpreted as a limitation upon or waiver of any privileges and immunities that apply to the Licensor or You including from the legal processes of any jurisdiction or authority

===========================================================

Paacutegina 89 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaCreative Commons is not a party to its public licensesNotwithstanding Creative Commons may elect to apply one of its publiclicenses to material it publishes and in those instances will beconsidered the Licensor Except for the limited purpose of indicatingthat material is shared under a Creative Commons public license or asotherwise permitted by the Creative Commons policies published atcreativecommonsorgpolicies Creative Commons does not authorize theuse of the trademark Creative Commons or any other trademark or logoof Creative Commons without its prior written consent includingwithout limitation in connection with any unauthorized modificationsto any of its public licenses or any other arrangementsunderstandings or agreements concerning use of licensed material Forthe avoidance of doubt this paragraph does not form part of the publiclicenses

Creative Commons may be contacted at creativecommonsorg

Paacutegina 90 de 102

Page 13: Universitat Oberta de Catalunya UOC Ingeniería técnica en

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Conforme el juego se va desarrollando eacuteste iraacute acumulando

bull Puntosbull Tiempo jugadobull Numero de lobos ahuyentadosbull Ovejas colocadas en el corral

Se tratara pues de ir mejorando nuestro propio reacutecord partida tras partida El juego iraacuteaumentando de dificultad durante el transcurso de la partida

Como apunte final el juego recibe el nombre de ldquoFling the sheeprdquo que traducido al espantildeolvendriacutea a ser algo como ldquolanzar las ovejasrdquo

Paacutegina 3 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

14 Planificacioacuten

141 Ciclo de vida

Un videojuego no deja de ser un proyecto de software por tanto para la realizacioacuten de esteproyecto se ha tomado como base el ciclo de vida claacutesico de cualquier proyecto de softwaremodificado ligeramente a las necesidades del proyecto Este ciclo de vida que tambieacuten sedenomina ciclo de vida en cascada se compone de las siguientes etapas

ilustracioacuten 1 Ciclo de vida en cascada

142 Planificacioacuten detallada del proyecto

En los siguientes apartados se recogen por cada etapa que compone el ciclo de vida las principales actividades realizadas con el objetivo de alcanzar el producto deseado dentro delos plazos definidos

1411 Anaacutelisis previo planificacioacuten

En este punto se ha abordado la visioacuten global del proyecto comprendida en establecer lospuntos iniciales necesarios para crear una planificacioacuten de tareas en funcioacuten de las actividades arealizar

Actividad Descripcioacuten

Disentildeo conceptual del videojuego Mecaacutenicas del videojuego

Definicioacuten de las tecnologiacuteas Tecnologiacuteas que se utilizaran en el desarrollo delvideojuego

Anaacutelisis de riesgos Posibles riesgos del proyecto

Planificacioacuten del proyecto Crear una planificacioacuten adaptada a los plazos de entregade este TFC

Paacutegina 4 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Redaccioacuten del documento Generacioacuten del plan de trabajo

Entrega de la PEC1 Entrega del documento

1412 Anaacutelisis de requisitos

En esta fase se ha detallado que necesidades debe cubrir el videojuego tanto desde un puntode vista funcional como desde un punto de vista arquitectoacutenico de la aplicacioacuten a disentildear se hadisentildeado un modelo troncal de clases para posteriormente desarrollar en base a estas todo elvideojuego No obstante en ninguacuten caso se ha entrado en detalle en las tecnologiacuteas a utilizar yadefinidas previamente

Actividad Descripcioacuten

Especificacioacuten de requisitos funcionales Definicioacuten de casos de usos

Disentildeo baacutesico estructura aplicacioacuten Diagrama baacutesico de clases

Especificacioacuten de requisitos funcionales Definicioacuten de maacutequinas de estado

1413 Disentildeo

En este apartado teniendo en cuenta que en este proyecto se va a desarrollar un videojuego seha realizado la recopilacioacuten conceptual de arte conjuntamente con el disentildeo de todas laspantallas que intervienen en el Conjuntamente con la seleccioacuten de los tipos de fuente que seutilizaran para el videojuego seleccioacuten de personajes y enemigos

Actividad Descripcioacuten

Definicioacuten de usuarios y contexto de uso delvideojuego

Conocer las caracteriacutesticas de los usuarios susnecesidades y objetivos asiacute como los contextosde uso

Disentildeo conceptual Un escenario de uso describe desde el puntode vista del usuario como seraacute utilizado unproducto determinado (es este caso unvideojuego) en un escenario determinado

Seleccioacuten de arte Seleccioacuten de arte ya hecho con licencias libresya que no se disponen de conocimientos dearte para abordar el disentildeo

Seleccioacuten de fuentes Seleccioacuten de los tipos de fuente adecuadospara el disentildeo del videojuego

Seleccioacuten de personajes y enemigos Seleccioacuten de personajes y enemigosdisponibles en la red con licencias libres ya queno se disponen de conocimientos de arte paraabordar el disentildeo

Disentildeo de pantallas que intervienen(prototipo) Con todo el arte fuentes y personajes serealizara el disentildeo de todas las pantallas queintervienen en el juego Realizacioacuten de unboceto a mano alzada Sketches y prototipo dealta fidelidad

Redaccioacuten del documento Generacioacuten del documento de disentildeo

Paacutegina 5 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Entrega de la PEC2 Entrega del documento

1414 Implementacioacuten y pruebas

En este punto se ha desarrollado la implementacioacuten del videojuego partiendo de todas lasdefiniciones de los apartados anteriores y las verificaciones oportunas para asegurar el correctofuncionamiento del videojuego

Actividad Descripcioacuten

Implementacioacuten de navegables y contenidos Implementacioacuten de la estructura de todas lapantallas del video juego y la navegabilidadentre ellas y las funciones principales de cadauna de ellas

Implementacioacuten del gameplay Implementacioacuten de la logica de juego

Implementacioacuten de sonido y efectos Implementacioacuten de los efectos de sonido y lamusica

Version alpha del videojuego En este punto se dispone de un videojuegofuncional listo para ser revisado y refinado

Pruebas y refinamiento de la implementacioacuten Pruebas y correcioacutenes de posibles errores

Preparacioacuten del paquete entregable y laredaccioacuten del documento

Testeo final y preparacioacuten del apk a entregarmas la redaccioacuten del documento estrutural delaplicacioacuten

Entrega de la PEC3 Entrega del documento

1415 Finalizacioacuten

En un proyecto de software esta parte quedariacutea focalizada en la fase de implantacioacuten y puesta enmarcha Sin embargo al tratarse de un videojuego esta fase quedariacutea focalizada en la fase delanzamiento del producto No obstante en este caso se ha utilizado para documentar todo eltrabajo realizado a lo largo de este TFC

Actividad Descripcioacuten

Redaccioacuten memoria final proyecto Redaccioacuten memoria final

Montaje presentacioacuten diapositivas Montaje presentacioacuten diapositivas

Montaje del video final presentacioacuten proyecto Montaje del video final presentacioacuten proyecto

Entrega final Entega final

Paacutegina 6 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria143 Temporalizacioacuten del proyecto

La siguiente ilustracioacuten muestra el calendario definido para el proyecto

ilustracioacuten 11 Calendario proyecto

Paacutegina 7 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

En la siguiente pagina se muestra una ilustracioacuten del diagrama de gantt correspondiente alcalendario mostrado en la ilustracioacuten 1

ilustracioacuten 2 Diagrama de gantt

Paacutegina 8 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

15 Herramientas y tecnologiacuteas utilizadas

Actualmente existen varios frameworks para desarrollar videojuegos sobre plataformas moacutevilesSe ha hecho un anaacutelisis comparativo preliminar entre Cocos2D-android1 Cocos2D-x y libGDXaunque existen otros estos tres son los maacutes nombrados y utilizados

Cocos2d-android1 Es un framework en Java basado en la versioacuten de cocos2d-android queesta basado en la versioacuten de cocos2d para iphone Este framework permite el desarrollo devideojuegos en 2D y se programa en Java en lugar de objective-c Para la versioacuten Cocos2d deiphone Actualmente este framework no parece tener mucha continuidad por parte de lacomunidad de desarrolladores aunque no estaacute discontinuado del todo

Cocos2D-x Es un framework en C++ multi-plataforma permite desarrollar para diferentesplataformas a la vez con el mismo coacutedigo Android iOS Bada Marmalade Windows Linux etcSin embargo aunque es un framework con una comunidad muy activa su documentacioacuten esbastante mejorable Se programa en C++ y es posible trabajar con distintos entornos de desarrollocomo Visual Studio o Eclipse El proceso de depuracioacuten con eclipse es algo complejo con C++JNIcon varios pasos a seguir para poder depurar A la vez su configuracioacuten en el entorno Eclipse noes trivial Finalmente tiene relativamente todaviacutea poco tiempo de vida

LibGDX Es un framework escrito en Java sobre C++ ya que las partes criacuteticas estaacuten escritascon coacutedigo nativo para conseguir el mejor rendimiento posible Tiene una comunidad dedesarrolladores muy activa y una documentacioacuten muy extensa Se programa con Java y permite ladepuracioacuten ejecutando la aplicacioacuten en el escritorio de la maacutequina sin tener que pasar por undispositivo real o uno virtual En caso de que se quiera probar en un dispositivo real es posiblehacerlo sin ninguacuten cambio sobre el coacutedigo Este hecho hace que el desarrollo sea maacutes fluidoTiene un rendimiento bastante alto ante cocos2d-x y otros frameworks existentes para eldesarrollo de videojuegos

Todo lo expuesto anteriormente provoca una inclinacioacuten definitiva a utilizar libGDX paraimplementar el videojuego Asiacute pues el videojuego seraacute escrito en Java utilizando el IDE Eclipseque es el soportado oficialmente para Android utilizando el framework libGDX

Para la realizacioacuten de este proyecto se han utilizado las siguientes herramientas

bull Planificacioacuten proyecto

Microsoft Project Professional 2010

bull Disentildeo

Gimp 28 Inkscape 048 TexturePacker 320 Microsoft Visio Professional 2010

bull Programacioacuten

Entorno de desarrollo Eclipse 421 Juno Android develompment tools ADT Android SDK

Paacutegina 9 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Framework libGDX 098 ObjectAid herramienta de visualizacioacuten de coacutedigo en UML para Eclipse Control de versiones Git utilizando como plataforma GitHub

bull Edicioacuten de audio

Audacity 203 GoldWave 569

bull Redaccioacuten de documentos

OpenOffice 401

bull Edicioacuten de viacutedeo

Adobe Premiere Pro CS55

16 Riesgos del proyecto

Se parte de una experiencia previa en desarrollo de videojuegos ver apartado 9 otros proyectosrealizados al final de este documento Aunque no se dispone de experiencia con la libreriacuteaescogida ni tampoco con programacioacuten sobre Android A nivel teacutecnico no se preveacute que puedansurgir muchos riesgos en liacuteneas generales No obstante existe la posibilidad de gastar maacutestiempo del previsto consultando documentacioacuten para lograr los objetivos establecidos

Existe un riesgo maacutes alto a nivel artiacutestico ya que no se dispone de ninguacuten conocimiento de artede ninguacuten tipo Por lo tanto muy probablemente a nivel artiacutestico el juego sea un poco justo Es poreste motivo que durante la realizacioacuten de este proyecto no se va a profundizar en temas de disentildeoartiacutestico en su lugar se utilizaran recursos de arte existentes en la red con licencias libres tipocreative commons o dominio puacuteblico Al final de este documento en el apartado 6 se puede ver unlistado de los recursos utilizados juntamente con un link a la obra y el nombre del autor si esteesta disponible Se haraacute una seleccioacuten de distintos tipos de recursos graacuteficos para posteriormentehacer el montaje de toda la parte graacutefica del videojuego En cuanto a la parte de audio la situacioacuten es exactamente la misma no se dispone de ninguacutenconocimiento para componer muacutesica ni efectos Por lo tanto se buscaraacuten sonidos y temasmusicales con licencias libres Intentando que estos queden integrados de la mejor maneraposible al videojuego

Finalmente existe el riesgo de que el gameplay definido en el disentildeo conceptual del videojuegouna vez puesto en praacutectica no sea del todo funcional o necesite de un balanceo para conseguirun juego equilibrado y jugable

Paacutegina 10 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2 Anaacutelisis funcional Basaacutendonos en el aparatado ldquo131 Definicioacuten del videojuegordquo se han definido los requisitosfuncionales necesarios para este con la definicioacuten de casos de uso Posteriormente se ha definidoun diagrama de clases inicial el cual ha servido como punto de partida para el desarrollo completodel videojuego A su vez se definen las maacutequinas de estado finitas utilizadas para el desarrollo

21 Requisitos funcionales casos de uso

En este apartado se presentan tres diagramas de casos de uso El primer diagrama engloba lavista generalizada del actor ldquojugadorrdquo y los casos de uso que describen los requisitos funcionalesdel sistema En los dos diagramas restantes se describen la vista generalizada del actor ldquoIArdquo porIA se entiende la inteligencia artificial del videojuego Los diagramas muestran los requisitosfuncionales de la IA para el personaje principal y los enemigos La IA interactuacutea con el sistema ypor tanto seraacute susceptible de analizar su uso de la aplicacioacuten

211 Diagrama casos de uso actor ldquoJugadorrdquo

ilustracioacuten 3 Diagrama de casos de usos actor jugador

Paacutegina 11 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Como se puede observar en la ilustracioacuten 3 el sistema solo dispone de un uacutenico actor Que eneste caso es el jugador del videojuego es decir representa todos los posibles usuarios quepueden jugar al videojuego

En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 3estos seraacuten desarrollados en la seccioacuten posterior

212 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

VJ01 Inicio videojuego Jugador

VJ02 Jugar Jugador

VJ03 Acceder puntuaciones maacuteximas Jugador

VJ31 Consultar puntuacione locales Jugador

VJ32 Salir puntuacione locales Jugador

VJ04 Acceder a las opciones Jugador

VJ41 Activar o desactivar muacutesica o efectos Jugador

VJ42 Acceder a la pantalla de creacuteditos Jugador

VJ421 Salir de la pantalla de creacuteditos Jugador

VJ43 Salir de las opciones Jugador

VJ05 Acceder a las instrucciones Jugador

VJ51 Salir de las intrucciones Jugador

VJ06 Salir del videojuego Jugador

213 Descripcioacuten textual de los casos de uso

2131 VJ01 Inicio videojuego

Identificador VJ01

Nombre Inicio videojuego

Autor Xavier Figuera

Resumen El usuario inicia el videojuego

Actor(es) Jugador

Precondiciones Ninguna el videojuego no habiacutea sido iniciado auacuten

Postcondiciones El usuario a iniciado el videojuego a visualizado la pantalla de introdurante un segundo y se encuentra en la pantalla del menuacute principal

Flujo normal 1 El usuario accede a la lista de aplicaciones de su dispositivo 2 Busca el acceso al videojuego3 Ejecuta el programa4 Se carga la aplicacioacuten5 El videojuego muestra la pantalla de intro

Paacutegina 12 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6 Se muestra el menuacute principal al jugador

Flujos alternativos Se podriacutea dar el caso que el usuario accediera al videojuego desde algunacceso directo en alguno de los escritorios del dispositivo

Inclusiones Ninguna

Extensiones Ninguna

2132 VJ02 Jugar

Identificador VJ02

Nombre Jugar

Autor Xavier Figuera

Resumen Jugar al videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario empieza a jugar

Flujo normal 1 El usuario pulsa el botoacuten play del menuacute principal 2 El usuario juega3 El usuario puede volver a jugar una vez finalizada la partida 4 El usuario puede salir del juego en cualquier momento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2133 VJ03 Acceder puntuaciones maacuteximas locales

Identificador VJ03

Nombre Acceder puntuaciones maacuteximas locales

Autor Xavier Figuera

Resumen Acceder a la pantalla de puntuaciones maacuteximas locales de las partidasrealizadas en el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla con la tabla de las 10 puntuacionesmaacuteximas

Flujo normal 1 El usuario pulsa el botoacuten Scores del menuacute principal 2 Al usuario le aparece la pantalla de puntuacioacuten

Paacutegina 13 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ31 Consultar puntuaciones localesVJ32 Salir de la puntuaciones locales

2134 VJ31 Consultar puntuaciones locales

Identificador VJ31

Nombre Consultar puntuaciones locales

Autor Xavier Figuera

Resumen Consulta de las puntuaciones maacuteximas locales de las partidas realizadasen el dispositivo

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Scores delmenuacute principal

Postcondiciones El usuario visualiza la tabla de las 10 puntuaciones maacuteximas

Flujo normal 1 El usuario visualiza una tabla con las 10 puntuaciones maacuteximas

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

2135 VJ32 Salir puntuaciones locales

Identificador VJ32

Nombre Salir puntuaciones locales

Autor Xavier Figuera

Resumen Salir de las puntuaciones maacuteximas locales

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulso el botoacuten Scores

Postcondiciones El usuario sale de la tabla de puntuaciones

Flujo normal 1 El usuario pulsa el botoacuten salir en la pantalla tabla de puntuaciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 14 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2136 VJ04 Acceder a las opciones

Identificador VJ04

Nombre Acceder a la pantalla de opciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de opciones del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y se encuentra en el menuacute principal

Postcondiciones El usuario se dirige a la pantalla de opciones

Flujo normal 1 El usuario pulsa el botoacuten Options del menuacute principal 2 Al usuario le aparece la pantalla de opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ41 Activar o desactivar muacutesica o efectos VJ42 Acceder a la pantalla de creacuteditosVJ43 Salir de las opciones

2137 VJ41 Activar o desactivar muacutesica o efectos

Identificador VJ041

Nombre Activar o desactivar muacutesica o efectos

Autor Xavier Figuera

Resumen Activar o desactivar muacutesica o efectos de audio del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal

Postcondiciones El usuario activa o desactiva la muacutesica o efectos del videojuego

Flujo normal 1 El usuario pulsa el botoacuten altavoz para activar o desactivar la muacutesica delvideojuego 2 El usuario pulsa el botoacuten notas musicales para activar o desactivar losefectos de audio del videojuego

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 15 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria2138 VJ42 Acceder a la pantalla de creacuteditos

Identificador VJ42

Nombre Acceder a la pantalla de creacuteditos

Autor Xavier Figuera

Resumen Acceder a la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario se encuentra en la pantalla de opciones

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten credits para acceder a los creacuteditos2 El usuario puede desplazar el texto de los creacuteditos deslizando el dedosobre el texto hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ421 Salir de la pantalla de creacuteditos

2139 VJ421 Salir de la pantalla de creacuteditos

Identificador VJ421

Nombre Salir de la pantalla de creditos

Autor Xavier Figuera

Resumen Salir de la pantalla de creacuteditos

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten Options en elmenuacute principal y ha accedido a la pantalla creacuteditos

Postcondiciones El usuario accede a la pantalla de creacuteditos

Flujo normal 1 El usuario pulsa el botoacuten salir para abandonar la pantalla para accedera los creacuteditos2 El usuario se encuentra de nuevo en la pantalla opciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 16 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21310 VJ05 Acceder a las instrucciones

Identificador VJ05

Nombre Acceder a la pantalla de instrucciones

Autor Xavier Figuera

Resumen Acceder a la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten del menuacuteprincipal

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a las instrucciones2 El usuario puede desplazar el texto de las instrucciones deslizando eldedo sobre el hacia arriba y hacia abajo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones VJ51 Salir de las instrucciones

21311 VJ51 Salir de las instrucciones

Identificador VJ51

Nombre Salir de las intrucciones

Autor Xavier Figuera

Resumen Salir de la pantalla de instrucciones

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego y ha pulsado el botoacuten en el menuacuteprincipal y ha accedido a la pantalla de instrucciones

Postcondiciones El usuario accede a la pantalla de instrucciones

Flujo normal 1 El usuario pulsa el botoacuten para acceder a la pantalla de instrucciones

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 17 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21312 VJ06 Salir del videojuego

Identificador VJ06

Nombre Salir del videojuego

Autor Xavier Figuera

Resumen Salir del videojuego

Actor(es) Jugador

Precondiciones El usuario ha iniciado el videojuego

Postcondiciones El usuario abandona el videojuego

Flujo normal 1 El usuario pulsa el botoacuten exit de la aplicacioacuten para salir del videojuego oel botoacuten salir del dispositivo

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 18 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214 Diagrama casos de uso actor ldquoIArdquo

Por IA se entiende inteligencia artificial es un elemento fundamental para dotar de realismo a unvideojuego Uno de los retos principales que se plantean a la hora de integrar comportamientosinteligentes es alcanzar un equilibrio entre la sensacioacuten de inteligencia y el tiempo de coacutemputoempleado por este subsistema Este equilibrio es de gran importancia en el caso de losvideojuegos Este planteamiento gira generalmente en torno a la generacioacuten de soluciones quesin ser oacuteptimas proporcionen una cierta sensacioacuten de inteligencia En concreto dichas solucionesdeberiacutean tener como meta que el jugador se enfrente a un reto que sea factible de manera quesuponga un estiacutemulo emocional y que consiga engancharlo al videojuego

En estos uacuteltimos antildeos la IA ha pasado de ser un componente secundario en el proceso dedesarrollo de videojuegos a convertirse en uno de los aspectos maacutes importantes Actualmentelograr un alto nivel de IA en un juego sigue siendo uno de los retos maacutes emocionantes y complejosy en ocasiones sirve para diferenciar un juego normal de uno realmente espectacular

Dentro de este proyecto de ha definido una IA baacutesica para dotar del realismo necesario alvideojuego propuesto En los siguientes diagramas se define esta IA en forma de casos de usospara su posterior implementacioacuten

2141 Diagrama casos de uso IA personaje principal (oveja)

ilustracioacuten 4 Diagrama de casos de usos personaje principal

Paacutegina 19 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria En la siguiente tabla se hace un resumen de los casos de uso mostrados en la ilustracioacuten 4estos seraacuten desarrollados en la seccioacuten posterior

21411 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA03 Salida oveja al escenario IA

IA031 Posicionamiento en pantalla de la oveja IA

IA032 Movimiento oveja IA

IA033 Oveja pastando IA

IA034 Lanzamiento oveja IA

IA035 Rebotes de la oveja IA

IA036 La oveja entra en el establo IA

IA037 Parar oveja IA

21412 Descripcioacuten textual de los casos de uso

214121 IA03 Salida ovejas al escenario

Identificador IA03

Nombre Salida oveja al escenario

Autor Xavier Figuera

Resumen Salida oveja al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones La oveja es instanciada de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Las ovejas se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA031 Posicionamiento en pantalla de las oveja

214122 IA031 Posicionamiento en pantalla de las oveja

Identificador IA031

Nombre Posicionamiento en pantalla de las oveja

Paacutegina 20 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Autor Xavier Figuera

Resumen Asignacioacuten inicial posicioacuten de las ovejas en pantalla siempre es la mismaposicioacuten esta queda fuera del rango visual de la pantalla

Actor(es) IA

Precondiciones La partida esta iniciada y la oveja instanciada

Postcondiciones La oveja queda posicionada en unas coordenadas fuera de la pantalla

Flujo normal 1 Se instancia la oveja2 La oveja queda posicionada en unas coordenadas uacutenicas fuera delrango visual de pantalla

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214123 IA032 Movimiento oveja

Identificador IA032

Nombre Movimiento oveja

Autor Xavier Figuera

Resumen Movimiento de las ovejas hacia el escenario

Actor(es) IA

Precondiciones La partida esta iniciada la oveja instanciada y posicionada

Postcondiciones La oveja se mueve hacia el escenario empieza a pastar

Flujo normal 1 La oveja se mueve hacia el escenario

Flujos alternativos Ninguno

Inclusiones IA034

Extensiones IA033 Oveja PastandoIA037 Parar oveja

214124 IA033 Oveja pastando

Identificador IA033

Nombre Oveja pastando

Autor Xavier Figuera

Resumen La ovejas permanecen en un espacio determinado de coordenadas depantalla mientras no sean lanzadas al escenario por el usuario

Actor(es) IA

Paacutegina 21 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Precondiciones La oveja ha salido al escenario

Postcondiciones La oveja se mueve dentro de un espacio determinado de forma indefinida

Flujo normal 1 La oveja se mueve de forma indefinida hasta que sea lanzada por elusuario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA034 Lanzamiento oveja

214125 IA034 Lanzamiento oveja

Identificador IA034

Nombre Lanzamiento oveja

Autor Xavier Figuera

Resumen La oveja es lanzada por el usuario y se acelera en funcioacuten de la fuerza delanzamiento

Actor(es) IA

Precondiciones La oveja se mueve

Postcondiciones La oveja ha sido lanzada

Flujo normal 1 La oveja se mueve de forma indefinida2 La oveja es lanzada3 La oveja acelera en funcioacuten de la fuerza de lanzamiento

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA032 Movimiento oveja

214126 IA035 Rebotes de la oveja

Identificador IA035

Nombre Rebotes de la oveja

Autor Xavier Figuera

Resumen La oveja ha sido lanzada y rebota por el escenario

Actor(es) IA

Precondiciones La oveja ha sido lanzada

Postcondiciones La oveja rebota por el escenario

Flujo normal 1 La oveja ha sido lanzada y rebota por el escenario 2 La oveja entra en el establo si colisiona con la puerta y esta abierta

Paacutegina 22 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA036 La oveja entra en el establo

214127 IA036 La oveja entra en el establo

Identificador IA036

Nombre La oveja entra en el establo

Autor Xavier Figuera

Resumen La oveja entra en el establo

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario y la puerta del establo estaabierta

Postcondiciones La oveja entra en el establo

Flujo normal 1 La oveja entra en el establo si colisiona con la puerta y esta abierta

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214128 IA037 Parar oveja

Identificador IA037

Nombre Parar oveja

Autor Xavier Figuera

Resumen La oveja para si se hacen dos pulsaciones encima de ella

Actor(es) IA

Precondiciones La oveja esta rebotando por el escenario

Postcondiciones La oveja se para

Flujo normal 1 La oveja esta rebotando2 El usuario pulsa dos veces encima de ella3 La oveja se para

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 23 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

2142 Diagrama casos de uso IA enemigos (lobo)

ilustracioacuten 5 Diagrama de casos de usos enemigos

21421 Tabla resumen casos de uso

Coacutedigo Descripcioacuten Actor

IA02 Salida lobo al escenario IA

IA021 Ojos por la derecha o por la izquierda IA

IA022 Escoje el tipo de lobo IA

IA023 Lobo por la derecha o por la izquierda IA

IA024 Salta a escena IA

IA025 Movimento lobo IA

Paacutegina 24 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria21422 Descripcioacuten textual de los casos de uso

214221 IA02 Salida lobo al escenario

Identificador IA02

Nombre Salida lobo al escenario

Autor Xavier Figuera

Resumen Salida lobo al escenario

Actor(es) IA

Precondiciones El usuario ha iniciado una partida

Postcondiciones El lobo es instanciado de forma automaacutetica sin intervencioacuten del usuario

Flujo normal 1 El usuario ha iniciado una partida2 Los lobos se empiezan a instanciar sin intervencioacuten del usuario 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones IA02 IA021 IA022 IA023 IA024

214222 IA021 Ojos por la derecha o por la izquierda

Identificador IA021

Nombre Ojos por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Salida de ojos al escenario paso previo a que salte el lobo

Actor(es) IA

Precondiciones El lobo ha sido instanciado

Postcondiciones Aparecen unos ojos que se cierra y se abren por la derecha o izquierda dela pantalla de forma aleatoria

Flujo normal 1 El lobo ha sido instanciado2 Aparecen unos ojos que se cierran y se abren 3 El punto 2 se repite en un intervalo de tiempo determinadoindefinidamente

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 25 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214223 IA022 Escoge el tipo de lobo

Identificador IA022

Nombre Escoge el tipo de lobo

Autor Xavier Figuera

Resumen Escoge el tipo de lobo de forma aleatoria de los tres definidos

Actor(es) IA

Precondiciones Han aparecido los ojos

Postcondiciones Ha escogido el tipo de lobo que saltara al escenario

Flujo normal 1 Han aparecido los ojos2 Ha escogido el tipo de lobo que saltara al escenario

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

214224 IA023 Lobo por la derecha o por la izquierda

Identificador IA023

Nombre Lobo por la derecha o por la izquierda

Autor Xavier Figuera

Resumen Escoge de forma aleatoria el lado por donde debe aparecer el lobo

Actor(es) IA

Precondiciones Se ha seleccionado el tipo de lobo

Postcondiciones Se ha escogido el lado por donde apareceraacute

Flujo normal 1 Se ha escogido el lado por donde apareceraacute

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 26 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria214225 IA024 Salta a escena

Identificador IA024

Nombre Salta a escena

Autor Xavier Figuera

Resumen El lobo salta a escena

Actor(es) IA

Precondiciones Se ha seleccionado el lado por donde debe aparecer y salta

Postcondiciones El lobo esta en escena

Flujo normal 1 Se ha seleccionado el lado por donde debe aparecer y salta2 El lobo esta en escena

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones A025

214226 IA025 Movimiento lobo

Identificador IA025

Nombre Movimiento lobo

Autor Xavier Figuera

Resumen El lobo esta en escena y se mueve

Actor(es) IA

Precondiciones El lobo ha saltado a la escena

Postcondiciones El lobo se mueve

Flujo normal 1 El lobo ha saltado a la escena2 El lobo se mueve

Flujos alternativos Ninguno

Inclusiones Ninguna

Extensiones Ninguna

Paacutegina 27 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

22 Disentildeo inicial diagrama de clases

221 Diagrama de clases inicial ldquoFling the sheeprdquo

ilustracioacuten 6 Diagrama de clases videojuego

En este apartado se define la estructura inicial de la aplicacioacuten a traveacutes del diagrama de clasesmostrado en la ilustracioacuten 6 Esto serviraacute como punto de partida para el completo disentildeo de laaplicacioacuten para su posterior implementacioacuten A continuacioacuten se pasan a detallar a modo resumidoque funcionalidad tiene cada una de las clases definidas en este diagrama

2211 Resumen clases videojuego

FlingTheSheepMain Clase principal desde donde se inicializaraacute la aplicacioacuten

Assets Esta clase contendraacute todos los recursos necesarios del juego texturas sonidos etcEstos seraacuten inicializados en el momento de iniciar el juego Existe una dependencia entre la claseFlingTheSheepMain y Assets ya que la instanciacioacuten de Assets esta condicionada por lainstanciacioacuten de la clase principal FlingTheSheepMain cuando se pone en marcha el videojuego

Paacutegina 28 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaWorldGameController Esta clase contendraacute la loacutegica del videojuego

AudioManager Clase destinada para controlar la reproduccioacuten de efectos de sonido y audio delvideojuego

Charcater Es la superclase que describe los comportamientos comunes de los personajes deella se extienden los personajes principales y los enemigos

Sheep Clase que representa el personaje principal

Wolf Clase que representa a los enemigos

AbstractGameObject Esta superclase recoge todos los comportamientos comunes de losobjetos del juego por objetos se entiende todos los componentes que forman el escenario delvideojuego De esta clase se extienden todos los objetos del videojuego

Grass Hierba que apareceraacute en el escenario

Flower Flores que apareceraacuten en el escenario

ThePen Establo donde hay que hacer llegar las ovejas

DoorPen Puerta del establo esta se abriraacute y se cerrara aleatoriamente

Hole Agujeros en el escenario

WoodFenceForest Valla de madera que apareceraacute en el escenario

Como se ha comentado este diagrama de clases es un diagrama inicial por tanto lo maacutesprobable es que durante el desarrollo del videojuego se antildeadan maacutes clases al disentildeo inicialmostrado en la ilustracioacuten 6 En el apartado 55 de este documento se muestran los diagramas declases definitivos

Paacutegina 29 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria222 Diagrama de clases inicial de pantallas

ilustracioacuten 7 Diagrama de clases de pantallas

Este diagrama recoge en forma de clases las pantallas iniciales definidas del videojuego Separte de una superclase llamada AbstractGameScreen que recogeraacute las operaciones comunes detodas ellas y de esta se extienden las pantallas concretas este diagrama solo muestra laspantallas maacutes baacutesicas definidas inicialmente estas serviraacuten como base para desarrollar elconjunto de pantallas total necesarias para este proyecto y que quedan recogidas en su totalidaden el apartado 4 ldquoDisentildeordquo de esta documento

A continuacioacuten se pasan a detallar a modo resumido cada una de ellas

2221 Resumen clases pantallas

IntroScreen Clase para la pantalla de intro

MenuScreen Clase que contiene el menuacute principal del videojuego GameScreen La clase game screen es la que contiene la pantalla donde se desarrolla todo elvideojuego

Paacutegina 30 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

23 Definicioacuten de maacutequinas de estado finitas

Como ya se ha introducido en el punto 212 la IA aplicada a los videojuegos dota a estos derealismo Existen distintas teacutecnicas para la implementacioacuten de esta Una de las maacutes consolidadases el uso de maacutequinas de estados finitas ya que tienen un coste computacional casi inexistenteya que no tienen ninguacuten coste de procesamiento asignado Las maacutequinas de estados permiten deforma faacutecil definir comportamientos Es por este motivo que han sido utilizadas no solamente para definir los comportamientos de laIA del videojuego sino tambieacuten para definir los distintos estados en que se puede encontrar elvideojuego durante su tiempo de vida A continuacioacuten se detallan los distintos diagramas de lasmaacutequinas de estados utilizadas para este proyecto conjuntamente con una explicacioacuten de cadauna de ellas

231 Maacutequina de estados del videojuego

ilustracioacuten 8 Maacutequina de estados del videojuego

La ilustracioacuten 8 nos muestra los estados que puede tomar el videojuego durante su tiempo devida

Este diagrama define los estados que puede tomar el videojuego una vez iniciado inicialmente eljuego se encuentra en el estado READY de este estado existe una transicioacuten al estado GAMEcuando el tiempo de READY finaliza READY lt=0 El estado game sera el estado en donde se

Paacutegina 31 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriadesarrollara todo el juego Des de este estado podemos pasar al estado PAUSE si pulsamos elbotoacuten de pausa del juego y desde el estado PUASE volvemos al estado GAME si volvemos apulsar el botoacuten pause Finalmente desde el estado GAME haremos la transicioacuten al estado GAMEOVER si nos arrebatan todas las vidas durante la partida Desde el estado GAME OVERpodremos volver a READY si decidimos hacer una nueva partida

232 Maacutequina de estados comportamiento oveja

ilustracioacuten 9 Maacutequina de estados comportamiento oveja La ilustracioacuten 9 muestra el comportamiento del personaje principal del videojuego que en estecaso es la oveja Se define el ciclo de vida de la oveja a traveacutes de sus comportamientos

APPEAR SHEEP La oveja aparece fuera del rango visual de la pantalla y empieza a moversepara que suceda la transicioacuten hacia el siguiente estado FOREST START la coordenada x debeser menor que 220

FOREST START La oveja seguiraacute movieacutendose en un espacio determinado de la pantalla hastaque sea lanzada en unas determinadas direcciones la direccioacuten queda determinada por lasvariables velocityX velocityY estas tomaran valores positivos o negativos determinando ladireccioacuten de lanzamiento esto queda reflejado en la condicioacuten de transicioacuten del estado FORESTSTART a FOREST DEEP Si realizamos el lanzamiento en esas determinadas direccionesharemos la transicioacuten al un nuevo estado FOREST DEEP

FOREST DEEP La oveja rebota por el escenario si colisiona con la puerta del corral y estaabierta hacemos la transicioacuten al estado ON THE PEN

Paacutegina 32 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ON THE PEN Finaliza el ciclo de vida de la oveja dentro del juego esta es devuelta al corral seincrementan puntos en el marcador de puntuacioacuten y se incrementa una unidad en el contador deovejas salvadas

233 Maacutequina de estados comportamiento lobo

ilustracioacuten 10 Maacutequina de estados comportamiento lobo La ilustracioacuten 10 muestra el comportamiento de los enemigos del videojuego que en este casoson los lobos Se define el ciclo de vida del lobo a traveacutes de sus comportamientos

APPEAR EYES Antes de aparecer los lobos a escena apareceraacuten sus ojos entre los matorralesdel bosque Cuando acaba el tiempo pasa al siguiente estado tiempo ojos lt= 0

APPEAR WOLF En este estado se seleccionara el tipo de lobo (habraacute 3 tipos distintos) el ladode la pantalla por donde apareceraacute posicioacuten y velocidad de salto como tambieacuten el tiempo ensegundos que tardara a saltar al escenario Una vez seleccionados todos estos paraacutemetros haraacutela transicioacuten al estado WHEN JUMP

WHEN JUMP Este estado simplemente esperara que pase el tiempo para que el lobo salte alescenario Un vez pase el tiempo el lobo apareceraacute en el escenario pasando a la transicioacuten JUMPON SCENE

JUMP ON SCENE En este estado se efectuara el salto a escena del lobo este saltara desde los

Paacutegina 33 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriamatorrales laterales de la pantallahacia el escenario dibujando un arco convexo Para realizar elsalto nos apoyaremos en la representacioacuten del calculo de la funcioacuten trigonomeacutetrica cosenosolamente en sus valores positivos por tanto cuando cosy lt 0 haremos la transicioacuten al estadoMOVE ya que el salto habraacute finalizado

MOVE En este estado los lobos se moveraacuten y podraacuten ser ahuyentados pulsando repetidas vecesencima de ellos las veces a pulsar queda sujeta al tipo de lobo que sea Des de este estadopodremos hacer a dos estado distintos dependiendo de lo que suceda Si conseguimos ahuyentaral lobo pasaremos al estado WOLF SCARED Si por el contrario el lobo atrapa a la ovejaharemos la transicioacuten al estado SHEEP TRAPPED en ambos estados finalizara el ciclo de vidadel lobo

WOLF SCARED Se habraacute ahuyentado el lobo se incrementa en uno el contador de lobosahuyentados y se suman puntos a la puntuacioacuten total En este estado finaliza el ciclo de vida dellobo

SHEEP TRAPPED El lobo habraacute atrapado una oveja se nos restara una vida En este estadofinaliza el ciclo de vida del lobo

234 Maacutequina de estados tutorial in game

ilustracioacuten 11 Maacutequina de estados tutorial in game La ilustracioacuten 11 muestra los distintos estados que toma el mini tutorial in game que apareceraacute laprimera vez que se juega En este las transiciones entre estados suceden de forma automaacutetica

Paacutegina 34 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriacada 5 segundos desde que se ha activado el primer estado Cada estado corresponderaacute a unacaja de texto mostrada en pantalla

3 Disentildeo

31 Estudio comparativo

Un estudio realizado en 2011 por la empresa Newzoo httpwwwnewzoocom empresainternacional dedicada a los estudios de mercado y enfocada por completo a la industria de losvideojuegos Ha realizado la primera encuesta a jugadores espantildeoles y una de las cosas que dicees La suma del volumen de negocio de juegos online (redes sociales juegos casualesjuegos para moacuteviles juegos MMO) superaraacute al del consumo en juegos para consolas en2011 Se puede ver un resumen del estudio en liacutenea en

httpwwweurogameresarticles2011-10-26-espana-gastara-1-600-millones-de-euros-en-videojuegos-en-2011

Con esta informacioacuten se puede ver que hacer un videojuego casual para una plataforma moacutevilcomo Android puede ser muy viable

Para este proyecto se realizaraacute un estudio comparativo (benchmarking) En la industria de losvideojuegos es habitual sacar tiacutetulos fijaacutendose en otros tiacutetulos que han conseguido gran eacutexito enel mercado La operativa consiste en mejorarlos dentro de otro contexto o hacer un videojuegocompletamente diferente pero basaacutendose en ocasiones en mecaacutenicas de alguacuten otro tiacutetulo que haconseguido un gran eacutexito

Existen en Google Play gran cantidad de juegos casuales que pueden servir como inspiracioacuten ycomo punto de inicio para hacer un planteamiento general de coacutemo disentildear el producto que sequiere desarrollar partiendo de los requisitos definidos en el apartado 131 de este documento Setomaraacuten como referencia algunos tiacutetulos para identificar patrones para ver coacutemo otros hansolucionado ciertas situaciones como pueden ser problemas de disentildeo o interaccioacuten entre otrosEn ninguacuten caso deberaacuten ser exactamente de la misma temaacutetica pero si que se miraraacute que seandel mismo tipo es decir casual games

El primer paso para realizar este estudio a sido ir a Google play y verificar si hay alguacuten juego conel mismo nombre que el que se pretende desarrollar ldquoFling the sheeprdquo No existe ninguacuten juego adiacutea de hoy con este nombre

El segundo paso a sido buscar tambieacuten en Google play videojuegos en los que aparezcanovejas solo poniendo en el buscador la palabra sheep nos aparecen muchiacutesimos juegos quetienen una temaacutetica donde aparecen ovejas Se ha verificado tambieacuten poniendo combinaciones depalabras relacionadas con el juego que se quiere implementar palabras como sheep wolves o sheep farm etc los resultados obtenidos son bastante elevados

Por la cantidad de juegos encontrados y los recursos de que se dispone como por ejemplo eltiempo no es posible analizarlos todos Si que se tomaran algunos juegos despueacutes de hacer unrepaso de los maacutes destacados Hay que decir que despueacutes de haber instalado algunos alguno deellos no ha acabado de funcionar correctamente en el dispositivo moacutevil

Tras estos pasos se escogeraacuten dos videojuegos de temaacutetica similar y dos videojuegos detemaacutetica diferente Los videojuegos escogidos para realizar el anaacutelisis comparativo son

Paacutegina 35 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria311 Sheep amp Wolf

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 12 y 13 pantallas juego Sheep amp Wolf Link httpsplaygooglecomstoreappsdetailsid=jscompanygamesSheepAndWolf_enter3

El juego consta de una mecaacutenica muy simple disponemos de un boomerang y un corazoacuten laperspectiva del juego es elevada y vemos coacutemo van bajando ovejas y lobos de forma aleatoria setrata de forma taacutectil dibujar la trayectoria del boomerang para eliminar los lobos sin tocar lasovejas y con el corazoacuten dibujar una trayectoria de forma taacutectil para tocar las ovejas y no los lobosconforme vamos tocando los lobos y las ovejas con el correspondiente objeto iremos sumandopuntos

Tiene cierta similitud con el que se quiere implementar ya que salen tambieacuten lobosovejas ytambieacuten que lo que se pretende implementar funcionara de forma taacutectil para lanzar las ovejas alcorral y ahuyentar a los lobos que amenazan a las ovejas

Tiene una perspectiva de caacutemara igual a la que se quiere implementar Tiene una mecaacutenica dejuego muy sencilla las opciones que ofrece son muy definidas y claras 3 botones al inicio deljuego grandes que nos indican las posibles opciones que tenemos dentro del juego Game StartGame Record Exit Un punto interesante de este juego es que las puntuaciones no se guardan anivel local de la aplicacioacuten sino que son compartidas en una pagina web asiacute se pueden ver laspuntuaciones a nivel mundial La navegacioacuten por las diferentes pantallas es correcta

Quizaacute un aspecto negativo del juego seriacutea que visualmente esta muy poco cuidado Aunque aveces si el juego produce mucha adiccioacuten el aspecto visual puede quedar en segundo teacutermino enjuegos para dispositivos moacuteviles En otros tipos de plataformas como consolas o PC el aspectovisual es un punto muy importante y que se debe trabajar mucho maacutes a fondo no obstante estono significa que en un dispositivo moacutevil no deba estarlo

Paacutegina 36 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez adictivo puntuaciones a nivel mundial Navegacioacuten correctaPuntos Negativos Poco cuidado visualmente no tiene pausaObservaciones No tiene un final definido a medida que avanzamos la dificultad aumenta

312 Sheep Up

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 14 y 15 pantallas juego Sheep Up Linkhttpsplaygooglecomstoreappsdetailsid=compgpublishandroidsheepuplive

A diferencia del anterior este visualmente esta mucho maacutes cuidado Es un juego en 3D dondeuna oveja de juguete esta guardada dentro de una caja de cartoacuten Va botando y tiene que irrecogiendo botones e ir subiendo por diferentes niveles para poder salir de la caja es un juego deplataformas tambieacuten con una mecaacutenica bastante sencilla

Este dispone de una pantalla que dura unos segundos y seguidamente sale el menuacute de opcionesdel juego a diferencia de lo visto anteriormente donde directamente saliacutea el menuacute de opcionesde juego El menuacute de opciones de juego tambieacuten es muy directo y claro Aparte del botoacuten playpara iniciar el juego el botoacuten opciones para configurar el audio del juego los efectos el idioma yver los creacuteditos Tiene el botoacuten store donde este juego tiene implementada la modalidad freemiumpara ir comprando diferentes objetos dentro de el que nos daraacuten ciertas ventajas dentro delgameplay La compra se podraacute realizar con monedas virtuales (los botones) que los habremos idorecogiendo durante los diferentes niveles jugados o tambieacuten podemos comprar cantidadesdeterminadas de botones a cambio de dinero de verdad Dispone de vinculacioacuten a redes socialescomo Twitter y Facebook

Puntos Positivos Sencillez adictivo vinculado a Twitter y el Facebook el juego se puede pararNavegacioacuten correctaPuntos Negativos La pantalla inicial tarda demasiado en desaparecer y no da ninguacuten tipo de

Paacutegina 37 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriainformacioacuten al usuario puede llegar a parecer que se a colgado debido al largo tiempo que tardaal menos con el dispositivo que se ha verificado

313 Temple Run

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 16 y 17 pantallas juego Temple runLinkhttpsplaygooglecomstoreappsdetailsid=comimangitemplerun Es un juego que no tiene final donde un explorador tiene que evitar la muerte superandodiferentes obstaacuteculos a traveacutes de diferentes pasillos tendremos que dibujar diferentes trazos deforma taacutectil para que el personaje gire salte o se deslice por el suelo al mismo tiempo tendremosque inclinar el teleacutefono para que el personaje vaya recogiendo monedas que podremos utilizarpara adquirir objetos y mejoras en la partida A medida que vamos recorriendo maacutes y maacutes metrosla dificultad aumenta y nos obligara a realizar maacutes acciones en un espacio de tiempo maacutes cortoasiacute pues los reflejos juegan un papel importante

Tambieacuten dispone de una pantalla que dura unos segundos seguida de un menuacute de opciones muyclaro y definido Este igual que el anterior dispone de una tienda donde se pueden comprarmejoras (potenciadores) con dinero virtual o real Los botones de inicio son muy similares al delanterior juego visto Dispone de vinculacioacuten a redes sociales como Twitter

Puntos Positivos Sencillez Adictivo vinculado a Twitter el juego se puede parar NavegacioacutencorrectaPuntos Negativos -

Paacutegina 38 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria314 Attack of the Spooklings

A continuacioacuten se muestran unas pantallas del videojuego

ilustraciones 18 y 19 pantallas juego Attack of the SpooklingsLinkhttpsplaygooglecomstoreappsdetailsid=compicarogamesspooklings_free

Finalmente nos centramos en este casual con aspecto visual retro Otro juego que no disponede final y donde la dificultad va aumentando conforme el tiempo de juego aumenta El objetivo deljuego es matar a todos los Spooklings que quieren atacar nuestro poblado La forma de matar alos Spooklings es con el dedo deslizaacutendolo sobre la pantalla soacutelo que un Spookling llegue anuestro poblado en la parte inferior de la pantalla la partida finaliza Debemos evitar de todas lasformas posibles que lleguen a la parte inferior de la pantalla

Tambieacuten dispone de una pantalla de inicio y un menuacute inicial de juego claro y directo no disponede ninguna vinculacioacuten a redes sociales El juego no se puede parar La navegacioacuten por todas laspantallas es correcta teniendo pantalla de puntuaciones maacutes altas pantalla con mini tutorial decoacutemo jugar y unas opciones para configurar el audio y ver los creacuteditos del juego Sin embargo adiferencia de los otros tiene algunas fallas de disentildeo a nivel de transiciones entre pantallas yfuncionalidades baacutesicas que aparentemente no tienen mucho sentido Fuera de la pantalla dejuego no es posible abandonar la aplicacioacuten de ninguna de las maneras no hay botoacuten de salida yla tecla de ir hacia atraacutes no funciona la uacutenica manera de salir es matando el proceso Por otrolado durante la partida con el botoacuten de ir atraacutes conseguimos hacer pausa del juego pero de unaforma que no estaacute anunciada al usuario de ninguna manera con alguacuten icono visual que informa alusuario de la funcionalidad Una vez parado el juego con una tecla que no estaacute indicada enninguna parte como tal nos da dos opciones RESTART y QUIT con QUIT salimos de la aplicacioacutenalgo que no se puede hacer en ninguacuten otro punto de la aplicacioacuten Con RESTART vuelve aempezar la partida y se pierde la que teniacuteamos empezada En resumen si pulsamos este botoacuten noestaacute anunciado en ninguna parte por accidente durante una partida perdemos la partida ya que notenemos la opcioacuten de continuar puesto que o volvemos a empezar o salimos de la aplicacioacuten

Paacutegina 39 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaPuntos Positivos Sencillez Muy adictivoPuntos Negativos Errores en el disentildeo de menuacutes y transiciones entre pantallas no tienevinculacioacuten a redes sociales no tiene pausa

Todo lo que se ha visto en este estudio comparativo nos da una idea de que el disentildeo que selleve a cabo debe cumplir las siguientes metas tener una mecaacutenica de juego adictiva y sencillaque la disposicioacuten de opciones e iconos han ser claras y dejar claro al usuario de forma visual queacutefuncionalidad tienen las transiciones y operativas baacutesicas deben estar bien indicadas eimplementadas El disentildeo visual debe ser lo mas cuidado posible aunque a veces en juegos paraeste tipo de dispositivos no es el que maacutes domina sobre todo si el juego tiene una mecaacutenica muyadictiva aunque si se consiguen las dos cosas mucho mejor Otro punto importante es tener unamecaacutenica freemium implementada dentro del juego con una tienda para comprar mejorasaplicables a la mecaacutenica de juego Otro punto importante es la vinculacioacuten del juego a redessociales y que recoja puntuaciones a nivel mundial y no locales del dispositivo todos estosingredientes le pueden dar al juego un plus que haga que el usuario vea el juego maacutes atractivo

Debido a temas de tiempo inicialmente se descarta para este proyecto la implementacioacuten de lassiguientes funcionalidades dentro del videojuego las puntuaciones a nivel mundial estas demomento quedaraacuten sujetas a nivel local del dispositivo tambieacuten se descarta la vinculacioacuten a redessociales y mecaacutenicas freemium

El resto de puntos comentados como las mecaacutenicas sencillas y adictivas aspecto visual lo maacutescuidado posible dentro de los recursos de que se dispone y la navegacioacuten entre pantallas ymenuacutes claros y sencillos seraacute lo que se transportaraacute al disentildeo y la posterior implementacioacuten delproyecto Es posible que durante la implementacioacuten del disentildeo mostrado en este documento semodifiquen algunos puntos por temas de balanceo y equilibrio del producto final

32 Perfiles de usuarios identificados

Los juegos casuales son juegos con mecaacutenicas simples Este hecho hace que esteacuten al alcancede cualquier usuario aunque eacuteste no sea un jugador experimentado acostumbrado a utilizar juegoscon mecaacutenicas maacutes complicadas que requieren de cierta experiencia previa Al mismo tiempo sonjuegos que pueden ser jugados en cortos espacios de tiempo Por tanto el tipo de usuario deestos juegos sera muy variado Podemos encontrar el perfil de usuario experimentado tanto enlas tecnologiacuteas como en los videojuegos y que tiene intereacutes por cualquier tipo de juego Y por otrolado encontramos el usuario poco experimentado pero que gracias a los smarphones y lasencillez de las mecaacutenicas de juego provoca que tambieacuten juegue

Todos tendraacuten un objetivo comuacuten pasar un rato jugando al juego Para mejorar su uacuteltimo reacutecordAunque en este tipo de juegos el usuario tambieacuten puede jugar sin buscar ninguacuten tipo de metaconcreta simplemente pasar un rato divertido sin necesidad de alcanzar ninguacuten tipo de reacutecord niobjetivo concreto Tambieacuten es importante mencionar que aunque los perfiles de usuarios son muyvariados existe una fuerte tendencia a que los jugadores de este tipo de juegos tiendan a sermaacutes grandes que los jugadores de otros tipos de videojuegos y suelen tener un intereacutes y tiempolimitado tanto para jugar como los videojuegos en general siendo normalmente del sexofemenino

Se detectan dos grandes grupos de perfiles de usuario los experimentados en jugar avideojuegos y los no experimentados en jugar videojuegos edades diferentes profesionesvariadas educacioacuten variada sexo variado Los usuarios de Android en general suelen pagarmucho menos por aplicaciones que otros grupos de usuarios como los de iphone por ejemplo

Paacutegina 40 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Los haacutebitos de consumo en los estados unidos ya no de los usuarios de juegos casuales sinode los usuarios de Android en general se definen de la siguiente manera soacutelo un 4 de estospaga por descargar una aplicacioacuten contra un 23 y un 31 de los usuarios de la App Store paraiPhone y iPad respectivamente tal y como muestra un estudio realizado por la empresa Statistacon las 100 aplicaciones maacutes descargadas

ilustracioacuten 20 Aplicaciones de pago vs aplicaciones gratuitasSe puede ver en linea en el link httpwwwstatistacomtopics983mobile-app-monetizationchart1400paid-apps-don-t-stand-a-chance-on-google-play

Se puede ver otro articulo similar en el siguiente link

httpwwwwayerlesscom201307usuarios-de-android-pagan-menos-por-apps-que-los-de-ios

La mayoriacutea de aplicaciones gratuitas utilizan la modalidad freemium que no es maacutes que ofrecerun producto baacutesico de forma gratuita y cobrar a los usuarios por opciones maacutes avanzadas oespeciales dentro de la misma aplicacioacuten No obstante tambieacuten es posible encontrar aplicacionescompletamente gratuitas sin la modalidad freemium

Como ya se ha dicho se han detectado inicialmente dos grandes grupos dentro de la masa deusuarios que son consumidores potenciales de juegos casuales Estos son los usuarios asiduos ajugar videojuegos de todo tipo y con experiencia en el uso de tecnologiacuteas en general es decirusuarios experimentados Por otro lado encontramos los que no tienen costumbre de jugar muchoy normalmente tampoco tienen una gran experiencia en el uso de tecnologiacuteas en general pero

Paacutegina 41 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debido a la simpleza de los videojuegos casuales eacutestos tambieacuten se convierten en jugadores yen muchas ocasiones se convierten en los usuarios que consumen maacutes este tipo de juegos Asiacutepues encontramos dos grandes grupos seguacuten unas caracteriacutesticas comunes experiencia previa osin experiencia ante los videojuegos y las tecnologiacuteas

33 Contextos de uso

331 iquest Doacutende

Al tratarse de un casual game para un dispositivo moacutevil el espacio de utilizacioacuten seraacute muyvariado Por tanto los usuarios podraacuten encontrarse en muchos lugares distintos como puedenser en casa en el tren en el metro en el autobuacutes al aire libre etc En definitiva el usuario podraacuteencontrarse en cualquier lugar

332 iquest Cuaacutendo

El tipo de juegos casuales tienden a ser juegos donde los usuarios realizan partidas cortas peroal mismo tiempo la naturaleza adictiva de estos hace que los usuarios puedan quedar atrapadosdurante varias horas repartidas en ratos diferentes o continuados dependiendo de la situacioacuten decada usuario Por tanto el cuaacutendo de este tipo de juegos puede ser muy variado casi en cualquiermomento que el usuario pueda dedicarle unos minutos o ratos maacutes largos durante su tiempolibre mientras se desplaza ya sea en tren en metro o en alguacuten otro medio de transporte que nonecesite estar pendiente del vehiacuteculo cuando esta en la cama etc

333 iquest En que entorno

Los entornos de utilizacioacuten pueden tambieacuten ser muy variados promovidos por doacutende y el cuaacutendoPor lo tanto el entorno tecnoloacutegico podraacute tambieacuten ser variado puede existir o no conexioacuten a lared en un entorno social muy diferente que podraacute ser maacutes privado o maacutes puacuteblico yconsecuentemente se dibujaraacute un entorno ambiental variado seguacuten el momento

4Disentildeo y ldquoConcept Artrdquo

41 Elementos presentes en la interfaz de la aplicacioacuten

Con todo lo que se ha visto en el apartado 31 estudio comparativo queda patente que la interfazde usuario debe ser clara y sencilla Seraacute necesario que contenga las siguientes pantallas

bull Pantalla de intro inicial que apareceraacute durante un segundobull Pantalla menuacute inicial del juego con las opciones Play Scores Options () How to play bull Pantalla de nivel donde se desarrolla el videojuegobull Pantalla high scores que mostrara la tabla de reacutecords con las 10 puntuaciones maacutes altasbull Pantalla how to play instrucciones de como jugar tambieacuten se integraran dentro del

videojuego y apareceraacuten durante la primera partida que se jueguebull Pantalla opciones podremos activar y desactivar el sonido y los efectos de audio A su vez

desde esta pantalla podremos acceder a la pantalla de creacuteditosbull Pantalla de creacuteditos pantalla doacutende se mostraran lo creacuteditos del videojuego bull Pantalla Ready pantalla de juego con el mensaje sobre impreso antes de empezar a

jugar apareceraacute durante 3 segundosbull Pantalla con los botones resume quit sobreimpresos en la pantalla de juego se accederaacute

Paacutegina 42 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaa ella con el botoacuten de pausa pausando el juego Desde ella podremos reanudar el juego oabandonar el juego

bull Pantalla game over con el resumen de los reacutecords conseguidos durante la partidapuntostiempo jugado numero de lobos ahuyentados y ovejas colocadas en el corralDesde esta pantalla tendremos dos botones Play again y Exit uno nos permitiraacute volver ajugar y el otro nos permitiraacute abandonar el juego tal y como su nombre indica

42 Flujos de interaccioacuten

En la siguiente ilustracioacuten se muestran los flujos de interaccioacuten definidos con las pantallasenumeradas en el apartado anterior Los flujos muestran la navegacioacuten que debe existir entre laspantallas del videojuego

ilustracioacuten 21 Flujos de interaccioacuten de la aplicacioacuten entre sus distintaspantallas

Paacutegina 43 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

43 Prototipaje

431 Sketches

En este apartado se muestran los primeros esbozos realizados a mano alzada estos intentanplasmar el disentildeo del juego en su totalidad Estos esbozos serviraacuten como punto de partida en unasegunda fase para realizar el prototipaje de todas las pantallas que intervienen en el videojuegoutilizando todo el material recopilado en la red

Tal y como ya se ha dicho en este mismo documento anteriormente no se dispone deconocimientos de disentildeo suficientes como para abordar un disentildeo de arte desde cero Por lo tantose han utilizado recursos ya disponibles en la red para el montaje de todos los graacuteficos delvideojuego Todos los recursos utilizados estaacuten bajo licencias creative commons o dominio puacuteblico A continuacioacuten se muestran los bocetos

ilustracioacuten 22 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 44 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 23 Bocetos pantallas videojuego realizadas a mano alzada

Paacutegina 45 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 24 Bocetos pantallas videojuego realizadas a mano alzada

En la siguiente paacutegina se muestran las transiciones definidas entre pantallas con los sketchesrealizados ilustracioacuten 241 Las transiciones toman como base el diagrama de flujos deinteraccioacuten definido en el apartado 42 de este documento ver ilustracioacuten 21

Paacutegina 46 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria432 Transiciones definidas entre pantallas

ilustracioacuten 241 Transiciones definidas entre pantallas

Paacutegina 47 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria433 Prototipo horizontal de alta fidelidad

4331 Pantalla inicial

Pantalla de inicio al ejecutar el juego apareceraacute esta pantalladurante un segundo

4332 Pantalla menuacute principal del juego

Pantalla de menuacute principal del juego desde esta pantallapodremos empezar a jugar (botoacuten Play) consultar la tabla depuntuaciones (botoacuten Scores) e ir a la pantalla de opciones deljuego (botoacuten Options) El interrogante de la parte inferiorderecha nos serviraacute para ir a la pantalla de instruccionesHOW TO PLAY para saber coacutemo se juega

Paacutegina 48 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4333 Pantalla de opciones

La pantalla de opciones nos permitiraacute deshabilitar la muacutesicadel juego y los efectos sonoros pasando el dedo sobre losiconos del altavoz y las notas musicales con el altavozdeshabilitaremos la muacutesica y con las notas musicalesdesactivaremos los efectos de audio La flecha naranja nosconduciraacute de nuevo a la pantalla de inicio del juego el botoacutencreacuteditos nos llevara a la pantalla de creacuteditos

4334 Pantalla de creacuteditos

Pantalla de creacuteditos en ella se muestran los nombres dequienes han disentildeado y programado el juego con la flechanaranja inferior volvemos a la pantalla de opcionesDeslizando el dedo sobre el texto se podraacute desplazar haciaarriba y hacia abajo

Paacutegina 49 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4335 Pantalla tabla de puntuaciones

Pantalla tabla de puntuaciones nos mostrara una tabla conlas 10 puntuaciones maacutes altas de todas las partidas jugadasEsta tabla se guardara de forma local en el dispositivo

4336 Pantalla de juego READY

Pantalla de juego READY Apareceraacute durante unossegundos una vez iniciada la partida Despueacutes de 3segundos pasara a la pantalla de juego que se muestra en elsiguiente apartado

Paacutegina 50 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4337 Pantalla de juego

La pantalla de la izquierda es donde se desarrollaraacute todo el gameplay en la parte superiorizquierda de la pantalla se muestran los puntos conseguidos y las vidas En la parte superiorderecha hay un botoacuten que permitiraacute pausar el juego una vez pausado mostraraacute la pantalla depausa con los botones RESUME y QUIT la pantalla se muestra en el apartado siguiente En laparte derecha se muestra otra pantalla ideacutentica a la de la izquierda donde se puede ver elgameplay baacutesico representado con flechas los lobos saldraacuten de los extremos de la pantalla yendohacia las ovejas las ovejas al mismo tiempo saldraacuten de la derecha de la pantalla y las tendremosque lanzarlas deslizando el dedo sobre ellas y lanzandolas hacia el establo La puerta se iraacuteabriendo y cerrando aleatoriamente los lobos una vez puestos en escena los podremos ahuyentardeslizando el dedo sobre ellos un nuacutemero de veces determinado en funcioacuten del color del lobocomo esta indicado en el apartado 131 de este documento

Paacutegina 51 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria4338 Pantalla de pausa botones RESUME y QUIT

Pantalla de pausa que apareceraacute cuando se pause el juegoCon la opcioacuten RESUME continuaremos jugando con laopcioacuten QUIT se saldraacute de la partida y pasaraacute a la pantalla delmenuacute principal del juego descrita en el punto 322

4339 Pantalla GAME OVER

Pantalla GAME OVER apareceraacute cuando se hayanagotado todas las vidas Mostraraacute un resumen de los puntosconseguidos en la partida actual tiempo invertido en lapartida lobos ahuyentados y ovejas salvadas Con losbotones de la parte inferior podremos volver a jugar (botoacutenplay again) o salir del juego con el botoacuten exit este botoacuten nosconduciraacute a la pantalla de inicio de juego descrita en elapartado 322

Paacutegina 52 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria43310 Pantalla de instrucciones de juego HOW TO PLAY

Pantalla de instrucciones del juego nos haraacute una breveexplicacioacuten de coacutemo jugar Deslizando el dedo sobre el textose podraacute desplazar hacia arriba y hacia abajo El juegodispondraacute de unas mini instrucciones in game queapareceraacuten en la primera partida que se juegue en forma decajas de texto esta pantalla se muestra en el siguienteapartado

43311 Pantalla de instrucciones in game

Esta pantalla muestra el modo como quedaraacuten integradaslas instrucciones de juego dentro del gameplay Estasinstrucciones apareceraacuten solamente la primera vez que sejuegue

Paacutegina 53 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Todo el disentildeo mostrado en este apartado ha sido realizado con todos los recursos encontradosen la red todos ellos quedan recogidos en el apartado 6 Con el programa Gimp se ha montadotodo el disentildeo de alta fidelidad mostrado en este apartado Se ha trabajado con capas paradisponer de flexibilidad en la construccioacuten del disentildeo A su vez el hecho de tener los disentildeos porcapas nos permitiraacute poderlo exportar a la implementacioacuten del videojuego de una manera coacutemoday raacutepida en el apartado 5 implementacioacuten se hace referencia a como convertir el disentildeo realizadoen capas a recursos graacuteficos del videojuego

En la siguiente ilustracioacuten se muestra una captura del disentildeo de la pantalla de juego descrita enel apartado 4337 realizado con Gimp

ilustracioacuten 242 Disentildeo pantallas con Gimp

Paacutegina 54 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

5Implementacioacuten

51 Arquitectura global

511 Arquitectura del framework libGDX

LibGDX es un framework multiplataforma que actualmente soporta WindowsLinuxMac OS XAndroid iOS y HTML5 Esto permite escribir el coacutedigo una sola vez y desplegarlo en las distintasplataformas comentadas sin tener que modificar el coacutedigo LibGDX permite bajar a maacutes bajonivel si se desea ya que da acceso directo al sistema de ficheros dispositivos de entrada desonido y a OpenGL a traveacutes de la interfaz unificada OpenGL ES11 y 20

LibGDX ofrece a su vez un conjunto de APIs que ayudan en las tareas comunes de desarrollode videojuegos como son la presentacioacuten de sprites texto la creacioacuten de interfaces de usuario lareproduccioacuten de efectos de sonido y secuencias musicales y los distintos tipos de caacutelculosnecesarios en la programacioacuten de videojuegos

En algunas ocasiones LibGDX deja de lado el lenguaje Java y recurre a coacutedigo nativo paraconseguir un mejor rendimiento No obstante todas estas funciones quedan ocultas detraacutes de lasAPIs de Java De manera que en el momento de desarrollar un videojuego no hay quepreocuparse de realizar una compilacioacuten cruzada entre Java y C++

LibGDX es un framework maacutes que un motor de videojuegos que ayuda al desarrollo de estosgracias a las abstracciones de gran alcance que ofrece y deja en manos del programador elegircomo escribir su videojuego o aplicacioacuten

512 Visioacuten de los moacutedulos de libGDX

LibGDX comprende varios moacutedulos que proporcionan los servicios necesarios para crear laarquitectura tiacutepica de un videojuego

ilustracioacuten 25 Diagrama de los moacutedulos que intervienen en unvideojuego

Paacutegina 55 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaA continuacioacuten de describen los moacutedulos mostrados en la ilustracioacuten 25

Input Proporciona un modelo de entrada unificado para todas las plataformas Soporta tecladopantalla taacutectil aceleroacutemetro y ratoacuten si esta disponible

Graphics Permite el dibujo de las imaacutegenes en pantalla usando el hardware proporcionado por laimplementacioacuten de Open GL ES las versiones soportadas son GL versioacuten 10 11 20

Files Proporciona los meacutetodos necesarios para las operaciones de lectura escritura totalmenteindependientes a los medios de comunicacioacuten existente

Audio Proporciona las herramientas necesarias para la reproduccioacuten de sonido para todas lasplataformas

Math Moacutedulo que proporciona los caacutelculos matemaacuteticos necesarios orientados al desarrollo devideojuegos

Physics LibGDX proporciona un wrapper completo al motor de fiacutesicas en 2D open sourcedesarrollado en C++ llamado Box2D

52 Arquitectura de un videojuego

521 Programa vs Aplicacioacuten

Una aplicacioacuten convencional sigue una secuencia loacutegica lineal reacciona cuando sucede alguacutenevento es decir responde a eventos como por ejemplo cuando se pulsa una tecla Por el contrarioun videojuego es maacutes complejo hace caacutelculos y dibuja en pantalla constantemente aunque no seproduzca ninguacuten evento

522 Estructura baacutesica de un videojuego

Programar videojuegos es una forma completamente diferente de programar software Ladiferencia principal entre una aplicacioacuten convencional y un videojuego radica en la gestioacuten deeventos tal y como se ha indicado anteriormente un programa ofrece respuestas a eventos y unavez son servidos permanece a la espera de una nueva orden en cambio un videojuego es unprograma que debe actuar en tiempo real tiene que estar haciendo caacutelculos y dibujando enpantalla constantemente No se puede esperar a que suceda un evento para poder actuaraunque el jugador no haga nada no presione una sola tecla no mueva el ratoacuten el juego tiene quecalcular el tiempo que lleva jugando en ese nivel si le va a atacar alguacuten enemigo si estaacute cargandoenergiacutea y por supuesto dibujar en pantalla todo lo que va sucediendo

La mayoriacutea de videojuegos estaacuten construidos bajo la misma estructura baacutesica sobre la cual correel programa Esta estructura puede tener variaciones pero de forma general se presenta de lasiguiente manera

Inicializacioacuten En esta primera etapa el juego se situacutea en su estado inicial Se realizan lasinicializaciones por lo que respecta a las libreriacuteas o motores que vayan a utilizarse de variables yestructuras de datos referentes a los atributos de las entidades o personajes escenariosconfiguraciones etc y de los diferentes recursos fiacutesicos que vayan a emplearse tales comograacuteficos o sonidos

Paacutegina 56 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Ciclo de juego En esta parte esta toda la accioacuten este ciclo se repite de manera indefinida hastaque el jugador pierda gane o salga del juego Este punto se puede dividir en tres partes quepodemos llamarlas entrada proceso y salida

Como entrada se entiende el punto donde se captura todo lo que hace el jugador comopresionar los botones de control mover el ratoacuten presionar las flechas del teclado tocar la pantallataacutectil y el resto de informacioacuten que recibe el juego

En la parte de proceso es donde se procesa toda la informacioacuten que se recibioacute en la entrada ytiene lugar la loacutegica del videojuego Por tanto es donde se realizan los caacutelculos de fiacutesicas si eljuego los requiere asiacute como tambieacuten los caacutelculos de la inteligencia artificial de esteconjuntamente con el tratamiento graacutefico

La salida es la encargada de enviar al jugador toda la informacioacuten que se ha procesado en laetapa anterior proceso Se muestra al jugador el resultado de lo que hizo con la visualizacioacuten enpantalla del estado actual del videojuego Tambieacuten es en este punto donde se hace sonar lamuacutesica y efectos de sonido

Por uacuteltimo y fuera del ciclo de juego esta la parte de finalizacioacuten esta parte es la encargada deliberar todos los recursos y memoria utilizada durante el transcurso del videojuego

Es importante diferenciar estas tres etapas del ciclo del videojuego y ver queacute tarea se delega encada una de ellas en la entrada tan soacutelo nos ocupamos de captar los posibles eventos el procesose encarga en primer lugar de procesar la entrada y maacutes adelante de la loacutegica del videojuego ypor uacuteltimo la capa de salida se encarga de visualizar y reproducir la muacutesica

Con estos puntos claros se puede mostrar la estructura principal de un videojuego En elsiguiente apartado se muestra esta estructura baacutesica a modo de esquema

Paacutegina 57 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

53 Esquema de la estructura baacutesica de un videojuego

Inicializacioacuten Creacioacuten de estructuras dedatos carga de recursos graacuteficos y sonidos

Entrada Gestioacuten de pantalla taacutectiljoystick teclado

Proceso Lanzamos una oveja al corralrebota la oveja salta un lobo al escenarioetc

Salida Mostrar graacuteficos y reproducirsonidos

ilustracioacuten 26 Estructura baacutesica de unvideojuego

Finalizacioacuten Liberar recursos

Paacutegina 58 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

54 Patrones de disentildeo

541 Introduccioacuten

En el disentildeo de cualquier aplicacioacuten como por ejemplo un videojuegono es posible abordarlo porcompleto El proceso de disentildeo de una aplicacioacuten suele ser iterativo y se realiza en diferentesetapas de forma que se vaya refinando con el tiempo Conseguir un disentildeo perfecto a la primeraes muy difiacutecil de conseguir El disentildeo de aplicaciones es complejo y la maacutes importante y que maacutesimpacto tiene no soacutelo sobre el producto final sino tambieacuten sobre su vida futura Ya que es en eldisentildeo en donde se definen las estructuras y entidades que se van a encargar de resolver elproblema planteado Como de bien se definan estas estructuras y entidades influiraacute en granmedida en el eacutexito o fracaso del proyecto y en la viabilidad de su mantenimiento

Los patrones de disentildeo son formas reconocidas y probadas de resolver problemas de disentildeo queson recurrentes en el tiempo No es maacutes que basarse en experiencias anteriores en problemassimilares aplicado soluciones probadas anteriormente en determinados contextos para alcanzarun mejor disentildeo maacutes raacutepidamente

Existen distintos patrones para distintos problemas de disentildeo No obstante en este documentosoacutelo se haraacute hincapieacute en los patrones utilizados para este proyecto Quedando fuera del alcancede este documento los demaacutes patrones existentes

542 Patrones de creacioacuten

Estos patrones nos proporcionan una solucioacuten relacionada con la construccioacuten de clases objetosy otras estructuras de datos Algunos ejemplos de patrones pueden ser Abstract Factory BuilderSingleton estos ofrecen mecanismos de creacioacuten de instancias de objetos y estructurasescalables dependiendo de las necesidades

543 Singleton

Para este proyecto se ha utilizado este patroacuten ya que era necesario tener una uacutenica instancia dealgunas determinadas clases En java cuando se utiliza el operador new es posible crear unainstancia de un objeto No obstante a veces es necesario tener una uacutenica instancia de un objetopor ejemplo para poder acceder a ella des de cualquier punto de la aplicacioacuten Seria un ejemplolapelota de un juego de pinball en donde podriacutea ser conveniente mantener una uacutenica instancia deeste objeto

La solucioacuten para garantizar que solo existe una instancia de un objeto se consigue impidiendoque ninguna otra clase pueda acceder al constructor por este motivo de declara el constructorcomo miacutenimo de forma protegida o privada y se proporciona un uacutenico punto (controlado) en dondese proporciona la uacutenica instancia En la siguiente ilustracioacuten se muestra el diagrama de clases delpatroacuten Singleton

ilustracioacuten 27 Singleton

Paacutegina 59 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria A continuacioacuten en el listado 543 se muestra una implementacioacuten baacutesica del patroacuten Singletonutilizada en el proyecto para la clase que maneja el audio del videojuego

Listado 543

1 package comthreecometflingthesheeputil23 import combadlogicgdxaudioMusic 4 import combadlogicgdxaudioSound56 public class AudioManager 7 8 public static final AudioManager instance = new AudioManager()910 private Music playingMusic11 private Sound playingSound1213 Singleton14 private AudioManager() 15 1617 1819 public void ResunmeMusic()20 21 if(playingMusic = null) playingMusicplay()22 2324 public void PlayMusic(Music musicfloat volumeboolean loop) 25 26 if(GamePreferencesinstancemusic) return27 playingMusic = music28 musicsetLooping(loop)29 musicsetVolume(volume)30 musicplay()31 3233 public void StopMusic()34 35 if(playingMusic = null) playingMusicstop()36 3738 public void PauseMusic()39 40 if(playingMusic = null) 41 if(playingMusicisPlaying()) 42 playingMusicpause()43 44 45 4647 public void PlaySound(Sound soundfloat volume) 48 49 if(GamePreferencesinstancesound) return50 playingSound = sound51 soundplay(volume)52 5354 public void PlaySound(Sound soundfloat volumefloat pitchfloat pan) 55 56 if(GamePreferencesinstancesound) return57 playingSound = sound58 soundplay(volume pitch pan)59 60

Esta clase maneja el audio del videojuego tanto efectos de sonido como la muacutesica es una clase

Paacutegina 60 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriaque debe estar accesible des de cualquier punto de la aplicacioacuten y no tiene ninguacuten sentido que seinstancie repetidas veces soacutelo sera necesaria una instancia de dicha clase para poder manejar losaudios y muacutesicas Como se puede ver en la linea 14 del listado 543 se declara el constructorprivado y en la linea 8 se proporciona el punto donde se proporciona la uacutenica instancia de dichaclase a traveacutes de la variable instance declarada de forma publica para que se accesible desdecualquier otra clase y a su vez declarada de forma static y final Con final le decimos que estavariable ya no puede ser modificada una vez declarada es decir sera una constante Con static leindicamos que podremos utilizar la variable instance sin la necesidad de hacer ninguna instanciacon el operador new de la clase AudioManager

Existen varias clases en el videojuego que son singleton A continuacioacuten se nombran todas ellasAudioManager Assets WorldGameController CounterTime GamePreferences

55 Diagramas de clases definitivos

Se ha dividido en varios diagramas para facilitar su lectura se pueden ver los diagramas en lossiguientes apartados de este documento A continuacioacuten se pasan a comentar las clases descritasen ellos

56 Diagramas nuacutecleo videojuego

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep-android encontramoslas siguientes clases

MainActivity Hereda de AndroidAplication que a su vez hereda de Activity es donde se crea laaplicacioacuten crea una instancia de FlingTheSheepMain

En el paquete comthreecometflingthesheep en el directorio FlingTheSheep encontramos laclase FlingTheSheepMain donde se instancia la pantalla de intro del juego dentro del meacutetodocreate

Siguiendo el esquema estructural de un videojuego descrito en el punto 53 de este documentola ilustracioacuten 28 detalla el diagrama de clases que engloba la inicializacioacuten del juego y el ciclo devida

La Inicializacioacuten queda recogida en la clase Assets esta clase es un singleton que instanciaotras clases que a su vez guardan todos los recursos del videojuego por recursos se entiendetexturas para los graacuteficos archivos de audio ficheros con informacioacuten necesaria para el juegoUna vez inicializado el hecho de ser un singleton nos permite acceder a estas clases a traveacutes dela clase assets des de cualquier punto de la aplicacioacuten En la ilustracioacuten 29 se detallan todas estasclases que engloba la clase assets Esta clase se encuentra el el paquetecomthreecometflingthesheepgame A continuacioacuten se comenta cada una de ellas con una brevedescripcioacuten

LevelDecoration Enumera todas las texturas de los objetos de decoracioacuten del videojuego floreshierba etc Son objetos que no tienen ninguna interaccioacuten con el juego simplemente decoran

AssetFontsScene2D Engloba los tipos distintos de fuente que se utilizan en el videojuego tipode letra medida y color

AssetSound Enumera todos los efectos de sonido del juego

Paacutegina 61 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAssetMusic Contiene todas las muacutesicas del juego

FileHandleHighScores Inicializa la tabla de puntuaciones local y la actualiza cada vez que serealiza una partida de juego

LevelObjects Engloba todos los objetos que tienen interaccioacuten con el videojuego por interaccioacutense entiende objetos que pueden colisionar con otros o que tienen alguacuten papel importante dentrode videojuego no son solo objetos de decoracioacuten

Character Contiene el protagonista del juego el personaje que lleva el jugador en esta caso lasovejas

NPCs En esta clase quedan englobadas las texturas de los enemigos en esta caso los lobos

GUI En esta clase se engloban todas las texturas utilizadas para la creacioacuten de la interfaz deusuario botones imaacutegenes

La clase Constants es una clase que declara varias constates estaacuteticas que son accesibles desde cualquier punto de la aplicacioacuten y se utilizan tanto en la inicializacioacuten como en el ciclo de vidadel videojuego La podemos encontrar en el paquete comthreecometflingthesheeputil

El ciclo de vida del videojuego entrada proceso y salida queda repartido en las siguientes clases

Entrada Gestioacuten pantalla taacutectil se realiza en la clase WorldGameController en el meacutetodollamado handleInput a su vez cada personaje(character) y enemigo(NPC) gestiona su propiaentrada de eventos a traveacutes de los meacutetodos sobre escritos touchDown fling y tap Ver ilustracioacuten30 clases Sheep y Wolf

Proceso Este apartado realiza la loacutegica del videojuego y es responsable de esto el meacutetodoupdate de la clase WorldGameController Dentro de este meacutetodo existe implementada lamaquina de estados descrita en el apartado 231 con todos los estados posibles que el juegopuede tener durante su ciclo de vida los estados son READYGAMEPAUSEGAME OVER Cadapersonaje y enemigo lleva implementado su propia loacutegica y maquina de estados dentro de susclases correspondientes Ver ilustracioacuten 30 clases Sheep y Wolf estas maacutequinas de estados sonlas descritas en los apartados 232 y 233 respectivamente

Salida La salida descrita en el apartado 53 queda recogida en la clase GameScreen Verilustracioacuten 31

Finalizacioacuten La finalizacioacuten liberacioacuten de recursos queda a cargo del meacutetodo sobre escrito hiderepartido por las distintas clases de la aplicacioacuten

Otras clases que intervienen en el ciclo de juego recogidas en la ilustracioacuten 28 sonCounterTime GamePreferences AudioManager a continuacioacuten se detalla la funcionalidad decada una de ellas

CounterTime Esta clase engloba el calculo de tiempo transcurrido desde que empieza el juegohasta que termina hace la funcioacuten de contador de tiempo interno

GamePreferences Esta clase hace persistente la configuracioacuten escogida por el usuario en lasopciones Es posible configurar el juego con o sin sonido al igual que los efectos de audio estaclase es la encargada de guardar esta configuracioacuten aunque abandonemos la aplicacioacuten

Paacutegina 62 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

AudioManager Clase que se encarga tanto de la reproduccioacuten de audio como los efectos desonido es su responsabilidad interrogar la configuracioacuten actual del sonido y efectos paradeterminar si tiene que realizar la reproduccioacuten de audio o efectos asiacute como tambieacuten determinarel volumen del sonido o si un audio hay que reproducirlo de forma ciacuteclica En el listado 543 deeste documento se puede ver el coacutedigo de esta clase como ejemplo de singleton

ilustracioacuten 28 Diagrama de clases nuacutecleo videjuego

Paacutegina 63 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 29 Diagrama de clases Assets

57 Diagrama de clases objetos videojuego

En la ilustracioacuten 30 de este documento se detalla el diagrama de clases referente a los objetosdel videojuego Por objetos se entiende personaje principal enemigos juntamente con todos loselementos que forman el conjunto del escenario del videojuego

En primer lugar cabe destacar la existencia de la clase abstracta AbstractGameObject Estaclase abstracta define los meacutetodos comunes de todos los objetos del juego Por las necesidadesde implementacioacuten no se han definido meacutetodos abstractos no obstante la clase se define comoabstracta ya que va a ser la superclase de todos los objetos del videojuego y por tanto no se van arealizar instancias de esta A continuacioacuten se enumeran las clases que se extienden de esta y querecogen todos los objetos del juego ya sean con o sin interaccioacuten en el

Paacutegina 64 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaGrass Hole Flower Flowers Stump ForestLeft ForestRight ThePen WoodFenceForestWoodFencePen DoorPen BorderGrassLeft BorderGrassRight PotionPurple AubergineRedPuddle Tree GrassField

Estas clases corresponden a los objetos que constituyen el escenario del videojuego Las clasesSheep y Wolf corresponden al personaje del videojuego y a los enemigos respectivamente estasclases no solamente contienen el meacutetodo para ser dibujadas en pantalla igual que las anterioressino que tambieacuten poseen toda la loacutegica para el comportamiento de cada una de ellas este puntocorresponderiacutea a la fase de proceso de la estructura baacutesica de un videojuego detallada en elpunto 53 de este documento Existe para cada personaje y enemigo una maquina de estadosimplementada que indica en que estado se encuentra en cada momento aplicando la loacutegicacorrespondiente para ese estado Ver las enumeraciones SHEEP_STATE y WOLF_STATE de lailustracioacuten 30 estas corresponden a las maacutequinas de estado definidas en los apartados 232 y233 respectivamente

Finalmente en la ilustracioacuten 30 aparecen las clases GameScreen y WorldGameController

La clase GameScreen como se vera en el apartado 58 es la clase que engloba todo lorelacionado con la pantalla del juego o nivel En ella se instancian todos los objetos descritosanteriormente para la creacioacuten del nivel asiacute como tambieacuten la creacioacuten de la GUI del videojuegobotones textos sobreimpresos y cajas de textos Es por este motivo que en la clase GameScreenexisten dependencias u asociaciones hacia todos los objetos dependiendo del tipo de declaracioacutende estos

La clase WorldGameController contiene la implementacioacuten de gran parte de la loacutegica delvideojuego esta clase formariacutea parte de la etapa de proceso dentro de la estructura baacutesica de unvideojuego descrita en el apartado 53 de este documento

Existe tambieacuten en esta clase una asociacioacuten hacia la clase GameScreen ya que des de la claseWorldGameController que es donde se encuentra gran parte de la loacutegica es necesario accedera la instancia de GameScreen para interactuar con varios elementos visuales que manipulan laloacutegica del videjuego

En la siguiente hoja se muestra la ilustracioacuten 30 correspondiente a todo los descrito en esteapartado

Paacutegina 65 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 30 Diagrama de clases objetos

Paacutegina 66 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

58 Diagrama de clases pantallas videojuego

En la ilustracioacuten 31 quedan recogidas todas las clases que intervienen en la creacioacuten depantallas del videjuego por pantallas se entine la pantalla de intro la del menuacute principal la deopciones etc Estas clases engloban todo lo necesario para la construccioacuten y visualizacioacuten deestas A continuacioacuten se detallan cada una de las clases

AbstractGameScreen Esta clase abstracta recoge todos los meacutetodos abstractos que sonimplementados en cada una de las clases que a continuacioacuten se detallan(pantallas) con la loacutegicanecesaria seguacuten las necesidades de cada pantalla No se crea ninguna instancia de esta clase

IntroScreen Corresponde a la pantalla de intro del videojuego descrita en el apartado 4331

MenuScreen Corresponde a la pantalla del menuacute inicial del juego des de aquiacute podemos escogersi jugar consultar la tabla de puntuaciones local ir a las opciones o a la pantalla de ayuda delvideojuego descrita en el apartado 4332 OptionsScreenPantalla de opciones descrita en el apartado 4333

CreditsScreen Pantalla de creacuteditosdescrita en el apartado 4334

HighScoresScreen Pantalla en donde se recoge la puntuacioacuten local del videojuegodescrita en elapartado 4335

GameScreen Pantalla general esta clase engloba toda la loacutegica del nivel del juego a su vezengloba la pantalla inicial de nivel READY la pantalla de pausa del juego y la de game overdescritas en los apartados 4336 4337 4338 4339

HowToPlayScreen El videojuego dispone de un tutorial in game que solo aparece la primera vezque jugamos a el y en las siguientes partidas ya no vuelve aparecer maacutes descrita en el apartado43311 No obstante existe una pantalla en donde podemos ver este tutorial fuera del juego estaclase esta destinada a contener los datos de esta pantalla descrita en el apartado 43310

TextGUI Esta clase contiene todos los textos sobreimpresos que existen en el videojuego En ellaesta la loacutegica de cada uno de estos textos para que sean posicionados y visualizados desde lasdistintas partes del videojuego

TUTORIAL_INGAME_STATE Esta enumeracioacuten enumera los estados de la maquina de estadosutilizada para mostrar el tutorial in game dentro del videojuego la primera vez que jugamos lamaacutequina de estados esta implementada dentro de la clase TextGUI la maacutequina corresponde a ladescrita en el apartado 234

En la siguiente hoja se muestra la ilustracioacuten correspondiente a todo los descrito en esteapartado

Paacutegina 67 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 31 Diagrama de clases pantallas

Paacutegina 68 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

59 Configurar el entorno de desarrollo

Antes de empezar a desarrollar juegos con libGDX es necesario instalar y configurar el entornode desarrollo Para ello se utilizaraacute Eclipse como entorno de desarrollo integrado IDE A su vez secreara un proyecto que nos serviraacute como base para el desarrollo de este

Es posible desarrollar con otros entornos distintos a Eclipse pero el hecho que Eclipse sea elentrono de desarrollo soportado oficialmente ha sido motivo suficiente para escogerlo para esteproyecto como entorno de desarrollo

591 Instalacioacuten

Para poder instalar el entorno de desarrollo nos haraacute falta primero instalar el Java DevelopmentKit(JDK) para posteriormente poder instalar eclipse

Una vez instalados seraacute necesario bajar el framework libGDX del siguiente enlace

httplibgdxbadlogicgamescomdownloadhtml

Tambieacuten sera necesario instalar el Android SDK seguidamente tendremos que ejecutar eclipse yinstalar los plugins necesarios para poder desarrollar con Android El plugin necesario paradesarrollar con Eclipse sobre Android de llama ADT (Android Developer Tools) Para instalar esteplugin debemos dirigirnos a Help--gtInstall new software tal y como muestra la siguiente ilustracioacuten

ilustracioacuten 32 Instalacioacuten plugin ADT en Eclipse

Paacutegina 69 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez el entorno de desarrollo preparado seraacute el momento de descomprimir el frameworklibGDX se recomienda descomprimirlo en la raiacutez ClibGDX en esta caso ya que trabajamos bajoWindows

Una vez descomprimido dentro de la la carpeta encontramos una aplicacioacuten llamada gdx-setup-uijar Esta aplicacioacuten nos ayuda a crear un proyecto ya configurado con las libreriacuteas necesariaslisto para ser importado a Eclipse y empezar a desarrollar con libGDX para Android O paracualquier otra de las plataformas soportadas por el framework En este caso se configura elproyecto para Android y para Escritorio de esta manera podremos verificar durante el desarrollodel proyecto los avances sin necesidad de instalarlo en un dispositivo Android ya sea fiacutesico ovirtual

Las siguientes ilustraciones muestran la configuracioacuten a realizar

ilustracioacuten 33 Creacioacuten proyecto libGDX Habraacute que pulsar en el botoacuten Create y con ello accederemos a la siguiente ilustracioacuten

ilustracioacuten 34 Creacioacuten proyecto libGDX

Paacutegina 70 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez configuradas todas las opciones le daremos al paso 4 Open the generation screen ygeneraremos el proyecto Esto proyecto sera importable a eclipse desde la opcioacuten Import delpropio IDE La configuracioacuten del proyecto tambieacuten es posible hacerla a mano no obstante esta aplicacioacutennos ahorra tiempo y posibles errores en el momento de configurarlo dentro del entorno ya quepara hacerlo a mano existen distintos pasos a seguir para conseguir lo mismo que se consiguecon esta aplicacioacuten con escasos clicks de ratoacuten

510 Traspaso del disentildeo a texturas

Todo el disentildeo realizado en el apartado 4 seraacute necesario pasarlo a texturas para posteriormenteutilizarlo en la implementacioacuten del juego como recursos graacuteficos

Una textura es una imagen digital cualquiera en cualquiera de los formatos habituales jpg pnggif tga etc Para poderla cargar dentro de un videojuego y manipularla haraacute falta una libreriacuteaespecializada para ello esto se podria programar para para el caso de este proyecto utilizamos elpropio framework libGDX para realizar esta tarea que a su vez envuelve el uso de OpenGL

Las texturas en OpenGL deben ser siempre potencias de 2163264128256 etc del contrarionos daraacute problemas y no funcionaraacute

El primer paso sera desmontar todas las capas pieza por pieza por decirlo de alguna manera ycrear ficheros de cada una de las capas de forma separada para guardarlas todas en una carpetacon un nombre identificativo Ver la siguiente ilustracioacuten

ilustracioacuten 35 Capas separadas por imaacutegenes

Paacutegina 71 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Una vez realizado este paso deberemos juntarlas todas de nuevo en una uacutenica textura que seapotencia de 2 Trataacutendose de un juego para moacutevil las texturas no deberiacutean ser mayores de1024x1024 y no se podraacuten cargar muchas de ellas en memoria por razones obvias de recursosdel tipo de dispositivo

Para juntarlas utilizaremos una aplicacioacuten llamada Texture Packer esta nos juntara las texturasde repartieacutendola de forma que quepan en una tamantildeo de textura definido que en este caso serade 1024x1024 en caso de caber en una uacutenica textura el programa generara 2 texturas siempreoptimizadas a potencias de 2 La siguiente ilustracioacuten muestra el programa Texture packer

Ilustracioacuten 36 Texture packer El formato de salida de las textura sera png ya que necesitamos mantener el canal alpha deestas activado para los objetos sean correctamente dibujados en la escena del videojuego

Conjuntamente con la textura la aplicacioacuten nos generara un archivo de texto que contendraacute elnombre de la textura y la posicioacuten donde se encuentra dentro de la textura generada de1024x1024 Ver la siguiente ilustracioacuten en la siguiente paacutegina

Paacutegina 72 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

ilustracioacuten 37 Posicioacuten texturas De esta manera podremos cargar las texturas en la fase inicializacioacuten en la clase Assets descritaen la ilustracioacuten 29 en forma de diagrama de clases

511 Implementacioacuten de las maacutequinas de estado

La implementacioacuten de las maacutequinas de estado se realiza con una estructura enumconjuntamente con una estructura switch case El siguiente listado muestra la declaracioacuten del laestructura enum implementada en la clase WorldGameController la implementacioacuten de todas lasmaacutequinas se realiza del mismo modo por tanto se toma esta como ejemplo en representacioacuten detodas las implementadas en el videojuego

Listado 5111

1 private enum GAME_STATE READYGAMEPAUSEGAME_OVER2 private GAME_STATE gameState34 gameState = GAME_STATEREADY

Paacutegina 73 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLa siguiente tabla muestra un trozo de la estructura switch case implementada en el meacutetodoupdate de la clase WorldGameController

Listado 5112

1 public void update(float deltaTime)2 3 switch(gameState)4 5 case READY6 if(audioReady) 7 AudioManagerinstancePlaySound(Assetsinstancesoundready 8 ConstantsVOLUME_AUDIO_EFFECTS)9 audioReady = false10 11 if(timeLeftShowReadyScreen gt 0)12 13 if(deltaTime lt 03f ) 14 timeLeftShowReadyScreen -=deltaTime15 16 if(timeLeftShowReadyScreen lt 0)17 18 gameScreensetVisibilityGUI()19 timeLeftShowReadyScreen = 020 CounterTimeinstancestartTime()21 22 AudioManagerinstancePlayMusic(Assetsinstancemusiclevel01 23 ConstantsVOLUME_MUSIC_GAME true)24 gameState = GAME_STATEGAME 2526 27 28 break 29 case GAME30 updateGame() 31 if(timeOpenDoorPen gt 0)32 33 if(deltaTime lt 03f ) 34 timeOpenDoorPen -= deltaTime35 36 if(timeOpenDoorPen lt= 0) 37 gameScreengetDoorPen()setVisibility(gameScreengetDoorPen()getVisibility())38

En este listado podemos ver el estado READY y un trozo del estado GAME de la maacutequina deestados definida en el apartado 231 de este documento inicialmente la maacutequina toma el estadoREADY como se puede ver en la linea 4 del listado 5111 este estado se ira repitiendo a cadavuelta del ciclo de vida del videojuego hasta que cambie el estado de juego a GAME estosucederaacute una vez transcurridos 3 segundos tal y como se puede ver en la linea 24 del listado5112 Hay que tener en cuenta que un videojuego tal y como se ha definido en el apartado 522de este documento forma un bucle infinito por tanto la funcioacuten update de la linea 1 de este listadose repetiraacute de forma indefinida durante la ejecucioacuten del nivel de juego y cada vuelta ejecutaraacute elestado en que se encuentre la maacutequina de estados

Paacutegina 74 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

6Conclusiones El desarrollo del proyecto ha sido tal y como se esperaba en lineas generales no han habidograndes desviaciones de tiempo ni durante el disentildeo ni en el posterior desarrollo de este Cabedestacar que el hecho de poder probar el proyecto ejecutaacutendolo en la propia maacutequina donde se hadesarrollado sin tener que utilizar un dispositivo real o virtual cada vez que se ha querido verificarha hecho que el desarrollo sea mucho maacutes fluido que sino se hubiera contado con el escenariodescrito Esto no significa que en ciertos momentos del desarrollo no se haya probado con undispositivo real Android Dejando a parte la gran ventaja que esto significa ya que una vezdesarrollado el esfuerzo realizado nos sirve para distintas plataformas casi sin tener que tocarnada del coacutedigo

Por tanto el hecho de haber escogido libGDX para el desarrollo ha sido una buena eleccioacuten Estambieacuten una buena eleccioacuten escoger un framework o un motor focalizado al desarrollo devideojuegos si se quiere implementar uno ya sea para Android o para cualquier plataforma

Existe la posibilidad de desarrollarlo sin ninguacuten tipo de framework o motor pero hay que tenerclaro que se quiere hacer exactamente y a donde se quiere llegar es decir si lo que se quiere escentrarse en la programacioacuten de videojuegos es mucho mejor partir de un framework o motor yaque de esta forma nos desligamos de programar ciertos apartados que estaacuten maacutes focalizados a laprogramacioacuten de frameworks o motores para videojuegos que no a la programacioacuten devideojuegos en si

Yendo maacutes allaacute de donde el programador se quiere centrar existe otro factor importante a teneren cuenta en el momento de plantear un proyecto llamado tiempo con el tiempo de que se hadispuesto para este proyecto queda auacuten maacutes justificado la eleccioacuten de este framework pararealizarlo Ya que probablemente sin el debido al esfuerzo mayor en programar apartados que noson exclusivos del videojuego pudieran haber existido desviaciones de tiempo importantes enrelacioacuten al calendario propuesto

Ha quedado fuera del proyecto por temas de tiempo realizar animaciones a todos los personajesdel videojuego para conseguir una mejor experiencia de usuario y un nivel de acabado superiorFuera del proyecto tambieacuten ha quedado la implementacioacuten no solo de unas puntuacionesmaacuteximas a nivel local sino tambieacuten unas a nivel mundial consultables a traveacutes de una paacutegina webA su vez no solo guardariacutea la puntuacioacuten maacutexima sino tambieacuten el tiempo jugado las ovejassalvadas y los lobos ahuyentados Tambieacuten ha quedado fuera de este proyecto la realizacioacuten deun blog dedicado al videojuego Todos estos apartados se implementaran en breve fuera de esteTFC

7Recursos utilizados

71 Portada documento

Jake Maymar httpwwwflickrcomphotosmaymar5334789030httpcreativecommonsorglicensesby-sa20deeden

72 Recursos utilizados para el disentildeo del videojuego

Para realizar todo el disentildeo visual del videojuego se ha recurrido a diferentes fuentes de arte

Paacutegina 75 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoriasujetas a licencias creative commons y dominio puacuteblico A continuacioacuten se detalla una lista decada recurso con su autor en el caso de que no haya sido publicado de forma anoacutenimajuntamente con el link donde se ha encontrado

721 Fotografiacutea pantalla intro videojuego y usuarios

Michael Karrerhttpwwwflickrcomphotosmichael_karrer78438470httpcreativecommonsorglicensesby-nc20deeden

Jodi Womackhttpwwwflickrcomphotosjodiwomack6217578512httpcreativecommonsorglicensesby20deeden

Tony Alterhttpwwwflickrcomphotos78428166N008279647916httpcreativecommonsorglicensesby20deeden

Gage Skidmore (Nina Dobrev)httpwwwflickrcomphotosgageskidmore5980906910httpcreativecommonsorglicensesby-sa20deeden

722 Iconos y botones

7221 Altavoz

Autor httpwwwiconshockcom Link httpswwwiconfindercomicons67771audio_speaker_iconsize=128Licencia Free for commercial use

7222 Nota Musical

Autor httpwwwdezinerfoliocomLink httpswwwiconfindercomicons58679music_iconsize=128Licencia Free for commercial use

7223 Flecha salida

Autorhttptayteldeviantartcom Linkhttpswwwiconfindercomicons41696arrow_back_grey_left_orange_iconsize=128LicenciaFree for commercial use (Include link to authors website) 7224 Icono de pausa

AutorhttpwwwwebdesignerdepotcomLink httpswwwiconfindercomicons40716blue_button_pause_iconsize=64Licencia Free for commercial use

7225 Icono interrogante (help)

AutorhttpwwwdoublejdesigncoukLinkhttpwwwiconarchivecomshowravenna-3d-icons-by-double-j-designHelp-iconhtml

Paacutegina 76 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaLicencia httpcreativecommonsorglicensesby30

7226 Botones (Play Score Options)

AutorydLinkhttpopengameartorgcontentbuttons-variationsLicenciahttp creativecommonsorgpublicdomainzero10

723 Recursos graacuteficos 2D componentes escenario

7231 Ojos lobos

AutorCreek23Link httpopengameartorgcontentgnu-the-gnu-mascotLicencia httpcreativecommonsorglicensesby-sa30

7232 Ovejas y lobos

Autor lemmlingLink httpopenclipartorguser-clipartslemmlingLicencia httpopenclipartorgshare

7233 Fondos de pantallas OPTIONS HIGH SCORES HOW TO PLAY

AutorSamLink httpopengameartorgcontentcountry-fieldLicencia httpcreativecommonsorgpublicdomainzero10

7234 Escenario

Daniel EddelandLinkhttpopengameartorgcontentlpc-farming-tilesets-magic-animations-and-ui-elementsLicenciahttpcreativecommonsorglicensesby-sa30

724 Fuentes

7241 ThinckheadAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10 7242 MisfortuneAutor Scotty UlrichLink httpwwwdafontcomesscotty-ulrichd101l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7243 TabaqueraAutor deFharoLink httpwwwdafontcomesfernando-harod3419l[]=10Licencia httpcreativecommonsorgpublicdomainzero10

7244 Press Start Font

Paacutegina 77 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaAutor desconegutLink httpwwwzone38netfontpressstartLicencia httpscriptssilorgcmsscriptspagephpsite_id=nrsiampid=OFL

725 Otros

Todos los demaacutes recursos no nombrados en esta lista como el fondo de pantalla del menuacuteprincipal de inicio del juego y las letras del titulo del juego Fling the sheep impresas sobre lapantalla del menuacute inicial son de elaboracioacuten propia

726 Audio y efectos de sonido

7261 Menu

Autor mrpolyLinkhttpopengameartorgcontentmenu-musicLicencia httpcreativecommonsorgpublicdomainzero10

7262 Game Over

Autor MacroLinkhttpopengameartorgcontentrest-outro-loopLicenciahttpcreativecommonsorglicensesby30

7263 Game Play

AutorRezonerLinkhttpopengameartorgcontenttrance-menuLicenciahttpcreativecommonsorglicensesby30

7264 Creacutedits

Autor -Linkhttpopengameartorgcontent1-minute Licenciahttpcreativecommonsorgpublicdomainzero10

7265 Ready

httpopengameartorgcontentui-accept-or-forwardhttpcreativecommonsorglicensesby30

7266 Pause_Resume

httpopengameartorgcontentcompletion-sound httpcreativecommonsorglicensesby30

7267 Quit

httpopengameartorgcontentfly-swatter-squish-sound httpcreativecommonsorgpublicdomainzero10

7268 Sheep

Paacutegina 78 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

httpopengameartorgcontentsheep-sound-bleats-yo-frankiehttpcreativecommonsorglicensesby30

El resto de efectos de audio han sido obtenidos de la siguiente paacutegina httpwwwpond5com

8Lineas abiertas del proyecto Se haraacute un repaso del proyecto por si existe alguacuten bug para solucionarlo Posteriormente deadaptara para que sea funcional en distintas resoluciones de pantalla Se antildeadiraacuten los power-upsque se definieron al principio del proyecto por temas de tiempo han quedado fuera de la entregaA su vez se balanceara el gameplay antildeadiendo alguna mecaacutenica de juego extra si procede

Se publicara el juego en Google Play y se creara un blog del juego se mirara la posibilidad dehacer funcionar el juego en el blog con webGL httpprojects3cometcom

Se ampliara la tabla de puntuaciones de la siguiente manera la tabla no solamente guardara lospuntos tambieacuten guardara el tiempo jugado nuacutemero de lobos ahuyentados nuacutemero de ovejassalvadas y nombre del usuario con 5 caracteres Se creara un un registro de puntuaciones globalconsultable desde el blog del videojuego

Finalmente se crearan maacutes niveles de juego con distribuciones diferentes alguacuten nivel podriacuteatambieacuten tener mecaacutenicas diferentes de juego con los mismos personajeshellip

9Bibliografiacutea utilizada

Titulo Beginning Android Games (Second Edition) ISBN 978-1-43024-677-0

Autor Mario Zechner Robert Green

Editorial Apress

Contenido Desarrollo de videojuegos para Android

Titulo Learning libGDX Game Development ISBN 978-1-78216-604-7

Autor Andreas Oehlke

Editorial PACKT Publishing

Contenido Desarrollo de videojuegos para Android con libGDX

Paacutegina 79 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

10Otros proyectos realizados

101 Remake Gradius Konami

Remake del famoso shooter de Konami lanzado para ordenadores MSX en 1986 programadocon C++ con SDL Aunque este juego existe para multitud de plataformas Ver articulo wikipedia

httpeswikipediaorgwikiGradius_videojuego

Blog del proyecto httpprojects3cometcom

102 Tales of Nimria mini RPG

Mini RPG en 2D programado en C++ con DirectX este mini RPG trata de salvar a una princesacapturada por unas malvadas criaturas

Blog del proyecto httpprojects3cometcom

102 Motocalipsis Bar 66 RTS RTS en 3D con ambiente motero los hechos de la historia suceden en un pequentildeo pueblo deTexas Programado en Unity con C

Blog del proyecto httpmotocalipsisbar66blogspotcomes

Paacutegina 80 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

Creative Commons 40 license by-nc-sa

Attribution-NonCommercial-ShareAlike 40 International

===========================================================

Creative Commons Corporation (Creative Commons) is not a law firm anddoes not provide legal services or legal advice Distribution ofCreative Commons public licenses does not create a lawyer-client orother relationship Creative Commons makes its licenses and relatedinformation available on an as-is basis Creative Commons gives nowarranties regarding its licenses any material licensed under theirterms and conditions or any related information Creative Commonsdisclaims all liability for damages resulting from their use to thefullest extent possible

Using Creative Commons Public Licenses

Creative Commons public licenses provide a standard set of terms andconditions that creators and other rights holders may use to shareoriginal works of authorship and other material subject to copyrightand certain other rights specified in the public license below Thefollowing considerations are for informational purposes only are notexhaustive and do not form part of our licenses

Considerations for licensors Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights Our licenses are irrevocable Licensors should read and understand the terms and conditions of the license they choose before applying it Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected Licensors should clearly mark any material not subject to the license This includes other CC- licensed material or material used under an exception or limitation to copyright More considerations for licensors wikicreativecommonsorgConsiderations_for_licensors

Considerations for the public By using one of our public licenses a licensor grants the public permission to use the licensed material under specified terms and conditions If the licensors permission is not necessary for any reason--for example because of any applicable exception or limitation to copyright--then that use is not regulated by the license Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant Use of

Paacutegina 81 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria the licensed material may still be restricted for other reasons including because others have copyright or other rights in the material A licensor may make special requests such as asking that all changes be marked or described Although not required by our licenses you are encouraged to respect those requests where reasonable More_considerations for the public wikicreativecommonsorgConsiderations_for_licensees

===========================================================

Creative Commons Attribution-NonCommercial-ShareAlike 40 InternationalPublic License

By exercising the Licensed Rights (defined below) You accept and agreeto be bound by the terms and conditions of this Creative CommonsAttribution-NonCommercial-ShareAlike 40 International Public License(Public License) To the extent this Public License may beinterpreted as a contract You are granted the Licensed Rights inconsideration of Your acceptance of these terms and conditions and theLicensor grants You such rights in consideration of benefits theLicensor receives from making the Licensed Material available underthese terms and conditions

Section 1 -- Definitions

a Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated altered arranged transformed or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor For purposes of this Public License where the Licensed Material is a musical work performance or sound recording Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image

b Adapters License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License

c BY-NC-SA Compatible License means a license listed at creativecommonsorgcompatiblelicenses approved by Creative Commons as essentially the equivalent of this Public License

d Copyright and Similar Rights means copyright andor similar rights closely related to copyright including without limitation performance broadcast sound recording and Sui Generis Database

Paacutegina 82 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria Rights without regard to how the rights are labeled or categorized For purposes of this Public License the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights

e Effective Technological Measures means those measures that in the absence of proper authority may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20 1996 andor similar international agreements

f Exceptions and Limitations means fair use fair dealing andor any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material

g License Elements means the license attributes listed in the name of a Creative Commons Public License The License Elements of this Public License are Attribution NonCommercial and ShareAlike

h Licensed Material means the artistic or literary work database or other material to which the Licensor applied this Public License

i Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license

j Licensor means the individual(s) or entity(ies) granting rights under this Public License

k NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation For purposes of this Public License the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange

l Share means to provide material to the public by any means or process that requires permission under the Licensed Rights such as reproduction public display public performance distribution dissemination communication or importation and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them

Paacutegina 83 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria m Sui Generis Database Rights means rights other than copyright resulting from Directive 969EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases as amended andor succeeded as well as other essentially equivalent rights anywhere in the world

n You means the individual or entity exercising the Licensed Rights under this Public License Your has a corresponding meaning

Section 2 -- Scope

a License grant

1 Subject to the terms and conditions of this Public License the Licensor hereby grants You a worldwide royalty-free non-sublicensable non-exclusive irrevocable license to exercise the Licensed Rights in the Licensed Material to

a reproduce and Share the Licensed Material in whole or in part for NonCommercial purposes only and

b produce reproduce and Share Adapted Material for NonCommercial purposes only

2 Exceptions and Limitations For the avoidance of doubt where Exceptions and Limitations apply to Your use this Public License does not apply and You do not need to comply with its terms and conditions

3 Term The term of this Public License is specified in Section 6(a)

4 Media and formats technical modifications allowed The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created and to make technical modifications necessary to do so The Licensor waives andor agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights including technical modifications necessary to circumvent Effective Technological Measures For purposes of this Public License simply making modifications authorized by this Section 2(a) (4) never produces Adapted Material

5 Downstream recipients

a Offer from the Licensor -- Licensed Material Every recipient of the Licensed Material automatically

Paacutegina 84 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License

b Additional offer from the Licensor -- Adapted Material Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapters License You apply

c No downstream restrictions You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material

6 No endorsement Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are or that Your use of the Licensed Material is connected with or sponsored endorsed or granted official status by the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i)

b Other rights

1 Moral rights such as the right of integrity are not licensed under this Public License nor are publicity privacy andor other similar personality rights however to the extent possible the Licensor waives andor agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights but not otherwise

2 Patent and trademark rights are not licensed under this Public License

3 To the extent possible the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme In all other cases the Licensor expressly reserves any right to collect such royalties including when the Licensed Material is used other than for NonCommercial purposes

Paacutegina 85 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 3 -- License Conditions

Your exercise of the Licensed Rights is expressly made subject to thefollowing conditions

a Attribution

1 If You Share the Licensed Material (including in modified form) You must

a retain the following if it is supplied by the Licensor with the Licensed Material

i identification of the creator(s) of the Licensed Material and any others designated to receive attribution in any reasonable manner requested by the Licensor (including by pseudonym if designated)

ii a copyright notice

iii a notice that refers to this Public License

iv a notice that refers to the disclaimer of warranties

v a URI or hyperlink to the Licensed Material to the extent reasonably practicable

b indicate if You modified the Licensed Material and retain an indication of any previous modifications and

c indicate the Licensed Material is licensed under this Public License and include the text of or the URI or hyperlink to this Public License

2 You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium means and context in which You Share the Licensed Material For example it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information 3 If requested by the Licensor You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable

Paacutegina 86 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria b ShareAlike

In addition to the conditions in Section 3(a) if You Share Adapted Material You produce the following conditions also apply

1 The Adapters License You apply must be a Creative Commons license with the same License Elements this version or later or a BY-NC-SA Compatible License

2 You must include the text of or the URI or hyperlink to the Adapters License You apply You may satisfy this condition in any reasonable manner based on the medium means and context in which You Share Adapted Material

3 You may not offer or impose any additional or different terms or conditions on or apply any Effective Technological Measures to Adapted Material that restrict exercise of the rights granted under the Adapters License You apply

Section 4 -- Sui Generis Database Rights

Where the Licensed Rights include Sui Generis Database Rights thatapply to Your use of the Licensed Material

a for the avoidance of doubt Section 2(a)(1) grants You the right to extract reuse reproduce and Share all or a substantial portion of the contents of the database for NonCommercial purposes only

b if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material including for purposes of Section 3(b) and

c You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database

For the avoidance of doubt this Section 4 supplements and does notreplace Your obligations under this Public License where the LicensedRights include other Copyright and Similar Rights

Paacutegina 87 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaSection 5 -- Disclaimer of Warranties and Limitation of Liability

a UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR TO THE EXTENT POSSIBLE THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL WHETHER EXPRESS IMPLIED STATUTORY OR OTHER THIS INCLUDES WITHOUT LIMITATION WARRANTIES OF TITLE MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE NON-INFRINGEMENT ABSENCE OF LATENT OR OTHER DEFECTS ACCURACY OR THE PRESENCE OR ABSENCE OF ERRORS WHETHER OR NOT KNOWN OR DISCOVERABLE WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART THIS DISCLAIMER MAY NOT APPLY TO YOU

b TO THE EXTENT POSSIBLE IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING WITHOUT LIMITATION NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT SPECIAL INDIRECT INCIDENTAL CONSEQUENTIAL PUNITIVE EXEMPLARY OR OTHER LOSSES COSTS EXPENSES OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES COSTS EXPENSES OR DAMAGES WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART THIS LIMITATION MAY NOT APPLY TO YOU

c The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that to the extent possible most closely approximates an absolute disclaimer and waiver of all liability

Section 6 -- Term and Termination

a This Public License applies for the term of the Copyright and Similar Rights licensed here However if You fail to comply with this Public License then Your rights under this Public License terminate automatically

b Where Your right to use the Licensed Material has terminated under Section 6(a) it reinstates

1 automatically as of the date the violation is cured provided it is cured within 30 days of Your discovery of the violation or

2 upon express reinstatement by the Licensor

For the avoidance of doubt this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License

Paacutegina 88 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

Memoria

c For the avoidance of doubt the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time however doing so will not terminate this Public License

d Sections 1 5 6 7 and 8 survive termination of this Public License

Section 7 -- Other Terms and Conditions

a The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed

b Any arrangements understandings or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License

Section 8 -- Interpretation

a For the avoidance of doubt this Public License does not and shall not be interpreted to reduce limit restrict or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License

b To the extent possible if any provision of this Public License is deemed unenforceable it shall be automatically reformed to the minimum extent necessary to make it enforceable If the provision cannot be reformed it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions

c No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor

d Nothing in this Public License constitutes or may be interpreted as a limitation upon or waiver of any privileges and immunities that apply to the Licensor or You including from the legal processes of any jurisdiction or authority

===========================================================

Paacutegina 89 de 102

Desarrollo de videojuegos para Android Xavier Figuera Alberich

Casual games Diciembre 2013

MemoriaCreative Commons is not a party to its public licensesNotwithstanding Creative Commons may elect to apply one of its publiclicenses to material it publishes and in those instances will beconsidered the Licensor Except for the limited purpose of indicatingthat material is shared under a Creative Commons public license or asotherwise permitted by the Creative Commons policies published atcreativecommonsorgpolicies Creative Commons does not authorize theuse of the trademark Creative Commons or any other trademark or logoof Creative Commons without its prior written consent includingwithout limitation in connection with any unauthorized modificationsto any of its public licenses or any other arrangementsunderstandings or agreements concerning use of licensed material Forthe avoidance of doubt this paragraph does not form part of the publiclicenses

Creative Commons may be contacted at creativecommonsorg

Paacutegina 90 de 102

Page 14: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 15: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 16: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 17: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 18: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 19: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 20: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 21: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 22: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 23: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 24: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 25: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 26: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 27: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 28: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 29: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 30: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 31: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 32: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 33: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 34: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 35: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 36: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 37: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 38: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 39: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 40: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 41: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 42: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 43: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 44: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 45: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 46: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 47: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 48: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 49: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 50: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 51: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 52: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 53: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 54: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 55: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 56: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 57: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 58: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 59: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 60: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 61: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 62: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 63: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 64: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 65: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 66: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 67: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 68: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 69: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 70: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 71: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 72: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 73: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 74: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 75: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 76: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 77: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 78: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 79: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 80: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 81: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 82: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 83: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 84: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 85: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 86: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 87: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 88: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 89: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 90: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 91: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 92: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 93: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 94: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 95: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 96: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 97: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 98: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 99: Universitat Oberta de Catalunya UOC Ingeniería técnica en
Page 100: Universitat Oberta de Catalunya UOC Ingeniería técnica en