1 Introducción
Actualmente, en los juegos de video, los NPCs (Non player characters) son implementados mediante máquinas de estado finito o "scripts" lo cual implica que tienen un número determinado de acciones y reacciones que tienen que ser previamente conocidas y programadas por el desarrollador.
Los juegos de video tienden a tener una muy estrecha "jugabilidad" ya que una vez que el jugador ha recorrido todas las posibilidades preprogramadas del juego, este deja de ser útil (ya no será entretenido).
1.1 Definiciones
Las técnicas de inteligencia artificial son relativamente nuevas, y por consiguiente los estudiosos en la materia no logran ponerse de acuerdo en cuanto a lo que es; nosotros presentaremos un concepto (de tantos) de lo que es un agente y una aplicación (de tantas) sobre redes neuronales.
Para poder manejar mejor los antecedentes creemos necesario presentar los conceptos de agentes y de redes neuronales. No será de manera profunda ya que para un mejor conocimiento se puede referir a la bibliografía, pero si profundizaremos cuando se este utilizando en un caso de determinada competencia para el paradigma aquí presentado.
1.1.1 NPC(Non Player Characters)
Un NPC es un personaje en un juego que es controlado automáticamente por inteligencia artificial u otra técnica. Los NPC's son comunes en los juegos RPG's (Juegos de Rol o Role Playing Games).
Los NPCs son personajes controlados por el ordenador. En la actualidad estos son controlados mediante máquinas de estado finito o "scripts" para que puedan interactuar en un entorno artificial dentro de los videojuegos.
Actualmente, podemos ver diversos tipos de implementación de NPCs en muchos videojuegos. Por ejemplo, el juego Black & White tenía como sus objetivos en cuanto a inteligencia artificial que las criaturas serían capaces de aprender todo tipo de cosas, del jugador y de ellas mismas mientras el juego progresaba y se creaba un mundo dinámico que cambiaría de acuerdo con las acciones del jugador.
En una entrevista, el diseñador de la inteligencia artificial de este juego habló acerca de la implementación de esta:
"... solo un pequeño número de comportamientos (han sido puestos) hasta ahora, pero suficientes para que las criaturas se comporten de manera convincente.", Peter Molyneux.
Como se puede ver, aunque este juego es en la actualidad uno de los más innovadores en cuanto a inteligencia de NPC's se refiere, la implementación de esta se hace mediante reglas duras, es decir, cada comportamiento debe de ser preprogramado.
Otro juego que es importante mencionar es The Sims, el cual es un simulador de la vida. En este juego el jugador se encarga de diseñar las viviendas de personas para intentar darles una vida aceptable. Dentro de estas viviendas estarán varios pseudo NPCs que actuarán de acuerdo a su perfil psicológico (definido al inicio del juego mediante algunos atributos); estos NPCs son llamados Sims.
La implementación de la inteligencia de este juego se realiza mediante máquinas de estado finito difusas, lo cual es un gran avance en la aplicación de inteligencia artificial, además utiliza técnicas específicas de la vida artificial (A - Life) que también está encerrado dentro de la inteligencia artificial.
La base de la inteligencia en este juego es su motor de comportamiento, el cual introduce comportamientos y acciones posibles asociadas con un objeto dentro de el objeto en si. Por ejemplo, el archivo para el modelo de una TV contiene todas las instrucciones para verla, encenderla, apagarla, las condiciones en que un Sim querrá o no verla, cómo debe animarse un Sim al verla etcétera.
1.1.2 Agentes autónomos Un agente autónomo es un sistema situado en un entorno, además siente ese entorno y actúa sobre él, a través del tiempo, persiguiendo sus propios objetivos de forma que afecte lo que siente en el futuro.
Un agente autónomo, para empezar, no es un programa, o al menos es algo más que un programa (al fin y al cabo, todo lo que se ejecuta en un ordenador es un programa); es decir, no se puede llamar un programa en el mismo sentido que un sistema operativo no se puede llamar un programa. Una de las características que los distinguen de los programas es la autonomía, lo cual implica dos cosas: primero, que son pro-activos, es decir, que no sólo actúan respondiendo a una acción del usuario, sino que también actúan siguiendo sus propios objetivos; segundo, que son persistentes, o sea, que no se pueden "apagar"; incluso aunque el usuario no esté interactuando con ellos, los agentes siguen funcionando, recolectando información, aprendiendo y comunicándose con otros agentes. Esta autonomía implica que sean "agentes situados", es decir, que haya una clara diferencia entre el agente y su entorno. Y la persistencia e independencia del entorno permite que algunos agentes sean móviles, llevando su información allí donde van, y siguiendo quizás a su usuario.
El afectar lo que se perciba en el futuro implica inteligencia, al menos en el sentido que se aprenda de los fallos para no volver a cometerlos en el futuro, lo cual implica adaptabilidad, y además implica un bucle percepción/procesamiento de información/acción, para volver otra vez al principio, es decir, un comportamiento similar al de cualquier ser vivo medianamente inteligente. El aprendizaje habitualmente se realizará a través de la interacción con un usuario, lo cual hará que el agente sea habitualmente representativo de tales acciones. Además, la percepción y acción implican comunicación, que se puede realizar con programas no-agentes o con otros agentes, lo cual puede dar lugar a sociedades de agentes.
1.1.2.1 Algunas aplicaciones
Un agente, tal como se ha definido anteriormente, puede ser usado de múltiples maneras en el entorno empresarial, helvética, universal actual. Algunas de las aplicaciones son las siguientes:
Ayuda al cliente: un agente que ayude al cliente, además de ser cacofónico, podría escuchar el problema, buscar en varios medios diferentes (noticias de usenet, manuales técnicos, informes archivados por profesionales), y finalmente dar una respuesta al mismo. Este agente puede residir tanto en la red como en el ordenador del usuario, y además, puede "conocer" los fallos más habituales, tanto en general como del usuario en particular para tratar de proponer soluciones a los mismos antes de que sucedan.
World Wide Web: este tipo de agente aprendería de los hábitos de búsqueda del usuario, mirando las páginas que se visitan, la frecuencia con que se hace y el tiempo que se gasta en cada una, para proponer nuevas páginas y avisar cuando se ha creado una página interesante. IBM ha creado ya un agente de este tipo, llamado WBI (Web Browser Ingelligence, o Webby).
Busca gangas: en un entorno donde se puede comprar directamente de los productores, para comprar tickets de viajes en avión o en un entorno de telecomunicaciones no reguladas, un agente podría buscar el objeto que desee su usuario al mejor precio, comprar un billete de avión en las mejores condiciones o enrutar una llamada telefónica usando los portadores con mejor precio o calidad. Actualmente hay muchos busca-gangas en la Internet, aunque no se podrían calificar como agentes.
Agentes charlatanes: en un mundo estigmatizado por la soledad de las personas, y donde el ocio se convierte en la industria número uno, un agente charlatán puede dar conversación a su usuario, tomando la apariencia deseada o jugar a un juego con él o ella.
Trabajo en grupo: quien haya tratado de convocar una reunión "que le venga bien a todo el mundo" sabe que es un proceso de negociación con restricciones duras, otras menos duras, en muchos casos largo y de difícil solución. Los agentes se están usando ya para negociar este y otros problemas de trabajo y coordinación de un grupo.
Lo que sí cabe dentro de la definición de agente dada anteriormente son los robots autónomos, como los creados por ejemplo por Randall Beer o Rodney Brooks, y los agentes que se mueven en mundos artificiales como los estudiados en Vida Artificial: estos agentes sienten su entorno, actúan sobre él, cambian de estado interno, aprenden y evolucionan; sin embargo, estos agentes no tienen porqué hacer nada útil, sino simplemente simular algún aspecto del mundo real para tratar de entenderlo mejor. En todo caso, tanto los investigadores en robótica autónoma / adaptativa como los que investigan en Vida Artificial y Sistemas Complejos proveerán las herramientas que hagan que los agentes funcionen.
La Vida Artificial también se ocupa de la inteligencia colectiva, la capacidad de un colectivo para resolver problemas aunque cada individuo del colectivo no sea capaz de entenderlo ni de hacerlo; en muchos casos, se usarán sociedades de agentes simples para proporcionar las capacidades que se esperan en un agente.
1.1.2.2 Hacia los agentes inteligentes
Aunque, como se ha comentado, los agentes están en un horizonte no demasiado lejano, hay diversos grupos de investigación e intelectuales que han hecho diversas aportaciones al tema. Los pioneros de la Vida Artificial, que, como se ha visto, proporciona las herramientas que hacen funcionar a los agentes y explican porqué son necesarios, fue el grupo de Filosofía de la Ciencia de la Universidad del País Vasco, coordinado por Alvaro Moreno Bergareche, que, junto con Julio Fernández Ostolaza, publicó el primer libro en castellano sobre el tema (que más adelante ha sido editado también en Francia). El aspecto del entretenimiento y la aplicación de la vida artificial de los agentes inteligentes y knowbots, fue tratado por Montxo Algora en diversad ediciones de Art Futura, una dedicada a Vida Artificial, y la última, en noviembre de 1996, dedicada a los Knowbots.
Y, por último, un grupo en la Universidad Politécnica de Barcelona, formado entre otros por Ricard Solé y Jordi Delgado, investigan sobre el tema de la inteligencia colectiva, esencial para entender qué capacidades debe tener cada individuo de una sociedad de agentes y qué cabe esperar de las capacidades de tal sociedad.
1.1.3 Redes neuronales
1.1.3.1 Panorama general de funcionamiento
La forma que dos neuronas interactúan no está totalmente conocida, dependiendo además de cada neurona. En general, una neurona envía su salida a otras por su axón. El axón lleva la información por medio de diferencias de potencial, u ondas de corriente, que depende del potencial de la neurona. Este proceso es a menudo modelado como una regla de propagación representada por una función de Red. La neurona recoge las señales por su sinápsis sumando todas las influencias excitadoras e inhibidoras. Si las influencias excitadoras positivas dominan, entonces la neurona da una señal positiva y manda este mensaje a otras neuronas por sus sinápsis de salida. En este sentido la neurona puede ser modelada como una simple función escalón o Sigmoidal.
1.1.3.2 Características principales
Auto Organización y Adaptatividad: utilizan algoritmos de aprendizaje adaptativo y auto organización, por lo que ofrecen posibilidades de procesado robusto y adaptativo a través de diferentes métodos de entrenamiento.
Procesado No Lineal: aumenta la capacidad de la red de aproximar, clasificar y su inmunidad frente al ruido.
Procesado paralelo: normalmente se usa un gran número de células de procesado por el alto nivel de interconectividad.
Figura 1: Diagrama esquemático de una neurona
En la figura 1 podemos ver una neurona donde es la suma de los pesos que otras neuronas disparan.
El tipo de neurona de la figura es llamada Preceptrón el cual al ser probado es posible el tener el reconocimiento de cosas simples como si es Blanco o No, si es 1 o 0, etc....
Existen Redes Neuronales Multicapa, las cuales tienen la topología mostrada en la figura 2. Una red neuronal aprende al ser modificado los pesos, siendo los pesos .
Figura 3: Configuración de una red multicapa A manera de antecedente podemos mencionar que una red neuronal fue usada en un juego para que aprendiera a manejar un carro de rally, imitando al desarrollador cuando jugaba.
Las Redes Neuronales Artificiales supervisadas se caracterizan porque aprenden a través de los ejemplos, el algoritmo mas común en redes neuronales que contienen subcapas es el de retropropagación del error. Es decir que las salidas de la red neuronal son comparadas con una matriz de aprendizaje, y si no es igual, entonces se modifican los pesos de las subcapas de la Red Neuronal.
1.1.3.3 Retropropagación de error
Esta regla de aprendizaje se debe a Werbos (1974), Rumelhart (1985) y Parker (1989) entre otros autores. Debido a ciertas consideraciones probabilísticas y, ante todo, a su facilidad de cálculo, se establece como función objetivo a minimizar el error cuadrático.
Esto significa que lo que realizara la red es optimizar sus pesos con respecto a la salida:
donde:
es la salida del elemento de proceso en el instante .
es la salida deseada para el elemento de proceso en el instante .
Aunque existen diferentes tipos de redes neuronales, todas sirven para clasificar, aprender y recordar. Por lo tanto todas pueden ser utilizadas dentro de esta teoría
2 Juegos de video que han utilizado simulación de comportamientos inteligentes 2.1.1 Tipos de Inteligencia aplicada en NPC'S. 2.1.2 Inteligencia Basada en reglas.
Se implementa mediante máquinas de estado finito. Es la mas popular de las tecnologías.
El juego Half-Life de Valve Software la utiliza.
Figura 5:Valve Software's Half-Life Sin embargo estamos este tipo de IA no es del tipo de que el carácter aprenda, y genere nuevas estrategias de pelea contra del jugador, sino que la manera de implementar esta inteligencia es que los desarrolladores preveen diversos comportamientos del jugador y programan reglas que respondan a estos comportamientos.
2.3 Inteligencia Artificial Extensible
Los Jugadores pueden construir a sus propios oponentes, ayudantes, y compañeros e intercambiarlos por la web. Unreal utiliza esta técnica.
Figura 7:Unreal, Epic Megagames.
Este más que un nuevo tipo de desarrollo de IA es simplemente una capacidad en los videojuegos con la cual es posible desarrollar externamente sistemas con inteligencia e incorporarlos al juego mediante interfaces.
En general esta posibilidad ha generado interés en el área de investigación ya que en la actualidad existen grupos que están utilizando estos juegos como plataforma de investigación de la IA, entre ellos se encuentran el grupo SOAR/GAMES del laboratorio de inteligencia artificial de la universidad de Michigan o el proyecto Excalibur, encabezado por el Dr. Alexander Nareyek.
2.4 Aprendizsaje y pensamiento estrateégico.
Aprendizaje, es decir que alguna situación que suceda dentro del juego, los NPC'S deben ser capaces de aprender y hasta modificar comportamientos a través de Técnicas de Redes Neuronales.
Existen sistemas que han utilizado redes neuronales para aprender a jugar backgammon tenemos que se a utilizado una red Neuronal para que el juego aprenda jugando contra si mismo utilizando un aprendizaje tipo supervisado y las técnicas de entrenamiento de retropropagación del error.
Gerald Tesauro del centro de investigación de la IBM creo el sistema TD-Gammon el cual es una red neuronal capaz de enseñarse a si misma a jugar backgammon jugando en contra de ella misma. Este sistema superó las expectativas del desarrollador ya que como resultado demostró poder jugar a tal nivel que derrotó sin problemas al campeón mundial. Además, demostró diferentes estrategias nuevas que nadie había previsto.
En 1952, Arthur Samuel creo el primer juego de damas inglesas. Y entre 1970 y 1980, la Northwestern University creó un programa de ajedrez. En 1990, el programa Chinnok derrotó al campeón mundial de damas chinas. Además, en 1997 Garry Kasparov fue derrotado por Deep Blue, el computador de IBM.
Cabe señalar que aunque Deep Blue fue desarrollado específicamente para ese propósito y era una máquina muy poderosa en su época, en estos momentos (2002) se están llevando a cabo torneos de ajedrez en Alemania entre el campeón del mundo y un programa comercial de ajedrez.
Sin embargo, los juegos descritos anteriormente difieren de los juegos actuales en que los primeros no se desarrollan en "tiempo real" y por lo tanto es más sencilla la aplicación de las técnicas de IA. Además de todos esos programas solamente uno (TD-Gammon) aplicó redes neuronales, los demás se desarrollaron mediante técnicas clásicas de inteligencia (fuerza bruta, scripting, etc).
2.5 Técnicas Jerárquicas de encontrar camino 2.6
2.7 2.8
2.9
Esta técnica consiste en tomar decisiones a través de estrategias y las entidades(NPCS) en los juegos actúan conforme a estas. En realidad casi todos los nuevos juegos del tipo FPS (first person shooter) implementan esta técnica. En la figura 5 vemos un ejemplo, el juego War in Heaven.
Figura 9: War in Heaven
War in Heaven Este tipo de técnicas dista mucho de ser verdaderamente inteligente, ya que la estrategia solamente simula inteligencia.
3 Aplicación de los agentes autónomos y Redes Neuronales en los NPC's
3.1 ¿Por qué aplicar estas técnicas?
La aplicación de estas dos metodologías o ramas de la inteligencia artificial en los NPC's surge por la necesidad de crear juegos con mayor diversión y vida útil. Además, mediante estas metodologías se pueden crear videojuegos más realistas dado que se emulan los comportamientos inteligentes.
Algunos de los beneficios de utilizar agentes inteligentes son:
La adaptabilidad a los cambios de las condiciones su medio ambiente.
Exhibición de un comportamiento genuino.
Aumento de flexibilidad, lo cual implica menos codificación.
Desafortunadamente, en la actualidad ninguna de las dos metodologías está desarrollada en su totalidad y como se puede ver en los antecedentes existe todavía un largo camino que recorrer en cuanto a definiciones e investigación se refiere. Además, el desarrollo de videojuegos que cuenten con esta tecnología será muy costoso en tiempo y requerirá un gran trabajo intelectual.
Mediante la aplicación de estas técnicas se pretende realizar NPC's que puedan ir aprendiendo en cada sesión de juego, que puedan interactuar en los escenarios virtuales inteligentemente con un conocimiento mínimo inicial y que puedan percibir el ambiente artificial en donde se desarrolla.
3.2 Áreas de aplicación de las técnicas
A continuación mencionamos algunos de los roles que afectará este paradigma dentro de los videojuegos:
3.2.1 Conocimiento, "entendimiento" y explotación del terreno.
Si se quiere emular un comportamiento inteligente se debe tener en cuenta que los jugadores encuentran lugares para esconderse o refugiarse. Rutas alternas a destinos importantes y hasta lugares excelentes para emboscadas. En la actualidad, todo esto es realizado solo mediante la codificación explícita previa de las reglas correspondientes.
La aplicación de los agentes autónomos y las redes neuronales logrará crear NPCs que interactúen dinámicamente con el terreno en el que se encuentren. Esto, mediante el aprendizaje y la percepción del medio.
3.2.2 Uso eficiente del trabajo en equipo
Desde el principio de la era de los videojuegos, estos han consistido en su mayoría en un personaje que debe destruir a "los malos" para salvar algo (un planeta, una princesa, una chica, etcétera). Igualmente, durante todo este tiempo los NPC's son creados y colocados en los diferentes escenarios para que el jugador se encuentre con ellos. El comportamiento de estos es totalmente autónomo con respecto al de sus compañeros. Con la aplicación de nuestro paradigma se podrán crear NPC's que interactúen entre sí para lograr un mismo fin ya que esto es uno de los aspectos básicos de los agentes.
3.2.3 Habilidad para cazar
En la mayoría de los juegos de video, el jugador va avanzando por los escenarios buscando rutas secretas, ítems que le puedan ayudar en su viaje y otras cosas; es el jugador quien va encarando a los enemigos y es el quien debe poder emboscarlos y cazarlos. Sería de esperarse, de un comportamiento inteligente que los NPCs tuvieran la capacidad de cazar y perseguir al jugador. Esto, en combinación con el trabajo en equipo le daría a los juegos una nueva dimensión de jugabilidad.
3.2.4 Instinto de supervivencia
Si se quiere emular un comportamiento verdaderamente inteligente, es necesario introducir el instinto de supervivencia, cosa que en los juegos no se había podido ver hasta épocas recientes, ya que en general los cuando los NPC's enemigos veían a un jugador, corrían hacia él con la sola determinación de "matar o morir". Esto hace que el comportamiento de estos no parezca inteligente ya que hasta el menos inteligente de los seres vivos tiene un instinto de supervivencia muy arraigado.
3.3 Ejemplos de aplicaciones
Enseguida describiremos dos ejemplos donde se puede ver de manera clara cómo serviría la aplicación de estas metodologías en los videojuegos.
En una persecución de un automóvil a otro, el jugador es el automóvil que será perseguido, el computador es el automóvil seguidor. El computador al principio no sabrá como es el escenario ni el perfil del jugador. Conforme avanza el juego, el computador se va creando un perfil del comportamiento del jugador, además va aprendiendo la forma del escenario con lo que la dificultad irá aumentando. Esto ocasionará que el jugador siempre encontrará un reto aceptable en el juego, aumentando la vida útil del sistema.
En un juego de Rol, que los monstruos y personajes actúen de manera inteligente, de tal manera que nunca ataquen de la misma manera y que simulen el comportamiento inteligente, y que al ser agentes, puedan comunicarse y realizar simulaciones como por ejemplo, si un monstruo de una raza específica se encuentra a otro de otra raza, se atacarían, y eso llevaría a que disminuyeran. O si existe un enemigo maligno en el juego que también actúe sin necesidad de que el jugador llegue a un punto. El agente que es el malo de el juego puede seguir actuando dentro del juego aunque el jugador no lo vea.
Cabe destacar que de alguna manera, la implementación de esta tecnología implicaría el uso de mundos virtuales en los cuales deberán actuar los agentes autónomos. Esto no es un problema ya que en la actualidad existen ya juegos que crean mundos virtuales y en los cuales se puede programar jugadores desde el exterior.
3.3.1 Un caso de aplicación real Queremos proponer un caso de aplicación de las técnicas descritas anteriormente como muestra comprobatoria de que estas funcionarían.
Pensemos entonces en un juego de Rol (RPG), en el cual se desarrolla una historia fantástica en la que existen varios personajes, uno de ellos controlado por el jugador; los demás son NPC´s controlados por el computador. En este tipo de juegos la finalidad del jugador es el completar diversas misiones y acertijos dentro el mundo fantástico para lograr un fin especifico en la historia del juego, por ejemplo liberar un pueblo, salvar una princesa. El jugador puede moverse libremente por el mundo e ir descubriendo lugares y cosas interesantes.
Lo que hace diferente a este tipo de juegos de los demás es que el carácter que controla el jugador comienza con un estado inicial (status) que se compone de varios parámetros (fuerza, velocidad, energía mágica, astucia, etcétera); estos parámetros se contabilizan mediante puntos, los cuales irán aumentando conforme el jugador valla avanzando en el juego. Además, el jugador, al ir adentrándose en el juego irá aumentando sus puntos de experiencia, lo cuales le ayudarán a aumentar su estado.
El jugador puede recorrer el mundo eligiendo las rutas que el desee para así ir a cierta ciudad y si en ella se encuentra con una misión que realizar puede elegir entre realizarla o ir a otro pueblo para realizar alguna otra misión.
Uno de los factores más importantes en estos juegos es el de las batallas contra los enemigos, que casi siempre son monstruos fantásticos que habitan en los diferentes hábitats del mundo. Cuando el jugador está viajando a través del mundo, puede enfrentarse contra alguno (o algunos) de estos monstruos y si logra derrotarlos aumentará sus puntos de experiencia.
En la actualidad en este tipo de peleas la inteligencia de los NPC's se reproduce mediante scripts o maquinas de estado finito. Utilizando una técnica de redes neuronales, tal como una Red de Hopfield, podemos emular una inteligencia mas completa de ciertos aspectos de los NPC´s.
Como resultado de esto obtenemos un juego mas divertido, ya que los NPC's nunca atacaran de la misma manera los y podrán ir aprendiendo las diferentes técnicas que el jugador utilice para su ataque. En este ejemplo mostraremos una aplicación limitada y pequeña a manera de mera ejemplificación de nuestra teoría.
3.3.1.1 Red de Hopfield
Una red de Hopfield es una red Neuronal que cuenta con una sola capa y que todas sus Neuronas están altamente interconectadas. El uso de estas redes tiene un paralelo con la memoria de los seres humanos, es decir la Red se entrena para que aprenda ciertos patrones y una vez que lo ha aprendido , acepta un patrón de entrada y si ese patrón es similar a uno de los patrones que le fueron enseñados, entonces lo reconocerá.
La función de disparo de este tipo de redes esta dada por:
3.3.1.2 Ejemplo de uso de la Red de Hopfield.
Tomemos como ejemplo una Red de cuatro Neuronas (La imagen de la red esta en la figura 6) , esta imagen la podemos representar a través de una matriz de 4x4, la cual representa la conexión entre las neuronas; si quisiéramos que nuestra red pudiera reconocer algún patrón se debe proceder de la siguiente forma.
Figura 11: Red Neuronal de Hopfield de 4 Neuronas Tomamos un vector que queramos que reconozca nuestra red, este vector debe ser de una longitud de 4, por ejemplo A = {1,0,1,0}.
Convertimos nuestro vector a formato bipolar, es decir A={1,-1,1,-1}.
Tomamos la transpuesta de ese vector y la multiplicamos por el mismo, mediante una multiplicación de matrices común.
Sustraemos uno de cada elemento de la matriz en la diagonal principal, o le restamos la matriz identidad.
Sumamos la matriz resultante a nuestra matriz de pesos, que en este caso estará inicialmente en ceros.
De esta forma tendremos una matriz de pesos que reconocerá el vector de entrada A={1,0,1,0}. Si quisiéramos que nuestra red neuronal reconociera otro vector, por ejemplo B={0,1,0,1} tendríamos que seguir los mismos pasos y sumar la matriz resultante a la matriz de pesos actual.
Para utilizar la red neuronal debemos elegir un vector que queramos que reconozca, si por ejemplo eligiéramos el vector A y lo introducimos a la red neuronal, la salida de esta sería el mismo vector dado que efectivamente lo ha reconocido.
Para realizar la propagación de la red neuronal se hace un producto punto de el vector por cada una de las columnas de la matriz:
Como el resultado es 6 entonces la salida de la red será 1 lo que nos dice que el primer elemento de nuestro vector de salida es igual a 1.
Si en cambio introdujéramos el vector A con una pequeña variante A´={1,0,0,0} nuestra red daría como resultado también el vector A ya que el vector introducido le "Recordaría", al vector A que es el que ella conoce.
Pensemos ahora que el vector A contiene una lista de atributos booleanos con las características de lo que hizo cierto jugador (Movimientos, Ataques, Fuerza, Daño, Armas etc). Al principio nuestro agente, tendrá un conocimiento inicial de 0 es decir su Red Neuronal (o su cerebro) estará completamente desconectado.
La primera vez que el jugador pelee contra este agente, este utilizará tácticas genéricas o previamente programadas, de manera aleatoria para pelear contra el jugador. Conforme la batalla vaya avanzando y el agente vaya interactuando con el jugador, irá aprendiendo los diferentes atributos de ataque y defensa del este, estos atributos se reducen apatrones de comportamiento< b>que no son mas que vectores binarios de una longitud determinada.
Estos vectores se introducirán a la red neuronal del agente permitiéndole así aprender el comportamiento de pelea del jugador, para ir adaptándose a el.
Ejemplo:
Vector de atributos 1 0 0 1 Arma con fuego Mucho daño Efecto Mágico Golpe Crítico
En este caso el agente sabe que el arma de fuego resultó un daño crítico, y esto significa que nuestro NPC es débil contra el fuego, por lo que el agente tendrá como una nueva tarea la de encontrar la manera de protegerse contra esa táctica o atacar al jugador de cierta manera que le impida volver a utilizar el ataque.
Podemos extender un poco más este ejemplo para demostrar la aplicabilidad de los agentes autónomos. En el caso descrito anteriormente, como ya se ha mencionado, el NPC será controlado por un agente específico el cual tomará como entrada los atributos que puede percibir de su entorno (en este caso de la pelea y las características del jugador) y mediante la técnica de la red de Hopfield podrá tener información que le permita tomar sus propias decisiones.
3.4 Conclusiones
Después de un gran trabajo de investigación, podemos llegar a varias conclusiones, primero es importante aclarar que aunque actualmente no estas técnicas no han sido implementadas en los juegos "per se", ya se están realizando investigaciones para poder hacerlo.
Uno de los más importantes problemas a resolver es el de la cantidad de procesamiento que el uso de esta técnica necesitaría aunque debemos ser concientes que con la velocidad actual de crecimiento de tecnología en hardware es muy seguro que dentro de unos cuantos años esto ya no sea un problema.
El otro problema es el de la dificultad de desarrollo aunque existen ya universidades y centros de investigación que se dedican a la investigación de este tipo de técnicas para los videojuegos en específico, esto dará como resultado la generación de gente totalmente capacitada para el desarrollo de estas técnicas.
Tomando en cuenta lo anteriormente mencionado sobre los agentes, las Redes Neuronales y la aplicación en los video Juegos, podemos decir que la idea innovadora de la introducción de las Redes Neuronales Supervisadas en conjunto con los agentes autónomos trae como resultado la interacción y comunicación entre todos los NPC'S.
El hecho de que los NPC's aprendan estrategias de combate, puedan casar al jugador, atacarlo con inteligencia, y aprender de los errores a través de técnicas, como por ejemplo la de la retropropagación del error, nos abre una expectativa amplia de entretenimiento, y esto tiene futuro ya que mientras avancen las redes neuronales, se podrán aplicar de una manera mas eficiente y se logrará implementar tópicos más avanzados de la inteligencia como son sentido común, conciencia, emociones, etcétera.
También es importante mencionar el hecho de que en la actualidad los juegos de video se están utilizando como medio para la investigación de muchas técnicas de la inteligencia artificial, esto solamente significa que en un futuro no muy lejano se lograrán cosas muy interesantes. Además, gobiernos como los de Estados Unidos toman muy en serio este tipo de investigación, ya que les proporciona mucha información y un acelerado proceso de conocimiento por las ventajas que tiene la investigación de la IA basada en los juegos de video.
A manera de conclusión general quisiéramos comentar la ventaja que tendría para nuestro medio de investigación en particular en México, ya que la investigación de estas técnicas de IA en la aplicación a los juegos de video daría un gran empuje a la investigación de este tipo en nuestro país, ya que este es un tema que atrae mucho a los jóvenes y que no requiere de gran inversión económica.
- An anytime planning agent for computer game worlds Nick Hawes School of Computer Science, University of Birmingham, United Kingdom http://www.cs.bham.ac.uk/~nah Octubre, 2002
- Artificial Intelligence and Interactive Entertainment Robert St. Amanr y R. Michael Young Artificial Intelligence in Game Design Tim Schreiner http://ai-depot.com/GameAI/Design-Future.html Octubre, 2002
- A Test Bed for Developing Intelligent Synthetic Characters. John E. Laird (et. Al) University of Michigan 1101 Beal Ave. Ann Arbor, MI 48109-2110
- Automated Intelligent Pilots for Combat Flight Simulation Randolph M. Jones1, John E. Laird, Paul E. Nielsen, Karen J. Coulter, Patrick Kenny, and Frank V. Koss AI Magazine, Spring 1999. Colby College 5847 Mayflower Hill Drive Waterville, ME 04901-8858 University of Michigan 1101 Beal Avenue Ann Arbor, MI 48109-2110 Soar Technology, Inc,3600 Green Court, Suite 480 Ann Arbor, MI 48105 C++ Neural Networks and Fuzzy Logic Valluru B. Rao, Hayargiva V. Rao MIS Press
- Cognitive Multi-character Systems for Interactive Entertainment John Funge Sony Computer Entertainment America www.cs.toronto.edu/~funge Steven Shapiro University of Toronto steven@ai.toronto.edu
- Computer Generated Intelligent Companions for Distributed Virtual Environments Mark Edwards Eugene Santos Jr., Sheila B. Banks, Martin R. Stytz Department of Electrical and Computer Engineering Air Force Institute of Technology Wright-Patterson AFB, OH 45433-7765
- Developing an Artificial Intelligence Engine Michael van Lent and John Laird Artificial Intelligence Lab, University of Michigan 1101 Beal Ave. Ann Arbor, MI 48109-2110 Evolution of Formidable Player AI in Tactical 3D Games Stanislav Rost stanrost@lcs.mit.edu MIT Laboratory for Computer Science Cambridge, Massachusetts.
Games, Computers and Artificial intelligence Jonathan Schaeffer, H. Jaap van den Herik Artificial Intelligence 134 (2002) 1-7 Department of Computing Science, University of Alberta, Edmonton, AB, Canada T6G 2E8 Department of Computer Science, Universiteit Maastricht, PO Box 616, 6200 MD Maastricht, Netherlands. Inteligencia Artificial una nueva síntesis Nils J. Nilsson Mc. Graw Hill Inteligencia Artificial un enfoque moderno Stuart J. Russell, Peter Norvig Prentice Hall, Primera Edición: Enero, 1995 Non-player character (NPC) About.com http://internetgames.about.com/library/bl/glossary/bldef_npc.htm Octubre, 2002 Programming backgammon using self-teaching neural nets Gerald Tesauro. IBM Thomas J. Watson Research Center. Artificial Intelligence. 134 (2002) 181-199. Redes neuronales artificiales Dr. Diego Andina de la Fuente y M. en I. Antonio Vega Corona Departamento de Señales, Sistemas y Radiocomunicaciones Universidad Politécnica de Madrid-UPM, España Universidad de Guanajuato http://www.gc.ssr.upm.es/inves/neural/ann2/anntutorial.html The Future of Game AI: Intelligent Agents Alex J. Champandard http://ai-depot.com/GameAI/Agent-Motivation.html Octubre, 2002