Full text
VIDEOJUEGOS Y PROGRAMACIÓN: INTEGRACIÓN DE UNA COMUNIDAD ABIERTA EN UN JUEGO SERIO DE PROGRAMACIÓN VIDEO GAMES AND PROGRAMMING: INTEGRATING AN OPEN COMMUNITY INTO A SERIOUS PROGRAMMING GAME TRABAJO FIN DE GRADO CURSO 2023-2024 AUTORES ÓSCAR FERNÁNDEZ ROMANO CÉSAR CARLOS RUBIO PASTOR DIRECTORES ANTONIO CALVO MORATA BALTASAR FERNÁNDEZ MANJÓN GRADO EN DESARROLLO DE VIDEOJUEGOS / GRADO EN INGENIERÍA INFORMÁTICA FACULTAD DE INFORMÁTICA UNIVERSIDAD COMPLUTENSE DE MADRID
VIDEOJUEGOS Y PROGRAMACIÓN: INTEGRACIÓN DE UNA COMUNIDAD ABIERTA EN UN JUEGO SERIO DE PROGRAMACIÓN VIDEO GAMES AND PROGRAMMING: INTEGRATING AN OPEN COMMUNITY INTO A SERIOUS PROGRAMMING GAME TRABAJO DE FIN DE GRADO EN DESARROLLO DE VIDEOJUEGOS / INGENIERÍA INFORMÁTICA AUTORES ÓSCAR FERNÁNDEZ ROMANO CÉSAR CARLOS RUBIO PASTOR DIRECTORES ANTONIO CALVO MORATA BALTASAR FERNÁNDEZ MANJÓN CONVOCATORIA: JUNIO 2024 GRADO EN DESARROLLO DE VIDEOJUEGOS / GRADO EN INGENIERÍA INFORMÁTICA FACULTAD DE INFORMÁTICA UNIVERSIDAD COMPLUTENSE DE MADRID MAYO DE 2024
III DEDICATORIA Óscar Fernández Romano A mis queridos padres, gracias por su apoyo incondicional y por creer en mí en todo momento. Este logro es tanto suyo como mío. Sin vosotros, no habría llegado hasta donde estoy ahora. A mi hermana, gracias por compartir toda una vida de crecimiento juntos. Tu presencia ha sido un regalo invalorable en mi vida. A mi novia, gracias por motivarme siempre y celebrar cada logro a mi lado. Tu apoyo inflexible ha sido mi mayor fortaleza. César Carlos Rubio Pastor A mis padres, por su infinita paciencia y regalarme incalculables enseñanzas que me acompañarán siempre. A mi amigo Manuel, por sacarme de más de un aprieto.
V AGRADECIMIENTOS A Henar Martín, por su amabilidad al reunirse con nosotros y proporcionar una detallada explicación sobre el funcionamiento del servidor y la página web. A Miguel Ángel Garrido Blázquez, profesor del departamento de Informática y Estadística de la Universidad Rey Juan Carlos, por su colaboración al llevar a cabo pruebas con el juego y elaborar un informe detallado sobre los resultados obtenidos. A los alumnos que participaron en el programa 4ºESO + Empresa por participar en las pruebas y dar su opinión, contribuyendo así al desarrollo de nuestro proyecto. A Gema López Luengo y Raquel García Quina, directora y coordinadora de TIC del Colegio Arcipreste de Hita respectivamente, por brindarnos la oportunidad de llevar a cabo las primeras pruebas de Articoding en un entorno escolar. Ha sido una experiencia enriquecedora. Por último, a Balta y Toni, nuestros tutores, les expresamos nuestra más sincera gratitud por su dedicación y orientación constante durante la realización de este TFG. Su firme respaldo y sus reuniones periódicas, así como el valioso feedback proporcionado, han sido fundamentales en nuestro camino hacia la culminación de este proyecto.
VII RESUMEN VIDEOJUEGOS Y PROGRAMACIÓN: INTEGRACIÓN DE UNA COMUNIDAD ABIERTA EN UN JUEGO SERIO DE PROGRAMACIÓN. Articoding es un juego serio educativo desarrollado en 2020, dentro de la Universidad Complutense de Madrid, por alumnos del Grado de Desarrollo de Videojuegos. El juego busca promover el desarrollo del pensamiento computacional (Computational Thinking) mediante la enseñanza de conceptos fundamentales de programación. El jugador debe superar niveles resolviendo los problemas que se plantean en un escenario en forma de tablero utilizando la programación visual por bloques. El objetivo principal de este proyecto es integrar un modelo de comunidad abierta mediante mejoras en el juego, el servidor y la plataforma web de Articoding. Para lograrlo, se ha realizado un análisis exhaustivo de otros juegos similares para determinar las características esenciales que debe tener la Comunidad de Articoding. Posteriormente, se ha diseñado la estructura de los menús, las interfaces y la arquitectura del sistema, seguido por su implementación. Durante el proyecto también se han llevado a cabo tareas de actualización y mantenimiento, optimizando el código, corrigiendo errores y actualizando los menús. Todo esto ha permitido mejorar la experiencia del usuario. Por último, se han llevado a cabo pruebas con usuarios reales para evaluar la efectividad del nuevo diseño y recopilar retroalimentación sobre su experiencia de uso. Palabras clave Juego, Serio, Lógica, Computacional, Programación, Comunidad, Educación, Aprendizaje, Puzles, Multijugador.
1 Capítulo 1 - Introducción "La educación es el pasaporte hacia el futuro, el mañana pertenece a aquellos que se preparan para el hoy." - Malcolm X 1.1 Motivación La digitalización ha tenido un profundo impacto en la sociedad. Ha alterado fundamentalmente cómo vivimos, trabajamos, nos comunicamos y nos relacionamos con el mundo que nos rodea [1]. Debido a ello, surge la necesidad de enseñar pensamiento computacional [2] para equipar a las personas con las habilidades necesarias para entender y participar activamente en un mundo cada vez más digital. Sin embargo, los sistemas educativos actuales siguen centrados en métodos tradicionales de enseñanza que priorizan la memorización y la repetición sobre el desarrollo de habilidades críticas y prácticas. En este contexto, los juegos serios se presentan como una herramienta más efectiva para enseñar pensamiento computacional, ya que combinan el aprendizaje práctico y la resolución de problemas con una experiencia interactiva y atractiva, fomentando así la creatividad y el compromiso de los estudiantes. Articoding nació con esta misma idea de proporcionar juegos educativos para enseñar programación. Articoding es un juego serio diseñado para enseñar a los jóvenes los conceptos básicos de la programación y mejorar las habilidades del pensamiento computacional. Fue desarrollado en Unity en 2020 y se ha seguido actualizando con nuevas funcionalidades desde entonces-. Además, mantiene su código abierto, lo que permite a cualquier persona modificarlo y añadir nuevas características libremente. Este proyecto proporciona la oportunidad de contribuir al desarrollo continuo de Articoding, además de una oportunidad para profundizar en la teoría y práctica de los juegos serios y su aplicación en el aula, explorando nuevas metodologías educativas y evaluando su impacto en el aprendizaje.
2 1.2 Objetivos El propósito principal de este trabajo de fin de grado consiste en la ampliación del proyecto Articoding, mediante la mejora de su interfaz y la ampliación de su comunidad abierta, permitiendo a estudiantes y profesores compartir niveles creados por ellos mismos y mejorando la experiencia de usuario. Para alcanzar este objetivo, se han establecido los siguientes subobjetivos más específicos: ● Estudiar y entender aplicaciones y juegos centrados en el desarrollo del pensamiento computacional y su comunidad. ● Realizar la apropiación de código. ● Identificar y corregir los errores no abordados previamente. ● Mejorar la experiencia de usuario. ● Rediseñar el sistema de comunidad y aplicar los cambios necesarios para añadir mejoras. ● Validar los cambios con pruebas de usuario reales. 1.3 Plan de trabajo Antes de iniciar el desarrollo, con el objetivo de entender y estudiar aplicaciones similares, se llevará a cabo un análisis exhaustivo de diversos juegos para identificar interfaces efectivas y mecánicas atractivas. En primer lugar, se analizará el estado actual del proyecto y se estandarizará de cara a futuras mejoras e implementaciones, para lo que se realizará una apropiación de código. Tras esto, para identificar y corregir los errores, se revisarán los informes generados a partir de las pruebas de usuario llevadas a cabo el año anterior. Con el fin de mejorar la experiencia del usuario, se realizarán modificaciones en la interfaz, se incluirá un mayor sistema de feedback dentro del juego y se implementarán animaciones adicionales. Para rediseñar el sistema de comunidad, primero se presentará la nueva idea, seguida del diseño y prototipado para verificar su solidez [3]. Luego, se implementará en
3 el juego, integrando los cambios necesarios en el servidor y la base de datos. Finalmente, se adaptará el servicio web del juego para cumplir con estas nuevas necesidades. Adicionalmente, se intentarán realizar pruebas con usuarios reales para validar los cambios, detectar nuevos errores y recopilar feedback. En relación con las herramientas que se utilizarán, Google Drive y Gmail se emplearán para la gestión de documentos y la comunicación, respectivamente. GitHub será empleado para el control de versiones, creando una copia de los repositorios actuales. Unity se mantendrá como el motor de videojuego, junto con Visual Studio como editor de código. Para la creación de Assets, se utilizará Photoshop para la edición de imágenes y Blender para la elaboración de animaciones. En cuanto al desarrollo del servidor, se empleará Intellij como IDE principal, HeidiSQL para la manipulación de la base de datos, y Postman para probar las peticiones HTTP. Para el desarrollo del cliente, se utilizará Visual Studio Code. Los diseños de las interfaces se crearán inicialmente en papel y lápiz, y posteriormente se elaborarán prototipos con Figma. Figura 1-1. Programas utilizados durante el desarrollo de este proyecto Con el fin de monitorizar el progreso y recibir feedback sobre los avances realizados, se llevarán a cabo reuniones periódicas presenciales o a través de Google Meet. Durante estas reuniones, se presentarán los avances desde el encuentro anterior y se definirán los próximos pasos a seguir. Se proporciona una descripción más detallada de estas reuniones en el Apéndice D.
5 Capítulo 2 - Estado de la cuestión "La creatividad es la capacidad de ver lo que los demás ven y pensar lo que nadie más ha pensado." - Albert Einstein 2.1 Enseñanza de la Programación a través de Juegos Serios La enseñanza tradicional es un enfoque educativo donde el maestro es la figura central y los estudiantes son receptores pasivos del conocimiento. Este modelo de enseñanza ha arraigado su práctica en la transmisión oral de conocimientos y en la repetición mnemotécnica como principales pilares de aprendizaje. Sin embargo, en un mundo caracterizado por avances sociales y tecnológicos sin precedentes, resulta evidente que estos métodos tradicionales se han vuelto insuficientes para satisfacer las demandas contemporáneas. Como señala María Isabel Torres Salas en su estudio [4], “Las tecnologías educativas deben adaptarse a las nuevas tecnologías, con el fin de facilitar el acceso de los ciudadanos a la educación, en el marco del desarrollo tecnológico de la informática y de las telecomunicaciones”. Es en este contexto que surgen los juegos serios, con el objetivo de modernizar y enriquecer el proceso educativo. Los juegos serios son videojuegos diseñados con un propósito principal más allá del entretenimiento, como la educación, el entrenamiento, la simulación, o la concienciación sobre ciertos temas. Estos juegos pueden integrarse en el proceso de enseñanza-aprendizaje sin comprometer la diversión. El término serio se refiere específicamente a aquellos videojuegos utilizados en sectores como la educación, la ciencia, la atención médica, la planificación urbana, la ingeniería o la política. Como demuestra Reham Ayman en su análisis [5], el enfoque de incorporar conceptos básicos y fundamentales dentro de un contexto práctico, como lo hace un videojuego, es una estrategia altamente efectiva en el proceso de aprendizaje. En su estudio se compararon dos métodos de enseñanza: uno basado en un juego interactivo y otro en el método educativo tradicional. Con este experimento se llegó a la siguiente
6 conclusión: El resultado demostró que el juego tiene más efecto en el aprendizaje y el nivel de compromiso de los niños que el método educativo tradicional. Articoding es un juego serio con una estética juvenil diseñada para atraer a jóvenes. Este proyecto se encuentra específicamente orientado hacia el ámbito educativo, buscando introducir a los jóvenes los principios esenciales de la programación. Además, su código fuente está disponible de manera abierta, permitiendo que cualquier individuo pueda acceder a él, descargarlo y realizar sus propias adaptaciones y mejoras según sus necesidades y preferencias. 2.2 Criterios de selección de juegos a analizar Para profundizar en el conocimiento sobre otros juegos serios dentro del ámbito de la pedagogía informática e identificar características destacadas, se realizó una cuidadosa selección de juegos. Los criterios empleados para esta selección abarcaron juegos serios centrados en el desarrollo del pensamiento computacional, así como aquellos que ofrecen una plataforma comunitaria donde los usuarios pueden crear y compartir niveles. Además, se examinaron plataformas educativas que enseñan programación a través de sistemas de bloques. 2.2.1 Geometry Dash Geometry Dash [6] es un juego de plataformas desafiante desarrollado por RobTop Games, donde los jugadores controlan un icono a través de niveles llenos de obstáculos. Aunque principalmente es un juego para un jugador, presenta elementos sociales como tablas de clasificación en línea y la capacidad de crear y compartir niveles con la comunidad. Estos aspectos brindan a los jugadores la oportunidad de competir y contribuir en un entorno en línea.
7 Figura 2-1. Comunidad de Geometry Dash El juego en cuestión proporciona una serie de conceptos relevantes para el diseño de la comunidad. Por un lado, destaca la presentación de información en cada nivel, la cual incluye el nombre del nivel, el nombre del creador, el recuento de reproducciones y el número de interacciones positivas, como los "me gusta". Por otro lado, se observa la presencia de un sistema de búsqueda de niveles que permite a los usuarios encontrar niveles específicos mediante la introducción de términos de búsqueda como el nombre del nivel, el nombre del autor o la identificación única del nivel (ID). Estas características contribuyen significativamente a la experiencia del usuario al facilitar el descubrimiento y la interacción con el contenido generado por la comunidad dentro del juego. 2.2.2 I Wanna Maker I Wanna Maker [7] es un juego de plataformas inspirado en I Wanna Be The Guy [8]. Su enfoque principal radica en proporcionar a la comunidad herramientas sólidas para la creación y compartición de niveles en línea. Los niveles en el juego exhiben una serie de métricas, incluyendo la tasa de completitud, el número de likes recibidos y etiquetas que definen aspectos como la dificultad, temática o funcionalidad del nivel. Además, el juego facilita búsquedas simples, permitiendo a los usuarios explorar niveles populares o recién creados, así como búsquedas avanzadas que posibilitan el filtrado por distintos parámetros.
8 Figura 2-2. Niveles creados en I Wanna Maker Otra característica destacable es la funcionalidad de crear listas de niveles, lo que brinda a los jugadores la oportunidad de organizar y compartir conjuntos de niveles con la comunidad. Figura 2-3. Listas de niveles en I Wanna Maker Todas estas funcionalidades y herramientas resultaron sumamente interesantes para ser implementadas en el proyecto, con el objetivo de orientar a la comunidad hacia un modelo similar al exitoso enfoque de juegos como I Wanna Maker. 2.2.3 MakeCode Arcade MakeCode Arcade [9] es una plataforma web desarrollada por Microsoft con el propósito de facilitar la creación de juegos y el aprendizaje de programación. Esta plataforma ofrece la posibilidad de construir juegos utilizando un sistema de Figura 2-2. Imágenes de vista previa de niveles creados
9 programación basado en bloques, similar al de Scratch, aunque también brinda la opción de utilizar lenguajes de programación más avanzados como JavaScript y Python. Figura 2-4. Pantalla de nivel y certificado al completarlo en MakeCode Arcade La estructura de MakeCode Arcade presenta similitudes significativas con la de Scratch. El menú principal se divide en sublistas que incluyen niveles, tutoriales y creadores destacados. Además, la plataforma incorpora skillmaps, que son listas de desafíos diseñadas para recompensar a los usuarios con certificados al completarlos satisfactoriamente. 2.2.4 Rabbids Coding Rabbids Coding [10] es un videojuego educativo desarrollado por Ubisoft basado en la popular franquicia de los Rabbids. Este juego está diseñado para enseñar conceptos básicos de programación a niños y principiantes de todas las edades de una manera divertida y accesible. Al igual que en Articoding, el jugador debe colocar una serie de bloques con instrucciones en el orden correspondiente para superar el nivel. Dando al botón Play se ejecutarán las instrucciones para comprobar el nivel.
16 Se introdujeron mejoras en la creación de niveles, permitiendo establecer restricciones y guardar estados iniciales. Se implementó un sistema de comunidad que permitía a los alumnos subir niveles y a los profesores crear clases, utilizando un servidor API REST y un servidor web para administrar niveles, clases y usuarios. Estas adiciones ampliaron la funcionalidad del juego y lo convirtieron en una herramienta más interactiva y colaborativa. Figura 3-4. Menús de la comunidad durante el año 2022/2023
17 Capítulo 4 - Desarrollo " La tecnología avanza a un ritmo exponencial, y aquellos que no se adaptan a estos cambios están destinados a quedarse atrás." - John F. Kennedy 4.1 Apropiación de código Como recién llegados al proyecto, fue crucial para nosotros comprender la arquitectura y el diseño del sistema, así como familiarizarnos con sus funcionalidades, código fuente, documentación y las herramientas y tecnologías utilizadas. Por esta razón, una de nuestras primeras acciones fue llevar a cabo una fase de apropiación del código. La apropiación de código es el proceso mediante el cual una persona o un grupo adquieren, comprenden y utilizan activamente el código fuente de un programa o aplicación. Este proceso en primer lugar implica el estudio del código, con la intención de comprender cómo está estructurado, cómo funciona y qué propósito cumple cada parte del mismo. En segundo lugar la modificación y la personalización de este, con la finalidad de añadir modificaciones según las necesidades y preferencias. A continuación se describen los cambios realizados en las apropiaciones. 4.1.1 Apropiación de código - Articoding El juego está desarrollado en Unity [17] y consta de 5 escenas principales. La primera escena es LoadingScene, donde se lleva a cabo el proceso de inicialización de los distintos sistemas del juego. La segunda es MenuScene, que sirve como el menú principal del juego y desde la cual se puede acceder a diversas áreas, como jugar niveles, ver el perfil, crear niveles, acceder a la comunidad, entre otras opciones. La tercera es LevelScene, una escena dedicada a cargar los diferentes niveles y permitir la jugabilidad principal para resolverlos. La cuarta es BoardCreationScene, que permite a los usuarios crear nuevos tableros y personalizar su distribución. Por último, la quinta escena es EndScene, que simplemente muestra los créditos del juego. Dentro del proyecto de Unity se realizaron los siguientes cambios:
18 ● Scripts: ○ Renombrado de Scripts siguiendo la convención de nombres “UpperCamelCase”, ejemplo: “PenguinLoadingBehavior”. ○ Descripción de las clases mediante la etiqueta <summary>. ○ Mejora del alcance y accesibilidad de ciertas variables “public” que no eran necesarias en otros scripts sustituyéndolo por “[SerializeField] private”. ○ Renombrado de Scripts siguiendo la convención de nombres “lowerCamelCase”, ejemplo: “initialPoint”. Figura 4-1. Ejemplo de un script refactorizado ● Escena: ○ Uniformado de los nombres de todos los elementos en inglés. ○ Separación entre palabras con espacios. ○ Adición de GameObjects vacíos llamados “------------” para separar elementos o grupos importantes en la escena. ○ Mejora de la jerarquía.
19 Figura 4-2. Ejemplo de una escena refactorizada ● Creación de la pestaña “Utils” con el propósito de facilitar la transición entre escenas y simplificar la función de “Play-Unplay” debido a la necesidad del juego de arrancar siempre desde la escena “LoadingScene”. Figura 4-3. Pestaña Utils creada en Unity ● Actualización del plugin Localizables de Unity de la versión 0.10.0 a la versión 1.4.5 con sus respectivas refactorizaciones en los scripts dependientes. ● Optimización del sistema de guardado para eliminar la información redundante en los archivos y agilizar la carga de datos.
20 4.1.2 Apropiación de código - Server ArticodingServer es una aplicación Java basada en Spring Boot, que utiliza Maven como gestor de dependencias y construcción del proyecto. Este servidor está diseñado para administrar usuarios, niveles y clases dentro de la comunidad de Articoding. El servidor mantiene funcionalidades para la definición de usuarios con el rol de profesor, quienes tienen la capacidad de crear y gestionar clases (Classrooms), así como controlar el acceso a las mismas. La aplicación almacena información sobre los componentes necesarios y define la estructura de la base de datos, así como el manejo de las peticiones del juego y del cliente. ArticodingServer está organizado en paquetes interdependientes. Los controladores (controllers) son responsables de recibir las peticiones HTTP tanto del cliente web como del juego, haciendo uso de las funcionalidades definidas en las clases del paquete servicios (services). Figura 4-4. Diagrama de paquetes y dependencias
21 En el paquete Repository se encuentran las interfaces que facilitan la consulta de la base de datos, extendiendo JPArepository. Estas interfaces generan las consultas necesarias sobre la base de datos interpretando el nombre del método definido. Figura 4-5. Ejemplo de un método que devuelve niveles públicos El paquete model contiene las estructuras de datos para cada componente del juego, como usuarios o niveles. Estas estructuras también definen la estructura de las tablas entidad-relación en la base de datos. Figura 4-6. Diagrama entidad-relación del servidor
22 Para facilitar la comprensión y apropiación del código, se añadió al repositorio un documento descriptivo sobre la estructura de Articoding Server, donde se explica con mayor detalle lo mencionado anteriormente. También se amplió la información en el archivo README del proyecto, con el fin de simplificar el despliegue del servidor. Además, se realizó una refactorización de algunos de los métodos en el código para mejorar su legibilidad y escalabilidad. Figura 4-7. Código previo a la apropiación
23 Figura 4-8. Código posterior a la apropiación 4.2 Corrección de errores y optimizaciones Durante el año 2023, el profesor Miguel Ángel Garrido Blázquez de la Universidad Rey Juan Carlos probó y analizó el proyecto Articoding. Posteriormente, elaboró un informe que detallaba los errores encontrados durante la realización de estas pruebas. Dado que los alumnos del curso 22/23 no pudieron abordar la solución de estos errores a tiempo, nosotros nos encargamos de hacerlo. La mayoría de los errores identificados estaban relacionados con aspectos visuales, como imágenes que no se ajustaban correctamente al tamaño en diferentes escalados de pantalla, así como errores en las traducciones. Tras realizar diversas pruebas, se implementaron ajustes en el redimensionamiento de todos los elementos del juego para garantizar su adecuación a una amplia variedad de tamaños de pantalla. Durante el mes de enero, ante la posibilidad de llevar a cabo pruebas con usuarios reales, se priorizó la realización de pruebas intensivas del juego básico. Al mismo tiempo, se añadieron nuevas funciones con el objetivo de asegurar que la versión que se utilizara en las pruebas fuera estable y libre de problemas. Se prestó especial atención al sistema de guardado, el cual presentaba dificultades.
24 4.3 Mejoras para la experiencia de usuario Tras conocer el estado del proyecto, se decidió agregar una serie de mejoras basándonos en las ideas obtenidas a través del análisis de otros juegos similares y proceder a la corrección de errores detectados en las pruebas de usuario del año anterior. 4.3.1 Nuevas animaciones Se consideró que otorgarle mayor protagonismo al pingüino era una decisión acertada, dado que se ha verificado que los usuarios responden positivamente a su diseño. En consecuencia, se procedió a la incorporación de nuevas animaciones para enriquecer su presencia dentro del juego. Figura 4-9. Creación de animaciones del pingüino en Blender Con este propósito, se empleó el proyecto previo penguinAnimated de Blender para desarrollar cuatro animaciones, cada una representando un resultado posible al completar un nivel (desde fallar con 0 estrellas hasta obtener las 3). Una vez creadas las diversas animaciones, estas se integraron en el juego dentro de la ventana de solución de nivel, donde se muestran las animaciones correspondientes al resultado obtenido.
25 Figura 4-10. Ventana de resultado del nivel con el pingüino animado 4.3.2 Imágenes de los niveles guardados Resulta evidente la importancia de contar con imágenes de vista previa en los niveles para una rápida identificación del contenido antes de ingresar, y aunque dichas imágenes estaban disponibles para los niveles básicos del juego, no se registraban en ningún momento las imágenes correspondientes a los niveles generados por los usuarios, lo cual afectaba negativamente la presentación visual de estos últimos. Además, teniendo en cuenta que uno de los objetivos primordiales de este proyecto era mejorar el sistema de comunidad, se anticipó la importancia que tendría la inclusión de una imagen previa para cada nivel. Figura 4-11. Vista previa de niveles creados
32 Figura 4-18. Comparativa de los elementos del nuevo diseño de la comunidad Las clases se conciben como entidades independientes debido a una serie de razones fundamentales. Primero, restringir la capacidad de subir niveles o listas de reproducción de manera privada fuera del entorno de clase contribuye al enriquecimiento de la comunidad, ya que todas las contribuciones son públicas y accesibles para todos los usuarios. Otro motivo para considerar las clases como entidades independientes de las listas de reproducción es garantizar que los alumnos puedan acceder a ellas sin complicaciones y sin perderse en la búsqueda. Esta separación facilita el acceso directo a las clases para los alumnos, especialmente porque el profesor puede agregarlos directamente, lo que les permite aparecer automáticamente al iniciar sesión con su usuario. Además, las clases ofrecen al profesor la capacidad de monitorizar el progreso de los alumnos. Asimismo, es fundamental proteger la privacidad de los usuarios, evitando que los creadores de listas tengan acceso a información sobre qué usuarios han jugado sus listas. 4.4.2 Escenarios hipotéticos Para reafirmar las elecciones tomadas en el nuevo concepto de comunidad se plantearon una serie de escenarios hipotéticos. Estos escenarios son herramientas valiosas en el diseño y desarrollo de aplicaciones, ya que permiten prever y analizar el
33 comportamiento del sistema en situaciones variadas que podrían no estar cubiertas por casos de uso convencionales. 4.4.2.1 Escenario 1: Profesor Matías Matías, quien ha descargado el juego gratuitamente desde Github pero aún no posee el rol de profesor, decide introducirlo a sus alumnos. Durante las primeras tres sesiones, los alumnos completan los niveles de la aventura principal y quedan encantados con la experiencia. Motivado por el entusiasmo de sus estudiantes, Matías planea que en la cuarta sesión cada alumno cree su propio nivel. Después de que los alumnos creen sus niveles, le proporcionan a Matías los ID de cada uno. Con esta información, Matías compila una lista de reproducción con los niveles de sus estudiantes y les informa cuál es la lista para que jueguen y valoren los niveles creados por sus compañeros. Dado el éxito de las sesiones de juego y el aprendizaje significativo que los alumnos están experimentando en cuanto a los conceptos básicos de programación, Matías decide ponerse en contacto con los administradores para obtener el rol de profesor. Una vez que lo obtiene, Matías decide que un porcentaje de la nota de cada alumno se determinará mediante una serie de niveles. Matías crea una clase con los 10 niveles públicos más populares de la comunidad, los prueba para asegurarse de que no sean demasiado difíciles y los selecciona para la evaluación. En el día de la clase, Matías proporciona a los alumnos el código de acceso a la clase, permitiéndoles utilizar los usuarios que crearon previamente. Después de la clase, Matías revisa qué usuarios han completado cada nivel y utiliza esta información para evaluar a sus alumnos, reconociendo así su progreso y desempeño en la materia. 4.4.2.2 Escenario 2: Estudiando Sofia Sofía, una estudiante de 2º de la ESO, muestra un gran interés por la asignatura de Informática y ya posee conocimientos previos en programación, especialmente en Scratch, lo que le permite encontrar los niveles básicos del juego Articoding bastante
34 simples. Cuando la profesora les indica que ingresen a la página de la comunidad, Sofía lo hace con facilidad y de inmediato se dirige a la sección de niveles. Mientras la profesora explica el procedimiento para unirse a la clase, Sofía se adelanta y comienza a intentar completar el nivel con más "Me gustas" que ha encontrado, utilizando la función de ordenar por cantidad de "Me gustas". 4.4.2.3 Escenario 3: Usuario fuera de clase Jorge Jorge, un adolescente de 14 años, ha sentido curiosidad por el mundo de la programación, pero se ha encontrado con dificultades y frustraciones al intentar aprender. Sin embargo, un día descubre Articoding y se siente atraído por su curva de aprendizaje gradual y accesible, lo que le permite superar los desafíos del juego en pocas horas. Impulsado por su entusiasmo, decide registrarse en la Comunidad para seguir explorando. Al principio, Jorge se dedica a jugar los niveles más populares de la comunidad y también experimenta con algunas listas de reproducción. Motivado por su experiencia, decide crear sus propios niveles, los cuales reúne en una lista de reproducción. Pronto, sus niveles ganan popularidad en la comunidad, y uno de ellos se convierte en el más apreciado por los usuarios, incluso siendo utilizado por profesores como Matías en sus clases, sin que Jorge lo sepa. Con el tiempo, Jorge comienza a perder interés en el juego, ya que ninguno de los niveles le presenta un desafío. Decide retomar un curso de programación que había abandonado anteriormente debido a su dificultad, pero ahora se encuentra sorprendido al descubrir que comprende perfectamente los conceptos que antes le resultaban complicados, como los bucles. El curso ahora le parece incluso fácil, demostrando su progreso y habilidades adquiridas a través de su experiencia en Articoding. 4.4.2.4 Escenario 4: Profesor Eduardo Antes de la clase, Eduardo elabora una serie de niveles personalizados utilizando el editor integrado en el juego. Luego, accede a la plataforma web y crea una clase, en la cual añade los niveles que ha diseñado previamente. Posteriormente, desde la
35 misma plataforma web, procede a crear cuentas de usuario para cada uno de sus alumnos, asignándoles un nombre de usuario y una contraseña. Seguidamente, incorpora a los alumnos a la clase que ha creado. Durante la clase, Eduardo distribuye las credenciales de inicio de sesión a cada alumno y les explica cómo acceder a la comunidad, dirigirse a la clase correspondiente y jugar los niveles designados. Después de la clase, Eduardo puede consultar la plataforma web para verificar qué usuarios han completado cada nivel, utilizando esta información para evaluar el progreso y desempeño de sus alumnos. 4.4.3 Diseño de la interfaz gráfica Se diseñó la interfaz de comunidad con idea de mantener una buena experiencia de usuario, haciéndola intuitiva y atractiva a partes iguales. Se crearon dos bocetos diferentes, diseñados por cada miembro del grupo, en los que cada uno plasmó su idea de la comunidad para poder ponerlos en común y llevar a cabo una discusión sobre qué elementos de cada boceto eran mejores. Figura 4-19. Bocetos del nuevo diseño de la comunidad de Óscar
36 Figura 4-20. Bocetos del nuevo diseño de la comunidad de César Ambos diseños presentaban de maneras muy similares los menús con botones para acceder de forma directa a las páginas de niveles, listas y clases. Entre los diseños se discrepaba en el diseño de las tarjetas de nivel, siendo unas horizontales y otras verticales. Tras valorar los puntos fuertes de cada diseño se tomó la decisión de utilizar las tarjetas verticales por su facilidad para ajustarse a diversos tipos de pantallas.
37 Figura 4-21. Prototipo del nuevo diseño de la comunidad en Figma Tras tener los bocetos se procedió al desarrollo de un prototipo utilizando Figma. Sobre él, se realizaron las modificaciones que consideramos necesarias tras probar la experiencia de usuario con estas interfaces y contrastar nuestra visión con Baltasar y Antonio. Al final se obtuvo un prototipo efectivo que tan solo hubo que introducir en el juego, dejando el siguiente resultado: Figura 4-22. Resultados del nuevo diseño de la comunidad en el juego
38 4.4.4 Implementación A continuación se detallan las funcionalidades implementadas en la Comunidad Articoding, abarcando aspectos tanto del juego como del servidor y la plataforma web. 4.4.4.1 Funcionalidad de iniciar sesión / registrarse Al seleccionar la pestaña "Comunidad", el primer elemento que se presenta es el menú para iniciar sesión o crear una cuenta nueva. En el contexto del juego, la funcionalidad de inicio de sesión ya estaba implementada, por lo que solo se requirió añadir la opción de registro. Para ello, se incorporó un menú que permite alternar entre las pestañas de inicio de sesión y registro de usuarios. El proceso de registro de un nuevo usuario implica proporcionar un nombre de usuario, una contraseña y su confirmación. Una vez completado este proceso, el usuario es creado y se accede automáticamente con las credenciales proporcionadas. Figura 4-23. Menús de inicio de sesión y registro de usuarios En lo que respecta al servidor, se añadió un nuevo endpoint para el registro de usuarios, el cual recibe una solicitud POST con un formulario de usuario (UserForm), manteniendo el mismo flujo que se seguía previamente desde la página web. La diferencia radica en que ahora no es necesario solicitar una autenticación previa, ya que anteriormente solo un usuario con un rol superior podía crear nuevas cuentas.
39 4.4.4.2 Funcionalidad del menú principal Después de iniciar sesión o registrarse, los usuarios acceden al menú principal, una vista intermedia que les permite visualizar la información de su perfil, incluyendo su nombre, rol e imagen de perfil. Además, en este menú principal se encuentran botones para acceder a diversas secciones específicas, donde los usuarios pueden: ver los niveles de la comunidad, subir sus propios niveles, consultar las listas de la comunidad, crear sus propias listas, visualizar las clases a las que pertenecen y unirse a otras clases mediante un código de acceso. Figura 4-24. Menú de comunidad 4.4.4.3 Funcionalidad de cambiar imagen de perfil Para modificar la imagen de usuario, al hacer clic en ella se despliega un menú que presenta todas las opciones disponibles. Al seleccionar una de las opciones simplemente haciendo clic en ella, se efectúa la elección. En cuanto al almacenamiento de datos, la selección de la imagen de perfil se registra como un
40 número entero dentro de la clase de usuario. Este número se corresponde con la imagen específica en el menú principal y se actualiza mediante una solicitud PUT. Figura 4-25. Menú selección imagen de usuario 4.4.4.4 Funcionalidad añadir imágenes de los niveles Los niveles emplean las imágenes que previamente han sido guardadas para cada nivel creado, tal como se mencionó en el punto 4.2. Durante el proceso de subida de niveles, las imágenes son almacenadas localmente en la máquina que hospeda el servidor. Con este propósito, se implementó un nuevo DTO (Data Transfer Object) que incorpora tanto la información del nivel como la imagen asociada. Al recibir la petición, la imagen se extrae como un array de bytes. Posteriormente, se genera un nombre único que se utiliza para almacenarla en una carpeta denominada levelImages. En la base de datos, se guarda únicamente el nombre del archivo, lo que permite su posterior recuperación.
41 Figura 4-26. Carpeta levelImages en el servidor 4.4.4.5 Funcionalidad de ver lista de niveles Inicialmente, se procedió a la creación de un prefab para las tarjetas de nivel, el cual se configuró para adaptarse a la información de cada nivel descargada desde el servidor. Posteriormente, se implementó una página que incluía los botones de volver al menú, abrir el menú de búsqueda avanzada y ordenar, junto con una lista de tarjetas de nivel dispuestas en un desplazamiento lateral. Figura 4-27. Diseño tarjetas de niveles y la página de buscar niveles
48 Para implementar esta funcionalidad en el servidor, se añadió una clase como una tabla de unión triple que incluye los identificadores de usuario, clase y nivel. De esta manera, la combinación de estos identificadores asegura que cada instancia sea única en todo momento. Esto permite mostrar el progreso de los jugadores en las tarjetas dentro del juego, así como proporcionar a los profesores una visualización más clara a través de una tabla en la plataforma web, lo que facilita la comprensión de qué usuarios han completado cada nivel. Figura 4-35. Captura de estado de la tabla de unión triple
49 Figura 4-36. Definición de la clase ClassRoomLevelCompleted Por último, se añadió la vista de una tabla en la plataforma web para ver que el profesor pudiera ver el avance de cada alumno. Esta tabla contiene los nombres de los niveles que forman la clase en las columnas y los nombres de cada alumno en las filas. Figura 4-37. Tabla con el progreso de los alumnos en una clase
50 4.4.4.11 Funcionalidad de entrar a una clase por código En el menú principal de la comunidad, se incluye un campo donde los usuarios pueden introducir códigos para unirse a una clase específica. Cuando se introduce un código válido, se notifica al usuario que ha sido añadido a la clase correspondiente, la cual luego se mostrará en la página de clases. Al crear una clase, únicamente es posible hacerlo a través de la plataforma web. En este proceso, se genera automáticamente un código aleatorio compuesto por 7 caracteres alfanuméricos. Para visualizar este código, es necesario acceder a la plataforma web. Figura 4-38. Opción de acceder a una clase 4.4.4.12 Funcionalidad de mensajes de aviso Se implementaron mensajes de retroalimentación para informar a los usuarios sobre sus acciones dentro de la comunidad. Se optó por utilizar el color azul para los mensajes informativos y el color rojo para aquellos que indican un error. Figura 4-39. Mensajes informativos de la comunidad
51 La lista de mensajes informativos incluye los siguientes eventos: inicio de sesión exitoso, registro exitoso, creación exitosa de una lista de reproducción, carga correcta de un nivel, adición exitosa a una clase, y la situación de no pertenecer a ninguna clase. La lista de mensajes de error abarca los siguientes casos: inicio de sesión fallido, registro fallido, nombre de lista de reproducción demasiado corto, nombre de lista de reproducción demasiado largo, error al crear una lista de reproducción, campo de nombre de usuario vacío, campo de contraseña vacío, error al cargar el nivel, lista de reproducción vacía, clase no encontrada, servidor no encontrado, niveles no encontrados, listas no encontradas, contraseñas no coincidentes y carácteres no permitidos.
53 Capítulo 5 - Pruebas con usuarios "La retroalimentación es el desayuno de los campeones." - Ken Blanchard 5.1 Estructura de las pruebas de usuarios Con el fin de validar los cambios, identificar nuevos errores y recopilar feedback, se llevaron a cabo una serie de pruebas con usuarios reales. La estructura de estas pruebas varió según el tiempo disponible y los objetivos específicos de cada prueba, pero todas incluyeron: una encuesta previa a la prueba para recoger datos sobre los intereses académicos y uso de dispositivos electrónicos; la interacción directa con el juego; y una encuesta tras probar el juego para pedir retroalimentación sobre la dificultad, los conceptos aprendidos y sugerencias. Durante la interacción directa con el juego, el sistema de analíticas recopila datos sobre cada acción relevante realizada por los usuarios. Cada acción registrada incluye información sobre el usuario que la llevó a cabo, la acción específica realizada y el momento exacto en que ocurrió. Además, en todas las pruebas se contó con la presencia de evaluadores, quienes estaban disponibles para asistir a los participantes que encontrarán dificultades. 5.1.1 Prueba interna 4ªESO + Empresa A principios del mes de abril, en la Facultad de Informática de la UCM, tuvo lugar 4º ESO + Empresa, una iniciativa financiada por la Comunidad de Madrid dirigida a alumnos que cursan 4º de Educación Secundaria Obligatoria en centros educativos sostenidos con fondos públicos [19]. Gracias a este programa se recibió un grupo de 15 estudiantes de 4º de la ESO que pudieron probar la versión de Articoding sin el rediseño de la comunidad. El objetivo de esta prueba fue comprobar el correcto funcionamiento del juego tras haber realizado la apropiación del código, las mejoras diversas, las optimizaciones y el rediseño del menú principal.
54 Figura 5-1. Fotos de la prueba de 4ºESO + Empresa El objetivo se cumplió porque todo el mundo pudo jugar perfectamente sin notificar ninguna incidencia grave. Solamente se detectaron algunos errores visuales que fueron arreglados posteriormente. A pesar de no entrar dentro del objetivo de esta prueba, aprovechamos los datos recogidos mediante las encuestas y el tracker para realizar el siguiente análisis: El análisis muestra la relación entre el tiempo jugado y el último nivel superado. Como se puede observar, todos los alumnos jugaron entre 80-90 minutos ya que fue el tiempo que duró la sesión, pero la diferencia entre los niveles alcanzados es muy grande. En consecuencia, se han definido tres regiones que demarcan distintos niveles de rendimiento académico. La región roja identifica aquellos casos en los que los alumnos no han alcanzado los niveles de competencia esperados. La región amarilla representa el desempeño típico, donde los alumnos han alcanzado los estándares previstos. Por otro lado, la región verde destaca el excepcional rendimiento de los estudiantes que han superado ampliamente las expectativas establecidas.
55 Figura 5-2. Gráfico con los resultados de las pruebas de 4ºESO + Empresa En la gráfica se puede apreciar que todos los alumnos jugaron entre 80 y 90 minutos, dependiendo del tiempo que emplearon en realizar la encuesta previa. Asimismo, se observa que la mayoría de ellos alcanzaron niveles entre 25 y 40, lo cual era lo esperado. Cabe destacar que dos alumnos no lograron llegar a este rango, probablemente debido al desinterés que mostraron en el juego. Sin embargo, otros cuatro alumnos superaron las expectativas establecidas. En cuanto a las encuestas realizadas, se observó que las asignaturas preferidas por la mayoría del grupo eran las matemáticas y la informática. Además, la mayoría de los alumnos mostraba un gran interés en el área de la programación, y las respuestas en general indican que la actividad les pareció interesante y a la par que útil. 5.1.2 Prueba externa 4ºESO + Empresa Miguel Ángel Garrido Blázquez, docente del Departamento de Informática y Estadística de la Universidad Rey Juan Carlos, utilizó Articoding para realizar 2 sesiones en el mismo programa de 4ºESO + Empresa. Estas sesiones fueron conducidas de manera independiente, sin asistencia externa, con la realización de una encuesta previa antes del inicio de la actividad y otra al concluir. El objetivo de esta prueba fue verificar la
56 capacidad del juego para ser utilizado por un profesor externo al equipo de desarrollo sin experimentar ningún inconveniente, y adicionalmente, respaldar los resultados de la prueba previa. Las pruebas transcurrieron sin problemas y todos los participantes pudieron disfrutar del juego sin experimentar ningún problema significativo durante las dos sesiones. Esto indica que el juego opera adecuadamente después de haber incorporado todas las mejoras, y su rediseño gráfico se percibe como práctico e intuitivo. Una vez finalizadas las sesiones, Miguel elaboró un informe detallado para documentar los resultados y acontecimientos ocurridos durante las pruebas. De dicho informe podemos extraer los siguientes puntos clave. El primer taller contó con 30 participantes y una duración de aproximadamente 3 horas con un descanso de 20 minutos. La actividad transcurrió sin incidencias técnicas relevantes. Los participantes mostraron un progreso adecuado en el juego, con el participante más avanzado alcanzando el nivel 6.9 y el menos avanzado llegando al nivel 2.7. Los resultados de la encuesta previa proporcionaron una visión detallada del perfil de los participantes. Se constató un claro interés en la tecnología, con una inclinación notable hacia la creación de aplicaciones y programas. Además, se destacó la preferencia por áreas como la ingeniería y la arquitectura en términos de una futura formación académica. En la encuesta posterior, los estudiantes expresaron una valoración positiva general de la actividad, subrayando la utilidad de Articoding como herramienta para aprender a programar. Sin embargo, se hicieron sugerencias para mejorar la experiencia, como hacer el juego más entretenido y agregar más explicaciones y ejemplos visuales. En la segunda sesión, participaron 26 estudiantes de los cuales la mayoría mostró receptividad. La dinámica del taller siguió una estructura similar a la primera sesión, con intervalos de juego y descanso. Los resultados de la encuesta previa reflejaron nuevamente el interés en la tecnología, con una destacada preferencia por aprender a crear aplicaciones,
57 programas y videojuegos. En la encuesta posterior, se reiteró la valoración positiva de la actividad, resaltando nuevamente el aprendizaje de programación como punto fuerte. Se renovaron las sugerencias para mejorar la experiencia, centrándose en la necesidad de hacer el juego más entretenido y proporcionar más explicaciones visuales. En resumen, el juego funcionó sin contratiempos y ambas pruebas se llevaron a cabo sin necesidad de asistencia externa de desarrolladores, lo que cumplió con el objetivo principal. Ambas sesiones de talleres de Articoding en la URJC fueron bien recibidas por los estudiantes, quienes valoraron positivamente la experiencia de aprendizaje. Los resultados de las encuestas proporcionaron información sobre los intereses y percepciones de los participantes, así como sugerencias útiles para mejorar futuras sesiones. 5.1.3 Prueba Colegio Arcipreste de Hita A principios de mayo, se tuvo la oportunidad de probar el nuevo sistema de la comunidad en el Colegio Arcipreste de Hita de El Espinar, Segovia, con las 3 clases de 6º de educación primaria. El diseño experimental comprendía múltiples fases distribuidas a lo largo de un período de 90 minutos. Inicialmente, los participantes dedicarían 10 minutos al relleno de una encuesta previa. Posteriormente, durante la primera mitad de la sesión (40 minutos), participarían en el juego principal. Seguidamente, se les solicitaría registrarse en la comunidad y proporcionar un código específico para unirse a la clase correspondiente, donde deberían completar 5 niveles en un lapso de 30 minutos. Finalmente, se destinarían 10 minutos al rellenado de una encuesta posterior. El propósito principal de esta prueba consistió en evaluar el funcionamiento del nuevo sistema de la comunidad, y el propósito secundario fue analizar el desempeño de los alumnos de 6º de primaria en el juego por primera vez. Para la creación de la clase, debido a la ausencia de un profesor encargado de diseñar la batería de niveles, asumimos dicho rol y diseñamos los niveles nosotros mismos. Conscientes de la limitación de tiempo de los alumnos para avanzar en el juego, desarrollamos 5 niveles de dificultad mínima que pudieran completarse con los conocimientos adquiridos en la primera parte de la sesión. Asimismo, nos esforzamos por
64 medallas, lo que los motiva a esforzarse aún más. Además, el sistema de comunidad ha sido renovado con un enfoque fresco, marcando las bases para su expansión y mejora en los próximos años. 6.2 Trabajo futuro A continuación se presentan algunas ideas que podrían contribuir significativamente a mejorar la experiencia del juego y su uso en futuros años: ● Desbloqueo de elementos de personalización: introducir elementos de personalización para el pingüino podría aumentar el interés de los usuarios por completar los niveles. Estos elementos podrían incluir colores, sombreros, trajes, entre otros. ● Incorporación de estilos temáticos: una mejora significativa podría consistir en variar la estética del nivel en función de la categoría a la que pertenece. Estas categorías podrían incluir diferentes tipos de climas dentro de la nave, como áreas desérticas, selváticas, árticas, entre otras. ● Corrección de errores: Es crucial abordar los errores identificados durante las pruebas, como la superposición de bloques, la nomenclatura de variables confusa y la generación de archivos sensibles a caracteres no permitidos en Windows al nombrar niveles. ● Mejora del menú de edición: Este aspecto del juego requiere un análisis exhaustivo y un rediseño radical que aproveche sus fortalezas y resuelva sus debilidades y errores. ● Consejos del pingüino: Durante el juego, el pingüino podría ofrecer consejos útiles a través de bocadillos. Estos consejos podrían ser del estilo: “Ponle nombres descriptivos a las variables”, “¿Sabías que haciendo clic derecho sobre un bloque lo puedes duplicar?”, “¡Ojo con dejar bloques por ahí tirados!¡Qué desorden!”, etc. ● Etiquetado de niveles y listas: La adición de etiquetas a los niveles y listas permitiría tematizar los niveles y facilitar la búsqueda según los conceptos que se abordan en cada nivel.
65 ● Renovación del diseño del servicio web: Tanto a nivel visual como funcional, se podría considerar la inclusión de nuevas características, como la capacidad para que los profesores gestionen las cuentas de los alumnos que ellos mismos creen, o la posibilidad de poner los niveles en modo privado.
67 Chapter 1 - Introduction “Education is our passport to the future, for tomorrow belongs only to the people who prepare for it today.” - Malcolm X 1. Motivation Digitalization has had a profound impact on society. It has fundamentally altered how we live, work, communicate and engage with the world around us [1]. Due to this, the need arises to teach computational thinking [2] to equip people with the necessary skills to understand and actively participate in an increasingly digital world. However, current educational systems remain focused on traditional teaching methods that prioritize memorization and repetition over the development of critical and practical skills. In this context, serious games are presented as a more effective tool for teaching computational thinking, since they combine practical learning and problem solving with an interactive and engaging experience, thus promoting student creativity and engagement. Articoding was born with this same idea of providing educational games to teach programming. Articoding is a serious game designed to teach young people the basics of programming and improve computational thinking skills. It was developed in Unity in 2020 and has continued to be updated with new features since then. Additionally, it keeps its source open, allowing anyone to modify it and add new features freely. This project provides the opportunity to contribute to the continued development of Articoding, as well as an opportunity to delve deeper into the theory and practice of serious games and their application in the classroom, exploring new educational methodologies and evaluating their impact on learning. 2. Goals The main purpose of this final degree project is to expand the Articoding project, by improving its interface and expanding its open community, allowing students and
68 teachers to share levels created by themselves and improving the user experience. To achieve this objective, the following more specific sub-objectives have been established: ● Study and understand applications and games focused on the development of computational thinking and its community. ● Perform code appropriation. ● Identify and correct previously unaddressed bugs. ● Improve the user experience. ● Redesign the community system and apply the necessary changes to add improvements. ● Integrate server and database changes with the new game client. ● Validate changes with real user testing. 3. Work plan Before starting development, with the aim of understanding and studying similar applications, an exhaustive analysis of various games will be carried out to identify effective interfaces and attractive mechanics. First, the current state of the project will be analyzed and standardized for future improvements and implementations, for which a code appropriation will be carried out. After this, to identify and correct errors, the reports generated from the user tests carried out the previous year will be reviewed. In order to improve the user experience, modifications will be made to the interface, an expanded in-game feedback system will be included, and additional animations will be implemented. To redesign the community system, the new idea will be presented first, followed by design and prototyping to verify its robustness [3]. It will then be deployed to the game, integrating the necessary server and database changes. Finally, the game's web service will be adapted to meet these new needs. Additionally, we will try to carry out tests with real users to validate the changes, detect new errors and collect feedback.
69 In relation to the tools that will be used, Google Drive and Gmail will be used for document management and communication, respectively. GitHub will be used for version control, creating a copy of the current repositories. Unity will remain as the video game engine, along with Visual Studio as the code editor. To create Assets, Photoshop will be used for image editing and Blender for creating animations. Regarding the development of the server, Intellij will be used as the main IDE, HeidiSQL for database manipulation, and Postman for testing HTTP requests. For client development, Visual Studio Code will be used. The interface designs will initially be created in paper and pencil, and later prototypes will be developed with Figma. Figure 1-1. Programs used during the development of this project In order to monitor progress and receive feedback on the progress made, periodic meetings will be held in person or through Google Meet. During these meetings, progress since the previous meeting will be presented and the next steps to follow will be defined. A more detailed description of these meetings is provided in Appendix D.
71 Chapter 6 - Conclusions and future work “I have nothing to offer but blood, toil, tears and sweat.” Winston Churchill 1. Conclusions We consider that the project satisfactorily achieved the established objectives. Despite the overwhelming initial complexity of getting involved in a large project already developed and new, we managed to understand all its facets while making adjustments to standardize it in view of future improvements and implementations. By the time we tackled the bug fixes reported the previous year, we already had a clear understanding of how the project worked, which made the process considerably easier. Thanks to the analysis of several games similar to Articoding, we were able to incorporate new ideas that enriched the game experience. The community redesign work forced us to adopt an iterative and incremental work approach, which included requirements specification, prototyping and subsequent refinement. During the implementation phase, we made improvements to both the game and the server simultaneously, using Pair Programming to integrate both parts efficiently. Testing with real users has been an extremely enriching experience. These tests have given us valuable insight into how Articoding is perceived and used by those for whom it was designed. Through direct interaction with users, we have been able to identify both strengths and areas for improvement in our design and functionality. It has been an honor to participate in this project, to which numerous people have dedicated their efforts and commitment over the past few years. We are pleased to have had the opportunity to contribute our work. We can say with satisfaction that the game has undergone significant improvements, both with its more dynamic menus and with greater incentives thanks to the new animations and medals, which motivates them to work even harder. In addition, the community system has been revamped with a fresh approach, laying the groundwork for its expansion and improvement in the coming years.
72 2. Future Work Here are some ideas that could significantly contribute to improving the game experience and its usability in future years: ● Unlocking customization elements: introducing customization elements for the penguin could increase users' interest in completing levels. These elements could include colors, hats, costumes, among others. ● Incorporation of thematic styles: a significant improvement could be to vary the aesthetics of the level depending on the category to which it belongs. These categories would include different types of climates within the ship, such as desert, jungle, arctic areas, among others. ● Bug fixes: It is crucial to address bugs identified during testing, such as block overlapping, confusing variable nomenclature, and generating files sensitive to characters not allowed in Windows when naming levels. ● Improved editing menu: This aspect of the game requires a thorough analysis and radical redesign that takes advantage of its strengths and addresses its weaknesses and bugs. ● Penguin tips: During the game, the penguin could offer useful tips through speech bubbles. These tips could be along the lines of: “Give descriptive names to variables”, “Did you know that by right-clicking on a block you can duplicate it?”, “Beware of leaving blocks lying around, what a mess!”, etc. ● Labeling of levels and lists: The addition of labels to the levels and lists would make it possible to thematize the levels and facilitate the search according to the concepts addressed in each level. ● Renewal of the web service design: Both visually and functionally, the inclusion of new features could be considered, such as the ability for teachers to manage student accounts that they create themselves, or the ability to set levels to private mode.
73 CONTRIBUCIONES PERSONALES Al ser 2 alumnos de distintos grados, se optó por dividir el trabajo en función de sus conocimientos y experiencias previas. Óscar, quien está cursando Desarrollo de Videojuegos, se enfocó en los nuevos diseños y en el desarrollo interno del juego. César, estudiante de Ingeniería Informática, se centró en el desarrollo del servidor y la aplicación web. Para integrar las partes donde el juego se conecta con el servidor, se decidió utilizar la técnica de Pair Programming. Además, si bien cada uno de nosotros redactó individualmente ciertas secciones de esta memoria, es importante destacar que la mayor parte del trabajo se llevó a cabo de manera colaborativa durante nuestras sesiones de videollamadas conjuntas.
80 [12] Inicio - Super Mario Maker 2TM para la consola Nintendo SwitchTM - Sitio oficial. https://supermariomaker.nintendo.com/es/ [13] Articoding – eUCM. https://www.e-ucm.es/es/portfolio-item/articoding/ [14] Faouaz Santillana, D., García Cárdenas, A., & Poyatos Morate, Á. (2021). Juegos Serios para Promover el Pensamiento Computacional y la Programación. http://hdl.handle.net/20.500.14352/10444 [15] Duarte Balvís, T., Martín Sánchez, A., & Martínez Martínez, P. (2022). Uso de juegos serios para mejorar el aprendizaje de la programación en la escuela. http://hdl.handle.net/20.500.14352/3240 [16] Martín Domínguez, H., & Cidoncha Pérez, G. (2023). Videojuegos y Programación: Evaluación de Conocimiento sobre los Conceptos de Programación en Secundaria a través de un Videojuego. [17] Bucher, N. (2017). Introducing design patterns and best practices in unity. Proceedings of the SouthEast Conference, ACMSE 2017, 243–247. https://doi.org/10.1145/3077286.3077322 [18] Figma. https://www.figma.com/ [19] Programa 4o ESO+Empresa | Comunidad de Madrid. https://www.comunidad.madrid/servicios/educacion/programa-4o-esoempresa
81 APÉNDICES Apéndice A - Repositorios ● Articoding https://github.com/OskarFreestyle/Articoding23-24 ● Servidor Articoding https://github.com/CesarCRP97/articodingserver ● Cliente Web Articoding https://github.com/CesarCRP97/articodingclient Apéndice B - Backup de la base de datos Se ha generado un backup de una base de datos que incluye varios niveles, listas y clases, con el fin de que los futuros desarrolladores puedan emplearla y evaluar la comunidad sin necesidad de invertir esfuerzos en la creación de estos elementos. Dicha copia de seguridad se encuentra almacenada en el repositorio del servidor, específicamente en la carpeta denominada databaseTemplate: https://github.com/CesarCRP97/articodingserver/blob/master/databaseTempla te/basicBackup.sql Apéndice C - Script de análisis de los datos json Se ha incorporado un script de Python diseñado para leer los datos del archivo JSON generado por el tracker, facilitando así su análisis. Actualmente, el script recopila información sobre el tiempo de juego de cada jugador y el número de niveles completados, presentándolos en forma de tabla. No obstante, es fácilmente adaptable para utilizar cualquier otro dato contenido en el archivo JSON. Este script se localiza en el repositorio del juego, dentro de la carpeta denominada AnálisisTracker: https://github.com/OskarFreestyle/Articoding23-24/tree/main/AnalisisTracker
82 Apéndice D - Reuniones Con el propósito de monitorear el progreso y obtener retroalimentación sobre los avances realizados, se llevaron a cabo reuniones periódicas tanto presenciales como a través de Google Meet. Durante estas reuniones, se presentaban los avances desde el encuentro anterior y se definían los próximos pasos a seguir. En el siguiente calendario, se resaltan los días en los que se llevaron a cabo estas reuniones para destacar el trabajo continuo en el proyecto a lo largo de todo el curso. Figura 6-1. Calendario con las reuniones realizadas a lo largo del proyecto
83