Curso teórico-práctico sobre Inteligencia Artificial para Videojuegos (IAV) basado en el modelo de propone Ian Millington en su libro, impartido en la Universidad Complutense de Madrid.
● ¡Hay muchos comportamientos de dirección!
● Seguiremos hablando de ellos, y veremos
formas de combinarlos
○ Cuando varios agentes
interactúan entre sí
emerge comportamiento
de grupo, que aparenta
estar “coordinado”
Desplazamiento en grupo 2
Motivación
● Esto permitirá generar movimientos
tan creíbles como el de los pajaroides,
demo de Reynolds (1986)
○ Aparenta haber “inteligencia”, ¡esa es la clave!
Desplazamiento en grupo 3
Motivación
BOIDS (BOTS + BIRDS)
● Trata de evitar “pegarse” demasiado a
otros que van en su misma dirección
○ Es casi “repulsión”, útil para simular multitudes
○ Según distancia al vecino más cercano, umbral
máximo de vecindad y aceleración máxima, vemos
separación lineal o ley inversa del cuadrado
○ También puede calcularse la repulsión total como
el sumatorio para los N vecinos más próximos
Desplazamiento en grupo 4
Separación
LINEAR SEPARATION
INVERSE SQUARE LAW
* k es un coeficiente positivo que indica lo rápido que decae la separación con la distancia
(y teniendo en cuenta que el resultado NO está normalizado…)
SEPARATION
Desplazamiento en grupo 5
Separación
Tiempo = O(1)
Espacio = O(n)
donde n son los agentes vecinos
● Trata de no chocar con
otros agentes que van en dirección distinta
○ Puede verse como Separación de aquellos vecinos
que estén en el cono de visión del agente
○ La comprobación debe tener en cuenta dirección
desde el agente hasta la colisión y umbral de cono,
el coseno de la mitad del ángulo del cono de visión
○ Existen mejoras a este algoritmo, ya que a veces
“evita demasiado” y otras veces se queda corto
Desplazamiento en grupo 6
Evitación de colisiones
COLLISION AVOIDANCE
CONE
THRESHOLD
Desplazamiento en grupo 9
Evitación de colisiones
Tiempo = O(1)
Espacio = O(n)
donde n son
los posibles vecinos
● Trata de no chocar con
obstáculos que no son
circulares ni pequeños
○ A veces hay obstáculos,
como escaleras, esquinas o paredes, cuya forma no
puede aproximarse a un sólo punto
○ Se usará un detector de colisiones, proyectando
uno o varios rayos “unos segundos” por delante y, si
alguno colisiona, fija un nuevo objetivo y lo seguirá
■ El objetivo se establecerá cierta distancia sobre
la normal al objeto desde el punto de la colisión
Desplazamiento en grupo 10
Evitación de obstáculos
● Para añadir comportamientos, una idea
habitual es extender el comportamiento
(Ej. Seguir) en una clase específica que
sería Seguir… evitando Obstáculos
Desplazamiento en grupo 11
Evitación de obstáculos
● El detector de colisiones tiene esta interfaz
○ Usando una determinada configuración de rayos,
devuelve la primera colisión encontrada
○ ¡Las esquinas suponen una
verdadera trampa para
la IA!, requieren
soluciones avanzadas Desplazamiento en grupo 13
Evitación de obstáculos
● Es habitual necesitar varios a la vez
○ Ej. Seguir un objetivo, evitar colisiones con
agentes, con obstáculos, llegar al destino…
○ Lo de ir extendiendo las clases básicas con
versiones específicas… no es lo más elegante
● Combinar estos comportamientos requiere
usar mezcla (por pesos o por prioridades),
arbitraje (cediéndose el control)... o ambas
técnicas (llamadas arquitecturas híbridas)
Desplazamiento en grupo 14
Combinar comportamientos
BLENDING
ARBITRATION
● La forma más simple de combinar
comportamientos de dirección: sumarlos
○ Muy típico para mantener agrupaciones
■ Cohesión (Llegada al centro de masas del grupo)
■ Separación con respecto a los vecinos
Desplazamiento en grupo 15
Mezcla por pesos
* Los pesos no suelen sumar 1 (no es media ponderada) pero
da igual porque hay máximos de seguridad
Desplazamiento en grupo 16
Mezcla por pesos
Tiempo = O(1)
Espacio = O(n)
donde n son
los comportamientos
de dirección
● Los pajaroides posiblemente tienen el
primer comportamiento de dirección
combinado, y el más famoso, el
desplazamiento en bandada
○ Mezclaban por pesos 3 comportamientos de
dirección de los básicos… ¡y el resultado era brutal!
Desplazamiento en grupo 17
Desplazamiento en bandada
FLOCKING
Separación Cohesión Alineamiento
(y equiparamiento de velocidad)
● Simula una bandada o enjambre de seres…
que no se dirigen a ningún sitio
○ Al añadir Equiparación de velocidad al
desplazamiento en bandada, los pesos van así:
■ Separación > Cohesión > Alineamiento y
Equiparación de velocidad
Desplazamiento en grupo 18
Desplazamiento en bandada
* Los vecinos pueden reducirse considerando
sólo los que tengo en mi cono de visión
● En la práctica, surgen problemas si la
bandada se mueve en entornos cerrados
○ Equilibrio estable, los comportamientos de
dirección se contraponen y bloquean al agente
○ Entornos restringidos, con puertas o pasillos por
donde el agente inteligente no es capaz de pasar
○ Miopía, los comportamientos de dirección no ven
más allá de lo local... pueden fallar en lo global
Desplazamiento en grupo 19
Desplazamiento en bandada
● Hay comportamientos de dirección que sólo
algunas veces devuelven aceleración
○ ¡Y justo entonces conviene hacerles MUCHO caso!
● Se pueden organizar estos comportamientos
en grupos ordenados por prioridad
○ Cada grupo da una salida (= sus comportamientos
mezclados por peso) y se usa sólo la primera salida
por encima de cierto umbral ε (cercano a 0)
○ Ej. Prioridad 1: ¡Evitaciones diversas!; Prioridad 2:
Separación; Prioridad 3: Persecuciones varias
Desplazamiento en grupo 20
Mezcla por prioridad
Desplazamiento en grupo 21
Mezcla por prioridad
Tiempo = O(1)
Espacio = O(n)
donde n son
los comportamientos
de dirección
● Si necesitásemos un control más fino, el
siguiente paso sería comportamientos de
dirección que cooperen entre sí
○ Implica reprogramarse los algoritmos, ya no
tendríamos algoritmos independientes
○ Tiene mucho que ver con el tema
de Decisión, pues Millington
propone aquí un sistema
compuesto basado en un flujo
que desglosa cada componente
del comportamiento de dirección
y luego trata de actuar teniéndolo todo en cuenta
Desplazamiento en grupo 22
Arbitraje cooperativo
● El cono de visión del agente
A. Sirve para “repeler” a otros agentes
B. Sirve como umbral para percibir
C. Ayuda a filtrar obstáculos colisionables
D. Ayuda a filtrar los agentes que podrían colisionar
● Desarrolla tu respuesta (en texto libre)
Desplazamiento en grupo 23
Participación
* Excepto el contenido multimedia de terceros autores
Federico Peinado (2019-2023)
www.federicopeinado.es
Críticas, dudas, sugerencias...