La labor de testeo de software, previo a su puesta en marcha, es una de las etapas esenciales en el desarrollo de éste y, en el caso de los videojuegos, se trata es una actividad que demanda importantes recursos a esa industria. "Muchas veces los testadores no logran a encontrar errores complejos, por lo tanto, es el jugador quien los experimenta, siendo esto un problema", comenta el profesor del DCC, Alexandre Bergel.
Tomando esta situación como punto de partida, el académico junto con el estudiante de pregrado Tomás Ahumada, presentaron la investigación "Reproducing Bugs in Video Games using Genetic Algorithms", la cual se enmarca dentro de su trabajo de Memoria de Título "Genetic Algorithms applied to Videogame Testing". El artículo científico (paper) aborda el uso de algoritmos genéticos para reproducir errores o bugs durante el testeo de videojuegos y fue recientemente presentando por el estudiante en la IEEE Games, Multimedia, Animation and Multiple Realities Conference (IEEE GMAX 2020).
"En nuestro paper usamos una técnica de inteligencia artificial basada en algoritmos genéticos que permite buscar secuencias de acciones de joystick que llevan a un error. Usar un algoritmo genético permite automatizar el comportamiento de los testadores en la búsqueda de errores en el videojuego", explica el profesor del DCC.
Tomás Ahumada señala que crearon secuencias de inputs capaces de reproducir bugs: "El trabajo en sí consistía en desarrollar una forma de usar algoritmos genéticos para crear estas secuencias de inputs y luego probar nuestra técnica reproduciendo bugs en juegos open source". Como resultado, lograron desarrollar una forma de representar y hacer evolucionar secuencias de inputs usando algoritmos genéticos, "lo que permite crear comportamientos en cualquier videojuego compatible. Una ventaja de que sean secuencias de inputs es que cualquier bug reproducido con esta técnica puede ser reproducido nuevamente corriendo la misma secuencia. Es como tener un video del bug, pero con acceso a todas las variables del juego, lo que permite a los desarrolladores trabajar en arreglar un bug sin tener un tester al lado que lo reproduzca".
El estudiante explica que "a veces los testers de videojuegos tienen que hacer tareas tediosas como, usar todas las armas disponibles del juego en un enemigo. En casos como estos, el algoritmo genético podría encargarse de producir secuencias de inputs para realizar esta tarea. De esa forma los testers pueden encargarse de tareas más complejas mientras el algoritmo trabaja". Agrega que el código desarrollado en este proyecto se encuentra disponible en Github.
En cuanto a su interés por trabajar en este tema, Tomás Ahumada cuenta sobre su pasión por los videojuegos y cómo lo ha compatibilizado con los conocimientos adquiridos durante la carrera: "He tratado de aplicar lo que aprendo lo más posible a este hobby. En el último tiempo, varias personas han estado usando algoritmos genéticos para crear inteligencia artificial en juegos (en particular usando el algoritmo NEAT). Entonces elegí este tema para la Memoria de Título, principalmente porque amo hacer videojuegos y porque los algoritmos genéticos me parecían una técnica muy interesante que me gustaría aprender".
Respecto a la experiencia de presentar en una conferencia internacional, señala que si bien en las semanas previas estuvo nervioso, "la conferencia en sí fue bastante relajada. No me esperaba que los temas fueran tan diversos. Hubo charlas sobre muchas aplicaciones de videojuegos al área de la salud, el estado actual de las tecnologías interactivas, un par de charlas técnicas y hasta una charla filosófica sobre simulaciones".