El playtesting es uno de los procesos más críticos —y costosos en tiempo— del desarrollo de videojuegos: permite detectar errores, evaluar la experiencia de usuario y equilibrar la dificultad. PEAK, un motor en desarrollo en Ontario Tech University a cargo de Cristiano Politowski, Al Shifan y Kevin Chua, integra agentes de aprendizaje profundo por refuerzo (DRL) que un diseñador puede lanzar sobre un nivel para recolectar datos de juego y detectar desequilibrios, picos de dificultad u otros problemas. La herramienta, pensada como prueba de concepto para plataformas 2D y metroidvanias, no pretende reemplazar a los playtesters humanos, sino automatizar parte del análisis.
Este artículo describe el módulo de recolección, agregación y visualización de datos del proyecto. El autor explica que añadir variables directamente al código del juego viola varios requisitos: el motor debe ser independiente del juego concreto, el código base aún atraviesa refactors importantes y la separación entre lógica del juego y captura de datos debe mantenerse clara. Para resolverlo, recurre al patrón Observer combinado con programación orientada a aspectos (AOP).
En AOP, un aspecto es una funcionalidad transversal que no conviene entrelazar con la lógica principal; los pointcuts definen dónde se aplica y los join points son los puntos de código susceptibles. En Python, el autor materializa esta idea con decoradores: una clase stats_observer almacena las variables de interés y sus métodos record_*, mientras que un decorador genérico track invoca, mediante reflexión, el método de registro apropiado después de la ejecución del método anotado. Para evitar siquiera editar los archivos centrales del juego, la configuración se externaliza a archivos YAML, que indican qué métodos del juego instrumentar y qué grabador asociarles.
Como muestra de salida, se construyó un panel sencillo con Streamlit. Entre las métricas candidatas se incluyen tasa de finalización, tiempo medio de completado, progreso por intento, clúster de muertes, diversidad de rutas y coste temporal de coleccionar monedas. El equipo sigue iterando sobre umbrales y casos de uso para diseñadores.
