sábado, 29 de mayo de 2010

IA y arquitectura de agentes en F.E.A.R.

1. IA
Las dos técnicas más empleadas en la IA de los videojuegos son el A* y la Máquina Finita de Estados (FSM). Prácticamente cualquier juego con IA utiliza alguna forma de FSM para controlar el comportamiento de un personaje, y A* para establecer caminos o rutas. FEAR utiliza estas dos técnicas, a la vez que Real-Time planning, lo que contribuyó definitivamente a que Monolith Productions mejorara el desarrollo de comportamientos de los personajes en su juego.

La IA the FEAR hace que los personajes no jugables, entre otras acciones, se cubran, disparen a ciegas, atraviesen ventanales, eliminen grupos de oponentes lanzando granadas o se comuniquen con compañeros de grupo.

2. Arquitetura de agentes

Los agentes en FEAR se componen de una pizarra (blackboard), una zona de memoria dinámica, varios subsistemas (navegación, amimación, sistema de armas, etc.) y algunos sensores. Los sensores detectan cambios en el entorno, y almacenan estas percepciones en la zona de memoria. El planificador usas estar percepciones para guiar la toma de decisiones y comunicar instrucciones a los subsistemas por medio de la pizarra.

Los sensores perciben estímulos tanto externos – visuales o auditivos – como internos – dolor o deseos – . Algunos están dirigidos por eventos mientras otros sondean el entorno. Los primeros son útiles para reconocer al instante sonidos o daños, y los segundos para extraer información del mundo, por ejemplo, generar una lista de posibles posiciones tácticas. Algunos de los sensores de FEAR son:
  • SensorSeeEnemy: permanence aletargado hasta que aparezcan estímulos visuales.
  • SensorNodeCombat: observa el entorno tres veces por segundo, buscando sitios potenciales para esconderse o disparar desde posiciones protegidas. Establece una lista de posibles sitios y los ordena por su distancia con el personaje.
  • PassTarget: encuentra una ruta hasta una posición táctica conocida, y determina si está libre de peligro.
La toma de decisiones se basa en un planificador en tiempo real. Cuando un sensor detecta cambios significantes en el estado del entorno, el agente reevalúa la relevancia de sus objetivos, puesto que sólo un objetivo puede estar activo en un instante determinado. Cuando el objetivo principal cambia, el agente usa el planificador para encontrar la secuencia de acciones que conduzcan a satisfacerlo.

Una acción se activa modificando algunos valores en las variables de la pizarra. Los subsistemas se actualizan periódicamente, y cambian su comportamiento de acuerdo a as instrucciones de la pizarra. Por ejemplo, la acción GotoTarget establece un nuevo destino en la pizarra, y el sistema de navegación, al actualizarse, debe encontrar una ruta hasta el nuevo destino.

Referencias:
  • Three States and a Plan: The A.I. of F.E.A.R. Jeff Orkin - Monolith Productions / M.I.T. Media Lab, Cognitive Machines Group
  • Agent Architecture Considerations for Real-Time Planning in Games. Jeff Orkin - Monolith Productions, Inc.

miércoles, 26 de mayo de 2010

Aspectos técnicos de JGOMAS

Arquitectura del sistema

JGOMAS ha sido diseñado como una arquitectura modular compuesta de diferentes componentes: una plataforma JADE, agentes JGOMAS y visualizares 3D.

Todos los agentes JGOMAS (JGomasAgent) se ejecutan en la plataforma JADE. Hay un agente especial entre los agentes JGOMAS, el Agente Administrador (Manager), que es responsable de la coordinación entre el resto de los agentes del sistema y envía toda la información pertinente al visualizador 3D.


Arquitectura del agente

JGOMAS establece la siguiente taxonomía de agentes

JGomasAgent: extiende la clase agente de JADE. Esta es la clase base para todos los agentes JGOMAS:

Manager: es una clase interna, no accesible por los usuarios. Los principales servicios ofrecidos por este agente especial son: la coordinación y la sincronización con otros agentes y el suministro de información a los agentes con respecto a su campo de visión.

Pack: otra clase interna que representa algunos de los objetos correspondientes al entorno

Troop: es la única clase externa de la taxonomía. Todos los agentes jugador serán instancias de alguna de las subclases de la clase Tropa:

