REDES NEURONALES APLICADAS A VIDEOJUEGOS MANUEL ESPINO LARA Vision general de la Ia en videojuegos La visión general que tiene la mayoría de la gente de la IA es la de los juegos de los años 70 y 80, tales como el pac-man o donkey kong Las primeras Ias era muy simples, pensadas principalmente para recreativas y sobretodo con el proposito de “enganchar” Estos juegos usaban unas pocas de reglas muy simples y un guión combinadas con algunas decisiones aleatorias para ser menos predecible Vision general de la Ia en videojuegos El ajedrez fue desde el comienzo protagonista en investigacion. El chessmaster 2000 del 86 ya era bastante competitivo. Usaban invariablemente árboles de búsqueda También los juegos de estrategia, por su propio estilo de juego, innovaron bastante (Civilization) Claves para el desarrollo Aumento de la capacidad del hardware En las consolas antiguas habia que elegir muchas veces entre gráficos o inteligencia artificial Técnicas como los árboles de búsqueda consumen mucha CPU Aumento de las ventas en juegos con buena inteligencia artificial frente a otros. Técnicas básicas de Ia • Aunque no todas estas técnicas se utilizan en videojuegos, no se puede conocer la IA en videojuegos sin tener al menos conocimiento de ellas Técnicas básicas de Ia Sistemas expertos: intentan emular el conocimiento de un humano dentro de un dominio muy concreto Razonamiento de caso base: consiste en comparar las entradas al sistema con una base de datos, para encontrar las salidas más probables Técnicas básicas de Ia Máquinas de estado finito: sistema basado en reglas. Conjunto de estados conectados mediante transiciones entre los estados. La máquina ocupa exactamente un estado para un momento dado Sistemas de producción: Constituido por una base de datos de reglas. Cada regla consiste en un conjunto arbitrario de sentencias condicionales y algunas acciones que se realizaran si se satisfacen las condiciones. Técnicas básicas de Ia Árboles de decisión: realiza decisiones moviendose a traves de un arbol en el que las hojas son las decisiones. Métodos de búsqueda: Consiste en descubrir una serie de estados dentro de un grafo que satisfaga alguna meta en particular. Sistemas de planificación: Extensión de los métodos de búsqueda. Técnicas básicas de Ia Lógica de primer orden: Consiste en asignar a un objeto una identidad individual y un conjunto de propiedades que lo hacen distinguirse, y una serie de relaciones para unir dichos objetos. Cálculo situacional: Usa lógica de primer orden para calcular el comportamiento del agente ante una situacion. El calculo situacional determina que acciones produciran el estado del entorno que Técnicas básicas de Ia Sistemas multiagente: Se centra en la interactuacion y cooperacion de diferentes agentes artificiales Vida artificial: Intenta aplicar propiedades universales de los sistemas vivos en agentes artificiales dentro de mundos virtuales Flocking: Subcategoria de a-life. Se centra en conjuntos de seres virtuales no independientes, a modo de rebaño Técnicas básicas de Ia Robótica: Estudia la interactuacion de las máquinas con el mundo real. Algoritmos genéticos: Imita el proceso de la evolución para conseguir solución a algún problema Redes neuronales: Técnica de aprendizaje y toma de decisiones, basada en la arquitectura de las conexiones cerebrales. Operan reajustando los pesos de las entradas a la red. Técnicas básicas de Ia Lógica difusa: usa números reales para representar grados de pertenencia a un grupo. Permite un razonamiento mucho más rico y menos brusco que la lógica clásica. Redes de confianza: Máxima expresión en las redes Bayesianas. Pueden tomar decisiones aun teniendo un conocimiento incompleto del campo que está tratando. Técnicas básicas de Ia • Son las técnicas más simples (maquinas de estado finito, árboles de decisión y sistemas de produccion de pruebas) las más usadas en el campo de los videojuegos • Los juegos de mesa usan con mucho éxito árboles de búsqueda, como puede demostrar deep blue, que ganó a Kasparov – En los juegos comerciales no se usa esta técnica ya que los mundos que representan son mucho más complejos que las reglas del ajedrez, y no Técnicas básicas de Ia Las técnicas de vida artificial, no solo se usan en muchos juegos, si no que son los protagonistas de ellos, como los SimCity, que han probado sobradamente la utilidad de estas. La lógica difusa está empezando a tener ahora un gran auge, no asi como la lógica de primer orden y el cálculo situacional, que por su rigidez, son muy dificiles de aplicar. El problema de aprendizaje de una máquina Aunque se sabe del potencia de los algoritmos genéticos y redes neuronales, estas apenas se usan. El resultado de introducir aprendizaje en los videojuegos siempre ha sido un fracaso, con juegos injugables que aprendían pobremente. Esta es la causa de que se usen tan poco, que aunque se sabe de su poder, si se aplica mal puede ser un desastre El problema de aprendizaje de una máquina Los sistemas de aprendizaje pueden aprender mal la lección. Si se aprende de un humano, y el humano juega mal, el juego aprende mal Es muy dificil conseguir el resultado deseado de un sistema de aprendizaje. Estos sistemas necesitan una función de fitness para saber si están aprendiendo bien. Es dificil conseguir una función que mida la diversión que estamos proporcionando El problema de aprendizaje de una máquina Algunos sistemas de aprendizaje, particularmente las redes neuronales, son tremendamente dificiles de modificar, testear o depurar En cierto modo, hay muchos tipos de juegos donde simplemente, el aprendizaje no tiene sentido, como los juegos de acción, donde la vida media de un enemigo es de 1 minuto El problema de aprendizaje de una máquina La otra gran parte del fracaso de estas técnicas es de la misma industria, que no es capaz de aplicar las técnicas con el mismo éxito que otras industrias, y de aplicar técnicas de aprendizaje a problemas que se resuelven mucho mejor con técnicas tradicionales, en vez de aplicarlas a agentes que realmente necesiten aprender algo El problema de aprendizaje de una máquina • El ejemplo más claro de que se puede aplicar el aprendizaje con éxito en un videojuego, es el Black & White de Lionhead, donde se demostro que se puede aplicar para aumentar la calidad de un título, asi como la diversión que ofrece La inteligencia es contextualmente dependiente Lo que aleja significativamente la IA de los videojuegos de la académica, es la búsqueda de objetivos totalmente distintos. Las mejores IAs son aquellas en las que se ha indentificado claramente que es lo que se quiere conseguir, los subproblemas que hay que resolver y cual es la mejor técnica para resolverlo. Los programadores deben meterse dentro del agente para el cual quieren dotar de inteligencia La inteligencia artificial es contextualmente dependiente Buscando el mismo éxito que han tenido juegos basados en motores como Unreal o Quake, las desarrolladoras han intentando crear motores para la IA. Esto es un error. Los graficos pueden adaptarse a muchos juegos, pero la IA debe hacerse para algo en particular. Depende mucho del género del juego. No tiene nada que ver un juego de hockey con uno de infiltración Creando inteligencia La gran mayoría de jugadores no juegan online. Hay que crear la sensación de que se los juegos se desenvuelven en un mundo rico y real. Hay que ofrecer competidores adecuados. Ventaja: Aumento de ventas (Pro Evolution Soccer frente a Fifa) Hoy en día no podemos crear inteligencia, solo podemos crear la ilusión de inteligencia. Contrastes de un jugador humano Predecibilidad e Imprecibilidad La impredecibilidad es un rasgo muy importante de la inteligencia, como hacer ataques sorpresa Los humanos también somos predecibles. En un shooter, los jugadores tienen una ruta favorita. En un juego de estrategia, se tienen una serie de pasos para empezar Este conflicto es difícil de simular. En el mismo juego un jugador puede ser previsible e imprevisible, o ser imprevisible de unas partidas a otras, pero en una en concreto ser previsible. Hay que crear ciertos rasgos aleatorios que hagan que volver a jugar sea interesante, pero también previsible Contrastes de un jugador humano Soporte A menudo, la máquina no solo controla enemigos. Hay veces que controla aliados. Las funciones que esté tiene que desarrollar no son dificiles de implementar. El problema radica en la comunicación con el humano. Se suele optar por una serie de comandos para dar ordenes concretas. Ejemplo: Resident Evil 4, con comandos como “párate” o sígueme” Contrastes de un jugador humano Imprevistos Elemento fundamental. Imprevistos difíciles de simular : la estupidez creíble Aparentemente son acciones poco beneficiosas para conseguir el objetivo, pero son acciones que perfectamente podría hacer un jugador humano. Gol en propia meta Lanzar una magia contra un oponente con efecto espejo Contrastes de un jugador humano Ganar, perder y perder bien Un jugador quiere ganar y quiere ganar en los juegos donde es posible ganar. Si ganar no se convierte en un reto, deja de ser divertido. Es muy fácil desarrollar juegos que ganen siempre. Basta con aumentar el número y calidad de oponentes. Esto afectaría la credibilidad de los oponentes. No es normal que cada vez que tiren a puerta sea gol Hay que parametrizar la dificultad para que el juego se adapte a las necesidades del 4 formas principales de usar redes neuronales Control Se puede puede usar una red para manejar una unidad motorizada, como naves espaciales o aviones. La red puede tener entradas como su posición relativa, velocidad y daños, y una salida que en definitiva es la dirección o aceleración Estas redes suelen ser entrenadas por los propios desarrolladores manejando los vehículos Collin McRae Rally maneja los coches mediante una red neuronal 4 formas principales de usar redes neuronales Valoración de riesgo En un juego de estrategia, podemos usar una red neuronal para valorar el riesgo al que se enfrenta la máquina. Las entradas de esta red podrían ser el numero de enemigos del que dispone el jugador, el numero de unidades terrestres, el numero de unidades aéreas y el rango que estas tienen Las salidas pueden ser 4 posibles riesgos que hayamos considerado. Riesgo terrestre, riesgo aéreo, ataque combinado o sin riesgo 4 formas principales de usar redes neuronales Valoración de riesgo. Con estos datos la máquina puede determinar o predecir que esta tramando el jugador y actuar en consecuencia, por ejemplo haciendo baterias antiaéreas. Este mecanismo necesitará entrenamiento dentro del juego y validación de la red, con los riesgos que eso conlleva La ventaja es que se adapta al jugador, y nos ahorramos escribir todas las posibles combinaciones a base de reglas o máquinas de estado finito. 4 formas principales de usar redes neuronales Atacar o huir Podemos usar una red neuronal para controlar los personajes que pueblan un juego de rol. La red realizará el proceso de decisión de la criatura: Atacar, huir o deambular. Podemos tener 4 entradas: numero de criaturas alrededor (para saber si vamos en grupo), puntos de salud o ataque, un indicador de si otra criatura lo ha llamado para el combate y el rango del enemigo (hay muchas más, como si el enemigo es mago o guerrero) Podemos dejar evolucionar a la red en el juego. Si tomamos una decisión y hace morir a la criatura, reforzamos otro tipo de decisión 4 formas principales de usar redes neuronales Anticipación En este caso usaremos la red para intentar predecir los movimientos de los jugadores, por ejemplo, en un juego de peleas. Presumimos que el jugador usará más a menudo la combinación de botones que más favorable le sea. La idea es entrenar la red in situ 4 formas principales de usar redes neuronales Anticipación Podemos usar una red con 3 entradas, que son los 3 últimos movimientos del jugador y una salida, la predicción del siguen movimiento que realizará. Si acertamos, reforzamos eso, si no, lo aprendemos. Si acertamos podemos reaccionar adecuadamente, agachándonos o contraatacando. Esto hace que los jugadores no se estanquen e innoven Pros y Contras • Las redes han de ser usadas en un pequeño número de problemas relacionados con el reconocimieto de patrones o predicción y toma de decisiones. • Una red puede ser vista como una caja negra util para realizar operaciones costosas, como selección de animaciones (de un jugador de baloncesto en función de que compañeros tiene cerca, sus porcentajes o el nivel de dificultad) Pros y Contras El reconocimiento de patrones puede usarse para formar parte de la IA del personaje manejado por el jugador, para que aprenda de sus movimientos y pueda interactuar solo. Aunque es muy poco común, también puede usarse la red neuronal para almacenar información, permitiendo que se siga aprendiendo durante la vida jugable de un juego. Pros y Contras Se usa poco porque no se puede controlar como va a aprender la red, y en la mayoría de los casos no se consigue el resultado esperado. Los juegos que lo incorporan, como el B&W, restringen severamente lo que el juego puede aprender, para minimizar el elemento aleatorio dentro del mundo virtual. Pros Las redes neuronales son una forma muy eficiente de encontrar relaciones abstractas entre condiciones de entrada. Pueden encontrar soluciones de funciones matemáticas muy complejas. Estas son representadas mediante los pesos de la RN. Si usamos la red dentro del juego, estamos ahorrando CPU. Pros Las redes tienen una habilidad increíble de obtener un patrón a partir de datos no lineales o impredecibles. Pueden generalizar conexiones y relaciones entre datos que aparentemente no la tienen. Una red bien entrenada y diseñada puede generalizar incluso mejor que un humano experto. El entrenamiento requiere, una vez que la red ha sido determinada y los casos preparados, una pequeña fracción de CPU Contras Tienen el gran problema del entrenamiento, del cual dependerá en gran medida su desempeño. Hemos cambiado el problema de como resolver algo, a como entrenar la red para que lo resuelva, algo bastante complicado Si introduces datos erróneos, la red los asimilará. Si se usan entradas aleatorias o falsas, la red encontrará alguna correlación entre datos erróneos. Estas incorrecciones solo se suelen descubrir al final del todo, o peor, con el producto ya en la calle. Contras Una RN es una caja negra matemática, por lo que es muy difícil o prácticamente imposible depurarla. Una vez entrenada, los pesos dentro de la red son totalmente incomprensibles. La información dentro de la red esta distribuida de forma total. Depurarla puede implicar volver al principio, cambiar los datos de entrenamiento o los parámetros iniciales, y volver a entrenar Contras Todos los campos tienen que ser numéricos Los valores difusos o los que se representan mediante una expresión no pueden modelarse. Las redes son difíciles de implementar, debido al gran numero de factores que intervienen y sin ninguna guía o regla de como determinarlos de la mejor manera. Estructura de la red, entradas y salidas, función de activación, tasa de aprendizaje, casos de entrenamiento.... Contras Las redes sufren muchas veces el llamado aprendizaje catastrófico. Con una red casi terminada de entrenar se le introduce entrenamiento adicional que deshace todo lo aprendido. Las redes son difícilmente ampliables, y funcionan mal con muchos nodos. Este problema en videojuegos no es importante porque no se necesitan nunca redes grandes Algunos juegos que usan RN • Battlecruiser: 3000 AD – Primer juego comercial que usaba RN en su IA. – Tipico matamarcianos. Las naves estaban manejadas por una red neuronal – El resultado dejo mucho que desear Algunos juegos que usan RN • Creatures – Junto a los Sim, probablemente la serie que más técnicas de IA usa. Tiene sentido dado al objetivo del juego: Ver como se comportan las criaturas que pueblan el juego. – El juego se basa en enseñar a los Norns. No podemos manejarlos, solo podemos interaccionar con ellos mediante el mundo que pueblan. Estos aprenderán a lo largo del juego. Si aprenden bien, se reproducirán Los Norns pueden aprender unos de otros. – Este aprendizaje se hace mediante RN Algunos juegos que usan RN Algunos juegos que usan RN • Close Combat. – El juego consiste en conquistar una serie de puentes ayudados por un batallón. – Este juego iba a ser el primero en introducir cooperación entre IA construidas mediante redes neuronales. – Al final desecharon la idea, lo cual demuestra lo difícil que es implementar este tipo de técnicas, y acabaron usando técnicas más tradicionales Algunos juegos que usan RN • Dirt Track Racing. – Juego bastante malo a nivel global. Lo interesante es que fue el primer juego de carreras en controlar los coches mediante redes neuronales Algunos juegos que usan RN • Dynamic Gin – Juego de tablero para PC. – Integra una red neuronal que le permite aprender del jugador, para contrarrestarlas, y para usarlas en el futuro para su propio beneficio Algunos juegos que usan RN • Fields of Battle – Juego de estrategia cuyo objetivo es controlar el mapa de Europa. – La Ia del juego esta totalmente sobre las redes neuronales. Las usa para todo, para gestionar recursos, negociar con el jugador humano, manejar tropas, etc... Algunos juegos que usan RN • Heavy Gear – Juego de combate táctico en el que manejamos a unos robots. Cada robot tiene una serie de cerebros (redes neuronales) que maneja un aspecto del comportamiento del robot. Se permitió que la red aprendiera a lo largo de la vida del juego. Algunos juegos que usan RN • Third Reich – Otro ejemplo de querer y no poder. – El juego iba a usar las redes neuronales para identificar la estrategia del jugador y elegir la mejor manera de actuar respecto a esto. – La red iba a ser entrenada un par de años mediante cientos de estrategias y partidas. – La red nunca aprendió satisfactoriamente. Su comportamiento era impredecible, aleatorio y muy inestable. Se perdieron miles de horas de trabajo y mucho dinero Algunos juegos que usan RN • Third Reich – Sucesos como este han hecho que los productores y los desarrolladores tengan miedo al uso de las redes y a sus posibles efectos negativos Consideraciones de diseño y conclusiones Tipos de soluciones: Las RN son adecuadas cuando tienes sistemas simples y modulares. Son mucho más usadas para problemas simples que para complejos No recomendadas para tareas demasiado complejas, como manejar la diplomacia en un juego de estrategia Controversia entre autores. Algunos dicen que las redes están siendo infravaloradas, y usadas en problemas menores. Consideraciones de diseño y conclusiones Interacción del agente Las redes neuronales pueden optimizar el uso de la CPU. Su uso puede hacer que los agentes reaccionen más rápidamente ante los estímulos. Esto era interesante hace unos años, pero con el hardware actual, no es algo que preocupe mucho actualmente Consideraciones de diseño y conclusiones Realismo del sistema Las redes neuronales ayudan al sistema a parecer mucho más realista. Ser sistemas de reconocimiento de patrones los diferencia bastante en cuanto a funcionamiento de las máquinas de estado finito o los basados en guiones Estas actúan de manera específica a un escenario dado Consideraciones de diseño y conclusiones Género y plataforma Esto no es un factor limitante. Los problemas abordables por RN están presentes en todas los géneros, aunque en unos más que en otros Consideraciones de diseño y conclusiones Limitaciones de diseño Las redes necesitan un gran esfuerzo para diseñar la red y recopilar los casos de entrenamiento Se requiere de un periodo de significativo para entrenarla y para ponerla a punto Si se opta por permitir que el juego aprenda durante la vida real del juego, el periodo de diseño será aun más grande Bibliografía Brian Schwab. AI Game Engine Programming. Charles River Media. 2004. Steve Rabin et Al. AI game Programming Wisdom. Charles River Media. Mat Buckland. AI Techniques for Game Programming. Premier Press. 2002. Mat Buckland. Programming Game AI by Examples. Wordware Publishing. 2005. Bibliografía En internet: www.gameai.com www.ai-depot.com www.gamedev.net www.gamasutra.com/