scieee AI-readable full text Open interactive document viewer

Creación de juegos serios para el aprendizaje de estructuras dinámicas

Marciel Pariente, Jorge

Abstract

Grado en Ingeniería Informática

Full text

Escuela de Ingenier´ ıa Inform´ atica TRABAJO FIN DE GRADO Grado en Ingenier´ ıa Inform´ atica Creaci´ on de juegos serios para el aprendizaje de estructuras din´ amicas Autor: D. Jorge Marciel Pariente Tutores: D˜na. Alma Mar´ıa Pisabarro Marr´on Dr. Carlos Enrique Vivaracho Pascual 2 Resumen Este trabajo forma parte de un proyecto de gamificaci´on de la asignatura de primer curso del grado en ingenier´ıa inform´atica, Fundamentos de Programaci´on, que pretende fomentar el aprendizaje mediante los juegos. El Trabajo de Fin de Grado ha consistido en el planteamiento y desarrollo de dos videojuegos en Unity relacionados con la docencia, de forma que ayuden a comprender mejor los conceptos desarrollados a lo largo de la asignatura, en concreto sobre el tema de estructuras din´amicas. Uno de los juegos trata de representar el concepto de lista enlazada y el otro la diferencia entre pilas y colas. Adem´as del desarrollo de los videojuegos, estos han sido integrados en una plataforma web, desarrollada anteriormente en otro Trabajo de Fin de Grado. 3 4 Tabla de Contenidos Resumen 3 Lista de Figuras 7 Lista de Tablas 10 1. Introducci´on 11 1.1. Motivaci´on ......................................... 11 1.2. Objetivos .......................................... 12 1.3. ContenidodelaMemoria ................................. 12 2. Contexto 15 2.1. Conceptos Relacionado con el Desarrollo de Videojuegos . . . . . . . . . . . . . . . . 16 2.1.1. Documento de Dise˜no del Juego . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.1.2. PruebasBeta.................................... 17 3. Herramientas Utilizadas 19 3.1. Unity ............................................ 19 3.1.1. UnityEngine .................................... 20 3.2. Git.............................................. 23 4. Plan de Proyecto 25 4.1. Metodolog´ıa......................................... 25 4.1.1. Roles ........................................ 26 4.1.2. Adaptaci´on de Crystal Clear aEsteProyecto.................. 26 4.2. PlandeRiesgos....................................... 27 4.3. Presupuesto......................................... 29 4.4. SeguimientodelProyecto ................................. 30 4.4.1. Iteraci´on1 ..................................... 31 4.4.2. Iteraci´on2 ..................................... 31 4.4.3. Iteraci´on3 ..................................... 31 4.4.4. Iteraci´on4 ..................................... 32 4.4.5. Iteraci´on5 ..................................... 32 4.4.6. Iteraci´on6 ..................................... 33 4.4.7. Iteraci´on7 ..................................... 33 5 5. Juego Serio 1: Apuntados 35 5.1. GDD............................................. 35 5.1.1. Introducci´on .................................... 35 5.1.2. Audiencia y Plataforma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 5.1.3. Mec´anicas...................................... 36 5.1.4. Niveles........................................ 37 5.1.5. Multimedia ..................................... 39 5.1.6. Versiones ...................................... 39 5.2. An´alisis ........................................... 39 5.2.1. An´alisis de Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.2.2. CasosdeUso .................................... 41 5.3. Dise˜no............................................ 42 5.4. Pruebas ........................................... 44 5.4.1. PruebasUnitarias ................................. 44 5.4.2. PruebasBeta.................................... 46 6. Juego Serio 2: Apilas 47 6.1. GDD............................................. 47 6.1.1. Introducci´on .................................... 47 6.1.2. Audiencia y Plataforma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.1.3. Mec´anicas...................................... 48 6.1.4. Niveles........................................ 49 6.1.5. Multimedia ..................................... 52 6.1.6. Versiones ...................................... 52 6.2. An´alisis ........................................... 53 6.2.1. An´alisis de Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 6.2.2. CasosdeUso .................................... 54 6.3. Dise˜no............................................ 56 6.4. Pruebas ........................................... 56 6.4.1. PruebasUnitarias ................................. 56 7. Integraci´on con la Plataforma 59 7.1. FinalizarelJuego...................................... 60 7.2. Carga y Actualizaci´on de Puntuaciones . . . . . . . . . . . . . . . . . . . . . . . . . 60 7.3. consideraciones Adicionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 8. Conclusi´on 65 8.1. MejorasFuturas ...................................... 65 Bibliografia 68 6 Lista de Figuras 3.1. Diagrama estructura de clases en Unity ......................... 21 3.2. Diagrama de flujo de ejecuci´on de funciones en Unity .................. 22 3.3. FuncionamientodeGit................................... 23 4.1. Ciclo de entrega en metodolog´ıas ´agiles . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.1. Captura de pantalla: Apuntados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.2. Boceto: Apuntados ..................................... 37 5.3. Diagrama de casos de uso men´u principal: Apuntados ................. 41 5.4. Diagrama de casos de uso nivel: Apuntados ....................... 42 5.5. Modelo de dominio: Apuntados .............................. 42 5.6. Patr´onobservador ..................................... 43 5.7. Patr´onFachada....................................... 44 6.1. Captura de pantalla: Apilas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.2. Distribuci´on inicial nivel 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 6.3. Distribuci´on inicial nivel 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 6.4. Distribuci´on inicial nivel 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 6.5. Distribuci´on inicial nivel 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 6.6. Diagrama de casos de uso men´u principal: Apilas .................... 55 6.7. Diagrama de casos de uso nivel: Apilas .......................... 55 6.8. Modelo de dominio: Apilas ................................ 56 7.1. Construcci´on del proyecto como WebGL . . . . . . . . . . . . . . . . . . . . . . . . . 59 7.2. Llamadaasalir....................................... 60 7.3. Llamadaaguardar..................................... 61 7.4. LlamadaasetCampoLibre................................. 61 7.5. LlamadaagetCampoLibre................................. 61 7.6. OpenField dentro de la escena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 7.7. ScriptOpenField...................................... 62 7.8. Ejemplo de uso de las Estadisticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 7.9. CargadevideoporURL.................................. 64 7 8 Lista de Tablas 4.1. planificaci´on inicial de iteraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.2. Riesgo de tiempo de formaci´on insuficiente . . . . . . . . . . . . . . . . . . . . . . . . 28 4.3. Riesgodeenfermedad ................................... 28 4.4. Riesgo de cambios en los requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.5. Riesgo de fallo en la planificaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.6. Riesgodeaver´ıa ...................................... 29 4.7. Resumen gastos del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4.8. Tareasdelaiteraci´on1 .................................. 31 4.9. Tareasdelaiteraci´on2 .................................. 31 4.10.Tareasdelaiteraci´on3 .................................. 32 4.11.Tareasdelaiteraci´on4 .................................. 32 4.12.Tareasdelaiteraci´on5 .................................. 33 4.13.Tareasdelaiteraci´on6 .................................. 33 4.14.Tareasdelaiteraci´on7 .................................. 34 5.1. RF-01: Carga del men´u principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.2. RF-02:Iniciarnivel..................................... 39 5.3. RF-03: Mostrar men´u de pausa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.4. RF-04:Reiniciarnivel ................................... 40 5.5. RF-05:Crearpunteros................................... 40 5.6. RF-06:Eliminarpunteros ................................. 40 5.7. RF-07: Sistema de puntuaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.8. RF-08:Tutorial....................................... 40 5.9. RF-09:Salir......................................... 40 5.10. RNF-01: Motor de desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.11. RNF-02: Lenguaje de programaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.12. RNF-03: Plataforma objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.13. RNF-04: Comunicaci´on con la plataforma . . . . . . . . . . . . . . . . . . . . . . . . 41 5.14. PU-01: visualizar videotutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.15.PU-02:Generarniveles................................... 44 5.16.PU-03:Completarnivel .................................. 44 5.17. PU-04: Fallar nivel - Tiempo agotado . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.18. PU-05: Fallar nivel - Movimientos agotados . . . . . . . . . . . . . . . . . . . . . . . 45 5.19.PU-06:Reiniciarnivel ................................... 45 9 2.1. CONCEPTOS RELACIONADO CON EL DESARROLLO DE VIDEOJUEGOS Hace que el aprendizaje sea divertido e interactivo: la gamificaci´on puede ayudar a crear contenidos emocionantes, educativos y entretenidos. Adem´as, gracias a los elementos competitivos puede llegar a convertir el aprendizaje en algo muy divertido. Hace m´as f´acil la retenci´on de conocimientos: otra ventaja de la gamificaci´on es la sensaci´on de bienestar que nos puede provocar y las consecuencias que tiene sobre el aprendizaje. Cuando ganamos en un juego o conseguimos un logro importante nos sentimos bien y generamos dopamina, algunos estudios apuntan que la dopamina es clave para el aprendizaje, los aprendizajes con carga emocional duran m´as. Permite ver la utilidad real: la gamificaci´on permite ver directamente representadas cuales son los resultados de las decisiones tomadas a lo largo del juego y como pueden aplicarse los conceptos explicados en situaciones pr´acticas. Refuerza el aprendizaje mediante la aplicaci´on de los conocimientos en situaciones pr´acticas. Proporciona retroalimentaci´on en tiempo real: la progresi´on en el juego permite conocer que tal lo estamos haciendo. Adem´as, ayuda a trabajar por conseguir objetivos reales, medibles y significativos. Favorece la socializaci´on: los alumnos que participan en esta gamificaci´on pueden trabajar juntos, colaborando y compitiendo. Esto fomenta el trabajo en equipo y el pensamiento cr´ıtico. Existen tambi´en una serie de problemas o inconvenientes asociados a la gamificaci´on que pueden llegar a darse y debemos intentar combatir en la medida de los posible: Pueden desmotivar al jugador: los jugadores que no consiguen una buena puntuaci´on pueden desmotivarse, porque no consiguen completar el juego y se sienten m´as desplazados de la asignatura. Por otra parte, los jugadores que completan con mucha facilidad el juego pueden olvidar los conceptos aprendidos con mucha facilidad. Para intentar combatir estos problemas el dise˜no de niveles se ha llevado a cabo de forma que completar los niveles sea asequible y conseguir la puntuaci´on m´axima del nivel requiera cierta pr´actica. Puede focalizar al jugador en ganar: los jugadores pueden llegar a concentrarse en ganar el videojuego, dejando de lado el objetivo de aprender. Para evitar esta situaci´on los juegos cuentan con mec´anicas muy sencillas, que intentan desviar lo m´ınimo posible al jugador del aprendizaje. Adem´as, los juegos apoyan con contenido te´orico los conceptos que tratan de explicar. 2.1. Conceptos Relacionado con el Desarrollo de Videojuegos En esta secci´on se van a explicar algunos conceptos relacionados con el desarrollo de los videojuegos que se utilizar´an a lo largo del documento. 16 Juegos serios: estructuras din´amicas 2.1.1. Documento de Dise˜no del Juego El Documento de Dise˜no del Juego o GDD (Game Design Document) incluye toda la informaci´on de dise˜no del juego. El que lo lea debe tener una visi´on clara del juego y de todo lo relacionado con su dise˜no. Este documento es utilizado como gu´ıa durante el proceso de desarrollo del juego. Dise˜nar un juego es un proceso iterativo, por lo que la creaci´on del GDD tambi´en. A pesar de que se considera un documento clave en el desarrollo de un videojuego, este documento no tiene ninguna forma est´andar. Es decir, los puntos que se trat´an en el documento no son fijos y deben adaptarse en funci´on del videojuego, aunque en esencia todos contienen la misma informaci´on organizada de manera distinta. En nuestro caso vamos a seguir el esquema de Tracy Fullerton [14], que consta de: Resumen: En este apartado se da una visi´on resumida del juego. Se intenta capturar y trasmitirla al lector la esencia del juego, de la forma mas veraz posible. Audiencia, plataforma y marketing: Se describe la audiencia objetivo del juego, las plataformas en las que estar´a disponible y un estudio de mercado. En nuestro caso no los juegos no ser´an puestos a la venta, por lo que la realizaci´on de un estudio de mercado no procede. Mec´anicas: Se describen las mec´anicas del videojuego, es decir, como se juega. Adem´as, se puede especificar los controles, niveles o modos de juego. Personajes: En este apartado se desarrollan los personajes y sus cualidades, si es que existen. Mundo: Si tu juego incluye una historia, la puedes incluir en este apartado. Al igual que el apartado anterior es opcional. Multimedia: Se hace una lista de los recursos multimedia que ser´an necesarios para el desarrollo del videojuego. Dependiendo del juego pueden incluir entornos, personajes, animaciones, m´usica, efectos y muchos mas. 2.1.2. Pruebas Beta Las pruebas son una parte fundamental de cualquier desarrollo. Nos sirven para observar como responde nuestro sistema y detectar posibles errores. Como en la mayor´ıa de videojuegos, al estar formados por grandes subsistemas de mec´anicas que se relacionan entre s´ı para generar din´amicas, es muy complicado para un grupo de desarrolladores encontrar todos los posibles errores. Para identificar el mayor n´umero de errores posibles, los desarrolladores, permiten que los jugadores puedan jugar al juego antes de lanzar al mercado la versi´on final abierta del videojuego. Dentro de estas pruebas existen diferentes tipos, entre ellos: 17 2.1. CONCEPTOS RELACIONADO CON EL DESARROLLO DE VIDEOJUEGOS Focus Group: Un grupo de jugadores dando sus opiniones de manera libre y sin guion formal, aunque es guiado por uno o varios moderadores. Prueba de usabilidad: pruebas sobre la interfaz. Prueba del juego: Un grupo de personas probando el juego para analizar sus reacciones y ver si la experiencia es la esperada. 18 Juegos serios: estructuras din´amicas Cap´ıtulo 3 Herramientas Utilizadas 3.1. Unity El apogeo de los videojuegos ha tra´ıdo como consecuencia que se interesen cada vez m´as personas por este mundo. Como consecuencia han nacido los Game Engines que son herramientas cuyo fin es ayudar a las personas que quieran desarrollar un videojuego. Esto es posible gracias a que estas herramientas cuentan con motores, funciones y componentes que logran el renderizado, animaci´on y otros aspectos del desarrollo del videojuego. El motor utilizado para desarrollar este proyecto es Unity, una de las plataformas de creaci´on a tiempo real m´as utilizadas en el desarrollo de videojuegos de todo el mundo.Existen m´as herramientas de desarrollo, pero en este caso el uso de Unity es un requisito necesario, ya que la integraci´on con la plataforma del proyecto, desarrollada previamente, as´ı lo requiere. La idea de la que surge Unity es la “democratizaci´on de los videojuegos”, es decir, hacer m´as accesible el desarrollo de contenidos interactivos a personas de todo el mundo. Fue creado en 2005 por parte de Unity Technologies. Su ´exito ha propiciado una gran expansi´on y como consecuencia de su ´exito ha recibido actualizaciones, situ´andose como una de las plataformas l´ıderes en el mercado. Unity [16] es un motor multiplataforma para el desarrollo de videojuegos. Es decir, permite desarrollar juegos para distintas consolas y dispositivos desde una misma base, sin tener que crearlo desde cero para cada plataforma. Al ser capaz de compilar para diferentes plataformas, permite crear videojuegos habilitados para web, m´oviles, consolas, smart TV e incluso dispositivos de realidad aumentada, de manera que es un motor de desarrollo pr´acticamente universal que ahorra costos significativamente a programadores y desarrolladores independientes. Unity es una herramienta que no engloba ´unicamente motores para el renderizado de im´agenes, de f´ısicas de 2D/3D, de audio, de animaciones y otros motores, sino que engloba adem´as herramientas de networking para multijugador o soporte de Realidad Virtual. 19 3.1. UNITY Actualmente Unity es uno de los motores de desarrollo de videojuegos m´as populares del sector de los videojuegos [15], se ha utilizado para crear multitud de juegos conocidos y otros no tan conocidos. Algunos de los juegos m´as famosos son: Monument Valley,Ghost of a Tale,Hollow Knight oCuphead. Tambi´en se ha utilizado para crear experiencias de Realidad Virtual interactivas e incluso miniseries, como Baymax Dreams, producida por Disney junto con Unity. Adem´as de lo comentado anteriormente, Unity cuenta con algunas ventajas o caracter´ısticas clave como: Aprendizaje de Unity: Unity destaca por ser un sistema f´acil de usar, las personas se familiarizan r´apido con su interfaz intuitiva, ya que muchas acciones se basan en arrastrar y soltar. Esto provoca que el desarrollador se sienta m´as c´omodo a la hora de ajustar y personalizar aquellas partes del juego que lo requieran. Documentaci´on: Unity dispone de una excelente documentaci´on, de las mejores documentaciones de software que existen. En su manual se pueden consultar todos y cada uno de sus distintos apartados, desde c´omo actualizar a una versi´on concreta, hasta gu´ıas de expertos para realizar tareas bastante avanzadas. En dicho manual tambi´en aparece el historial de las versiones anteriores de su documentaci´on, esto permite no estar limitados a la ´ultima versi´on de Unity que exista. La Comunidad: En la propia web de Unity existen una inmensa cantidad de contenido did´actico, pero, adem´as, al ser uno de los motores de desarrollo m´as utilizados podemos encontrar una enorme cantidad de informaci´on en internet. Existe una gran facilidad para la ayuda entre usuarios cuando surgen dudas o necesitamos resolver alg´un problema. La Asset Store: La Asset Store es la tienda online de recursos de Unity. Aqu´ı pueden encontrarse herramientas, elementos, objetos, mapas y efectos para el desarrollo de videojuegos. Esto facilita el trabajo de los desarrolladores, adem´as de abrir un nuevo mercado para programadores que se dedican a crear y vender recursos espec´ıficos para otros creadores. Alta calidad gr´afica: Los gr´aficos tanto de 2D como en 3D presentan una calidad bastante buena y adecuada a las exigencias que tiene el publico en la actualidad. 3.1.1. UnityEngine UnityEngine es la librer´ıa esencial en el desarrollo de juegos en Unity. Nos proporciona una serie de recursos b´asicos a la hora de desarrollar juegos en Unity. En la figura 3.1 podemos ver como se estructuran las clases de esta librer´ıa. El diagrama muestra las principales relaciones existentes entre las clases m´as importantes que conforman el modelo de Unity. 20 Juegos serios: estructuras din´amicas Figura 3.1: Diagrama estructura de clases en Unity En la practica, la estructura principal de un juego son las escenas, que contienen los entornos y men´us del juego. Cada escena es como un nivel ´unico. En cada escena se pueden colocar entornos, obst´aculos y decoraciones, lo que permite dise˜nar y construir el juego de forma modular. Dentro de estas escenas podemos a˜nadir GameObjects, que se trata del concepto m´as importante del Desarrollo. Cada elemento dentro del juego es un GameObject, desde personajes hasta luces, c´amaras y efectos especiales. Sin embargo, un GameObject no puede hacer nada por s´ı mismo; necesita propiedades para cumplir una funci´on. Para darle a un GameObject las propiedades que queremos, debemos agregarle components. Seg´un el tipo de elemento que deseemos crear, podemos agregar diferentes combinaciones de componentes al GameObject. Transform es el componente mas com´un dentro de Unity. Es imposible crear un GameObject sin un componente Transform. Este componente define la posici´on del GameObject, la rotaci´on y la escala en el mundo y la escena. Los GameObjects puede contener otro tipo de componentes. Algunos de los Componentes mas utilizados son SpriteRenderer, que se encarga de mostrar un Sprite o imagen o el componente RigidBody, que se encarga de gestionar las f´ısicas. Los Scripts son componentes programables que nos permiten definir el comportamiento de GameObjects y de sus componentes, su uso es un ingrediente esencial en todos los juegos. Incluso el juego m´as simple necesita scripts para responder a las entradas del jugador y asegurar que los eventos del juego se ejecutan en el momento adecuado. Adem´as, los Scripts pueden utilizarse para crear efectos gr´aficos, controlar el comportamiento f´ısico de objetos o incluso implementar un sistema de inteligencia artificial para los personajes del juego. Estos scripts son tambi´en componentes, en concreto MonoBehaviour y nos permiten llevar el desarrollo en Unity a otro nivel de personalizaci´on. 21 3.1. UNITY Adem´as de los eventos desencadenados por el jugador tambi´en existen funciones en los scripts que se ejecutan cuando se cumplen ciertas condiciones, la figura 3.2 muestra todos estas funciones, su orden de ejecuci´on y sus condiciones de entrada y salida. Figura 3.2: Diagrama de flujo de ejecuci´on de funciones en Unity 22 Juegos serios: estructuras din´amicas Algunas de las mas importantes son: Start : Esta funci´on solo se llama una vez por script y se ejecuta en el primer fotograma en el que el este se encuentra activo. Update : Esta funci´on llama cada vez que se muestra un nuevo fotograma, en caso de que el script est´e activo. OnDestroy : Esta funci´on es la ultima en ser llamada se llama justo antes de destruir el propio script. 3.2. Git Git [7] es una herramienta gratuita de control de versiones de c´odigo abierto. Se define como control de versiones a la gesti´on de los diversos cambios que se realizan sobre los elementos de alg´un software. Estas herramientas nos sirven para trabajar en equipo de una manera mucho m´as simple y optima cuando estamos desarrollando software, pero no solo eso, adem´as nos permiten tener un historial de los cambios realizados y copias de seguridad por si surgen errores durante el desarrollo. Git se encuentra organizado en repositorios, cada uno de los cuales almacena los archivos que constituyen un determinado proyecto. Permite dividirlo en ramas. Cada una de ellas surge de otra y constituye una copia de todos los archivos y contenidos que en ese momento existieron en todos los puntos del proyecto. Git es un sistema de control de versiones distribuido y permite coordinar repositorios locales y remotos. Figura 3.3: Funcionamiento de Git 23 3.2. GIT Con este tipo de herramientas podemos mantener copias de seguridad del proyecto de manera remota a la par que se van realizando los cambios de c´odigo pertinentes y se realizan las pruebas correspondientes de manera local. Una vez verificado el trabajo se pueden de nuevo unificar el contenido. En la figura 3.3 puede observarse un esquema de funcionamiento de Git. Adem´as de lo comentado anteriormente GitHub cuenta con un plugin, que permite integrar Github en tu proyecto Unity, por lo que facilita mucho el trabajo [4]. El uso de Git es posible para juegos peque˜nos como el nuestro, pero para juegos grandes, el tama˜no puede suponer un problema. Unity recomienda el uso de Plastic SCM [9] como herramienta de control de versiones, que nos permite evitar estos problemas. 24 Juegos serios: estructuras din´amicas Cap´ıtulo 4 Plan de Proyecto 4.1. Metodolog´ıa Para el desarrollo de este proyecto se ha escogido una metodolog´ıa de desarrollo ´agil que podr´ıa clasificarse como Crystal Clear [10]. El desarrollo ´agil es un enfoque de trabajo que permite a los desarrolladores llevar a cabo proyectos adapt´andose a los cambios y evolucionando para cubrir las necesidades reales. Este enfoque se refiere a m´etodos basados en el desarrollo iterativo e incremental. La figura 4.1 muestra el ciclo de entrega de este tipo de metodolog´ıas. Cada iteraci´on del proceso de desarrollo pretende incrementar el valor del c´odigo e incluye sus propias fases de planificaci´on, dise˜no, codificaci´on, pruebas y documentaci´on. Figura 4.1: Ciclo de entrega en metodolog´ıas ´agiles 25 4.4. SEGUIMIENTO DEL PROYECTO tarea Tipo Descripci´on Horas Estado T-008 Documentaci´on modificaci´on documento de dise˜no del videojuego: Apuntados 7h Completada T-009 Documentaci´on An´alisis: Apuntados 10h completada T-010 Documentaci´on Dise˜no: Apuntados 6h completada T-011 Implementaci´on Creaci´on de men´us de la aplicaci´on 10h completada Total 43h Tabla 4.10: Tareas de la iteraci´on 3 4.4.4. Iteraci´on 4 Esta tercera iteraci´on se dedic´o a la implementaci´on de Apuntados, sus pruebas y la documentaci´on de estos procesos. Se ha sobrepasado la estimaci´on de horas-hombre, pero se encuentra dentro de un marg´en aceptable. En la tabla 4.11 se puede ver la distribuci´on de tareas de la iteraci´on. tarea Tipo Descripci´on Horas Estado T-012 Implementaci´on implementaci´on mecanismo b´asico de juego: Apuntados 25h Completada T-013 Bug Soluci´on al error que provocaba una fuga de memoria: Apuntados 4h completada T-014 Implementaci´on Pruebas Beta: Apuntados 4h completada T-015 Documentaci´on Pruebas: Apuntados 6h completada T-016 Implementaci´on Mejoras visuales: Apuntados 15h Completada Total 48h Tabla 4.11: Tareas de la iteraci´on 4 4.4.5. Iteraci´on 5 En esta iteraci´on se comenz´o el desarrollo de Apilas, empezando por el Documento de Dise˜no del Videojuego y continuando por el Modelo de An´alisis y Dise˜no. Adem´as, se integro Apuntados dentro de la plataforma web del proyecto. Se ha sobrepasado de nuevo la estimaci´on horas-hombre, pero dentro de un marg´en aceptable. En la tabla 4.12 se puede ver la distribuci´on de tareas de la iteraci´on. 32 Juegos serios: estructuras din´amicas tarea Tipo Descripci´on Horas Estado T-017 Documentaci´on Documento de dise˜no del videojuego: Apilas 8h completada T-018 Implementaci´on integraci´on en la plataforma: Apuntados 4h completada T-019 Configuraci´on implementaci´on mecanismo b´asico de juego: Apilas 15h Completada T-020 Documentaci´on An´alisis: Apilas 10h completada T-021 Documentaci´on Dise˜no: Apilas 6h completada T-022 Documentaci´on Pruebas: Apilas 6h completada Total 49h Tabla 4.12: Tareas de la iteraci´on 5 4.4.6. Iteraci´on 6 Esta iteraci´on fue dedicada a mejoras tanto visuales como de jugabilidad en ambos videojuegos. Adem´as, se integro Apilas dentro de la plataforma web del proyecto. En la tabla 4.113 se puede ver la distribuci´on de tareas de la iteraci´on. tarea Tipo Descripci´on Horas Estado T-023 Implementaci´on Mejoras visuales: Apilas 20h Completada T-024 Implementaci´on integraci´on en la plataforma: Apilas 3h completada T-025 Implementaci´on Cambios en la jugabilidad: Apilas 12h completada T-026 Implementaci´on Cambios en la jugabilidad: Apuntados 6h incompleta Total 41h Tabla 4.13: Tareas de la iteraci´on 6 4.4.7. Iteraci´on 7 Esta iteraci´on fue dedicada a completar la documentaci´on del proyecto, creaci´on de tutoriales y arreglo final de errores. En la tabla 4.14 se puede ver la distribuci´on de tareas de la iteraci´on. 33 4.4. SEGUIMIENTO DEL PROYECTO tarea Tipo Descripci´on Horas Estado T-026 Implementaci´on Cambios en la jugabilidad: Apuntados 6h incompleta T-027 Implementaci´on Tutorial: Apuntados 10h Completada T-028 Implementaci´on Tutorial: Apilas 10h Completada T-029 Bug Soluci´on al error que produc´ıa un mal renderizado de ciertos objetos: Apilas 4h Completada T-030 Bug Soluci´on al error que provocaba que no se eliminar´an ciertos elementos al salir de pantalla: Apuntados 4h Completada T-031 Documentaci´on Documentaci´on sobre la conclusi´on 4h Completada Total 38h Tabla 4.14: Tareas de la iteraci´on 7 34 Juegos serios: estructuras din´amicas Cap´ıtulo 5 Juego Serio 1: Apuntados 5.1. GDD 5.1.1. Introducci´on Se trata de un videojuego did´actico sobre estructuras din´amicas en java, en concreto listas enlazadas. El objetivo es explicar mediante la gamificaci´on el funcionamiento de las listas enlazadas y practicar el manejo de punteros. El videojuego consta de abalorios y punteros, los punteros act´uan como conexiones entre los abalorios y estos representan elementos de la lista, se pueden conectar unos a otros formando collares, que simbolizan listas enlazadas. El objetivo del juego es formar un collar determinado de abalorios a partir de unos abalorios distribuidos aleatoriamente de una forma inicial. Para cumplirlo el jugador puede crear y eliminar conexiones entre los diferentes elementos de forma an´aloga al funcionamiento de las listas enlazadas. El juego tiene varios niveles, cada uno de ellos centra el aprendizaje en una operaci´on sobre listas enlazadas. Figura 5.1: Captura de pantalla: Apuntados En la figura 5.1 podemos ver una imagen del juego, en la parte central se encuentran los punteros en forma de cuerda y colgando de estos punteros las cuentas que representan la lista enlazada. Separado, en la parte derecha se encuentra la lista que representa la soluci´on al nivel. En la parte superior se encuentra el marcador de puntuaci´on, un contador de tiempo y el bot´on de pausa. 35 5.1. GDD 5.1.2. Audiencia y Plataforma El desarrollo del juego forma parte de un proyecto de gamificaci´on de la asignatura de Fundamentos de programaci´on, que forma parte del primer curso de los estudios del Grado de Ingenier´ıa Inform´atica , por lo que la audiencia son los alumnos de esta asignatura. Estos alumnos por lo general se encuentran en un arco de edades de entre 17 y 25 a˜nos. 5.1.3. Mec´anicas El collar objetivo aparecer´a representado de forma visible en la parte derecha de la pantalla. Todos los abalorios estar´an sometidos a una fuerza similar a la gravedad, que los empujar´a hacia abajo haci´endolos desaparecer del para siempre. Los punteros en cambio no se pueden mover. Para evitar que los abalorios desaparezcan del escenario deben de estar conectados a un collar conectado a un puntero. El collar soluci´on debe encontrarse conectado a un puntero para que sea tomado como valido y el nivel sea superado. El jugador podr´a realizar las siguientes acciones: Crear una nueva conexi´on desde un abalorio a otro. Para ello el jugador deber´a hacer clic izquierdo con el cursor encima del abalorio origen de la conexi´on y una vez seleccionado el elemento hacer clic izquierdo de nuevo sobre el abalorio destino de la conexi´on. En caso de que el usuario seleccione como destino de la conexi´on un elemento no valido o el mismo elemento que ha seleccionado en primera instancia se cancelar´a la acci´on. Si el primer elemento seleccionado ya tiene una conexi´on existente hacia otro, la conexi´on inicial se destruir´a. Destruir una conexi´on ya existente, para ello el jugador debe situar el cursor encima de la conexi´on y hacer clic derecho del rat´on. La interfaz del juego mostrar´a el collar objetivo en la parte derecha de la pantalla de forma que destaque del resto de elementos. En el resto de la pantalla se encontrar´an los collares iniciales, con los que se podr´a interactuar (Figura 5.2). En caso de que el nivel sea irresoluble, debido a la perdida de abalorios, se mostrar´a un mensaje de nivel fallido y la posibilidad de repetir el nivel. Al contrario, si el nivel ha sido solucionado de manera correcta se mostrar´a un mensaje de nivel resuelto y la posibilidad de jugar el siguiente. La puntuaci´on se calcular´a partiendo de un valor inicial, con el paso del tiempo y por cada conexi´on creada o destruida por encima de una cantidad establecida se le restar´a una cantidad establecida por nivel. 36 Juegos serios: estructuras din´amicas Figura 5.2: Boceto: Apuntados 5.1.4. Niveles El videojuego constar´a de 4 niveles, cada uno haciendo hincapi´e en un apartado del manejo de listas enlazadas. Cada nivel contar´a con una serie de variantes con el fin de evitar que el jugador memorice los niveles y los repita para maximizar su puntuaci´on. Nivel 1 Objetivos de aprendizaje: Practicar el manejo de punteros. Comprender la estructura de lista simplemente enlazada. Entender la posible p´erdida de informaci´on por el borrado de referencias. Construcci´on de listas simplemente enlazadas. Objetivo del juego: Construir un collar de cuentas de colores a partir de varias cuentas. Se dispondr´a de 1 puntero adicional. El collar objetivo tiene 4 cuentas de 3 colores distintos. Se construir´a a partir de 5 bolas con los colores necesarios y la quinta bola de un color aleatorio, repetido o no. Nivel 2 Objetivos de aprendizaje: 37 5.1. GDD Practicar el manejo de punteros. Comprender la estructura de lista simplemente enlazada. Entender la posible p´erdida de informaci´on por el borrado de referencias. Construcci´on de listas simplemente enlazadas. Objetivo del juego: Construir un collar de cuentas de colores a partir de otros collares. Se dispondr´a de 1 puntero adicional. El collar objetivo tiene 3 cuentas de 3 colores distintos. Se construir´a a partir de 3 collares (2 de longitud 4 y otro de longitud 5), cada uno de ellos con una bola de las necesarias para formar el collar objetivo y el resto del mismo color entre ellas, pero diferente a la bola necesaria de ese collar. Nivel 3 Objetivos de aprendizaje: Practicar el manejo de punteros. Comprender la estructura de lista simplemente enlazada. Entender la posible p´erdida de informaci´on por el borrado de referencias. Construcci´on de listas simplemente enlazadas. Recorrido y b´usqueda de informaci´on en una lista. Eliminaci´on e inserci´on de un elemento en una lista. Objetivo del juego: Construir un collar de cuentas de colores a partir de otros collares sin perder los collares originales (aunque obviamente quedar´an de longitud m´as corta). Se dispondr´a de 1 puntero adicional. El collar objetivo tiene 3 cuentas de 3 colores distintos. Se construir´a a partir de 3 collares (2 de longitud 4 y otro de longitud 5), cada uno de ellos contendr´a una bola del color necesario y el resto de las bolas ser´an aleatorias. Nivel 4 Objetivos de aprendizaje: Practicar el manejo de punteros. Comprender la estructura de lista simplemente enlazada. Entender la posible p´erdida de informaci´on por el borrado de referencias. Ordenaci´on de listas simplemente enlazadas. Objetivo del juego: Construir un collar de cuentas de colores a partir de un ´unico collar. Se dispondr´a de 1 puntero adicional. El collar objetivo tiene 6 cuentas de 5 colores distintos. Se construir´a a partir de un collar con las mismas cuentas en un orden distinto. 38 Juegos serios: estructuras din´amicas 5.1.5. Multimedia La multimedia utilizada para el desarrollo del juego ser´a la siguiente: Sprites: Utilizaremos un Sprite o imagen para cada elemento del juego, uno para los punteros, uno ´unico para todos los abalorios, al que cambiaremos de color para representar los diferentes tipos y un ´ultimo Sprite para representar las conexiones entre estos elementos. M´usica y efectos de sonido: Como efectos de sonido al realizar cualquier acci´on se reproducir´a un sonido y al terminar el nivel el juego habr´a un sonido de nivel completado o fallado. Im´agenes de fondo: Para diferenciar los niveles existir´an diferentes escenarios. Se utilizar´an un total de 5 im´agenes de fondo para la ambientaci´on de los niveles una para el men´u y otra por cada nivel del juego. 5.1.6. Versiones Para el desarrollo del videojuego se van a construir las siguientes versiones jugables: Versi´on 1.0: Una primera versi´on con un solo nivel jugable, en el que funcionen las mec´anicas del videojuego, sin m´usica ni efectos de sonido. Versi´on 2.0: Se a˜nadir´a un nuevo nivel jugable, efectos de sonido y correcci´on de posibles bugs. Versi´on 3.0: Se a˜nadir´an el resto los niveles jugables. Versi´on 4.0: Ultima versi´on del juego con ´ultimos cambios y sistema de puntuaci´on. 5.2. An´alisis 5.2.1. An´alisis de Requisitos La aplicaci´on resultante tiene que satisfacer ciertos requisitos concretos al final de la misma. Estos determinar´an la soluci´on finalmente elegida para la implementaci´on del proyecto. Se muestras en las tablas 5.1 a 5.13. RF-01 Carga del men´u principal Descripci´on Al iniciar el juego el sistema deber´a cargar un men´u principal, que permitir´a salir del juego, cargar un nivel en concreto y visualizar un tutorial. Tabla 5.1: RF-01: Carga del men´u principal RF-02 Iniciar nivel Descripci´on El sistema deber´a permitir cargar un nivel, siempre que se haya completado el anterior. Tabla 5.2: RF-02: Iniciar nivel 39 5.2. AN´ ALISIS RF-03 Mostrar men´u de pausa Descripci´on El sistema deber´a permitir mostrar y ocultar el men´u de pausa, aunque el contador de tiempo debe seguir activo. Tabla 5.3: RF-03: Mostrar men´u de pausa RF-04 Reiniciar nivel Descripci´on El sistema deber´a permitir al usuario reiniciar el nivel en juego. Tabla 5.4: RF-04: Reiniciar nivel RF-05 Crear punteros Descripci´on El sistema deber´a permitir crear punteros entre un elemento y otro. Tabla 5.5: RF-05: Crear punteros RF-06 Eliminar punteros Descripci´on El sistema deber´a permitir eliminar un puntero creado anteriormente. Tabla 5.6: RF-06: Eliminar punteros RF-07 Sistema de puntuaciones Descripci´on El sistema deber´a generar una puntuaci´on en funci´on de la habilidad del jugador. Tabla 5.7: RF-07: Sistema de puntuaciones RF-08 Tutorial Descripci´on El sistema deber´a contar con un tutorial, que explique las mec´anicas b´asicas del videojuego. Tabla 5.8: RF-08: Tutorial RF-09 Salir del juego Descripci´on El sistema deber´a permitir cerrar el juego. Tabla 5.9: RF-09: Salir RNF-01 Motor de desarrollo Descripci´on El El sistema deber´a ser desarrollado usando el motor Unity3D. Tabla 5.10: RNF-01: Motor de desarrollo RNF-02 Lenguaje de programaci´on Descripci´on Los scripts deber´an ser desarrollados usando C#. Tabla 5.11: RNF-02: Lenguaje de programaci´on 40 Juegos serios: estructuras din´amicas RNF-03 Plataforma objetivo Descripci´on El sistema deber´a estar desarrollado y adaptado para funcionar correctamente en WebGL. Tabla 5.12: RNF-03: Plataforma objetivo RNF-04 Comunicaci´on con la plataforma Descripci´on El sistema deber´a comunicarse con la plataforma del proyecto de forma que cargue y guarde estad´ısticas. Tabla 5.13: RNF-04: Comunicaci´on con la plataforma 5.2.2. Casos de Uso El siguiente diagrama presenta los diferentes casos de uso que pueda realizar un usuario al utilizar nuestra aplicaci´on. El jugador ser´a el ´unico actor del sistema. Hemos dividido los casos de uso en dos escenarios, el jugador se encuentra en el menu principal (Figura 5.3) o el jugador se encuentra jugando un nivel (Figura 5.4). Figura 5.3: Diagrama de casos de uso men´u principal: Apuntados 41 6.1. GDD Figura 6.1: Captura de pantalla: Apilas En la figura 6.1 podemos ver una imagen del juego, en la parte central se encuentran las estructuras que componen el nivel y dentro de esas estructuras las bolas. En la parte superior se encuentra el marcador de puntuaci´on, un contador de tiempo y el bot´on de pausa. Este juego est´a inspirado en algunos juegos de puzzles de ordenar bolas [2]. 6.1.2. Audiencia y Plataforma El desarrollo del juego forma parte de un proyecto de gamificaci´on de la asignatura de Fundamentos de programaci´on, que forma parte del primer curso de los estudios del Grado de Ingenier´ıa Inform´atica, por lo que la audiencia son los alumnos de esta asignatura. Estos alumnos por lo general se encuentran en un arco de edades de entre 17 y 25 a˜nos. 6.1.3. Mec´anicas Cada nivel estar´a formado por un conjunto de bolas, en total cada nivel contar´a con cuatro bolas de cuatro colores diferentes, distribuidos a lo largo de cinco estructuras, cada una de ellas con capacidad para cuatro bolas. Cuatro de estas cinco estructuras se encontrar´an inicialmente llenas de bolas y la otra se encontrar´a vac´ıa. Para conseguir ordenar las bolas por colores el jugador puede mover las bolas entre los diferentes recipientes. Para ello har´a click sobre la estructura de la que desea sacar la bola, una vez seleccionado el primer recipiente el jugador puede realizar click izquierdo sobre el recipiente destino del movimiento, desencadenando el movimiento. Una vez seleccionado el primer recipiente se mostrar´a resaltada sobre el resto la bola que se mover´a al seleccionar el recipiente destino. No podemos seleccionar la bola que va a salir del recipiente, solamente los recipientes entre los que se va a producir el intercambio de bolas. La parte inferior de los recipientes representa la posici´on 0 de la estructura. Por lo que el comportamiento de las listas es el siguiente: 48 Juegos serios: estructuras din´amicas Pila: Las pilas se representar´an por una probeta con un borde en la parte superior. Las bolas entran y salen por la parte superior y se agrupan en la parte inferior. Representa una estructura LIFO (Last in, First out) por el cual la ´ultima bola introducida en el recipiente ser´a la primera en salir del mismo. Cola: Las colas se representar´an por una probeta con bordes en la parte superior e inferior. Las bolas entran por la parte superior, salen y se agrupan en la parte inferior. Representa una estructura FIFO (First in, First out) por el cual la primera bola introducida en el recipiente ser´a la primera en salir del mismo. Los movimientos entre recipientes solo se realizar´an si existe el espacio suficiente. Si se trata de una cola seleccionar el mismo recipiente como origen y destino del movimiento producir´a que el elemento de la posici´on inferior se situ´e en la posici´on superior, en el caso de las pilas no producir´a ning´un resultado. Para cancelar un movimiento una vez seleccionada la bola que se quiere mover se puede cancelar haciendo click en cualquier posici´on que no forme parte de ninguna estructura. La puntuaci´on se calcular´a partiendo de un valor inicial, con el paso del tiempo y por cada movimiento realizado por encima de una cantidad establecida se le restar´a una cantidad establecida por nivel. En caso de que la puntuaci´on se encuentre por debajo de cero el nivel se considerar´a como fallido. 6.1.4. Niveles El videojuego constar´a de 4 niveles, los dos primeros muestr´an el comportamiento de un tipo de estructura aislada y los dos ´ultimos el comportamiento de los diferentes tipos de estructura entre ellos. El objetivo de aprendizaje de este nivel es comprender como se intercambian informaci´on entre diferentes Colas. Todas las estructuras del nivel son colas. En la figura 6.2 se puede observar la distribuci´on inicial del nivel. 49 6.1. GDD Figura 6.2: Distribuci´on inicial nivel 1 El objetivo de aprendizaje de este nivel es comprender como se intercambian informaci´on entre diferentes Pilas. Todas las estructuras del nivel son colas. En la figura 6.3 se puede observar la distribuci´on inicial del nivel. Figura 6.3: Distribuci´on inicial nivel 2 50 Juegos serios: estructuras din´amicas El objetivo de aprendizaje de este nivel es comprender como se intercambian informaci´on las Pilas y colas entre ellas. Este nivel esta formado tanto por pilas como por colas. En la figura 6.4 se puede observar la distribuci´on inicial del nivel. Figura 6.4: Distribuci´on inicial nivel 3 El objetivo de aprendizaje de este nivel es el mismo que el anterior. Se encuentra formado tanto por pilas como por colas, su ´unica diferencia es la dificultad del mismo. En la figura 6.5 se puede observar la distribuci´on inicial del nivel. 51 6.1. GDD Figura 6.5: Distribuci´on inicial nivel 4 6.1.5. Multimedia La multimedia utilizada para el desarrollo del juego ser´a la siguiente: Sprites: Utilizaremos un sprite o imagen para cada elemento del juego, uno para las bolas y otro para cada tipo de recipiente. M´usica y efectos de sonido: Como efectos de sonido al realizar cualquier acci´on se reproducir´a un sonido y al terminar el nivel el juego habr´a un sonido de nivel completado o fallado. Im´agenes de fondo: Para diferenciar los niveles existir´an diferentes escenarios. Se utilizar´an un total de 5 im´agenes de fondo para la ambientaci´on de los niveles una para el men´u y otra por cada nivel del juego. 6.1.6. Versiones Para el desarrollo del videojuego se van a construir las siguientes versiones jugables: Versi´on 1.0: Una primera versi´on con un solo nivel jugable, en el que funcionen las mec´anicas del videojuego, sin m´usica ni efectos de sonido. Versi´on 2.0: Se a˜nadir´a un nuevo nivel jugable, efectos de sonido y correcci´on de posibles bugs. Versi´on 3.0: Se a˜nadir´an el resto los niveles jugables. Versi´on 4.0: Ultima versi´on del juego con ´ultimos cambios y sistema de puntuaci´on. 52 Juegos serios: estructuras din´amicas 6.2. An´alisis 6.2.1. An´alisis de Requisitos La aplicaci´on resultante tiene que satisfacer ciertos requisitos concretos al final de la misma. Estos determinar´an la soluci´on finalmente elegida para la implementaci´on del proyecto. Se muestras en las tablas 6.1 a 6.12. RF-01 Carga del men´u principal Descripci´on Al iniciar el juego el sistema deber´a cargar un men´u principal, que permitir´a salir del juego, cargar un nivel en concreto y visualizar un tutorial. Tabla 6.1: RF-01: Carga del men´u principal RF-02 Iniciar nivel Descripci´on El sistema deber´a permitir cargar un nivel, siempre que se haya completado el anterior. Tabla 6.2: RF-02: Iniciar nivel RF-03 Mostrar men´u de pausa Descripci´on El sistema deber´a permitir mostrar y ocultar el men´u de pausa, aunque el contador de tiempo debe seguir activo. Tabla 6.3: RF-03: Mostrar men´u de pausa RF-04 Reiniciar nivel Descripci´on El sistema deber´a permitir al usuario reiniciar el nivel en juego. Tabla 6.4: RF-04: Reiniciar nivel RF-05 Mover bolas Descripci´on El sistema deber´a permitir mover bolas entre recipientes. Tabla 6.5: RF-05: Mover bolas RF-06 Salir del juego Descripci´on El sistema deber´a permitir cerrar el juego. Tabla 6.6: RF-06: Salir RF-07 Sistema de puntuaciones Descripci´on El sistema deber´a generar una puntuaci´on en funci´on de la habilidad del jugador. Tabla 6.7: RF-07: Sistema de puntuaciones 53 6.2. AN´ ALISIS RF-08 Tutorial Descripci´on El sistema deber´a contar con un tutorial, que explique las mec´anicas b´asicas del videojuego. Tabla 6.8: RF-08: Tutorial RNF-01 Motor de desarrollo Descripci´on El El sistema deber´a ser desarrollado usando el motor Unity3D. Tabla 6.9: RNF-01: Motor de desarrollo RNF-02 Lenguaje de programaci´on Descripci´on Los scripts deber´an ser desarrollados usando C#. Tabla 6.10: RNF-02: Lenguaje de programaci´on RNF-03 Plataforma objetivo Descripci´on El sistema deber´a estar desarrollado y adaptado para funcionar correctamente en WebGL. Tabla 6.11: RNF-03: Plataforma objetivo RNF-04 Comunicaci´on con la plataforma Descripci´on El sistema deber´a comunicarse con la plataforma del proyecto de forma que cargue y guarde estad´ısticas. Tabla 6.12: RNF-04: Comunicaci´on con la plataforma 6.2.2. Casos de Uso El siguiente diagrama presenta los diferentes casos de uso que pueda realizar un usuario al utilizar nuestra aplicaci´on. El jugador ser´a el ´unico actor del sistema. Hemos dividido los casos de uso en dos escenarios, el jugador se encuentra en el menu principal (Figura 6.6) o el jugador se encuentra jugando un nivel (Figura 6.7). 54 Juegos serios: estructuras din´amicas Figura 6.6: Diagrama de casos de uso men´u principal: Apilas Figura 6.7: Diagrama de casos de uso nivel: Apilas 55 6.3. DISE˜ NO 6.3. Dise˜no como se indic´o en el juego anterior, aqu´ı solo se muestran las clases de nuestra soluci´on (Tabla 6.8), es decir los Scripts. Figura 6.8: Modelo de dominio: Apilas En esta soluci´on se han decidido aplicar el patr´on fachada, de la misma forma que se utiliz´o en el capitulo anterior. 6.4. Pruebas En esta secci´on expondremos las pruebas realizadas en las diferentes tareas de implementaci´on de nuestro proyecto. Por escasez de tiempo, en esta ocasi´on, no se han podido realizar Pruebas Beta. 6.4.1. Pruebas Unitarias Las tablas 6.13 a 6.23 muestr´an las pruebas realizadas sobre el minijuego. PU-01 visualizar videotutorial Descripci´on Al pulsar el bot´on tutorial del men´u principal el juego deber´a cambiar de escena y mostrar el tutorial. Resultado Correcto. Tabla 6.13: PU-01: visualizar videotutorial PU-02 Generar niveles Descripci´on Al seleccionar un nivel, se genera un nivel de forma correcta. Resultado Correcto. Tabla 6.14: PU-02: Generar niveles 56 Juegos serios: estructuras din´amicas PU-03 Completar nivel Descripci´on Al cumplir la condici´on de victoria el nivel se marca como completado y se realizan las acciones correspondientes. Resultado Correcto. Tabla 6.15: PU-03: Completar nivel PU-04 Fallar nivel - Tiempo agotado Descripci´on Al agotar la puntuaci´on por una penalizaci´on de tiempo el nivel se marca como fallado. Resultado Correcto. Tabla 6.16: PU-04: Fallar nivel - Tiempo agotado PU-05 Fallar nivel - Movimientos agotados Descripci´on Al agotar la puntuaci´on por una penalizaci´on de movimientos el nivel se marca como fallado. Resultado Correcto. Tabla 6.17: PU-05: Fallar nivel - Movimientos agotados PU-06 Reiniciar nivel Descripci´on Al utilizar la opci´on de reiniciar nivel el nivel se genera de nuevo y las puntuaciones se reinician. Resultado Correcto. Tabla 6.18: PU-06: Reiniciar nivel PU-07 Salir del juego Descripci´on El juego se cierra correctamente. Resultado Correcto. Tabla 6.19: PU-07: Salir del juego PU-08 Mover Bola Descripci´on Al hacer click izquierdo en un recipiente y luego en otro diferente la bola se cambia de recipiente. Resultado Correcto. Tabla 6.20: PU-09: Mover bola PU-09 Ciclar bola Descripci´on Al hacer click izquierdo sobre un recipiente de tipo cola y volver a hacer click izquierdo de nuevo sobre la misma estructura la bola se mueve desde la parte de abajo a la parte de arriba. Resultado Correcto. Tabla 6.21: PU-09: Ciclar bola 57 7.3. CONSIDERACIONES ADICIONALES 7.3. consideraciones Adicionales Es importante tener en cuenta que al incrustar el juego en la plataforma la relaci´on de aspecto no se conserva correctamente, por lo que hay que tener cuidado con la colocaci´on de los elementos del men´u y del escenario. Los elementos colocados en la parte superior de la pantalla pueden llegar a no aparecer. El formato de pantalla resultante es parecido a 16:10. Tambi´en es importante destacar que al a˜nadir un video al proyecto y construir el proyecto en WebGL debemos seleccionar como fuente una url y cargar el video como se muestra en la figura 7.9. 1video = GetComponent<VideoPlayer>(); 2string url = Application.streamingAssetsPath + ”/Tutorial.mp4”; 3video. url = url; Figura 7.9: Carga de video por URL 64 Juegos serios: estructuras din´amicas Cap´ıtulo 8 Conclusi´on Una vez concluido el proyecto, podemos decir que este ha cumplido de manera satisfactoria con los objetivos que se planteaban al comienzo. Se han construido dos juegos serios independientes que gamifican partes del temario de la asignatura de fundamentos de programaci´on y que pueden llegar a facilitar el aprendizaje de los estudiantes que cursen la asignatura. Adem´as, se han adaptado los juegos a la plataforma del proyecto de manera que se pueden jugar desde la misma y las puntuaciones se actualicen. Considero que tanto la metodolog´ıa aplicada como las tecnolog´ıas utilizadas han sido las adecuadas. El desarrollo iterativo e incremental me ha permitido hacer frente a las variaciones surgidas durante el desarrollo del proyecto, que al tratarse de algo tan vol´atil como un videojuego, han sido constantes. Por otra parte, Unity es una herramienta que facilita mucho desarrollo de videojuegos sobre todo para equipos de desarrollo peque˜nos. Cada vez m´as docentes deciden adaptar su metodolog´ıa y dar respuesta con ella las nuevas necesidades que surgen de la integraci´on de las nuevas tecnolog´ıas en su d´ıa a d´ıa y en el aula. Creo que la gamificaci´on es una buena t´ecnica de aprendizaje, que aporta grandes beneficios y aplicada en las aulas puede suponer una evoluci´on en los m´etodos de docencia cl´asicos. 8.1. Mejoras Futuras Durante el desarrollo del proyecto se han observado determinadas mejoras que podr´ıan implementarse en un futuro para aportar m´as valor a los juegos: Un aumento de la cantidad de niveles, incluyendo m´as contenidos de la asignatura fundamentos de programaci´on, adem´as de una revisi´on de los existentes. Adaptar el juego a diferentes plataformas, a partir del proyecto Unity permite construir el juego para diferentes plataformas, pero para que funcionen de forma adecuada requieren ajustes adicionales, como configurar los controles. 65 8.1. MEJORAS FUTURAS Mejorar el apartado multimedia, a˜nadir m´as y mejores animaciones, transiciones, sonidos e im´agenes. Crear una historia o trasfondo de los juegos, que los englobe y permita crear narrativas dentro de los mismos. 66 Juegos serios: estructuras din´amicas Referencias [1] Agencia tributaria. https://www.agenciatributaria.es/AEAT.internet/Inicio/ _Segmentos_/Empresas_y_profesionales/Empresas/Impuesto_sobre_Sociedades/ Periodos_impositivos_a_partir_de_1_1_2015/Base_imponible/Amortizacion/Tabla_ de_coeficientes_de_amortizacion_lineal_.shtml. [Online; accessed Mar-2021]. [2] Ball sort puzzle. https://play.google.com/store/apps/details?id=com.GMA.Ball.Sort. Puzzle&hl=es&gl=US. [3] Creaci´on de una plataforma para la gamificaci´on de una asignatura. http://uvadoc.uva.es/ handle/10324/44410. [Online; accessed Mar-2021]. [4] Extensiones e integraciones de github. https://docs.github.com/es/github/ customizing-your-github-workflow/github-extensions-and-integrations . [Online; accessed Mar-2021]. [5] Gamificaci´on en el aula: gincana de programaci´on. http://www.aenui.net/ojs/index.php? journal=revision&page=article&op=view&path%5B%5D=402&path%5B%5D=593 . [Online; accessed Mar-2021]. [6] Gesti´on de riesgos. http://www.lsi.us.es/docencia/get.php?id=473 . [Online; accessed Mar-2021]. [7] Git. https://www.git-scm.com/. [Online; accessed Mar-2021]. [8] Las 5 ventajas principales de la gamificaci´on en el aprendizaje. https://insights.learnlight. com/es/articulos/5-ventajas-gamificacion-aprendizaje/ . [Online; accessed Mar-2021]. [9] Less work in progress. https://www.plasticscm.com/. [Online; accessed Mar-2021]. [10] Metodolog´ıa de desarrollo crystal. https://www.tecnologias-informacion.com/ metodologia-crystal.html. [Online; accessed Mar-2021]. [11] Webgl. https://es.wikipedia.org/wiki/WebGL. [Online; accessed Mar-2021]. [12] A guide to the project management body of knowledge. Project Management Institute, 2004. [13] Ludificaci´on. https://es.wikipedia.org/wiki/Ludificaci%C3%B3n , Feb 2021. [Online; accessed Mar-2021]. [14] TRACY FULLERTON. GAME DESIGN WORKSHOP: a playcentric approach to creating innovative games, third edition. CRC Press, 2017. 67 REFERENCIAS [15] David Erosa Garc´ıa. Qu´e es unity y caracter´ısticas principales. https://openwebinars.net/ blog/que-es-unity/, Jul 2020. [Online; accessed Mar-2021]. [16] Unity Technologies. https://unity.com/es. [Online; accessed Mar-2021]. 68