Soldier: estos son los agentes principales de la batalla, ya que ofrecen un servicio de apoyo a su equipo.

Medic: los agentes de esta clase ofrecen un servicio de curación. Por lo tanto, cualquier agente jugador con un bajo nivel de salud puede pedir ayuda médica a los agentes médicos de su equipo.

FieldOps: los agentes de esta clase ofrecen un servicio de munición. Por lo tanto, cualquier agente jugador puede pedir balas al agente fieldOps de su equipo.



JGOMAS: Game Oriented Multi Agent System, based on Jade

JGOMAS es un entorno para desarrollar y ejecutar agentes inteligentes sobre entornos 3D para simulaciones y videojuegos.

Inicialmente fue desarrollado con fines docentes (para enseñar a programar agentes) en dónde sólo hay que programar la inteligencia de los agentes que forman un equipo.

Se puede utilizar en diferentes ámbitos, por ejemplo:

  • Estudio de la integración completa entre los sistemas multiagente y la realidad virtual.
  • Propuestas educacionales en Inteligencia Artificial.
  • Banco de pruebas para técnicas de Inteligencia Artificial: cooperación, coordinación, aprendizaje,…

Básicamente JGOMAS es un montón de agentes repartidos en dos bandos con unos objetivos que cumplir integrados en un entorno virtual.

JGOMAS permite ejecutar agentes en diferentes equipos, que compiten por lograr sus propios objetivos y los objetivos del equipo en el que se está ejecutando. Estos dos equipos compiten en el juego Capturar la Bandera, donde un equipo defiende su bandera del otro equipo, que trata de capturarla.

Los agentes pueden desempeñar roles diferentes: soldado, médico y operaciones sobre el terreno. Por otra parte, los agentes tienen que cooperara con sus compañeros de equipo a fin de lograr sus objetivos. Por ejemplo, un médico puede ofrecer servicios médicos a un soldado del mismo equipo que lanza una petición médica, ya que presenta un bajo nivel de salud.

JGOMAS está compuesto por:

  • Un Sistema Multiagente que corre bajo la plataforma JADE.
  • Un motor de renderizado (visualizador de gráficos 3D).

Este Sistema Multiagente está compuesto de varias clases (en JAVA) que proporcionan un conjunto de comportamientos básicos (registrarse, andar, mirar,…), implementados en la biblioteca jgomas.jar. Con el fin de conseguir conductas diferentes o más inteligentes que las que ya están implementadas, los usuarios pueden ampliar las clases base heredando métodos públicos o sobrecargándolos.

Por otra parte, el motor de renderizado es una aplicación multiplataforma (escrita en C++ y OpenGL), que permite a los usuarios mostrar los agentes JGOMAS lanzados en JADE en un mundo 3D.

martes, 25 de mayo de 2010

Sistemas Multiagentes en Counter Strike


Counter-Strike es un videojuego de disparos en primera persona por equipos (los terroristas y los antiterroristas). Se concibió originalmente como un juego de tipo multijugador (ya sea en LAN u online). Counter-Strike es una modificación completa del juego Half-Life, realizada por Minh Le y Jess Cliffe quienes lanzaron la primera versión el 18 de junio de 1999. La última versión del juego es el Counter-Strike: Online, que desde su salida oficial el 15 de septiembre de 2008 ha cosechado un éxito fenomenal en Internet, haciendo de él el juego de acción en primera persona online más jugado.

En su primera versión, el juego solo disponía de la versión en red (online o red local), lo que suponía no poder disfrutar en modo offline del juego. Una de las desventajas de solo ser red era que por aquellos años no era tan frecuente disfrutar de una conexión a internet, y mucho menos de una conexión con ancho de banda lo suficientemente aceptable. Por lo que una de las únicas formas de disfrutar del juego era en los cibers.

Dado que el juego tuvo una buena acogida, los desarrolladores se plantearon realizar una nueva versión con modo offline. Para ello, se introdujo la tecnología multiagente en el juego, conocida como bots.
Los agentes manejaban los personajes del juego simulando la actuación de otros jugadores.

