PROYECTO DE GRADO
Presentado a
LA UNIVERSIDAD DE LOS ANDES
FACULTAD DE INGENIER´
IA
DEPARTAMENTO DE INGENIER´
IA DE SISTEMAS Y
COMPUTACI ´
ON
Para obtener el t´ıtulo de
INGENIERO DE SISTEMAS Y COMPUTACI ´
ON
por
Carlos Rinc´
on Zapata
BALANCE PROCEDIMENTAL DE VIDEOJUEGOS USANDO
APRENDIZAJE POR REFUERZO
Presentado el 19 de Noviembre de 2015
Asesor:
Tabla de contenido
0 Resumen 1
1 Introducci´on 2
2 Descripci´on General 4
2.1 Caracterizaci´on del Problema y Justificaci´on . . . 4
2.2 Objetivos . . . 4
2.2.1 Objetivo General . . . 4
2.2.2 Objetivos Espec´ıficos . . . 4
2.2.3 Antecedentes . . . 5
3 Especificaciones y Restricciones 6 3.1 Definici´on del Problema . . . 6
3.2 Especificaciones . . . 6
3.3 Restricciones y Recursos . . . 7
3.4 Factores de Riesgo . . . 7
4 Dise˜no del Sistema 8 4.1 Dise˜no del Videojuego . . . 8
4.2 Dise˜no del Estimador de Inter´es . . . 9
4.2.1 Elementos de Entretenimiento . . . 9
4.2.2 C´alculo de Inter´es . . . 12
4.3 Dise˜no de la M´aquina de Aprendizaje . . . 13
4.3.1 Aprendizaje por Refuerzo . . . 13
4.3.2 Espacio de Exploraci´on y Discretizaci´on de Par´ametros . . . 13
4.3.3 Algoritmo: Aut´omata de Aprendizaje . . . 15
4.3.4 Ecuaci´on de Distancia entre Niveles . . . 16
4.4 Recolecci´on de Informaci´on . . . 17
4.5 Alternativas de Dise˜no . . . 18
5 Implementaci´on 19 5.1 Descripci´on de la Implementaci´on . . . 19
5.2 Escena 1: Controlador del Sistema . . . 20
5.3 Escena 2: Juego . . . 20
5.4 Generador de Obst´aculos . . . 22
5.5 Velocidad de Aprendizaje y Aprendizaje Previo (Offline) . . . 23
6 Validaci´on del trabajo 24 6.1 Primera Etapa de Pruebas . . . 24
6.1.1 Ajuste de Par´ametros . . . 24
6.1.2 Mejoras del Juego . . . 25
6.2.1 Estructura de la Prueba . . . 26 6.2.2 Participantes . . . 26 6.2.3 Resultados . . . 27
7 Conclusiones 29
7.1 Discusi´on . . . 29 7.2 Trabajo Futuro . . . 30
´
Indice de figuras
4.1 Diagrama de bloques del sistema. . . 8
4.2 Comportamiento de la funci´on de dificultad. . . 10
4.3 Comportamiento de la funci´on de din´amica del juego con 5 carriles yp2= 5. . . 11
4.4 Recompensas de diversidad. ok= 100, p3= 30 . . . 12
4.5 Interacci´on Agente-Entorno del aprendizaje por refuerzo. Obtenida de [11]. . . 13
4.6 Ejemplo del comportamiento del algoritmo de aprendizaje sobre un juego de 100 niveles diferentes. . . 16
5.1 Escenas del proyecto desarrolladas en Unity 5. . . 20
5.2 Desarrollo del juego en Unity 5. . . 21
6.1 Resultados del aprendizaje previo. En el eje secundario se muestra la velocidad del veh´ıculo para cada nivel. . . 25
6.2 Caracterizaci´on de los participantes. . . 26
6.3 Medias de la dificultad y diversi´on percibida por los participantes diferenciadas por la distribuci´on seleccionada. . . 27 6.4 Medias de la dificultad y diversi´on percibida por los participantes diferenciadas por g´enero. 28
4.1 Discretizaci´on de par´ametros del juego. . . 14 4.2 Valores del par´ametro de Exigencia de Motricidad. . . 17
Cap´ıtulo 0
Resumen
En el desarrollo de videojuegos es muy importante balancear apropiadamente los par´ametros del juego. Este debe adecuarse a cada usuario de acuerdo a sus habilidades y sus expectativas de entretenimiento. En este documento se propone el uso de t´ecnicas de aprendizaje por refuerzo para el ajuste de los par´ametros del juego con el objetivo de aumentar el entretenimiento recibido por el usuario. Se desarroll´o un videojuego sencillo de plataforma m´ovil con diferentes par´ametros configurables y un estimador del entretenimiento recibido por el usuario de acuerdo a su rendimiento y comportamiento en el juego. El valor estimado se utiliza como recompensa en un algoritmo de aprendizaje por refuerzo que a partir de experiencias previas propone nuevos valores a los par´ametros del juego. Usando este sistema se encontraron resultados favorables, con un incremente en la diversi´on percibida por los usuarios del 18%.
Introducci´
on
La industria de los videojuegos ha sido una de las industrias de entretenimiento de mayor crecimiento en los ´ultimos a˜nos. Para el 2013 el mercado global de videojuegos alcanz´o los US$ 93 mil millones y ese a˜no se vendieron alrededor de 160 millones de juegos s´olo en los Estados Unidos [1]. En ese mismo a˜no hubo alrededor de 1.23 mil millones de jugadores a nivel mundial [2]. Se espera que estos n´umeros sigan aumentando con el surgimiento de las nuevas tecnolog´ıas de realidad virtual y con el constante aumento en la capacidad de c´omputo de los dispositivos m´oviles.
Un gran reto en el desarrollo de los videojuegos es el balance de las reglas y mec´anicas del juego. Se quiere que todos los componentes del juego sean efectivos y deseables tanto independientemente como en el marco global del juego. Un juego mal balanceado gasta recursos computaciones en elementos indeseables y hasta puede llegar a hacer tareas importantes imposibles de completar. El balance de un juego trata de mejorar la experiencia de todos los jugadores y por lo tanto tiene que tener en cuenta las caracter´ısticas y habilidades de todos estos.
En este proyecto se propone un m´etodo para balancear los par´ametros de un juego por medio de t´ecnicas de aprendizaje de m´aquina. El balance se hace pensando en optimizar el entretenimiento recibido por el jugador, el cual se considera como un individuo ´unico y diferente a los dem´as jugadores. Se desarroll´o un videojuego sencillo para implementar el m´etodo, ajustarlo y evaluar su efectividad.
El sistema se dividi´o en tres bloques principales: el juego con varios par´ametros a balancear, un bloque estimador del inter´es obtenido por el usuario y un bloque que implementa el algoritmo de aprendizaje y asigna los valores de los par´ametros del juego. El juego es uno sencillo de plataforma tipo Endless Runner de cuatro par´ametros. Se dise˜n´o para que fuera intuitivo, muy configurable y de r´apida implementaci´on. El bloque estimador de inter´es toma ciertas m´etricas del juego sobre el rendimiento y comportamiento del jugador para calcular un valor aproximado del entretenimiento recibido. Tiene en cuenta diferentes elementos contribuidores de entretenimiento como la dificultad del juego, su din´amica y su diversidad. El inter´es calculado se usa como recompensa para el algoritmo por refuerzo del ´ultimo bloque. Este implementa un algoritmo de Diferencias Temporales (TD) llamado Aut´omata de Aprendizaje que utiliza una distribuci´on de probabilidad en la selecci´on de par´ametros. Un juego entretenido hace que los par´ametros utilizados tengan m´as probabilidad de volver a aparecer.
Todo el proyecto se desarroll´o en Unity 5 para la plataforma Android. Se desarrollaron dos escenas, una primera encargada del aprendizaje de m´aquina y de manejar todo el flujo de men´us y etapas del juego y otra escena con el juego parametrizado y el estimador de inter´es. Para cumplir todas las funcionalidades se implementaron 14 clases en lenguaje C#. Tambi´en se encontr´o que para mejorar el tiempo de aprendizaje del algoritmo es conveniente tener una etapa de aprendizaje previo (Offline) con un punto de inicio de conocimiento.
CAP´ITULO 1. INTRODUCCI ´ON 3
Para validar el trabajo se hicieron dos etapas de pruebas. En una primera etapa se configuraron to-dos los par´ametros del sistema, se obtuvo retroalimentaci´on del juego y se adquirieron los datos del aprendizaje previo. Esta etapa fue efectiva para adquirir conocimiento y establecer un buen punto de arranque para el algoritmo de aprendizaje en l´ınea. Posteriormente se realiz´o una prueba a usuarios para evaluar el funcionamiento del sistema en comparaci´on con un m´etodo de balance de juego manual. El sistema evidenci´o un aumento del 18% en la diversi´on percibida por los usuarios.
Los buenos resultados obtenidos y las ventajas que trae el sistema planteado lo hace una soluci´on viable para su uso en videojuegos. El sistema permite generar niveles m´as diversos y ajustados a cada usuario y se adapta a los cambios en los jugadores. Tambi´en permite un balance continuo del juego que se puede ir mejorando a medida que los usuarios juegan. Todo esto es posible con una baja demanda en recursos computacionales y con una r´apida implementaci´on. Sin embargo, es necesario que el desarrollador conozca la metodolog´ıa y realice el ajuste de varios par´ametros de acuerdo a su juego.
En este documento se hace inicialmente una caracterizaci´on y justificaci´on del problema y se definen las especificaciones y restricciones de la soluci´on propuesta. Se procede al dise˜no general del sistema y de los tres bloques principales que lo componen que fueron mencionados anteriormente. A continuaci´on se muestra la implementaci´on del sistema en sus escenas y clases desarrolladas en Unity 5. En este segmento tambi´en se explica c´omo se abordaron algunas dificultades encontradas, como la generaci´on de obst´aculos en el juego y el aprendizaje previo. Despu´es de esto se presenta la validaci´on del trabajo con las dos etapas de pruebas se˜naladas. Para finalizar se discute sobre las ventajas y desventajas del sistema propuesto, su factibilidad y las posibles mejoras que se le pueden hacer.
Descripci´
on General
2.1
Caracterizaci´
on del Problema y Justificaci´
on
El objetivo principal de los videojuegos es generar experiencias atractivas y/o entretenidas para los usuarios. Un estudio realizado por P. Sweetser y P. Wyeth basado en el concepto de flujo propone un modelo llamadoGameFlow para evaluar el entretenimiento de un juego [3]. Este consiste en ocho ele-mentos: la concentraci´on, el desaf´ıo, las habilidades, el control, objetivos claros, la retroalimentaci´on, la inmersi´on y la interacci´on social; cada uno de estos elementos tiene diferentes criterios que determinan la adquisici´on de entretenimiento. Es entonces responsabilidad del desarrollador del juego ofrecer estos elementos de una manera balanceada y orientada al usuario. Obtener este balance en un juego es un gran reto para los desarrolladores, pues los usuarios son considerablemente diversos en sus habilidades, su concentraci´on y su noci´on de entretenimiento. Algunos jugadores buscan experiencias dif´ıciles y retadoras, lo cual puede ser frustrante para otros usuarios que prefieren jugar casualmente como una manera para relajarse. Lograr el balance es a´un m´as complicado para peque˜nos desarrolladores que no tienen los recursos necesarios para realizar las grandes pruebas de usuario que requiere balancear todos los par´ametros de un juego.
2.2
Objetivos
2.2.1
Objetivo General
Desarrollar un sistema de balanceo de par´ametros de un videojuego basado en t´ecnicas de aprendizaje de m´aquina que se adapte a las caracter´ısticas del usuario y aumente su satisfacci´on del juego.
2.2.2
Objetivos Espec´ıficos
1. Desarrollar un videojuego sencillo de plataforma tipo Endless Runner con par´ametros config-urables que permitan variar la dificultad del juego en selectos aspectos.
2. Desarrollar un controlador de niveles que permita configurar el nivel de manera procedimental a partir de los par´ametros de dificultad y evaluar el rendimiento del usuario en cada nivel.
3. Construir un sistema de aprendizaje de m´aquina que encuentre los valores apropiados para los par´ametros de dificultad dependiendo del inter´es esperado del usuario.
4. Validar el sistema por medio de pruebas de usuario que comparen la satisfacci´on del usuario usando el sistema desarrollado y un sistema t´ıpico de dificultad predeterminada.
CAP´ITULO 2. DESCRIPCI ´ON GENERAL 5
2.2.3
Antecedentes
• En el 2014 Rubem Jose Vasconcelos de Medeiros y Tacio Filipe Vasconcelos de Medeiros [4] utilizaron t´ecnicas de aprendizaje de m´aquina para encontrar los par´ametros m´as apropiados que maximizan la diversi´on obtenida seg´un los usuarios. Definieron 10 par´ametros binarios sobre el juego para un total de 1024 posibles niveles. Usaron dos algoritmos para la selecci´on del nivel a mostrar al usuario y le preguntaron a estos la diversi´on obtenida y la dificultad. El primer algoritmo usado le asigna una probabilidad de aparici´on a cada nivel dependiendo de la calificaci´on de entretenimiento que ha obtenido, el segundo algoritmo es uno de aprendizaje r´apido que utiliza la distancia de hamming como funci´on de similitud. Encontraron mejores resultados utilizando el segundo algoritmo. Este estudio no considera que los usuarios tienen habilidades y gustos diferentes, y trata de encontrar un solo nivel para satisfacerlos a todos.
• En el 2007 Georgios N. Yannakakis y John Hallam [5] de la Universidad del Sur de Dinamarca propusieron una manera de medir el entretenimiento del usuario en un videojuego a partir del inter´es esperado de los comportamientos del juego. Realizaron pruebas sobre el juego PacMan, un juego tipo predador/presa, con diferentes metodolog´ıas para controlar los oponentes del ju-gador (fantasmas). Usaron la m´etrica de inter´es y algoritmos gen´eticos para obtener juegos con alta satisfacci´on del usuario. Para lograr esto realizaron una etapa de aprendizaje offline que encontrara par´ametros adecuados de los oponentes del jugador, obteniendo buenos resultados en el incremento del inter´es esperado. Posteriormente usaron el aprendizajeoffline realizado como semillas para un aprendizaje en l´ınea (online) que se ajustara a los cambios de comportamiento del jugador. En este caso la mejora en satisfacci´on no fue muy notoria pues se requirieron muchos juegos para que los usuarios empezaran a evidenciar cambios en su entretenimiento.
• El aprendizaje de m´aquina se ha utilizado en juegos de video para desarrollar inteligencias ar-tificiales capaces de oponerse al usuario de tal manera que se comporten como otros personajes cre´ıbles y desafiantes. Un ejemplo de esto es el estudio realizado en el 2010 por Alex F. V. Machado y Esteban W. Chua de la Universidad Federal Fluminense de Brasil [6] en la cual uti-lizan t´ecnicas de aprendizaje de m´aquina para entrenar oponentes en un juego de estrategia y hacerlos m´as retadores para el usuario.
• Algunos videojuegos ya han utilizado t´ecnicas de aprendizaje de m´aquina, y ejemplos de esto son Creatures (1997) [7] y Black & White (2001) [8]. En Creatures el usuario le ense˜na a diferentes criaturas varios elementos del mundo en el que existen como por ejemplo la manera en que se deben comunicar y c´omo deben utilizar herramientas. En Black & White el usuario le ense˜na a un Dios c´omo debe comportarse frente a diferentes eventos en el mundo por medio de recompensas y castigos. En ambos casos se utilizaron redes neuronales que modelan la entidad (criatura o Dios respectivamente) y que aprenden a partir de la retroalimentaci´on del usuario.
• Otros juegos de video m´as modernos como Left 4 Dead (2008) [9] y Forza Motorsport 5 (2013) [10] utilizan t´ecnicas de aprendizaje de m´aquina para mejorar la experiencia del usuario. En Left 4 Dead, un juego de supervivencia de zombies, se implement´o un sistema conocido como The Director. Este se encarga de manejar varios par´ametros del juego dependiendo del rendimiento del usuario, como la poblaci´on de zombies, la m´usica, la estructura del mapa, los objetos del mundo, el clima y la iluminaci´on. En Forza Motorsport 5, un juego de automovilismo, se implement´o el sistemaDrivatar, el cual es una inteligencia artificial que aprende c´omo el usuario conduce para reproducir este comportamiento como un oponente para otros usuarios del juego.
Especificaciones y Restricciones
3.1
Definici´
on del Problema
En el desarrollo de videojuegos existe una dificultad a la hora de ajustar los par´ametros del juego de tal manera que se aumente el entretenimiento del usuario. Un juego no debe ser muy f´acil porque se vuelve aburridor y no debe ser muy dif´ıcil porque se vuelve frustrante. Los oponentes y obst´aculos del juego deben tener comportamientos diversos para generar curiosidad en el usuario. Los oponentes tambi´en deben comportarse de tal manera que fuercen al usuario a cambiar de estrategias y a utilizar todos los recursos que tiene disponibles. Todos estos son ejemplos de objetivos que desean los desarrolladores cuando construyen su juego, pero que son dif´ıciles de lograr porque requieren el ajuste de diferentes par´ametros teniendo en cuenta las diferencias entre los usuarios del juego.
Se quiere entonces desarrollar un sistema que permita encontrar el balance apropiado de los par´ametros de un juego por medio de la retroalimentaci´on obtenida de la satisfacci´on esperada del usuario y su rendimiento. Para lograr esto se utilizar´an t´ecnicas de aprendizaje de m´aquina por refuerzo, las cuales han mostrado ser muy efectivas maximizando una noci´on de recompensa, que en este caso es el en-tretenimiento del usuario. Son especialmente apropiadas en el contexto de los videojuegos, pues son agentes de software que se pueden adicionar f´acilmente al c´odigo del juego.
Las t´ecnicas de aprendizaje de m´aquina son conocidas por los desarrolladores como t´ecnicas muy com-plicadas y costosas de desarrollar y que tienen mucho costo computacional, algo no deseado cuando una prioridad es tener altas im´agenes por segundo. Por esta raz´on los desarrolladores tienden a evitar estos algoritmos. Sin embargo, existen algoritmos de aprendizaje de m´aquina de bajo costo computacional y de f´acil implementaci´on. Adicionalmente los dispositivos tienen cada vez m´as recursos computacionales haciendo m´as factible la implementaci´on de m´as algoritmos de aprendizaje de m´aquina.
3.2
Especificaciones
El sistema desarrollado debe cumplir con los siguientes requerimientos:
1. El sistema debe incorporar un videojuego sencillo que tenga diferentes par´ametros de configu-raci´on para ajustar niveles y su dificultad a diferentes tipos de usuarios.
2. El sistema debe poder evaluar el rendimiento y comportamiento de un usuario en un nivel configurado del juego.
3. El sistema debe ser capaz de obtener un valor aproximado del entretenimiento obtenido por el usuario en uno de los niveles que jug´o.
CAP´ITULO 3. ESPECIFICACIONES Y RESTRICCIONES 7
4. El sistema debe ser capaz de asignar un nivel al usuario que aumente tentativamente su entreten-imiento esperado en base al rendentreten-imiento y comportamiento de juegos pasados.
5. Al finalizar un juego el sistema debe permitirle al usuario calificar su entretenimiento obtenido y la dificultad presenciada.
6. El videojuego debe tener niveles con configuraci´on predeterminada para usar como referencia a la hora de evaluar la soluci´on propuesta.
3.3
Restricciones y Recursos
1. Se cuenta con una herramienta de desarrollo r´apido de videojuegos como Unity.
2. Se cuenta con un computador con tarjeta gr´afica para el desarrollo de un videojuego sencillo.
3. Se cuenta con suficientes personas para la obtenci´on de datos y el desarrollo de las pruebas de usuario.
3.4
Factores de Riesgo
1. El algoritmo de aprendizaje de m´aquina requiere altos niveles de computaci´on que no alcanzan a ser satisfechos en tiempo real por el dispositivo usado.
2. No se encuentran suficientes personas para la elaboraci´on de pruebas de usuario completas.
3. No se cuentan con suficientes datos para que el aprendizaje de m´aquina sea capaz de mejorar de manera notoria la satisfacci´on de los usuarios.
Dise˜
no del Sistema
El sistema se separ´o en tres bloques principales como se observa en la figura 4.1: el videojuego, un estimador de inter´es y la m´aquina de aprendizaje. El videojuego a presentar al usuario se configura a partir de los par´ametros seleccionados por la m´aquina de aprendizaje y debe capturar m´etricas sobre el rendimiento y el comportamiento del usuario sobre el juego. Estas m´etricas se env´ıan al estimador de inter´es para que calcule un valor de inter´es que pueda ser utilizado como recompensa en la m´aquina de aprendizaje. La m´aquina utiliza un algoritmo de aprendizaje por refuerzo para evaluar los par´ametros enviados y utilizar este nuevo conocimiento en la selecci´on de nuevos par´ametros.
Figura 4.1: Diagrama de bloques del sistema.
4.1
Dise˜
no del Videojuego
Como videojuego a desarrollar se seleccion´o un juego de plataforma tipoEndless Runner en el cual el usuario mueve un veh´ıculo entre carriles definidos evitando obst´aculos que se aproximan. Se seleccion´o este tipo de juego debido a su alta configuraci´on de par´ametros que lo hacen viable para un gran rango de usuarios diferentes. Tambi´en es un tipo de juego muy intuitivo, de f´acil interacci´on y de r´apida implementaci´on. Se utiliza un tipo de c´amara de proyecci´on en perspectiva que le da al usuario una sensaci´on de velocidad y de proximidad tridimensional. Tiene una vistatop-down que restringe y facilita la observaci´on de los obst´aculos m´as cercanos al veh´ıculo.
CAP´ITULO 4. DISE ˜NO DEL SISTEMA 9
El juego se implementa en la herramienta y motor de juegos Unity 5 por el r´apido desarrollo que permite y porque ya se tiene experiencia en ´esta. Es una herramienta que soporta muchas plataformas de despliegue con diferentes especificaciones computacionales. Esto permite evaluar la viabilidad de los algoritmos de aprendizaje sobre los dispositivos existentes hoy en d´ıa, como los dispositivos m´oviles.
El juego permite configurar los siguientes par´ametros:
1. NC = N´umero de carriles: El n´umero de carriles en los cuales el veh´ıculo se puede desplazar.
2. TS = Tiempo entre spawn (creaci´on) de obst´aculos: Este permite controlar qu´e tan frecuente se crean las l´ıneas de obst´aculos. Una l´ınea de obst´aculos consta de uno hasta NC-1 obst´aculos alineados horizontalmente formando una barrera. Entre menor sea este tiempo el usuario se ve obligado a cambiar de carriles m´as frecuentemente.
3. SD = Factor de densidad de obst´aculos: Modifica la probabilidad de creaci´on de obst´aculos. El valor indica el promedio de las probabilidades de que aparezca un obst´aculo sobre cada carril. Siempre debe haber al menos un carril libre para que el usuario pueda cruzar.
4. V = Velocidad del veh´ıculo: Esta determina que tan r´apido se aproxima el veh´ıculo a los obst´aculos. Entre mayor sea la velocidad hay menos tiempo entre el momento en que el obst´aculo es visible en la pantalla y este llega al veh´ıculo. Es independiente del tiempo entre spawn de obst´aculos pues el usuario siempre tendr´a el mismo tiempo para realizar sus cambios de carril as´ı se aumente la velocidad.
El juego tiene la capacidad de recolectar m´etricas sobre el rendimiento y comportamiento del usuario. Estas m´etricas son utilizadas por el bloque estimador de inter´es para obtener un valor aproximado de entretenimiento del usuario. Las m´etricas de un juego kson las siguientes:
1. ok = N´umero de obst´aculos avanzados antes de colisionar: Esta m´etrica est´a directa-mente relacionada con la dificultad del juego. Entre m´as obst´aculos el usuario sea capaz de pasar antes de colisionar m´as f´acil es ese nivel para el usuario.
2. pk = N´umero de cambios de carril productivos: Este cuenta el n´umero de cambios de carril que hace el usuario que si no se hicieran resultar´ıan en una colisi´on. Es usada para hacer el juego m´as din´amico, forzando al usuario a realizar cambios de carril.
3. cik = N´umero de veces en las que el usuario se encuentra en un carril i al evitar un
obst´aculo: Esta m´etrica se utiliza para ver como el usuario le da uso a los recursos que tiene disponibles (carriles) para tratar de diversificar el uso de estos.
4.2
Dise˜
no del Estimador de Inter´
es
El controlador de datos obtiene una aproximaci´on del inter´es del usuario a partir m´etricas obtenidas por el videojuego en cada juegok. Para lograr esto utiliza la estrategia de estimaci´on de inter´es, propuesta por Georgios N. Yannakakis y John Hallam [5], en la que se identifican los diferentes elementos que hacen un juego entretenido, se cuantifica una recompensa por cada uno de estos elementos y finalmente se hace una combinaci´on de todos ellos. Es responsabilidad del desarrollador identificar estos elementos, pues son diferentes para cada tipo de juego.
4.2.1
Elementos de Entretenimiento
Cada elemento de entretenimiento identificado debe tener una recompensa cuantificada y normalizada entre 0 y 1. S´olo debe dar recompensa alta cuando es merecida, de lo contrario debe ser cercana 0. Esto es importante para evitar recompensas falsas que deterioren el aprendizaje. Para el juego de estudio dise˜nado se identificaron los tres siguientes elementos:
Se adiciona entonces una recompensa por la dificultad T k de un juego k utilizando la m´etrica ok
(obst´aculos avanzados):
Tk=e−(ok−oe)
2p
1 (4.1)
En esta ecuaci´on oe es el valor esperado de obst´aculos avanzados antes de colisionar y p1 es una
variable de ajuste. Esta ecuaci´on est´a inspirada en una campana de Gauss centrada enoe y en la cual
p1 determina el ancho de la campana. En la figura 4.2 se observa el comportamiento bajo diferente
valores deoey p1. Se observa que entre m´as peque˜no seap1 m´as ancha es la campana y mayor es la
recompensa de juegos lejanos aoe.
Figura 4.2: Comportamiento de la funci´on de dificultad.
La selecci´on de oe depende de la noci´on de entretenimiento que tiene el usuario. Hay usuarios a
quienes les gustan los juegos muy retadores as´ı sean derrotados r´apidamente, y hay otros usuarios que encuentran esto frustrante y prefieren juegos m´as largos y f´aciles. Es por esto que para el ajuste de
oees necesario preguntar al usuario sobre sus preferencias, y se opt´o por darle tres opciones: un nivel
de dificultad f´acil para principiantes, un nivel medio para jugadores casuales y un nivel dif´ıcil para jugadores experimentados que est´en buscando un alto desaf´ıo. Para estas dificultades se ajust´o oe
en 28, 20 y 12 respectivamente. Realizando pruebas sobre el juego tambi´en se encontr´o que un valor apropiado parap1 es de 0.03 dando as´ı recompensa en un rango de 20 obst´aculos alrededor deoe.
Juego Din´amico:
Un juego que requiere m´as cambios de carril por parte del usuario es m´as din´amico y aporta para el inter´es de este. Una estimaci´on de la din´amica Dk del juego k se obtiene usando las m´etricas pk
(cambios productivos) yok (obst´aculos avanzados) de la siguiente manera:
Dk=
p
k
ok(N C−1)
p2
CAP´ITULO 4. DISE ˜NO DEL SISTEMA 11
N C es el n´umero de carriles de ese nivel y p2 es una variable de ajuste. Se hace una divisi´on por
el n´umero de carriles para tener en cuenta que el n´umero de cambios productivos posibles en cada obst´aculo est´a restringido por la cantidad de carriles menos 1. Esto se puede observar en la figura 4.3 en el corte diagonal que restringe valores altos de cambios productivos. En un juego de 5 carriles como el de la figura, cada obst´aculo puede presentar m´aximo 4 cambios productivos.
En esta funci´on, el par´ametrop2determina la curvatura, un valor menor a 1 forma una curva c´oncava,
un valor de 1 forma una curva uniforme y un valor mayor a 1 forma una curva convexa. Como se quiere recompensar s´olo los juegos con alta din´amica, en los que hayan varios cambios productivos por obst´aculos avanzados, se asigna un valor de p2 de 5 obteniendo una curva convexa.
Figura 4.3: Comportamiento de la funci´on de din´amica del juego con 5 carriles yp2= 5.
Diversidad Espacial:
Otro criterio que aumenta el inter´es de un juego es la diversidad en el uso de los carriles. Si el usuario utiliza todos los carriles y no se restringe a unos cuantos significa que el juego es diverso en lo que le pide al usuario y no es suficiente con usar unos pocos carriles. Esto significa entonces que se debe recompensar el uso de todos los carriles y para hacerlo se utiliza la diversidad espacial Hk que se
calcula con la entrop´ıa normalizada de las m´etricascik (contador de uso de carrili):
Hk = −
1 log(N C)
N C
X
i
cik
ok
log(cik
ok
)
!p3
(4.3)
En esta ecuaci´onHkes la entrop´ıa normalizada de un juegok,N C el n´umero de carriles,ok la m´etrica
de obst´aculos avanzados yp3 es una variable de ajuste. La base de los logaritmos es irrelevante. La
factor divisor corresponde a la entrop´ıa de una distribuci´on uniforme (valor m´aximo). En las figuras 4.4(a) y 4.4(b) se puede observar el comportamiento de la funci´on para 2 y 3 carriles respectivamente y 100 obst´aculos avanzados. Se observa que en el caso de dos carriles la entrop´ıa es mayor entre m´as se acerque el porcentaje de uso de cada carril a 50%, mientras que para tres carriles la entrop´ıa es mayor cuando cada carril se ocupa en un 33.3%.
(a) Recompensa de diversidad a 2 carriles. (b) Recompensa de diversidad a 3 carriles.
Figura 4.4: Recompensas de diversidad. ok = 100,p3= 30
El par´ametrop3 tambi´en permite definir el ancho de la campana como lo hacep1, entre mayor sea el
valor, m´as angosta es la campana. A partir de pruebas se le asigna un valor de 30 para disminuir el tama˜no de la campana y limitar la recompensa.
4.2.2
C´
alculo de Inter´
es
Una vez se tiene una recompensa por cada elemento de entretenimiento se procede a combinarlas lin-ealmente en una solo m´etrica de inter´es para un juegok:
Ik=
γTk+δDk+Hk
γ+δ+ (4.4)
Esta combinaci´on lineal requiere una asignaci´on de los par´ametros de peso γ, δ y para darle la importancia apropiada a cada elemento. Estos par´ametros se seleccionan de manera emp´ırica de acuerdo a las prioridades que tenga el desarrollador. El resultado obtenido se env´ıa a la m´aquina de aprendizaje como una recompensa a los par´ametros del juego recomendados inicialmente. Se encontr´o que la din´amica del juego es muy importante para un juego entretenido, seguido por la dificultad y finalmente la diversidad espacial de carriles. Se asignaron entonces los siguientes pesos: γ= 4,δ= 5 y= 2.
CAP´ITULO 4. DISE ˜NO DEL SISTEMA 13
4.3
Dise˜
no de la M´
aquina de Aprendizaje
4.3.1
Aprendizaje por Refuerzo
En aprendizaje de m´aquina es usual encontrar que el entorno es formulado como un proceso de decisi´on de Markov (MDP). Estos son procesos de control de situaciones en las cuales la salida es parcialmente aleatoria y parcialmente controlada. Un proceso tiene diferentes estados (S) que representan las condi-ciones del entorno y accondi-ciones (A) que puede tomar el agente de aprendizaje. Cuando un agente toma una acci´on el entorno cambia de estado de acuerdo a una distribuci´on de probabilidad.
En este caso se opt´o por que la m´aquina de aprendizaje utilice un algoritmo de aprendizaje por re-fuerzo. En estos algoritmos se le asignan una recompensa a cada transici´on de estado y el agente debe tomar acciones tratando de maximizar la recompensa acumulada a largo plazo [11]. A diferen-cia del aprendizaje supervisado, en el aprendizaje por refuerzo no se tiene un conjunto de datos de entrenamiento con entradas y salidas correctas. En este aprendizaje tampoco es necesario conocer el MDP del entorno y es por esto que estas t´ecnicas se suelen utilizar en procesos muy complejos en los cuales los m´etodos exactos son inviables. En el caso de estudio no se tiene un conjunto de datos de entrenamiento y no se conoce el modelo del entorno, pues cada usuario del juego se considera diferente a los dem´as. Esto hace que la ´unica manera de conseguir informaci´on del entorno es por medio de la interacci´on con este, lo cual es un problema genuino de aprendizaje por refuerzo.
En la figura 4.5 se observa la estructura del aprendizaje por refuerzo. En el caso estudiado el entorno (Environment) corresponde al juego junto al jugador, la recompensa (reward) a la estimaci´on de inter´es hecha sobre el rendimiento del jugador, el estado (state) a los par´ametros seleccionados del juego, el agente (agent) a la m´aquina de aprendizaje y la acci´on (action) a la selecci´on misma de los par´ametros del juego por parte del agente. Se trata de un caso m´as restringido pues la acci´on que debe tomar la m´aquina de aprendizaje es la selecci´on directa del estado.
Figura 4.5: Interacci´on Agente-Entorno del aprendizaje por refuerzo. Traducida de [11].
En este tipo de aprendizaje el agente implementa una pol´ıtica π que determina la probabilidad de que se tome una acci´on bajo cierto estado. Los algoritmos que manipulan esta pol´ıtica a trav´es del aprendizaje se conocen como algoritmos iteradores de pol´ıtica y una implementaci´on apropiada de esto es necesaria para la optimizaci´on de la recompensa acumulada. Entre los algoritmos por refuerzo que logran esto se encuentran los m´etodos de Monte Carlo, Algoritmos Evolutivos, Q-learning y los Aut´omatas de Aprendizaje [11].
4.3.2
Espacio de Exploraci´
on y Discretizaci´
on de Par´
ametros
Se procede entonces a adaptar el juego para que pueda ser representado por un n´umero finito de estados o niveles que conformen el espacio de exploraci´on del algoritmo de aprendizaje. Esto implica
Tabla 4.1: Discretizaci´on de par´ametros del juego.
La discretizaci´on de los par´ametros requiere un balance entre la resoluci´on que se desee de un par´ametro y el rendimiento del aprendizaje de la m´aquina. Si se le asignan muchos valores a un par´ametro se tiene una mayor diversidad con la posibilidad de obtener resultados m´as ´optimos, sin embargo se aumenta el n´umero de estados. Esto implica un espacio de exploraci´on mucho mayor que afecta el rendimiento del algoritmo de aprendizaje. Para lograr el balance se encuentra la sensibilidad de cada par´ametro viendo el cambio m´ınimo que produce un cambio notable en el juego. Se inicia la discretizaci´on asignando un valor m´ınimo y m´aximo a cada par´ametro pensando en las habilidades esperadas de los usuarios y despu´es de esto se asignan valores intermedios de acuerdo a la sensibilidad encontrada.
En el juego estudiado, al n´umero de carriles (NC) se le asignaron tres valores enteros t´ıpicos al tipo de juego. Se encontr´o que el factor de densidad (SD) no es un par´ametro muy sensible y basa con 3 posi-bles valores. El tiempo entre obst´aculos y la velocidad del veh´ıculo s´ı son par´ametros sensibles en los que un peque˜no cambio es significante. Estos dos par´ametros ponen a prueba al usuario en su motri-cidad y velomotri-cidad de reacci´on respectivamente, por lo tanto fue necesario asignarle 7 valores a cada uno.
Realizando la multiplicaci´on del n´umero de valores (3x3x7x7) se encuentran 441 posibles niveles. A estos niveles es necesario eliminar aquellos imposibles de resolver teniendo en cuenta las relaciones existentes entre los par´ametros. Una restricci´on encontrada es el tiempo m´ınimo que le toma a un usuario pasar de un carril a otro. Este tiempo es de aproximadamente 0.14s y ejerce una restricci´on sobre el n´umero de carriles y el tiempo entre obst´aculos. Un nivel con cuatro carriles no puede tener un tiempo entre obst´aculos menor a 0.42s, ya que es necesario que el usuario pueda moverse 3 veces entre carriles opuestos. Lo mismo ocurre para un nivel con cinco carriles, necesitando al menos 0.56s entre obst´aculos. Esta restricci´on elimina 28.5% de los niveles, dejando 315 posibles.
Otra restricci´on encontrada est´a dada por el n´umero de obst´aculos que se alcanzan a ver en la c´amara del juego. Es necesario que una vez el veh´ıculo atraviesa un obst´aculo el siguiente ya sea visible para que el usuario pueda responder a tiempo. Esto ejerce una restricci´on sobre la velocidad del veh´ıculo y el tiempo entre obst´aculos. Un tiempo entre obst´aculos fijo hace que una velocidad muy alta aumente la distancia entre obst´aculos hasta el punto en que solo se puede ver uno a la vez. Es por esto que velocidades muy altas ejercen una restricci´on sobre el tiempo entre obst´aculos, forz´andolo a ser m´as frecuente para que los obst´aculos sean menos distantes. Esto elimina 117 de los niveles restantes, dejando 198 posibles.
Se encontr´o una ´ultima restricci´on entre el tiempo entre obst´aculos y la velocidad del veh´ıculo. Si ambos par´ametros son muy peque˜nos la distancia entre obst´aculos tambi´en lo es hasta el punto que se debe tener en cuenta el tama˜no del veh´ıculo. Para poder desplazarse entre carriles es necesario que el veh´ıculo completo cruce el obst´aculo, lo cual adiciona un tiempo que restringe niveles con obst´aculos
CAP´ITULO 4. DISE ˜NO DEL SISTEMA 15
muy cercanos. Esto elimina otros 3 niveles dejando un total de 195 niveles que act´uan como estados en el aprendizaje de m´aquina.
4.3.3
Algoritmo: Aut´
omata de Aprendizaje
Como algoritmo de aprendizaje se seleccion´o el Aut´omata de Aprendizaje desarrollado por Narendra y Thathachar en 1974 [13]. Este algoritmo es un iterador de pol´ıtica sencillo que mantiene un vector de probabilidades Pt sobre las acciones A. En el caso estudiado una acci´on equivale a realizar una
transici´on a uno de los estados S. Este vector de probabilidad de estados se actualiza despu´es de cada iteraci´on t, aumentando la probabilidad del estado tomado de acuerdo a la recompensa que recibi´o. Se seleccion´o este algoritmo debido a que se trata de un algoritmo de tipo Diferencias Temporales (TD) que se puede implementar en l´ınea de manera continua y no es necesario detener la ejecuci´on como en los m´etodos de Monte Carlo. Esto es importante en algunos juegos en los que no se desea detener la experiencia del jugador. Tambi´en han mostrado tener una convergencia m´as r´apida [12] y han sido efectivos en otras implementaciones en juegos [4]. Es un algoritmo de r´apida implementaci´on que no requiere de mucha capacidad computacional.
A cada uno de los niveles se le asigna una probabilidad de ocurrencia inicial que puede ser bajo una distribuci´on uniforme. Cada vez que el usuario completa un juego obtiene una recompensaIkde inter´es
sobre el nivel que jug´o Ck. Para actualizar estas probabilidades se utiliza el m´etodo propuesto por
Rubem Jose Vasconcelos de Medeiros y Tacio Filipe Vasconcelos de Medeiros [4] en la cual se utiliza una funci´on de distancia dist(Ck,Cj) entre el nivel jugado Ck y el nivel al cual se le est´a calculando
la probabilidad Cj. Se actualizan todas las probabilidades de ocurrencia de los niveles Cj bajo la
siguiente f´ormula:
∀j∈[1, N],
Pt(Cj)0 =Pt−1(Cj) +α[2−dist(Ck,Cj)Ik]
(4.5)
En esta ecuaci´onN corresponde al n´umero de niveles,αa la tasa de aprendizaje emp´ırica y tindica la iteraci´on, siendo t la nueva distribuci´on y t−1 la distribuci´on anterior. Esta ecuaci´on trata de recompensar niveles similares al jugado; entre mayor es la similitud de los niveles mayor impacto tiene la recompensa sobre la probabilidad calculada. Para finalizar hay que hacer una correcci´on que vuelva nuevamente aPt en una distribuci´on de probabilidad cuya suma es de 1. Se suman todas las
proba-bilidades calculadas y cada una se divide por esta suma:
Pt(Cj) =
Pt(Cj)0
PN
i=1Pt(Ci)0
(4.6)
Los algoritmos por refuerzo tienen untrade-off entre la exploraci´on del territorio no explorado y la explotaci´on del conocimiento adquirido. Es importante investigar el espacio de exploraci´on para encon-trar soluciones ´optimas que no se han tenido en cuenta y evitar caer en m´ınimos locales. Por otro lado, tambi´en es deseable que el algoritmo aproveche las buenas soluciones encontradas para obtener buenas recompensas del entorno, y en el caso tratado satisfacer al usuario. Es ac´a donde entra el par´ametro
α, conocido como la tasa de aprendizaje. Entre mayor sea αmayor es el aumento de la probabilidad de ocurrencia de niveles recompensados, pero se disminuye la probabilidad de otros niveles que pueden no haber sido explorados.
No existe una manera sencilla de asignar un valor apropiado a este par´ametro, pues depende de la aplicaci´on, de la cantidad de datos que se tengan y de la necesidad de obtener resultados r´apidos sobre resultados ´optimos. Se recomienda iniciarαen un valor cercano a 1/N (probabilidad de un nivel en una distribuci´on uniforme) y ajustarlo de acuerdo a las necesidades que se tengan y a la velocidad de
En la figura 4.6 se aprecia un ejemplo de c´omo se comporta el algoritmo bajo dos iteraciones en un juego de 100 niveles con unα= 0.03. Se inicia con una distribuci´on uniforme en la cual cada nivel tiene la misma probabilidad de ocurrir de 1%. En una primera iteraci´on el algoritmo propone el nivel 40 y despu´es de que el usuario acaba este nivel se obtiene un inter´es de 0.5. Se observa como la probabilidad de ocurrencia del nivel 40 aumenta a 2.25% y niveles similares tambi´en presentan un aumento en probabilidad. En una segunda iteraci´on el algoritmo propone el nivel 50 y se obtiene un inter´es de 0.2. Nuevamente se observa un aumento en la probabilidad de ese nivel, un poco menor debido al menor inter´es. Como se trata de una distribuci´on de probabilidad que debe sumar 1, niveles muy diferentes que no son recompensados se ven afectados en su probabilidad.
Figura 4.6: Ejemplo del comportamiento del algoritmo de aprendizaje sobre un juego de 100 niveles diferentes.
4.3.4
Ecuaci´
on de Distancia entre Niveles
Para calcular la distancia entre dos niveles se utilizan los par´ametros asignados a cada nivel y se tienen en cuenta las relaciones existentes entre estos par´ametros. Para el caso de par´ametros binarios se puede utilizar la distancia de haming como lo hacen en [4]. En el caso de estudio se consideran tres distancias, una distancia que combina el par´ametro de tiempo entre obst´aculos (TS) y el n´umero de carriles (NC), una distancia para el par´ametro de velocidad (V) y otra distancia para el par´ametro de densidad de obst´aculos (SD).
El tiempo entre obst´aculos y el n´umero de carriles se combinaron en un nuevo par´ametro debido a la relaci´on que tienen a la hora de la exigencia al usuario. Un nivel con muchos carriles requiere de tiem-pos mayores entre obst´aculos y viceversa. Los valores de este nuevo par´ametro denominado ‘Exigencia de Motricidad (EM)’ est´an dados por la siguiente formula:
CAP´ITULO 4. DISE ˜NO DEL SISTEMA 17
EM =
T S
0.15+ 1
N C !2.5
(4.7)
Esta f´ormula se desarroll´o manualmente pensando en asignar valores cercanos a niveles con una exi-gencia de motricidad cercana. En la tabla 4.2 se observan los valores del par´ametro.
Tabla 4.2: Valores del par´ametro de Exigencia de Motricidad.
Con base en este par´ametro se procede a calcular la distancia 1 (dist1). Si N C yT S son iguales para un par de niveles la distancia 1 es 0. De lo contrario se obtiene el valor absoluto de la resta de los par´ametrosEM de cada nivel y se suma 1 para evidenciar una diferencia entre los niveles:
dist1(Ck, Cj) =|EMCk−EMCj|+ 1 (4.8)
La distancia 2 (dist2) se calcula a partir del valor absoluto de la resta de los ´ındices (posici´on en el arreglo) deV de cada nivel. Lo mismo se realiza para la distancia 3 (dist3) usando el par´ametroSD:
dist2(Ck, Cj) =|indice(VCk)−indice(VCj)| (4.9)
dist3(Ck, Cj) =|indice(SDCk)−indice(SDCj)| (4.10)
Finalmente se calcula la distancia total entre un par de niveles realizando una suma pesada sobre las distancias. Para asignar el peso hay que tener en cuenta el n´umero de valores que puede tomar cada par´ametro pues esto determina la mayor distancia posible. Sin embargo, se deja a libertad del desarrollador asignar cada peso. En este caso se decidi´o darle mayor importancia a la distancia de la motricidad que puede tomar un m´aximo de 6.47, seguido por la distancia de la velocidad con un valor m´aximo de 6 y finalmente la distancia de la densidad de obst´aculos que tiene un valor m´aximo de 2. Para que esta ´ultima distancia no sea tan insignificante se le dio un peso de 2 para que sea comparable con las otras dos:
dist(Ck, Cj) =dist1(Ck, Cj) +dist2(Ck, Cj) + 2∗dist3(Ck, Cj) (4.11)
4.4
Recolecci´
on de Informaci´
on
Para el desarrollo de este proyecto se acudi´o a diferentes fuentes de informaci´on. Se inici´o por una b´usqueda de trabajos hechos sobre el aprendizaje de m´aquina en videojuegos en las librer´ıas de IEEE y ACM. En estas se encontraron varios trabajos ya realizados que permitieron entender el estado del arte y proponer el tema del proyecto [3] [4] [5] [6] [15] [16] [17] [18]. Se procedi´o a investigar sobre los diferentes algoritmos de aprendizaje por refuerzo existente para encontrar la alternativa m´as adecuada [11] [12] [13] [14]. De toda esta informaci´on se extrajeron varios elementos importantes que posteriormente se aplicaron en el proyecto, el primero es el m´etodo de estimaci´on de inter´es realizado
Medeiros [4]. El libro de aprendizaje por refuerzo de Sutton y Barto [11] [12] fue bastante ´util para entender e implementar adecuadamente el algoritmo.
4.5
Alternativas de Dise˜
no
Como alternativas de dise˜no se pueden utilizar otros algoritmos de aprendizaje por refuerzo. Existen algoritmos similares al usado que tambi´en son de Diferencias Temporales como el algoritmo Q-Leaning, el algoritmo Sarsa y el algoritmo Actor y Cr´ıtico [12]. Entre los algoritmos de pol´ıtica iterativa tambi´en existen los m´etodos de Monte Carlo y los Algoritmos Evolutivos. Estos ´ultimos son una rama bastante amplia de algoritmos que son usualmente m´as complejos computacionalmente pero pueden ser una alternativa interesante a considerar.
Cap´ıtulo 5
Implementaci´
on
5.1
Descripci´
on de la Implementaci´
on
Para la implementaci´on del sistema se separaron las tareas en cuatro etapas importantes, cada una requiriendo la finalizaci´on de la etapa anterior. Estas etapas se describen a continuaci´on:
1. Desarrollo del Videojuego: Esta etapa incluye el desarrollo del juego de plataforma en su totalidad, incluyendo los elementos esenciales del juego, los elementos gr´aficos, la interfaz de usuario y todo el c´odigo conductual.
2. Control de par´ametros y adquisici´on de m´etricas: Esta etapa permite configurar los par´ametros del videojuego de acuerdo al nivel que debe jugar el usuario. Se resuelve toda la discretizaci´on de par´ametros y se estima el inter´es del usuario para usar en el aprendizaje de m´aquina.
3. Aprendizaje de M´aquina: Esta etapa incluye el desarrollo del sistema que utiliza t´ecnicas de aprendizaje de m´aquina por refuerzo para encontrar el nivel apropiado para el usuario.
4. Validaci´on del sistema: Se adicionan los elementos que le permiten al usuario evaluar los juegos y contestar una peque˜na encuesta. Incluye la escritura de datos en un archivo en el almacenamiento del dispositivo.
El sistema se implement´o usando la herramienta y motor de juegos Unity 5 para la plataforma An-droid. La experiencia del usuario se traz´o de la siguiente manera: primero se le muestra toda la informaci´on necesaria y se obtiene su nombre y n´umero de identificaci´on aceptando las condiciones de uso. A continuaci´on se entra a una serie de 40 juegos de entrenamiento que obtienen la informaci´on necesaria para el aprendizaje por refuerzo en l´ınea. El usuario procede a evaluar 6 juegos para validar el funcionamiento del sistema. Para finalizar, el usuario responde una peque˜na encuesta.
Se construyeron dos escenas de Unity, una primera escena encargada del control general del sistema, y una segunda escena con el juego como tal. En la figura 5.1 se observa un diagrama con las respons-abilidades de cada escena y el flujo de informaci´on entre estas.
Figura 5.1: Escenas del proyecto desarrolladas en Unity 5.
5.2
Escena 1: Controlador del Sistema
En esta escena, como elementos visuales, solo se tienen paneles de interfaz de usuario. Adicionalmente se tienen varias clases en scripts en lenguaje C# que implementan las funcionalidades de la escena:
1. GameFlowScript: Maneja el flujo entre las cuatro etapas del juego inform´andole a la escena 2 el tipo de juego que se est´a manejando (entrenamiento o evaluaci´on).
2. FileManagerScript: Permite almacenar toda la informaci´on que se necesite en archivos de texto en el almacenamiento interno del dispositivo. Contiene m´etodos p´ublicos est´aticos que le permiten a la escena 2 imprimir en los archivos de texto.
3. MenuScript: Se encarga de mostrar u ocultar los paneles con la interfaz del usuario dependiendo del men´u en el que se encuentre el usuario. Los paneles que maneja son la descripci´on del proyecto, las instrucciones del juego, los controles, la dificultad y la encuesta. Utiliza FileManagerScript para imprimir la informaci´on ingresada por el usuario en un archivo.
4. LearningScript: Se encarga de toda la implementaci´on del algoritmo de aprendizaje de m´aquina. Incluye m´etodos para la discretizaci´on de par´ametros en niveles, la inicializaci´on de las distribu-ciones de probabilidad, el c´alculo de distancia entre niveles y la actualizaci´on de las distribu-ciones a partir de la recompensa recibida. Tambi´en utiliza FileManagerScript para imprimir en el archivo de texto la nueva distribuci´on y esta pueda ser analizada posteriormente. Tiene m´etodos p´ublicos est´aticos que le permiten a la escena 2 ingresar un juego finalizado con su informaci´on y recompensa estimada para realizar el aprendizaje.
5.3
Escena 2: Juego
El juego de video est´a compuesto por un veh´ıculo que avanza a velocidad constante y un objeto de referencia que sigue al veh´ıculo verticalmente. Este objeto contiene varios elementos los cuales se pueden observar en la figura 5.2(a). Varias unidades m´as adelante del veh´ıculo, fuera de la vista de la c´amara, se encuentran un generador que crea los obst´aculos y la pista (suelo). En la parte trasera del veh´ıculo se encuentra un destructor que destruye los obst´aculos que ya fueron pasados por el veh´ıculo y fragmentos de la pista que ya no son visibles.
Para el correcto funcionamiento del juego fue necesario implementar las siguientes clases como scripts:
1. HUDScript: Se encarga de manejar toda la l´ogica de interfaz gr´afica, mostrando paneles de finalizaci´on de juego y de evaluaci´on del juego. Tambi´en es capaz de detener el juego o reiniciarlo. Utiliza el FileManagerScript para imprimir la informaci´on de la evaluaci´on del juego.
CAP´ITULO 5. IMPLEMENTACI ´ON 21
(a) Componentes base del juego. (b) Captura de pantalla del juego.
Figura 5.2: Desarrollo del juego en Unity 5.
2. UserControl: Se encarga de recibir las se˜nales de entradas que tiene el dispositivo y traducirlas a comandos en el juego. En el caso de dispositivos m´oviles identifica la ubicaci´on de los toques en la pantalla t´actil. Si el toque se encuentra en la mitad izquierda de la pantalla produce un comando de movimiento a la izquierda y si el toque se encuentra en la mitad derecha produce un comando de movimiento a la derecha.
3. CharacterScript: Se encarga de mover el veh´ıculo a la velocidad asignada entre los carriles permitidos.
4. CameraFlow: Se encarga de seguir al veh´ıculo ubicando el cuadro de referencia y la c´amara unas unidades atr´as del veh´ıculo.
5. DestroyerScript: Destruye los obst´aculos y el suelo cuando pasan por el objeto destructor.
6. EnemyScript: Se encarga de generar una notificaci´on a la interfaz gr´afica cuando el veh´ıculo colisiona con un obst´aculo.
7. GroundCreatorScript: Crea el suelo en el objeto generador (spawner). Dependiendo del n´umero de carriles y su posici´on tambi´en crea peque˜nas luces que limitan los carriles.
8. SpawnerScript: Se encarga de generar los obst´aculos en el objeto generador (spawner) bajo las reglas de creaci´on de obst´aculos. Estas se explicar´an en detalle m´as adelante.
9. LaneController: Se encarga de construir los carriles disponibles y obtener informaci´on de sus posiciones. Es usado por CharacterScript para controlar las posiciones posibles del veh´ıculo, por SpawnerScript para generar los obst´aculos y por GroundCreatorScript para generar las luces delimitadoras de carriles.
10. InterestEstimator: Es capaz de adquirir las m´etricas del rendimiento del usuario. Cuando el juego finaliza usa las ecuaciones de entretenimiento para calcular el inter´es y le informa al LearningScript sobre la informaci´on adquirida.
visuales ofrecidos por Unity como un sistema de part´ıculas para la postcombusti´on del veh´ıculo y materiales emisores de luz. Tambi´en se adicion´o una luz direccional que ilumina la escena desde la parte trasera del veh´ıculo.
5.4
Generador de Obst´
aculos
Un reto encontrado en la implementaci´on fue el algoritmo generador de obst´aculos. Este debe tratar de generar juegos din´amicos en los cuales obst´aculos consecutivos exigen una reacci´on por parte del usuario. Debe tener en cuenta el par´ametroSDde densidad de obst´aculos y debe cumplir la restricci´on de tener siempre un carril libre para que el veh´ıculo pueda cruzar.
El algoritmo implementado funciona asign´andole una probabilidad de aparici´on de obst´aculo a cada carril. Esta probabilidad se inicia con un valor deSD y se actualiza tras la creaci´on de cada l´ınea de obst´aculos. Adicional a este vector de probabilidades se almacena un vector binario con los carriles ocupados por la l´ınea de obst´aculos anterior. En cada extremo de este vector binario se adicionan un carril imaginario ocupado que representa la imposibilidad que tiene el usuario para desplazarse m´as all´a de los carriles extremos. Con base en este vector y al par´ametroSDse calcula en nuevo vector de probabilidades para la siguiente l´ınea de obst´aculos.
En la tabla 5.1 se observa el comportamiento del algoritmo para un nivel de 5 carriles en los cuales la ´
ultima l´ınea de obst´aculos tuvo 4 carriles ocupados, con el cuarto carril desocupado. Esto indica que el usuario debi´o haber cruzado por este carril y para la siguiente l´ınea conviene aumentar la probabilidad de ocurrencia de obst´aculos en el carril 4 y carriles cercanos a este. Ac´a se explica el procedimiento general m´as no se entrar´a en el detalle de las f´ormulas y n´umeros usados.
Tabla 5.1: Comportamiento del algoritmo generador de obst´aculos.
Se calcula una probabilidad preliminar que hace una suma pesada sobre la ocupaci´on del carril anterior y los dos carriles adyacentes y se le resta el valor obtenido a 1. Este vector preliminar se modifica usando el par´ametroSD para aumentar o disminuir las probabilidades de cada carril. Esto se hace por medio de una multiplicaci´on con un factor, que se obtiene a partir de la suma de los valores del vector preliminar y el par´ametroSD, y una potencia sobre una constante fija en 0.7.
CAP´ITULO 5. IMPLEMENTACI ´ON 23
5.5
Velocidad de Aprendizaje y Aprendizaje Previo (
Offline
)
En un videojuego es deseable que desde el comienzo de la experiencia del usuario se tengan buenos resultados y el jugador se mantenga entretenido. Esto significa que el algoritmo no puede comenzar sin ning´un conocimiento, proponiendo juegos de bajo inter´es para el usuario. Muy pocos jugadores van a tener la paciencia de entrenar la m´aquina de aprendizaje por decenas de juegos poco entretenidos. Es entonces necesario que la m´aquina tenga un conocimiento previo como punto de arranque.
Para solucionar esto nuevamente nos encontramos con la problem´atica de la diversidad de los usuarios y su noci´on de entretenimiento. Se opta entonces por usar el nivel de dificultad que se le pregunt´o al usuario para asignaroeen la secci´on 4.2.1. Este nivel va a determinar el punto inicial de conocimiento
del algoritmo de aprendizaje, por lo tanto es necesario generar 3 distribuciones de probabilidad de arranque, una para cada dificultad. Generar estas distribuciones es posible aprendiendo de varios usuarios que seleccionen la dificultad de su gusto. Juntando todos los datos de los usuarios para cada dificultad se obtienen distribuciones generalizadas como lo hacen en [4].
Si posterior a este aprendizaje previo (Offline) se realiza el aprendizaje en l´ınea (Online) se llegar´a m´as r´apido a la distribuci´on personalizada de cada usuario. Tambi´en es posible continuar absorbiendo las recompensas de los juegos de los usuarios para alimentar las distribuciones previas de tal manera que estas mejoren continuamente como puntos de partida para nuevos usuarios.
Validaci´
on del trabajo
Para la validaci´on del trabajo se realizaron dos etapas de pruebas con usuarios. En una primera etapa se realizaron pruebas con 6 usuarios en las que se efectu´o el ajuste de todos los par´ametros del sistema, se realizaron ajustes sobre el juego a partir de comentarios recibidos y se obtuvieron los datos para el aprendizaje previo. En la segunda etapa se tuvo una muestra de 14 usuarios para la evaluaci´on de la efectividad del sistema. Se compararon los resultados obtenidos contra una metodolog´ıa t´ıpica en la cual se hace un balance manual de los par´ametros del juego.
6.1
Primera Etapa de Pruebas
6.1.1
Ajuste de Par´
ametros
Se realiz´o el ajuste de todos los par´ametros del sistema. La mayor´ıa de estos par´ametros se ajustaron emp´ıricamente observando las reacciones de los usuarios y el comportamiento del sistema bajo difer-entes condiciones.
Se ajustaron los par´ametros de ajustep1,p2 yp3 observando la recompensa dada por cada elemento
de entretenimiento y evaluando si esta s´ı es merecida o no. Los par´ametros γ, δ y se ajustaron viendo que tanto impacta cada elemento de entretenimiento en el inter´es observado en los usuarios. El par´ametrooe se asign´o a partir de la frustraci´on vista en los usuarios en el punto en que colisionan.
Se encontr´o que los usuarios que seleccionan una dificultad m´as dif´ıcil son m´as tolerantes a colisionar r´apidamente.
En cuanto a la discretizaci´on de los par´ametros de juego, los valores asignados no tuvieron que ser cambiados en gran medida. El ´unico cambio que se realiz´o fue el aumento de los valores del par´ametro SD, pues en general se observ´o una baja densidad de obst´aculos con los valores que se ten´ıan inicial-mente.
Para el algoritmo de aprendizaje se modific´o la funci´on de distancia d´andole m´as peso a la distancia 3, que ten´ıan un peso inicial bajo en comparaci´on con las dem´as. Tambi´en se realiz´o el ajuste del par´ametroα, dependiendo si se trata de un aprendizaje previo o un aprendizaje en l´ınea. El aprendizaje previo tiene un mayor n´umero de datos y requiere una mejor exploraci´on de territorio no explorado, por lo tanto se le asign´o un valor peque˜no aα= 0.003575 equivalente a 0.7 veces la probabilidad en una distribuci´on uniforme (0.005128). Por otro lado, en un aprendizaje en l´ınea se tienen menos datos y se quiere una mayor explotaci´on del conocimiento adquirido para ajustarse r´apidamente al usuario. Para lograrlo se asign´o un valor grande aα = 0.0205 equivalente a 4 veces la probabilidad en una distribuci´on uniforme.
CAP´ITULO 6. VALIDACI ´ON DEL TRABAJO 25
6.1.2
Mejoras del Juego
Durante la primera etapa tambi´en se recibi´o comentarios sobre el juego y maneras en las que se puede mejorar. Dos usuarios realizaron una misma observaci´on sobre la dificultad de identificar cu´ales son los l´ımites de los carriles del nivel y si el veh´ıculo alcanza o no a cruzar por el espacio entre dos obst´aculos. Para facilitar esto se adicionaron las lucen que limitan los carriles y se ajust´o el ancho de los obst´aculos de tal manera que dependa del ancho del carril, disminuyendo el espacio entre dos obst´aculos adyacentes.
6.1.3
Datos del Aprendizaje Previo (Offline)
Los 6 usuarios de esta etapa de pruebas fueron seleccionados de tal manera que hubieran 2 en cada dificultad. A cada usuario se le pidi´o que jugara 100 juegos de entrenamiento y se juntaron los datos de los 2 usuarios de cada dificultad para generar las tres distribuciones. En la figura 6.1 se observa el resultado obtenido. En el eje secundario se grafica la velocidad del veh´ıculo para entender el ordenamiento de los niveles: aquellos con tres carriles van del 1 al 102, de 4 carriles del 103 al 165 y de 5 carriles del 166 al 195. En cada uno de estos rangos los niveles se ordenan a partir de la velocidad de menor a mayor. Dentro de cada velocidad se ordena de acuerdo al tiempo entre obst´aculos de menor a mayor. Finalmente dentro de cada tiempo entre obst´aculos se ordena por densidad de obst´aculos.
Figura 6.1: Resultados del aprendizaje previo. En el eje secundario se muestra la velocidad del veh´ıculo para cada nivel.
Se aprecia que las distribuciones de dificultad media y dif´ıcil son bastante similares, con la dificultad dif´ıcil prefiriendo niveles de mayor velocidad y menor tiempo entre obst´aculos. Tambi´en se observa que la distribuci´on f´acil es inversa a las otras dos, cuando hay un pico en la media y dif´ıcil, hay un valle en la f´acil y viceversa. Esto indica que esta dificultad prefiere densidades de obst´aculos menores. Adicionalmente se ve una preferencia por niveles con velocidades menores. Estos resultados est´an acorde con lo esperado de cada dificultad as´ı que se ingresan estas distribuciones como punto de partida para el algoritmo de aprendizaje.
6.2.1
Estructura de la Prueba
Toda la prueba se realiz´o sobre la misma aplicaci´on de software desarrollada en Unity 5. Los partici-pantes tuvieron que firmar con su nombre y n´umero de identificaci´on en la aplicaci´on. Para iniciar se les mostr´o un ejemplo del juego para cada dificultad de tal manera que pudieran seleccionar la opci´on que mejor se ajustara a ellos. Adicionalmente se les mostraron las instrucciones de la prueba y los controles del juego. Cada participante jug´o 40 niveles de entrenamiento y despu´es de estos se les asign´o otros 6 juegos adicionales para evaluar. Se les pidi´o que calificaran la percepci´on que tuvieron sobre la dificultad y la diversi´on de estos juegos en una escala de 0 a 10, siendo 10 la mayor dificultad o diversi´on. Estos 6 juegos est´an compuestos por 3 juegos propuestos por la m´aquina de aprendizaje y 3 juegos definidos previamente para la dificultad seleccionada. Para finalizar los participantes tuvieron que responder una encuesta corta sobre su edad, experiencia en videojuegos y g´enero.
Todas las pruebas se realizaron en el mismo lugar, una sala de c´omputo. Como dispositivo Android a correr el software se utiliz´o un tel´efono LG Nexus 5. Este tiene una pantalla de 4.95 pulgadas, un procesador Snapdragon 800 de cuatro nucleos a 2.3GHz, una unidad gr´afica Adreno 330 y 2GB de memoria RAM. Es capaz de correr la aplicaci´on a 60 im´agenes por segundo sostenidas sin afectar la experiencia del usuario.
6.2.2
Participantes
La muestra de participantes fue un grupo de 14 estudiantes de ingenier´ıa, 4 mujeres y 10 hombres. Tuvieron un rango de edad entre 18 y 24 a˜nos con un valor medio de 19.3 a˜nos. A estos participantes se les pregunt´o su experiencia en videojuegos en una escala de 0 a 10, siendo 10 el valor m´aximo. El resultado se encuentra en la figura 6.2(a), se observa que las mujeres participantes manifestaron una experiencia en videojuegos de menos de la mitad que la de los hombres. En la figura 6.2(b) se observa c´omo se distribuyeron los participantes de acuerdo a su selecci´on de dificultad y g´enero. 5 seleccionaron una dificultad f´acil, 7 una dificultad media y solo 2 seleccionaron una dificultad dif´ıcil. De las 4 mujeres ninguna seleccion´o una dificultad dif´ıcil.
(a) Media de experiencia en videojuegos (±SE). (b) Dificultad seleccionada por g´enero.
CAP´ITULO 6. VALIDACI ´ON DEL TRABAJO 27
6.2.3
Resultados
A continuaci´on se presenta el an´alisis realizado de los resultados de las pruebas hechas a los 14 partic-ipantes. En la figura 6.3(a) se observa que las dificultades percibidas por los usuarios para los niveles de referencia est´an bien definidas. La distribuci´on f´acil presenta la menor dificultad, seguida por la media y finalmente la dif´ıcil, mostrando que los niveles de referencia fueron seleccionados apropiada-mente. Esto no es del todo cierto para los niveles propuestos por el algoritmo de aprendizaje, en donde la distribuci´on f´acil presenta una dificultad percibida casi igual a la distribuci´on media. La raz´on de esto puede ser que el par´ametrooe fue muy bajo y los usuarios de esta dificultad esperaban
colisionar despu´es de haber cruzado m´as obst´aculos. Tambi´en es posible que el aprendizaje previo de esta distribuci´on no fue lo suficientemente bueno.
(a) Dificultades percibidas (±SE). (b) Diversiones percibidas (±SE).
Figura 6.3: Medias de la dificultad y diversi´on percibida por los participantes diferenciadas por la distribuci´on seleccionada.
En cuanto a la diversi´on percibida por los usuarios, el algoritmo de aprendizaje s´ı obtuvo mejores resultados que los niveles de referencia por un 18% en general. En la figura 6.3(b) se observa que la diversi´on de los niveles propuestos por el algoritmo de aprendizaje super´o la diversi´on de los niveles de referencia en las tres distribuciones. La diversi´on de los niveles dif´ıciles aumento en un 33%, de los niveles medios en un 10.4% y de los niveles f´aciles en un 22%. Hay que tener en cuenta que el error est´andar de las distribuciones dif´ıciles y f´aciles fue mayor al de la distribuci´on media debido a los pocos participantes en estas dificultades.
(a) Dificultades por g´enero (±SE). (b) Diversi´on por g´enero (±SE).
Figura 6.4: Medias de la dificultad y diversi´on percibida por los participantes diferenciadas por g´enero.
Si se realiza un an´alisis de la dificultad y diversi´on percibida por g´enero se obtiene la figura 6.4. En la figura 6.4(a) se observa que las mujeres evidenciaron una menor dificultad que los hombres, lo cual es esperado dado que seleccionaron dificultades m´as f´aciles. Los hombres por su parte tuvieron una mayor diversi´on en sus juegos como se ve en la figura 6.4(b). Una raz´on de lo ´ultimo puede ser el hecho que los juegos dif´ıciles obtuvieron mejores valores de entretenimiento como se ve en la figura 6.3(b).
Cap´ıtulo 7
Conclusiones
7.1
Discusi´
on
El proyecto realizado mostr´o ser efectivo a la hora de balancear un videojuego, obteniendo mejores resultados en comparaci´on a un balance manual como lo hacen muchos desarrolladores. Se logr´o au-mentar la diversi´on percibida por los usuarios en un 18%. El algoritmo utilizado tambi´en permiti´o ofrecer una mayor diversidad de niveles, ajustados a las caracter´ısticas de los usuarios. Esto es posible gracias a que el algoritmo explora gran parte del espacio de estados disponible, encontrando niveles entretenidos dif´ıciles de encontrar manualmente.
El algoritmo de Aut´omatas de Aprendizaje utilizado y otros algoritmos de Diferencias Temporales han mostrado ser efectivos y de bajo requerimiento computaci´on. Adicionalmente no son algoritmos muy complicados y largos de desarrollar, lo que los hace viables para su uso por parte de los desarrolladores de videojuegos. Esto ayuda a romper los prejuicios que se tienen sobre el aprendizaje de m´aquina y sus altos costos de implementaci´on.
Entre las ventajas del m´etodo de balance de juegos propuestos se encuentran: niveles mejor balancea-dos para cada usuario, no requiere de grandes pruebas a usuarios, el balance del juego evoluciona a medida que las tendencias de los jugadores cambian y permite generar juegos m´as variados. Sin embargo, la implementaci´on de este m´etodo incluye algunas desventajas: es necesario conocer el al-goritmo de aprendizaje e implementar las ecuaciones de entretenimiento del juego, requiere el ajuste de muchos par´ametros y se tiene un incremento en los recursos computacionales necesarios. Otro problema que tiene esta soluci´on es que su complejidad aumenta exponencialmente dependiendo del n´umero de par´ametros que se quieran balancear a la vez. Entre mayor sea este n´umero, m´as recursos y datos de entrenamiento se necesitan.
Una ventaja del m´etodo propuesto es que los datos de entrenamiento en l´ınea, de los usuarios que se encuentran jugando, pueden ser enviados a un centro de recepci´on de datos que los utilice como datos del aprendizaje previo. As´ı se mejoran continuamente las distribuciones iniciales del juego y ayuda a que los nuevos jugadores tengan una mejor experiencia desde que comienzan a jugar.
Se encontr´o que las herramientas de desarrollo de videojuegos actuales como Unity 5 son lo sufi-cientemente poderosas para implementar los algoritmos por refuerzo con facilidad. Se encuentran bien optimizadas para poder correr estos algoritmos en dispositivos de bajos recursos computacionales como los dispositivos m´oviles.
Se quiere seguir trabajando sobre el sistema desarrollado para mejorar su efectividad y hacerlo m´as accesible a los desarrolladores de videojuegos. Entre los elementos que se pueden mejorar se encuentra:
• Explorar la implementaci´on de otros algoritmos de aprendizaje por refuerzo. Entre los algoritmos existentes son atractivos los de Diferencias Temporales como Q-Learning, Sarsa y Actor y Cr´ıtico debido a su r´apida convergencia y bajo consumo de recursos [12]. Otros algoritmos que se ajustan al problema son los iteradores de pol´ıtica como los m´etodos de Monte Carlo y los Algoritmos Evolutivos. Estos son m´as exigentes en recursos computaciones pero se pueden aplicar en entornos cuyo modelo no se conoce, como en el caso tratado.
• Para los desarrolladores de videojuegos es muy importante que los algoritmos implementados se encuentre bien optimizados para aumentar las im´agenes por segundo del juego y mejorar la experiencia del usuario. Es importante entonces realizar un estudio completo sobre el consumo de recursos del sistema y evaluar las diferentes maneras en que se puede optimizar.
• En el caso estudiado solo se evalu´o la efectividad del sistema sobre un tipo de juego, uno de plataforma tipo Endless Runner. Se quiere explorar la implementaci´on del sistema en otros g´eneros de juego como juegos de acci´on, de aventura, de rol, de carreras, de acertijos, de deportes, de estrategia, entre muchos otros.
• Se aspira mejorar el bloque estimador de inter´es de tal manera que aborde m´as elementos que hacen un juego interesante. Entre estos se encuentran elementos de car´acter art´ıstico como com-ponentes visuales, narrativos y auditivos. Tambi´en se quiere explorar la posibilidad de capturar informaci´on fisiol´ogica de los jugadores como la frecuencia cardiaca, la frecuencia respiratoria y se˜nales electrocardiogr´aficas para identificar las reacciones del usuario frente al juego presentado.
• Cuando se tenga un sistema funcional, eficaz y de f´acil implementaci´on se quiere explorar la posibilidad de construir paquetes completos y subirlos a las tiendas de Unity y Unreal Engine para que otros desarrolladores los puedan usar en sus videojuegos.