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.

Puedes leer la primera parte de esta entrada aquí.

Teniendo los mecanismos para medir el desempeño de los jugadores, compartí el enlace de la primera versión con un grupo de amigos con la finalidad de construir una base de datos y hacer un estudio preliminar.

Knime es una herramienta de minería de datos que se mostró en el curso y por su facilidad es la que utilicé para realizar el experimento. Con una base de datos de 394 filas utilicé el algoritmo k-Means para buscar 3 grupos (novatos, intermedio y experimentados). El experimento mostró que las características más relevantes fueron:

  • Número de disparos.
  • Número de enemigos derrotados.
  • Número de asteroides destruidos.
Grupos por número de disparos

Grupos por número de disparos

Grupos por número de enemigos derrotados

Grupos por número de enemigos derrotados

Grupos por número de asteroides destruidos

Grupos por número de asteroides destruidos

Aun cuando hubo tres grupos bien marcados por número de disparos, los niveles de dificultad tradicionales guardan poca relación con esta característica; por lo que se decidió desecharla y continuar sólo con las otras dos. En este sentido, se pudo observar que en vez de tres niveles de dificultad, hay tres tipos de comportamiento en los jugadores que llamamos avoiders (“novatos”), obstacle attackers (“intermedio”) y enemy attackers (“experimentado”).

Relación de comportamiento

Relación de comportamiento

A partir de estos resultados se tomó la decisión de cambiar la “zona de comfort” del jugador e invertir papeles. Si el jugador destruye más asteroides, se generan menos rocas y más enemigos, y vice versa. De ser un avoider, el juego sigue generando asteroides y enemigos en la proporción original.

Finalmente, el proceso de recolección de datos sigue siendo el mismo pero, luego de los primeros 30 segundos, los datos de la actual partida se promedian y este valor es evaluado con respecto a los centroides previamente generados. La partida actual se etiqueta en función al centroide más cercano y se produce el cambio en la proporción de elementos, si aplica.

El algoritmo de agrupamiento actual corre en el sistema web con PHP y MySql. Me basé en la implementación de Ian Barber para realizar el sistema actual, almacenando en la base de datos los centroides obtenidos. El código fuente lo pueden descargar del repositorio en GitHub.

Además de dejarme un juego bajo el brazo, la materia me ayudó a realizar un informe estilo paper y llevar a cabo un pequeño proceso completo de investigación científica, lo cual es algo que he venido aprendiendo en el postgrado.

Por la parte de investigación, aprendí que es mejor llevar a cabo un proceso de modelado de usuario en base a un juego terminado/pulido/redondo para que realmente se pueda aprovechar la técnica.

Si bien estoy contento con el trabajo realizado, sé que se pudo haber hecho algo mejor. Creo que es cuestión de seguir construyendo en base a la experiencia y conocimientos adquiridos en el proceso.

De nuevo, pueden echarle un ojo al juego aquí: http://jorge.palacios.co/games/frf/.