Los primeros agentes eran muy sencillos ya que interactuaban de forma muy limitada con el entorno del juego. Estos actuaban en solitario guiados por puntos marcados con anterioridad en el mapa para saber por donde podían moverse. Una de las características más odiosas de estos primeros agentes era la precisión de sus disparos, al ser más fácil simular un tiro perfecto que la puntería humana, era común que un agente matase al jugador humano de un solo disparo en la cabeza desde distancias que lo hacían prácticamente invisible al ojo humano, incluso eran capaces de ver a través de las paredes.

Con el tiempo los agentes fueron evolucionando y adaptando mejor el funcionamiento, cosiguiéndose metas como:
  • Comunicarse dentro del equipo para definir estrategias o seguir órdenes dictadas por el jugador humano.
  • Decidir si seguirlas o descartarlas dichas estrategias.
  • Analizar en tiempo real el terreno y a simular la vista humana dentro del juego, así como “empeorar” la puntería para conseguir unos agentes más realistas.

Como se puede apreciar, los agentes cumplen todas las características de personajes siendo controlados por un jugador humano y el videojuego se comporta como un sistema multiagente ideal.

Características de los agentes en el juego:
  • Perciben el entorno: Los agentes reciben información del entorno, posición de objetos, procedencia de sonidos, etc.
  • Interactuan con el entorno: Los agentes se mueven en un mundo virtual con unas condiciones físicas, estos pueden manejar objetos (como abrir puertas, romper ventanas) o atacar a otros agentes.
  • Se comunican entre ellos: Los agentes pueden usar tanto un chat como comandos de radio que les permiten organizarse.
  • Se dirigen por un conjunto de tendencias buscando satisfacer unos objetivos: Dependiendo del equipo al que pertenezcan y el tipo de mapa intentaran realizar unas determinadas acciones para ganar la partida.
  • Poseen sus propios recursos: Los agentes, como cualquier otro jugador, al principio de la partida puede adquirir recursos, como: armas, defensas, munición o útiles.
  • Poseen habilidades y ofrecen servicios: Las misiones se hacen de forma coordinada y los agentes se apoyan unos a otros para llevarlas a cabo. Acciones habituales son abrir fuego de cobertura o ayudar a otro agente a alcanzar una posición elevada a la que no podría llegar el solo.

Sistemas Multiagente en videojuegos: Modelo jerárquico para tomar decisiones complejas

En ocasiones, la IA de los juegos se ve en la necesidad de tomar una decisión compleja que engloba a uno o varios agentes. Son decisiones empleadas para la coordinación de grupos, en juegos como Warcraft, Age of Empires, etc.




Éstas decisiones han de ser coordinadas, no vale que cada agente haga lo que quiera. Existen dos alternativas:
  • Todos lo agentes tienen todo el poder de decisión, cada uno decide y se ponen de acuerdo: modelo de negociación.
  • Se divide la capacidad de decisión en niveles y cada uno de los agentes decide en su nivel modelo jerárquico (Command Hierarchy).

El modelo jerárquico aborda la toma de decisiones de conjuntos de agentes en capas, donde a cada capa se le asigna a un tipo de decisión. Para ello identifica a los agentes con distintos roles, dependiendo del tipo de decisiones para las cuales está especializado.
El comportamiento de todo el grupo se basa en la decisión conjunta de los objetivos y medios para realizarlo en cada capa de la toma de decisión.

Ejemplo:
Debemos localizar recursos para producir tropas en un juego como Warcraft. Se identifican los siguientes agentes:
  • Agente Táctico: Decide que debe hacer tropas de tipo A. Para ello necesita del recurso R.
  • Agente Estratégico: Necesita buscar el recurso R en el mapa, una vez localizado debe alcanzarlo.
  • Agente Logístico: Debe ir del punto A al punto B (donde se encuentra el recurso R), coger ese recurso y volver.
  • Agente Recolector: Debe estar atento por si hay enemigos cerca, en cuyo caso huirá en la dirección contraria.

Al ser agentes hay tener en cuenta los aspecto básicos de los mismo, es decir, perciben el entorno (mapa, recursos, enemigos, etc.) y actúan en función a sus percepciones, pero como son autónomos pueden “desobedecer” las órdenes si es necesario. En este ejemplo, el Agente Logístico podría decidir una ruta de A a B por en medio del enemigo, pero al indicarle al Agente Recolector que se mueva este le va a “desobedecer” indicando la proximidad de los enemigos.

