- 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.
martes, 25 de mayo de 2010
Técnicas futuras de IA en videojuegos
Simulador para juegos de guerra: EKSL
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
Técnicas actuales de IA en videojuegos
- A* Pathfinding: Búsqueda de rutas entre dos puntos, desde los modelos básicos, pasando por optimizaciones en velocidad o rendimiento.
- Command Hierarchy: Estructuración de la toma de decisiones de conjuntos de agentes en capas, haciendo cada capa dedicada a un tipo de decisión, empleado para coordinación de grupos, etc.
- Dead Reckoning: Método para la predicción de la posición de un objetivo basado en su posición actual, velocidad y rumbo.
- Emergent Behavior: Creación de comportamientos basándose en muchos agentes que con reglas simples crean comportamientos complejos no prefijados.
- Flocking: Movimiento de grupos de agentes de modo natural, dando la sensación de bandadas o enjambres complejos.
- Formations: Movimientos de grupos de agentes de forma cohesionada representado una formación (típicamente militar) que reacciona de modo coherente frente a obstáculos, etc.
- Influence Mapping: Modelización de las zonas de interacción / conflicto derivadas de la proximidad / intensidad de distintos agentes.
- Scripting: Especificación de determinada parte (o toda) la lógica del juego.
- State Machines: Máquinas de estados y autómatas para la toma de decisiones.
viernes, 7 de mayo de 2010
POGAMUT: Plataforma de código abierto para el desarrollo rápido de comportamientos de agentes en videojuegos
Pogamut está hecho con la intención de servir tanto a proyectos de investigación como a trabajos académicos de estudiantes o de principiantes en la materia. De hecho fue utilizada por estudiantes para sus proyectos y también como herramienta de aprendizaje en la universidad y en institutos.
El IDE es un pulgin para NetBeans, en el que se proporciona un conjunto de clases e interfaces para que los programadores implementen sus agentes en Java.
Algunas de las funciones que ofrece a los desarrolladores, y que se pueden observar en la siguiente imagen son: plantillas vacías de agentes, agentes de ejemplo (1), lista de agentes en ejecución (4), introspección de las variables y acceso rápido a sus propiedades (3), depurador paso a paso, visor de logs (5) y el manual de contros de posición de los agentes (2).

Pogamut 3 fue presentado en el AAMAS de 2009, y volverán a hacerlo los próximos días 10 y 11 de Mayo en la edición de este año.
Fuente: Enlace al artículo completo.
jueves, 6 de mayo de 2010
Screaming Racers
Arquitectura interna.
El servidor cuenta con un simulador que da vida al entorno donde los agentes piloto se desarrollan, interactúan y aprenden.
Los clientes serán utilizados por los jugadores para conectarse al servidor. El diseño multiagente proporciona una serie de ventajas en lo que se refiere a los agentes piloto. Estos pueden ser movidos desde los clientes al servidor y viceversa cuando sea necesario. Por este motivo se minimizan los problemas de la latencia en las comunicaciones. Por otro lado, los agentes piloto pueden sentir el entorno mediante una serie de sensores predefinidos y además se pueden comunicar entre ellos, permitiendo a los equipos compartir el conocimiento para beneficiarse de un comportamiento colaborativo.
Motor Físico: su objetivo es el de aplicar las distintas leyes que rigen la física a todos los objetos que se encuentran en el entorno.
Agente Simulador: es el responsable de gestionar y desarrollar cada sesión de entrenamiento o competición. Debe comunicarse con todos los agentes piloto para que estos puedan coordinar su funcionamiento. Funciona también como agente pizarra para comunicaciones entre equipos.
Motor Gráfico: muestra en pantalla la apariencia de entorno y la interfaz de usuario.
Agente Controlador: es el encargado de coordinar al resto de componentes.
Agente Comunicador: implementa las tareas de comunicación entre servidor y clientes y viceversa.
Agentes Piloto: cada uno de estos agentes implementa el cerebro de uno de los pilotos del simulador. Reciben información de sus sensores por medio del agente simulador y toman decisiones para actuar en consecuencia.

Resultados obtenidos.
Trazadas de un vehículo: a) Piloto sin evolucionar. b) Piloto entrenado.
miércoles, 5 de mayo de 2010
Resumen del artículo: Juego de Dominó para Cuatro Jugadores ultilizando Agentes Artificiales
Después de haber leído el artículo "Juego de Dominó para Cuatro Jugadores utilizando Agentes Artificiales" hemos hecho un pequeño resumen del mismo.
El objetivo de este es mostrar los sucesos del juego mediante la interacción de los jugadores y los sucesos del comportamiento del juego en pareja. Los resultados que se muestran en el artículo confirman que el uso de agentes programados con reglas y planes básicos, junto con la interacción local entre ellos y con el medio, puede producir comportamientos complejos.
El trabajo del artículo, describe la implementación de un juego de dominó para cuatro jugadores. Para ello, se diseñan dos parejas de agentes, los cuales, representa a los jugadores. Cada agente es dotado con una estrategia local que se basa en observar-razonar-actuar para seleccionar la ficha que se va a poner en juego. Las parejas formadas por los agentes tienen características muy distintas. Dos agentes cooperan para realizar una jugada, mientras que los dos agentes restantes aplican una estrategia individual. Esta división es planteada para comparar el funcionamiento de los agentes descentralizados (agentes cooperativos), que actúa por el bien de la pareja frente a los que actúan de forma individualista.
Como está diseñado
Los agentes están diseñados bajo el esquema del enfoque clásico de IAD-SMA (Inteligencia Artificial Distribuida-Sistemas Multiagente). Utilizan la lógica de primer orden para representar la base de conocimiento de los agentes jugadores. El lenguaje de programación que utilizan para representar dicho conocimiento es Prolog, el cual les permite el diseño de programas basados en procesos de inferencia.
La base de conocimientos, el proceso de selección de acción, así como los procesos de comunicación, los han traducido en términos de fórmulas lógicas. Por último, definen un agente más denominado facilitador, responsable de la logística del juego.
En el artículo se presentan los experimentos con gráficas que representan los resultados obtenidos.
Para consultar más información se facilita la dirección web en la cual se halla el artículo original:
Simulación basada en agentes
Una de las aplicaciones de la tecnología de agentes es la simulación. La simulación basada en agentes intenta hacer más fáciles entre otras, las tareas de comprender el sistema y hacer predicciones cualitativas y cuantitativas en relación al futuro. Un modelo de simulación basado en agentes consiste en un conjunto de agentes, los cuales encapsulan el comportamiento de varios individuos. La ejecución del modelo emula el comportamiento global del sistema. La Simulación Basada en Agentes utiliza los agentes para la generación del comportamiento del modelo en un estudio de simulación.
La simulación basada en agentes utiliza los agentes en un estudio de simulación con los siguientes propósitos:
- Para proveer asistencia computacional para las funciones de interfaces finales o internas;
- Para procesar elementos de un estudio de simulación de forma simbólica (por ejemplo, para verificaciones de consistencia y fiabilidad incorporada);
- Para proveer habilidades cognitivas a los elementos de un estudio de simulación, tales como aprendizaje o comprensión de habilidades.
