Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
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
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
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
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
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
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
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
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
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
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
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
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
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