Simulación de comportamientos inteligentes en entornos virtuales interactivos por: Agustí Sancho Martínez [email protected] Mayo de 2008 53329642W 1 Índice de contenido 1. Introducción......................................................................................................................................3 2. Áreas de la inteligencia artificial involucradas.................................................................................4 2.1 Búsqueda heurística...................................................................................................................4 2.2 Búsqueda local...........................................................................................................................4 2.3 Aprendizaje automático.............................................................................................................5 2.4.1 Redes neuronales................................................................................................................5 2.5 Agentes inteligentes...................................................................................................................7 2.5.1 Agentes BDI.......................................................................................................................8 3. Entorno, contexto y representación................................................................................................10 4. Aplicaciones prácticas....................................................................................................................12 4.1 Halo: Combat Evolved.............................................................................................................12 4.2 Halo 2.......................................................................................................................................17 4.3 Halo 3.......................................................................................................................................19 4.4 Black & White.........................................................................................................................20 5. Bibliografía.....................................................................................................................................24 2 1. Introducción Uno de los pasatiempos más extendidos por el ser humano es la pasión por superarse a si mismo y a sus semejantes mediante la competición. Este hecho no es ajeno al mundo de la ingeniería informática, que ya en el año 1952, cuando esta rama de la ingeniería comenzaba a florecer, todavía limitado al ámbito académico y militar, una de las primeras interacciones entre un computador y una persona, OXO (desarrollado por Alexander S. Douglas), se convirtió en una competición por saber quien jugaba mejor al popular juego 3 en raya. Y es que la popularización de la informática orientada al entretenimiento a permitido, no solo desarrollar un mercado que aporta hardware cada vez más potente y permite la interacción de los usuarios con mundos más complejos, sino que ligada a este constante incremento de la complejidad, se ha visto incentivada el área de la ingeniería informática que trata de simular la inteligencia, la inteligencia artificial, para proporcionar a los usuarios de mundos virtuales interactivos entidades y personajes que simulen un comportamiento inteligente y con los que podamos interactuar, desde ejércitos que liderar, seres extraños con los que conversar hasta mascotas virtuales con las que crear una relación de empatía. La inteligencia artificial ha estado ligada a este desarrollo de los mundos virtuales interactivos, sobretodo en el ocio, para intentar saciar las ansias de los usuarios por vivir nuevas experiencias mediante la interacción con entidades inteligentes. De competir por ganar a una máquina en un tablero en 3 en ralla a liderar en la batalla a cientos de miles de soldados en reproducciones virtuales históricas. Este salto ha requirió años de investigación y desarrollo, tanto de tecnologías como de nuevas técnicas de inteligencia artificial. Uno de los mayores retos de este proceso fue encontrar rivales inteligentes. Y cuando hablamos de inteligentes no nos referimos a capaces de derrotarnos siempre, sino de simular un comportamiento de un ser inteligente, con sus virtudes, su capacidad de improvisar y aprender, sus debilidades,... Así en el ámbito del ocio electrónico, una misma aplicación interactiva, de un mismo género de la década pasada, la encontrábamos con rivales omnipresentes, con un conocimiento total de nuestros movimientos, de nuestra presencia y de habilidades perfectas. Como hacer pues que resulte un reto digno de atraer nuestra atención y permitir que los usuarios lo sientan como un reto posible y deseable? Ese juego de décadas pasadas haría trampa consigo mismo, haciendo errar a propósito a sus legiones de entes virtuales. Algo demasiado evidente y nada “inteligente”. Pero la evolución del hardware y la inteligencia artificial ha posibilitado que a día de hoy, realmente nos encontremos con rivales virtuales que supongan un reto, un reto inteligente, no uno imposible ni fruto de restricciones auto­impuestas. Hoy en día, y gracias a los nuevos paradigmas de IA, podemos encontrar entes virtuales débiles, fuertes, que planean, conspiran, se anticipan, fallan , se coordinan, interaccionan entre ellos y con nosotros. En definitiva, ha comenzado el camino para encontrar un rival con el que olvidemos el significado de “simulación” y nos dejemos llevar por la interacción, olvidando que lo que tenemos delante no es más que software. En las siguientes páginas, haremos un repaso por las diferentes técnicas de inteligencia artificial que se utilizan en la simulación de comportamientos inteligentes, veremos como el entorno, el contexto y la representación condicionan el éxito de una simulación y para finalizar, repasaremos unos 3 cuantos casos prácticos, es decir, aplicaciones interactivas que hacen un uso exhaustivo de la IA para crear experiencias interactivas atractivas para las personas. 4 2. Áreas de la inteligencia artificial involucradas Las aplicaciones interactivas, y en concreto los videojuegos, han empleado y emplean, muchas y diversas técnicas del ámbito d ella inteligencia artificial. Debido a que estas aplicaciones suelen tener requisitos muy dispares en función de la interacción con el usuario que los desarrolladores quieran dar, no todas estas aplicaciones usan una técnica concreta, sino que integran en un mismo sistema aquellas que necesitan para simular comportamientos en función del entorno interactivo. Es por eso que vamos a repasar las áreas de la inteligencia artificial más utilizadas, sin contar con los primeros pasos de este tipo de aplicaciones, donde la simulación se limitaba a funciones de tipo lógico, con secuencias predeterminadas y bucles de comportamiento. 2.1 Búsqueda heurística La búsqueda heurística es un algoritmo de búsqueda que trabaja sobre una representación en forma de árbol. Se utiliza una función de evaluación que mide la distancia estimada a un objetivo, guiando así el algoritmo por el árbol de la representación hasta obtener una solución de existir esta. Esta función de evaluación g(n), en función del tipo de búsqueda heurística que estemos realizando recibirá unos parámetros u otros. En la simulación de comportamientos es muy utilizado el algoritmo de búsqueda heurística A*. A* se utiliza para encontrar el camino más corto entre un punto inicial y un punto de destino mediante una función de evaluación que tiene en cuenta el coste del camino realizado y una función heurística que proporciona una estimación de lo que cuesta llegar. Un ente virtual que interacciona con el entorno debe desplazarse por él y, por ejemplo, en el caso de una persona simulada en un entorno natural, este dispone de un estanque de agua detrás de una montaña, con un túnel y además un camino que la rodea. Si desea beber antes de morir de deshidratación deberá acudir a la fuente lo antes posible, y el algoritmo A* es una forma eficiente de conseguir decidir que camino seguirá hasta alcanzarla, si por el túnel o dando un rodeo. 2.2 Búsqueda local Los algoritmos de búsqueda local trabajan con un espacio de soluciones, y de estas, siempre tratan de obtener la mejor. El algoritmo trabaja a partir de una solución inicial, que, mediante una serie d operadores,modifica, obteniendo así un conjunto de soluciones posibles que, mediante una función que evalúa su calidad, elige una. Este proceso se realiza hasta encontrar la mejor solución que podemos obtener o hasta una cota que se le imponga al algoritmo y que interrumpe su búsqueda. Estos algoritmos son muy utilizados en la simulación de comportamientos en entornos interactivos. Un claro ejemplo de ello lo encontramos en simulaciones en juegos de estrategia, donde el “general” artificial que controla las tropas enemigas genera una serie de soluciones de ataque 5 posibles y de entre ellas, selecciona la mejor que es capaz de obtener para diezmar nuestras tropas mediante búsqueda local. Hay que señalar que, la solución encontrada, en este caso un ataque, será la mejor que puede obtener la IA del adversario, ya que la búsqueda local no es capaz de encontrar el óptimo y la calidad de dicho ataque estará en función de la pericia de los ingenieros que hayan diseñado los operadores y la función de evaluación, así como del tiempo disponible para obtenerlo. 2.3 Aprendizaje automático Este área es una rama de la Inteligencia Artificial. Su principal objetivo es desarrollar técnicas que permitan a un software aprender. Muchos problemas que la ingeniería informática debe solucionar son de clase NP­Hard (realmente costosos de solucionar), por lo que las aplicaciones desarrolladas en aprendizaje automático están enfocadas al diseño de soluciones viables a esos problemas. El Aprendizaje Automático tiene una amplia gama de aplicaciones, incluyendo motores de búsqueda, diagnósticos médicos, detección de fraude en el uso de tarjetas de crédito, análisis del mercado de valores, clasificación de secuencias de ADN, reconocimiento del habla y del lenguaje escrito, juegos y robótica. En este tipo de sistemas, el usuario aportará su intuición y su conocimiento en la interacción con el sistema, ya que, a pesar de que una parte del aprendizaje se realiza de forma ajena al usuario, con datos que el sistema procesa, la intuición y los conocimientos que un ser humano puede aportar no pueden ser simulados. El aprendizaje automático se basa en el modelo humano de aprendizaje, donde un ente, en este caso la inteligencia artificial, es capaz de: – recoger información de su entorno, asimilarla, creando una base de conocimiento – deducir o razonar una solución a partir de esa base que “recuerda” – realizar la acción que ha concluido llevar a cabo Este tipo de solución es ideal cuando, se dispone de una cantidad de datos demasiado elevada para ser tratado por los usuarios, ya que el aprendizaje automático, supervisado por un ser humano, es capaz de, una vez establecidos atributos que identifiquen la información, la clasifiquen y se apliquen decisiones sin la necesidad de que un usuario deba interceder. De esta forma, a partir de un gran volumen de información, con un asesoramiento humano mínimo, el aprendizaje automático nos ofrece una solución personalizada en función de nuestra interacción. Dentro del ámbito de la simulación de comportamientos, esta técnica es muy útil cuando disponemos de un ente, que es capaz de realizar una serie de comportamientos e interacciones con su entorno y los entes que lo pueblan muy grande. Esta serie de comportamientos que pueden realizar, en ocasiones pueden ser contradictorios y es ahí, en la selección donde el aprendizaje automático es capaz de, mediante la interacción de un usuario, crear estructuras que permitan seleccionar estas conductas con su entorno y así tejer un ente con un “personalidad” tan rica como permita el conjunto de comportamientos que se le suministren. 6 2.4.1 Redes neuronales Las redes neuronales son una técnica empleada en el campo de la inteligencia artificial basada en la simulación de la estructura del cerebro y en su funcionamiento por estímulos. Su objetivo es similar a los sistemas expertos. Partimos de la necesidad de representar el conocimiento, pero en vez de hacerlo mediante la obtención de reglas, las redes neuronales utilizan un método inductivo, es decir, el aprendizaje mediante ejemplos. Es por esto, que son mas adecuados para reconocer patrones, solucionar problemas de optimización o clasificación. Esta técnica utiliza una estructura de datos, que se denominan neuronas, que se interconectan entre si como un grafo dirigido. Sobre ellas se aplican dos tipos de funciones, la función de propagación, que podríamos encontrar símil en la biología como la interpretación de un estímulo, ya que ésta puede excitar o inhibir las conexiones entre neuronas y las funciones de transferencia, que son las encargadas de acotar e interpretar la salida de la neurona. Las redes neuronales se basan en modelos matemáticos. En esencia, las neuronas están “entrenadas” para realizar una función matemática concreta y poder así, entre toda la red, obtener resultados. Podríamos imaginarla como cientos de pequeñas CPUs que realizan una función concreta. Este proceso se realiza mediante algoritmos de aprendizaje, de los que hay dos tipos, los no­ supervisados, y los supervisados, donde el aprendizaje que realiza la red es supervisada por un usuario,que suministra decisiones que la red no es capaz de aprender por si misma, ya que la intuición todavía no es posible de simular adecuadamente y así poder compensarla. Así, el usuario suministra a la red una entrada de información y una seria de instrucciones de como se espera que actúe La estructura de una neurona artificial es: donde la entrada que recibe es el la suma de activaciones de entrada multiplicadas por sus pesos respectivos: ent i = W i , j a j=W i . ai i Donde ai son los valores de activación de la neurona i y W i los pesos que conducen a la neurona i. Cuando se construye una red neuronal para solucionar un problema, es necesario saber el número de neuronas que van a ser necesarias, que tipo es necesario y como se conectarán formando una red. Deben inicializarse los pesos de las neuronas y se les da la posibilidad de admitir un algoritmo de aprendizaje sobre ellos, aplicándolo a un conjunto de ejemplos. También será necesario decidir como se codificarán estos ejemplos. Actualmente podemos encontrar 2 tipos de redes neuronales en función de su estructura. Éstas son: – Redes de prealimentación Las conexiones son unidireccionales y no hay ciclos. Las neuronas están organizadas por capas o niveles y las neuronas solo se conectan con otras del nivel siguiente. El primer nivel contará con nodos de notificación de activación y el último con el nodo de salida. 7 Red neuronal de prealimentación – Redes recurrentes Estas redes son más parecidas a como funciona nuestro cerebro. Las redes recurrentes están compuestas por conexiones entre neuronas bidireccionales. Esto hace que permitan la implantación de sistemas con agentes más complejos que con las redes de prealimentación, pero son mucho más costosas que esas a la hora de obtener el resultado a un problema y pueden volverse caóticas y dificultar el aprendizaje. Un modelo de red recurrente muy divulgad son las redes Hopfield que tienen conexiones bidireccionales con pesos simétricos. Otra característica interesante de este paradigma de programación es la que ofrece su estructura paralela, ya que las neuronas artificiales pueden entenderse como CPUs que conforman una red, y este modelo puede ser aprovechado por hardware específico, diseñado para procesar en paralelo y poder así trabajar con grandes redes neuronales en tiempo real. Dentro del ámbito de la simulación de comportamiento esta técnica todavía se utiliza poco a pesar de su gran utilidad. Son pocos los programas interactivos que los utilicen pero por lo general se utilizan para simular acciones y comportamientos y definir la personalidades de entes virtuales (como una mascota por ejemplo). En estos casos, los nodos de activación del cerebro serán activados por los estímulos externos que el usuario o otros entes le proporcionen, activando así la red neuronal y obteniendo una respuesta. 2.5 Agentes inteligentes Los agentes inteligentes nacen de la necesidad detener un método con el que abordar cualquier problema que pueda ser resuelto mediante la inteligencia artificial. Podríamos definirlos como entes que se dividen las tareas necesarias para resolver un problema. Mediante los sistemas basados en agentes inteligentes podemos abordar las diferentes áreas de ésta relacionándolas entre si. De esta forma, la representación, la búsqueda y resolución de problemas, el aprendizaje automático, el razonamiento y la IA distribuida pueden ser abordadas con este paradigma. Los agentes funcionan de forma independiente, pero entre ellos deben poder comunicarse con tal de abordar un problema intercambiando información. Un agente estará en constante búsqueda de los datos necesarios para llevar a cabo su función gracias a su capacidad de contemplar su entorno 8 (dentro del contexto en el que se encuentre claro) y de responder ante éste. Estas características propias de los agentes pueden obtenerse mediante 3 métodos diferentes: – Arquitecturas Deliberativas Las arquitecturas deliberativas se definen por como representan el mundo real y como se realiza la decisión con esa representación. El comportamiento y conocimiento del mundo que tienen los agentes están representados mediante un conjunto de símbolos físicos, es decir un conjunto físicamente realizable de entidades y estructuras. Además de esto en la arquitectura deliberativa las decisiones de los agentes son hechas mediante razonamiento lógico. Los principales problemas a la hora de abordar este diseño serán la forma en que representemos el mundo real mediante una representación simbólica y como éstos razonarán. Mediante la arquitectura deliberativa se pueden obtener los agentes BDI, que utilizan como razonamiento una rama de la filosofía llamada razonamiento práctico. – Arquitecturas Reactivas Las arquitecturas reactivas son aquellas que no hacen uso de un modelo simbólico del mundo y no usa un razonamiento simbólico. Los agentes toman decisiones a partir de una lista de comportamientos que, mediante percepciones externas, desencadenan en una serie de reacciones a éstas. Es la responsabilidad del agente seleccionar cual de estas posibles acciones realizar. Esta clase de arquitectura también es llamada alternativa, ya que surgió como una opción a las arquitecturas deliberativas que presentan problemas que en ocasiones no se pueden solucionar y además se aleja de la representación del conocimiento mediante un modelo simbólico. – Arquitecturas Híbridas Las arquitecturas híbridas nacen de las voces críticas con las dos arquitecturas citadas anteriormente, que creen que ninguna de las dos termina por obtener resultados satisfactorios del todo. De esta forma,la arquitectura híbrida opta por una estructura en capas, donde la arquitectura reactiva y reactiva se combinan para obtener, en principio, las ventajas de ambos diseños y evitando sus inconvenientes. 2.5.1 Agentes BDI Los agentes BDI actúan creando un modelo que define que acciones se desean realizar para obtener un fin y como los vamos a obtener. En ese camino intervienen la visión del mundo del agente (las creencias), que posibilidades tengo según estas (deseos) y que objetivos voy a lograr (intenciones). El funcionamiento de una agente BDI sería el siguiente: 9 Revisión de creencias Creencias Generación de opciones Opciones Generador de objetivos Selección de acciones Objetivos ? Ac ció n Diagrama de funcionamiento de un agente BDI Como vemos en el diagrama, el agente tiene una visión del mundo que va actualizando. A partir de ella, se extraen las opciones de que dispone para realizar sus deseos para después, a partir de éstos y del entorno que le rodea generar los objetivos que desea lograr. De todos ellos, mediante una función de selección, el agente escoge el objetivo a realizar, traduciéndolo en una acción que realizará. Dado el posible estado cambiante del entorno de un agente BDI (sobretodo en aplicaciones interactivas) éste debe revisar su visión del mundo, para poner al día sus objetivos y las acciones que debe realizar. Ésto supone un problema, ya que en función del volumen de información con la que el agente trabaje, actualizar los objetivos/acciones puede ser muy costoso, así que debe buscarse un equilibrio en la frecuencia de este proceso, determinado por el contexto en el que se encuentra el agente. 10 3. Entorno, contexto y representación En la simulación del comportamiento en entornos interactivos disponemos de entes virtuales que pueblan un “mundo”. Es este mundo el que las personas podemos entrar y es el objetivo de la inteligencia artificial que el usuario realmente crea que forma parte de él. Este propósito se intenta conseguir mediante la interacción de los pobladores virtuales entre ellos y con su propio entorno. ¿Todos se comportaran siguiendo las mismas reglas? Bueno, eso estará en función de la complejidad del entorno y del contexto. Esto es fundamental para que la simulación tenga éxito en su misión, porque supongamos que accedemos a un mundo virtual compuesto por una habitación cerrada, completamente vacía de otos elementos que las paredes, el suelo y el techo. Aquí tenemos el entorno. Y lo pueblan dos entes, uno representa un pez, y otro un gato. El pez es capaz de nadar por el entorno buscando plancton y el gato es capaz de dormir y pasearse por el entorno. Evidentemente ante tal representación, para el usuario esos entes virtuales no serán creíbles, porque a no ser que estemos hablando de un pez mágico (y no es el caso) este solo debería de nadar sobre el agua, y al estar en una habitación sin ella, debería estar tendido en el suelo muerto. Con este ejemplo intento explicar la importancia del entorno, ya que este determina y condiciona la simulación del comportamiento. Supongamos ahora que el pez esta en una pecera, el gato sigue dando vueltas tranquilamente y durmiendo. Podríamos pasarnos horas observando y en ningún momento el gato tendría hambre e intentaría comerse al pez. Este es otro ejemplo con el que quiero mostrar la importancia del contexto, pues estaríamos simulando el comportamiento de un animal común y como tal, un gato no puede ignorar la apetitosa presencia de un pez. Así, el contexto del mundo que se desea representar condiciona también la simulación del comportamiento. Estas restricciones de entorno y contexto comportan que las técnicas y métodos para realizar una simulación sean completamente diferentes entre aplicaciones y que éstas al final utilicen diferentes técnicas (algunas de ellas citadas en el apartado 2), imposibilitando así una solución definitiva o general para este tipo de aplicaciones y necesitando un estudio exhaustivo de que es lo que se quiere representar. Así, la inteligencia artificial que domina a un gato en una aplicación en el que somos un ratón intentando saquear una despensa, donde éste intentara terminar con nuestra vida, no será la misma que si ese gato se encontrase en un juego donde debemos gestionar una granja. Evidentemente en la granja el gato no intentaría acabar con nosotros teniendo en cuenta que le suministramos el alimento. Otro punto importante en la simulación de comportamientos es la representación que se ofrece de ellos. En una aplicación interactiva donde el usuario observa como se comportan sus pobladores e interactúa con ellos, no solo es necesario que éstos sean capaces de saber como comportarse, también es vital para el éxito de la simulación que ésta sea reconocible por el usuario. Un ejemplo muy claro lo encontramos en el clásico juego PAC­MAN, donde controlamos a un simpático personaje con forma de pizza que come bolitas y que es perseguido por un escenario laberíntico por unos fantasmas. En el escenario existe una bolita más grandes que el resto, que le daba al personaje la capacidad d engullir a los fantasmas que le persiguen. Éstos, entran en pánico y huyen de nosotros, cambiando su apariencia por una cara de pavor. Si este cambio de apariencia, para manifestar y hacer comprender al usuario que estos entes tienen “miedo”, los fantasmas hubiesen huido de nosotros de todos modos, pero para el usuario puede pasar desapercibido. Este 11 ejemplo resalta la importancia de la representación de los comportamientos de los entes virtuales y como su manifestación externa es muy importante para que el usuario realmente crea y comprenda que éstos son inteligentes y son capaces de manifestar y realizar comportamientos artificiales Oto ejemplo igualmente bueno lo encontramos en un juego ambientado en la segunda guerra mundial, donde el usuario lanza una grande hacia un comando alemán y estos, que han detectado la amenaza se alejan de ella. Si esta pequeña muestra de inteligencia estuviera dentro de una gran batalla donde se le exige al usuario un esfuerzo al haber muchos focos de atención, tal vez pasase desapercibida la muestra de inteligencia, pero simplemente añadiendo una frase preestablecido como “Cuidado una granada, todos al suelo!” el jugador seria consciente del comportamiento de los entes virtuales ante su interacción. Y para hacer más creíble la experiencia, entraría en juego el contexto, donde la frase antes mencionada debería estar en perfecto alemán, haciendo todavía más creíble que esos entes virtuales son realmente soldado alemanes. 12 4. Aplicaciones prácticas Después de haber repasado las diferentes técnicas utilizadas en la simulación de comportamientos en entornos virtuales y explicar los factores que determinaran el éxito de la simulación, es decir, el entorno, el contexto y la representación de ésta, vamos a analizar una serie de implementaciones de motores de inteligencia artificial en aplicaciones interactivas. Hay mucha variedad actualmente de este tipo de aplicaciones que el público en general puede disfrutar y es que el mayor evolución de este tipo de tecnología, la inteligencia artificial en entornos virtuales, ha evolucionado de forma más palpable en la industria del ocio electrónico. Son los videojuegos el software que más uso ha hecho de la inteligencia artificial y dado el gran capital que mueve esa industria, siempre intentando superarse para ofrecer a los usuarios nuevas y más realistas experiencias, es de entender que mucho del esfuerzo por parte de os ingenieros de software se haya centrado en este campo. He seleccionado 4 videojuegos, 3 de ellos pertenecientes a la saga Halo obra del estudio norteamericano Bungie y el juego Black&White, obra del estudio inglés LionHead, capitaneado por Peter Molyneux. Evidentemente, el último capítulo de la saga Halo es el que presenta la IA más perfeccionada, pues los 3 capítulos de esta saga han ido mejorando la inteligencia artificial sobre los pilares que asentó la primera parte, pero me ha parecido muy interesante explicar los 3 para comprobar como se ha ido perfeccionando una inteligencia artificial que actualmente, es considerada por muchos una de las mejores implementaciones en un videojuegos que simula comportamientos inteligentes mediante agentes inteligentes de tipo reactivo. La otra obra que paso a analizar, Black&White, a pesar de ser un título de 2001, aplico una serie de conceptos sobre el aprendizaje automático totalmente inéditos en el sector del ocio electrónico con grandes resultados que aun hoy en día pocos estudios han podido volver aplicar. Para ese fin se hizo uso de agentes inteligentes BDI y de redes neuronales. 4.1 Halo: Combat Evolved En Halo: Combat Evolved, desarrollado por Bungie el 2002, encarnamos el papel de un marine espacial de la clase Spartan que debe luchar contra un ejercito alienígena en el futuro. Este ejercito está compuesto por diferentes razas de toda la galaxia, con formas y personalidades muy diferentes, que siguen una extraña religión que les impulsa a perseguir y aniquilar nuestra especie. En el desarrollo del juego nos encontramos en un misteriosos mundo anillo que esconde nuevas especies, tanto mecanoides como biológicas que serán nuestros aliados o nuestros enemigos, tanto de nuestra especie, los humanos, como del peligroso Pacto. Halo: Combat Evolved es un juego que se desarrolla en primera persona, en el que disponemos de un arsenal de armas que cualquier ser de cualquier especie puede utilizar si esta dotado para ello, en el que tanto nosotros, como nuestros aliados, como el enemigo es capaz de utilizar vehículos y en el que se suceden grandes batallas con las que interactuar en las que participan hasta 50 entidades virtuales de bandos diferentes de más de 10 especies. Los logros de este juego en la inteligencia artificial son muchos pero vayamos por partes. 13 Uno de los pilares de la IA de Halo:Combat Evolved es el uso de marcadores en el entorno y en sus pobladores. Podríamos definir los marcadores como una estructura de datos que contiene una posición y un atributo que define a que está asignado, ya sea a un enemigo, a un aliado, a una roca que puede usarse de cobertura, a un puente, a diferentes zonas de una plataforma, etc. Los marcadores tienen como objetivo la catalogación del entorno y sus pobladores para optimizar los cálculos de la inteligencia artificial y para tener un conocimiento de todo lo que rodea la acción sin costosos cálculos y con una total percepción de este n función del contexto del juego, que en este caso se trata de un juego de disparos. Los marcadores son introducidos en el sistema por diseñadores, es decir por personas, que son capaces de interpretar en función del contexto que marcadores deben ser introducidos y de que tipo. Esta solución difiere de otros títulos que mediante funciones matemáticas realizaban una precarga de los entornos y asignaban este tipo de marcadores en función de uso criterios, siendo la máquina la que decidiría asignarlos. Al relegar esta tarea a los diseñadores, se tiene un control mayor sobre las reacciones de los entes virtuales y la variedad de marcadores así como la correcta asignación mediante la experimentación, dando así mejores resultados de cara al usuario en la simulación del comportamiento. Gracias a este sistema, podemos ver por primera vez en Halo: Combat Evolved como los enemigos o nuestros aliados, cuyo perfil como raza les atribuye una mayor inteligencia militar, son capaces de colocarse en situaciones ventajosas para el ataque, esconderse para tender emboscadas, refugiarse el fuego enemigo poniendo muros, piedras, etc. entre los dos, etc. Ejemplo de uso de los marcadores en Halo: Combat Evolved para clasificar el entorno donde se desarrolla la acción El uso de marcadores para individuos permite que, mediante el ahorro de procesado que conllevan, pueda ser posible proporcionar a un ente virtual una autentica percepción de su entorno. Si nos 14 fijamos en obras anteriores de otros estudios pero de un genero similar, la máquina “hace trampa”, es decir, los entes amigos o enemigos saben todo lo que esta pasando en cualquier momento, tienen un conocimiento realmente total de su entorno, mientras que en Halo, gracias a los marcadores, los entes virtuales realmente son conscientes del entorno que son capaces de percibir por sus propios sentidos (los sentidos que tenga su especie claro). Así y a diferencia de juegos anteriores, si cogemos a un enemigo de espaldas, podemos posicionarnos para acabar con el, porque nuestra presencia no será detectada, en vez de tan solo por estar en el mismo entorno, saber el de nuestra existencia, algo que sería contradictorio con una correcta simulación de comportamiento. Ejemplo de uso de los marcadores en Halo: Combat Evolved para recoger la percepción de los entes virtuales Otro gran logro de este título es el conseguido por la representación de comportamientos. Con la premisa de que se están modelando las inteligencias de múltiples especies, cada una con diferentes comportamientos y de que éstos deben ser claros para el usuario, el uso de la representación de los comportamientos se da en todas las razas mediante expresión corporal y/o oral. Así, nos encontramos con una raza en el juego de pequeños soldados cuya raza tiene tendencia a entrar en pánico y huir. Así, si terminamos con el líder de un escuadrón, los subalternos que suelen ser de esa raza entraran en pánico, comenzando a gritar y soltando frases como “Huid! Nos va a matar” agitando los brazos y corriendo todos los individuos en direcciones dispares, transmitiendo realmente una sensación creíble y lógica para su especie, haciendo que el usuario averigüe una característica de un especie de entes virtuales y haga una asociación de un estado humano como es la cobardía y el pánico a un ente virtual. 15 Soldado de clase Grunt huyendo de un atacante Otro ejemplo del uso de la representación lo encontramos en la especie enemiga Elite, que podríamos definir como soldados disciplinados y muy inteligentes. Son la especie más diligente y que utiliza táctica más elaboradas. Estos soldados utilizan una especie de campo de energía, que una vez hemos descargado muchos proyectiles sobre ellos desaparece y es solo entonces cuando podemos terminar con ellos. Estos escudos se regeneran en unos segundos, así que los elites que es una de las especies más inteligentes, intentará cubrirse para recuperar su escudo si se ve apoyado por otros compañeros. Pero si se encuentra solo o no se ve incapaz de escapar puede enloquecer y lanzarse contra nosotros a pesar de su vulnerabilidad, para intentar acabar con nosotros. Para representar este estado de locura transitoria, el elite comenzara a gritar y a maldecir para después lanzar directamente sobre nosotros desesperadamente y obviando toda alternativa más elaborada. Aquí Bungie consigue atribuir un comportamiento ilógico pero propio de especies inteligentes como los seres humanos, haciendo todavía más creíble que el modelado en 3d que estamos viendo es realmente un ser alienígena con inteligencia y personalidad propia. Soldado de la clase Elite enloquecido por un ataque enemigo Pero el principal logro de Halo: Combat Evolved en la inteligencia artificial es como han logrado implementar un sistema que englobe tantas especies diferentes, con personalidad propia en un mismo entorno y que son capaces de interactuar con éste y con los seres y objetos que lo pueblan. Esto se consigue mediante una máquina de estados que será la encargada de, mediante las entradas que recoge un ente del mundo que le rodea, realizar una acción en consecuencia. 16 Esquema del “cerebro” de un ente de Halo: Combat Evolved Como vemos en la figura, el actor o ente virtual tiene una serie de entradas que recibe del exterior, estas situaciones son analizadas y convertidas a una estructura que la inteligencia artificial pueda comprender. Este análisis de la situación es llevado a el bloque de decisión lógica, donde la inteligencia artificial decidirá que debe hacer el actor a continuación y buscando la acción en una lista prefijada para finalmente, materializarla. Esta decisión lógica se realizará en función del ciclo de comportamiento de un ente (que incluye los estados Ataque, Búsqueda y Relax) y los comportamientos que éste realiza. Esquema de la decisión lógica 17 Como podemos ver en el esquema,los comportamientos (behaviors) y el estado del ente son suministrados a una caja negra, que decidirá que acción de la colección se debe realizar. Esta caja negra es diferente para cada especie. De esta forma, las acciones que realizarán las diversas especies no serán iguales a pesar de tener las mismas entradas. Así por ejemplo y citando las dos especies del ejemplo anterior, el cobarde Grunt y el soldado implacable Elite, estas dos especies si reciben dolor y están en estado de ataque, la máquina negra de los Grunts decidirá realizar la acción flee (huir) mientras que con las mismas entradas la máquina de un Elite optará por (Hide) cubrirse. Así la máquina negra en función de la especie, el estado actual del actor y el conjunto de estímulos externos que recibe decidirá que hacer a continuación. Como podemos observar, la inteligencia artificial de Halo: Combat Evolved sigue el paradigma acción­reacción para poder obtener una simulación realista de los comportamientos, huyendo así de la aleatoriedad y siguiendo una lógica en función del entorno y el contexto de cada especie. Esta implementación como hemos podido observar, responde al paradigma de programación de agentes inteligentes de tipo reactivo, al basarse en un conjunto de comportamientos posibles de los que se selecciona la acción a realizar en función de los impulsos que éstos reciben. 4.2 Halo 2 Halo 2 es un juego de acción y aventuras en primera persona que salió al mercado el año 2004. Fue creado por Bungie y es una continuación (tanto en el tipo de juego como en su desarrollo e historia) de Halo: Combat Evolved (para más información consultar el punto 4.1). En esta ocasión el bestiario de criaturas se ha incrementado al igual que el armamento y los vehículos. La tecnología en que se basa la inteligencia artificial de Halo 2 se basa en la que definió su predecesor, pero con alguna serie de cambios para mejorarla y hacerla más creíble y más eficiente. Recordemos que la saga Halo estuvo pensada originalmente para un sistema cerrado, como es una videoconsola, con un hardware que no evoluciona y eso exige una mayor optimización de los recursos. Halo 2 utiliza la misma tecnología de marcadores de entes y de localizaciones del escenario para obtener los datos del entorno de una forma rápida y eficiente. La principal novedad de halo 2 en la inteligencia artificial es la sustitución del anterior modelo de máquina de tomar decisiones por una inteligencia artificial escalable, que se basa en el uso de arboles de comportamiento. 18 Árbol de comportamiento Mediante esta estructura, un ente virtual que recibe un acontecimiento externo, selecciona una rama del árbol en función de esa entrada, obteniendo así el comportamiento que mostrará. Como podemos ver, la estructura del árbol va de un comportamiento más general a uno más especifico. Gracias a la modularidad y escalabilidad de este tipo de representación, a partir de un árbol de comportamientos genérico, se pueden obtener los N árboles de comportamiento mediante la herencia necesarios para Halo 2, uno por cada clase de ente que puebla el juego. Así cada especie dispondrá de una serie de comportamientos a realizar acotados y podremos representar para cada especie las clases de comportamiento que puede realizar como las que actualmente esta realizando. Debido a la gran memoria que requeriría replicar esta estructura para cada personaje que esta interactuando en ese momento, se transforma el árbol general par la instancia de un individuo en un vector donde se guarda el camino y obteniendo así las componentes que forman el estado actual. 19 Transformación árbol de comportamientos → vector de estados Gracias a esta estructura, se ha podido implementar un sistema de marcadores sobre el terreno que pueden modificar el árbol de comportamiento en función del terreno en el que se encuentre el individuo. Gracias a esta técnica se mejora todavía más la elección de un comportamiento en función del entorno y el contexto. De esta forma, si la misión del enemigo en aquella zona determinada es mantenerse en ella para que no pase el adversario, se recortará el árbol de comportamientos, no permitiendo que éstos avancen, mientras que si en un terreno determinado el objetivo es huir de una fuerza muy superior, se recortara el árbol de nuevo, recortando así la posibilidad de quedarse a combatir. De esta forma el contexto, en este caso diferentes situaciones en una batalla se tienen en cuenta y no solo se tienen en cuenta la personalidad de las diferentes especies sino que también se crea unas directrices de grupo para seguir estrategias coordinadas. 4.3 Halo 3 Halo 3 es un juego de acción y aventuras en primera persona que salió al mercado el año 2007. Fue creado por Bungie y es una continuación (tanto en el tipo de juego como en su desarrollo e historia) de Halo: Combat Evolved y de Halo 2 (para más información consultar el punto 4.1). En esta ocasión, Halo 3 fue concebido para una nueva plataforma, a diferencia de sus dos antecesores, contando así con más recursos para representar la acción. Esto motivó al equipo de Bungie a mejorar su motor de inteligencia artificial para poder representar un mayor número de entes virtuales en un mismo escenario y perfeccionar el comportamiento en equipo de éstos. Para poder llevar a cabo este objetivo de forma eficiente, la anterior tecnología de árbol de comportamientos comportaba problemas de eficiencia. La coordinación de entes que formaban parte de una estructura jerárquica dentro de un grupo mediante comportamientos asignados a cada individuo comportaba unos grandes requisitos de cálculo teniendo en cuenta la ingente cantidad de 20 entes que ahora aparecían en un mismo entorno. Fruto de esa necesidad se desarrollo una nueva estructura para la simulación de comportamientos de colectivos de individuos independientes de forma eficiente. Estas estructuras se generan para cada subgrupo de entes que en ese momento están interactuando en la escena. En ellas aparecen los comportamientos propios de un escuadrón como avanzar, retirarse o resistir y cual de ellos tiene actualmente el grupo. Estos estados vienen junto a una función que en función del entorno y la situación actual decide que estado va activarse para el grupo. Así esos patrones básicos de ataque en los individuos pasan a formar parte del grupo, conservando la personalidad propia de cada integrante mediante su propio árbol de comportamiento para comportamientos más específicos de su especie. Estos datos del entorno son recogidos por el sistema de marcadores ya utilizado desde Halo: Combat Evolved para poder obtener de forma eficiente una representación del entorno. Un ejemplo en Halo 3 de esta tecnología la podemos apreciar cuando estamos avanzando con nuestro propio escuadrón adentrándonos en unas instalaciones a través de unos pasillos llenos de cajas. Al girar la esquina encontramos otro pasillo con 3 escuadrones de fuerzas hostiles que nos barren el paso. Al eliminar casi la mitad de sus fuerzas retroceden hasta la mitad del pasillo. Al avanzar nosotros aparece una nave de descenso enemiga con mas refuerzos que se añaden a los que nos atacaban. Éstos detienen su retirada y eliminan a un gran cantidad de nuestras tropas, lo cual hace que éstas se retiren, mientras que el enemigo viendo el panorama deciden reconquistar su posición anterior, viendo que nosotros retrocedemos para escudarnos de su ataque y muchos de nuestros aliados han caído. Una avanzadilla ataca nuestra posición mientras otro escuadrón espera en la retaguardia. Este uso de la inteligencia artificial para simular comportamientos coordinados de entes virtuales hace que la experiencia del usuario sea más rica y que la inteligencia artificial tenga un mayor éxito al representar comportamientos naturales no solo de individuos, sino de grupos de individuos. 21 4.4 Black & White En Black&White, juego publicado el año 2001 por el estudio inglés LionHead encarnamos el papel de un dios recién llegado a un nuevo mundo. Nuestro personaje es omnipresente y esta representado por una mano con la que realizaremos la interacción con el entorno y sus pobladores. El objetivo del juego es conseguir que los habitantes de este mundo nos adoren y derrotar a otros dioses robándoles creyentes convirtiéndolos a nuestra religión. Como dios, no podemos dar ordenes a nuestros creyentes, pero podemos sugerirles que realicen tareas cogiéndolos con nuestra divina mano y llevándoles allí donde sus habilidades puedan ser de provecho para nuestros intereses. Seremos capaces de realizar hechizos para impresionar a nuestro seguidores y que estos incrementen su fe en nosotros. Uno de los pilares de Black&White es la total libertad con la que contamos para conseguir nuestros objetivos. Como dioses, necesitamos creyentes, pero podemos conseguirlos mediante el miedo o mediante la admiración, ayudándolos. Así gestionaremos diversos poblados a lo largo de la aventura, decidiendo como jugadores como comportarnos para lograr nuestra meta. Nuestro personaje, la mano, suministra madera a unos aldeanos para ganarse su fe Los creyentes interaccionaran con nosotros solicitando ayuda en función de sus necesidades (comida, casas, descendientes, etc.) y otros dioses rivales intentaran derrocarnos. Para estos entes virtuales la inteligencia artificial de Black & White no presenta ninguna sorpresa ni haría de este título un hito en el ocio electrónico en el uso de la IA. Es en nuestro ayudante, nuestra mascota, una criatura gigantesca que como Dios se pondrá a nuestro cargo donde Black&White explota técnicas de inteligencia artificial de forma realmente exitosa que no se habían utilizado antes. Como dioses, al principio del juego, se nos da la oportunidad de elegir nuestra criatura. Inicialmente, serán 3 nuestras posibles compañeras. Un tigre gigante, una criatura muy agresiva, 22 una vaca gigante, un animal bueno y bondadoso y una criatura intermedia, una tortuga gigante. Y es que las criaturas en Black&White, al igual que nosotros, pueden optar por hacer el bien o el mal y estas, cuando se nos entregan, tienen diferente grado de predisposición a cada bando. Pero esto es solo su personalidad inicial, pues las criaturas de Black&White aprenderán de nosotros como comportarse, mediante la observación o nuestra directa implicación, mediante estímulos positivos (una caricia) o negativos (un golpe) para que sepan que pensamos de sus comportamientos. Nuestra criatura ha aprendido a lanzar un hechizo mediante la observación Así las criaturas llegarán a aprender a lanzar hechizos como nosotros, a tratar a los creyentes devorándolos, jugando con ellos lanzándoles por los aires, ayudándolos,.. todo dependerá de la predisposición y del aprendizaje, por nuestra intervención directa y/o por la observación que realice la criatura de su entorno. La criatura contra más atención le dediquemos más la echara en falta, de la misma forma que podemos ignorarla completamente durante el juego y así desarrollará su personalidad y crecerá de forma completamente independiente, basándose pues únicamente en las percepciones y experiencias que haya experimentado. Las criaturas no solo se limitarán a interactuar con nosotros sino que camparán libremente interactuando con los creyentes (nuestros o de nuestros adversarios) y con otras criaturas de otros dioses, pudiendo crear enemistades o amistades con estas independientemente de nuestra rivalidad con sus dueños. Otro de los grandes logros de Black&White es el uso que hace de la expresión corporal y oral para manifestar el estado de nuestra criatura. Ésta intentará llamar nuestra atención silvándonos, agitando las manos, trayéndonos objetos para que la felicitemos.. Estas muestras hacen que el usuario empatice con la criatura y se la tome como un verdadera mascota y no como un simple ente virtual. Para poder implementar la inteligencia artificial de Black&White, el estudio inglés hizo uso de 23 agentes inteligentes BDI para simular los comportamientos de las criaturas y que éstas se asemejen a una criatura viva independiente. También se hizo uso de redes neuronales para apoyar el aprendizaje automático, completando así la IA de unas criaturas que como ya hemos comentado, en función de la percepción que poseen del mundo generan una personalidad y una conducta coherente. Así, las criaturas mediante la observación generan un conjunto de conocimientos sobre lo que les envuelve y en función de éstos, generará unos objetivos, es decir, unos deseos. Estos pueden ser “ayudar a los aldeanos”, “que mi dios me preste atención”, “quiero comer”, etc. Estos objetivos serán manifestados en acciones según lo determine una función de selección que esta implementada en la propia IA, en función de la prioridad de éstos y del contexto. La forma de llevarlos a cabo vendrá determinada por el conjunto de habilidades que la criatura haya aprendido y su propia personalidad. De esta forma se consigue tener claros unos objetivos que la criatura desea llevar a cabo y que serán realizados en función de su personalidad. Así ante el deseo “quiero comer” si nuestra criatura tiene una personalidad malvada y carnívora, comerá lo primero que se encuentre, incluidos nuestros creyentes, mientras que si es benigna se limitará a animales que los creyentes no valoren o a comer vegetales. Las posibilidades son enormes y al tratarse de criaturas totalmente independientes del usuario se logra una sensación de exitosa simulación por parte del usuario, que observara, siquiera, una criatura que hace la suya, que explora el mundo que le rodea, interacciona con él y aprende de él. 24 5. Bibliografía ● Libros ○ Brian Schwab, AI Game Engine Programming, Charles River Media, 2004 ○ Stuart Russell, Peter Norving, Inteligencia Artificial: Un enfoque moderno, Prentice Hall, 1996 ○ Javier Béjar, Aplicaciones de la inteligencia Artificial ● Material web ○ Teoría de la decisión, http://www.virtual.unal.edu.co/cursos/ingenieria/2001394/index.html ○ The game AI Page, http://www.gameai.com/ ○ AI in Games: a personal view, http://www.gameai.com/blackandwhite.html ○ AI Game Dev, http://www.aigamedev.com Gamasutra, http://www.gamasutra.com/ ○ ○ Aprendizaje automático, Wikipedia, http://es.wikipedia.org/wiki/Aprendizaje_autom %C3%A1tico ○ Red neuronal artificial, Wikipedia, http://es.wikipedia.org/wiki/Red_neuronal ○ Game/AI, http:www.ai­blog.net ○ Game artifical intelligence, Wikipedia, http://en.wikipedia.org/wiki/Game_AI 25