Fly Robin, Fly! es una suerte de side-scrolling shoot’em up que desarrollé para la materia Minería de Datos a fin de llevar a cabo un proyecto de modelado de usuario (y que también terminó siendo mi juego de Abril para One Game A Month, jajaja :P).

La minería de datos es un campo interdisciplinario de la computación que busca obtener conocimiento a partir de información almacenada en una base de datos, para lo cual usa herramientas de áreas “base” de la computación y otras ciencias como lo son la inteligencia artificial, aprendizaje de máquina, sistemas de bases de datos, estadística, y psicología.

Por su parte, un modelo de usuario es la representación del usuario que captura características de lo que el usuario intenta alcanzar (objetivos, tareas), lo que conoce (experiencia, habilidades) o lo que le interesa. De este modo, el modelado de usuario es el proceso de construir, mantener y usar los modelos de usuario.

Generalmente el fin del modelado de usuario es generar aplicaciones adaptativas tales como sistemas inteligentes de tutoría, interfaces de usuario inteligentes, anaqueles inteligentes en tiendas de comercio electrónico, videojuegos, etc.

En el caso de los videojuegos, el campo más explotado/aprovechado es el ajuste dinámico de dificultad porque  se busca crear una experiencia adaptada a las habilidades de cada jugador sin preguntar a priori sobre las mismas.

A grandes rasgos, el proyecto consistió entonces en desarrollar un juego, crear el modelo de usuario para definir qué se va a capturar/medir, estudiar los datos y crear el ajuste de dificultad.

La idea era crear un juego sencillo y de ahí partir a realizar todo lo demás, que era lo importante de la materia. Además, un juego preferiblemente web a fin de que la captura y almacenamiento de datos fuese más directa y sencilla. Desde hace tiempo he tenido las ganas de hacer un side-scrolling shoot’em-up y, aun siendo web, quise adaptar la mecánica para dispositivos móviles: arrastrar para mover la nave y doble-click para disparar.

En cualquier shoot’em-up hay dos tipos de enemigos; obstáculos y atacantes. Decidí ir por la vía sencilla y tener uno de cada uno con la justificación de asteroides y naves enemigas, respectivamente. Objetivo: sobrevivir 90 segundos. La estructura general es bastante sencilla también. Pantalla de presentación, instrucciones de juego, pantalla de juego y pantalla de puntuación.

A partir de esta mecánica, el modelo de usuario parte de las siguientes características:

  • Número de disparos.
  • Números de enemigos eliminados.
  • Número de enemigos evadidos.
  • Número de asteroides destruídos.
  • Número de asteroides evadidos.
figure_interaction

Esquema general del sistema

En líneas generales, el juego recopila información del jugador y la guarda en la base de datos. Luego en un momento determinado corro el algoritmo de agrupamiento para obtener el valor de los centroides, también almacenados en base de datos. Por último, los primeros 30 segundos se utilizan para crear un promedio con el perfil del jugador, y en base a ésa tupla se define a qué grupo pertenece y se ajusta la dificultad.

En la próxima entrada hablaré un poco sobre el proceso de investigación y desarrollo. Mientras tanto, aquí el site del juego: http://jorge.palacios.co/games/frf/.

Aquí la segunda parte: http://pctroll.net/2013/07/11/fly-robin-fly-2/