Fuente de la información: aquí.

Técnicas futuras de IA en videojuegos

  • Bayesian Networks: Sistemas de toma de decisiones en entornos con incertidumbre.
  • Decision Trees: Representación de un conjunto de reglas para el análisis del estado en forma de árbol.
  • Fuzzy Logic: Permite representar estados del entorno en los que la división entre estados no es muy clara (e.g. Estar hambriento).
  • Genetic Algorithms: Se emplearían para conseguir encontrar soluciones a problemas en los que no es sencillo encontrar reglas que lo modelicen.
  • N-Grams: Predicción de estados o comportamientos por medio del análisis estadístico del funcionamiento de un agente o de la aparición de sucesos.
  • Neural Networks: Redes neuronales y perceptrones que se emplean para entrenar comportamiento o perfiles de los agentes a lo largo de un juego.
  • Planning: Técnicas de consecución de mentas por medio de la planificación de acciones a lo largo de una secuencia de tiempo.
  • Character and Emotional Modeling: Técnicas para conseguir diferentes agentes de un juego tengan comportamientos distintos frente a las mismas situaciones “emulando” la diferencia de comportamientos “humanos”.
  • Reinforced Learning: Mecanismos generales de aprendizaje y entrenamiento de agentes dentro de juegos en los que pueden existir muchas variantes.
  • Player Modeling: Permite la adaptación de las características y dificultad del juego al jugador, analizando su comportamiento y preferencias.
  • Reputation Systems: Modifica la interacción de agentes teniendo en cuenta acciones pasadas que den un perfil del avatar de un jugador frente a los agentes que pueblan en juego.
  • Smart Terrain: Representar los objetos inanimados de un entorno por medio de agentes a los cuales se les puede interrogar sobre sus capacidades e interactuar con ellos.
  • Speech Recognition: Nuevos modos de interactuar con los dispositivos de juego introdujeron la necesidad de aplicar técnicas de reconocimiento de voz.

Simulador para juegos de guerra: EKSL

DARPA (antiguamente conocida como ARPA, es una agencia del departamento de defensa de los Estados Unidos responsable del desarrollo de nuevas tecnologías para uso militar) desarrolla el simulador EKSL (Experimental Knowledge Systems Laboratory), con objeto de analizar los requisitos de agentes autónomos operando en entornos complejos que representen condiciones del mundo real. En este simulador un jugador humano debe capturar el territorio enemigo compitiendo contra un adversario inteligente, teniendo en cuenta consideraciones físicas (colisiones, deformaciones del terreno, obstáculos) y psicológicas (miedo, moral, fatiga)... Es una simulación 3D en la que los jugadores disponen de batallones y soporte aéreo. La característica principal es que existen elementos con autonomía y capacidad de planificación, que interactúan con el jugador humano que plantea las estrategias. Proporciona una interfaz gráfica que permite al jugador evaluar la situación y analizar posibles alternativas.
Los tres elementos clave de este proyecto son el simulador (AFS), la arquitectura de control (HAC) y un planificador (GRASP). Además, el sistema tiene una interfaz gráfica para observar los acontecimientos y participar.

  • El simulador AFS (Abstract Force Simulator) es un simulador de propósito general de agentes.
  • La arquitectura de control HAC (Hierarchical Agent Control), permite diseñar la jerarquía de dependencias para llevar a cabo las acciones, y es muy adecuada para controlar un número elevado de agentes interactuando en un entorno dinámico.
  • El planificador GRASP (General Reasoning using Abstract Physics) es una tecnología utilizada para representar actividades dinámicamente y ayudar a los agentes a tomar decisiones basadas en información para ganar el juego, en este caso las directivas para alcanzar las mejores posiciones.


Configuración y sistema inicial


Vista 2D

La clave del simulador está en el equilibrio entre el conocimiento público y privado de las unidades individuales. Por ejemplo, si un batallón debe atravesar un terreno con un lago, la directiva de alto nivel es traducida en los comandos simples de bajo nivel que determinan los movimientos puntuales, evitan obstáculos e informan de los eventos que aparecen.


Efectos de la morfología del terreno en la unidad