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.
● Halo: Combat Evolved
introdujo los árboles de
comportamiento
● Se popularizaron con
Halo 2 al ofrecer una
mezcla de técnicas
que era comprensible
para el diseñador
○ Máquinas de estados finitos
jerárquicas + planificación
reactiva + gestor de acciones
Árbol de comportamiento 4
Hitos históricos
● Hoy día también se combinan árboles de
comportamiento con máquinas de estado
○ Final Fantasy XV (AI Graph, en Luminous Studio)
○ StateTree en Unreal Engine 5
Árbol de comportamiento 5
Hitos históricos
● Al igual que con la Interfaz del Mundo,
centralizar la ejecución de acciones en un
gestor hace la IA más flexible y depurable
○ Ej. Actividades comunes como cambios de estado,
animaciones, movimientos… y algunas de alto nivel
● Tipos de acciones
○ Simples, a menudo agrupando varias actividades
○ Interrumpibles, dejan saltar a otra más importante
○ Compuestas, generalmente resultado de combinar
acciones simples tomadas por sistemas simultáneos
○ Guionizadas, ya dijimos que son útiles y creíbles
(y se suelen combinar con las otras, de hecho)
Árbol de comportamiento 6
Gestor de acciones
Árbol de comportamiento 7
Gestor de acciones
* La capa
más externa
es ACTUAR;
DECIDIR es
una capa
más interna
● Puede servir de base flexible para coordinar
varios sistemas de toma de decisiones
○ Cada sistema será un
“experto” que consulta
la pizarra y pide turno
○ El árbitro cede el
control a un experto
○ El experto modifica
hechos de la pizarra
○ El experto devuelve
el control al árbitro
Árbol de comportamiento 8
Arquitectura de pizarra
BLACKBOARD ARCHITECTURE / SYSTEM
● Para evitar acoplamiento entre los estados
de una máquina jerárquica de estados
finitos surge el árbol de comportamiento
○ Representa intuitivamente la ejecución de un plan
(tarea = secuencia de acciones)
● Es un árbol dirigido
○ Tiene un nodo raíz, nodos
de control de flujo y
nodos de ejecución
(las tareas)
* que pueden estar en ejecución
o terminar con éxito o con fracaso
Árbol de comportamiento 9
Árbol de comportamiento
BEHAVIOR TREES (BTs)
● Si hay biblioteca de árboles prediseñados
(arquetipos) el diseñador los puede
instanciar y reutilizar parcial o totalmente
○ Esto es una solución popular, pero limitada
(dificulta gestionar interrupciones externas)...
○ Ej. Subárboles habituales
Árbol de comportamiento 10
Árbol de comportamiento
* Build defenses
sería otro BT...
● Dos nodos principales de control de flujo
○ Nodo Selector (?), tendrá éxito
en cuanto uno de sus hijos tenga
éxito, probando de izquierda a
derecha
○ Nodo Secuencia (→) ,
tendrá éxito sólo cuando
todos sus hijos tengan
éxito, ejecutando de
izquierda a derecha
Árbol de comportamiento 11
Árbol de comportamiento
● Primera versión de “ir a la habitación”
Árbol de comportamiento 12
Ejemplos
* Responde a la
pregunta: ¿Está la
puerta visiblemente
abierta?
● Segunda versión con el
árbol algo refactorizado
○ Pero es una simplificación,
porque la apertura de la
puerta podría fracasar (si
está cerrada con llave) y
todavía faltaría la tarea de
“entrar en la habitación”...
Árbol de comportamiento 13
Ejemplos
● Tercera versión, mínimamente aceptable
○ Ahora ya sí
está completa
(algo diferente
al libro) y tiene
en cuenta los
posibles estados
de la puerta
(abierta,
cerrada o
cerrada con
llave)
Árbol de comportamiento 14
Ejemplos
* ¿Está la puerta
cerrada SIN LLAVE?
Árbol de comportamiento 16
Pseudocódigo
Espacio = O(n)
Tiempo = O(log2
n)
donde n es el número de nodos
en el árbol
● Los árboles de comportamiento
no son un estándar y en cada
implementación es posible encontrar toda
clase de curiosas variantes
○ La combinación con una pizarra es muy habitual
(Ej. Unreal Engine)
○ La introducción de elementos pseudoaletorios
ayuda a tener personajes menos predecibles
○ La utilización de otros nodos extra, con nueva
funcionalidad, permite sofisticar la técnica
(Ej. Nodos para concurrencia)
Árbol de comportamiento 17
Variantes
● Para desacoplar el contexto los nodos
suelen compartir información a través de
una pizarra (=una simple tabla de variables)
Árbol de comportamiento 18
Uso de pizarra
● En algunas variantes se añade aleatoriedad
a los nodos
Selectores y
hasta a los
de Secuencia
○ Combinando nodo
determinista y
no determinista
conseguimos un
“orden parcial”
que hace al NPC
menos predecible
Árbol de comportamiento 19
Pseudoaleatoriedad
Símbolos de aleatoriedad
en el árbol de comportamiento
● Pueden añadirse nodos extra para conseguir
cierta concurrencia (e incluso paralelismo)
○ Ej. Nodo Decorador, se sitúa justo sobre una tarea,
para filtrar y controlar los recursos necesarios para
su ejecución
■ Ej. Limitar número de ejecuciones de una tarea,
continuar hasta que se devuelva fracaso,
invertir el valor devuelto...
■ Ej. Actuar cómo “guarda”
de un recurso
Árbol de comportamiento 21
Concurrencia
○ Ej. Nodo Paralelo, típicamente definido como una
Secuencia pero lanzando todos los hijos a la vez
■ Ej. Espera
■ Otros nodos de concurrencia
y temporización
● A veces introduciendo Paralelo, surge la
necesidad de comunicar unas tareas con
otras (ej. para interrumpirse),
comunicación que se desacopla también
gracias al uso combinado de la pizarra
Árbol de comportamiento 22
Concurrencia
● Para hacer seguimiento de condiciones
Árbol de comportamiento 23
Ejemplos
Algún mecanismo que permita
evaluar algo… para interrumpir
el orden de ejecución del árbol
si ocurre algo importante
● Pseudoaleatoriedad y concurrencia para
comportamientos de grupo (Ej. 3 soldados)
○ Esto sería una forma implícita de “coordinación”
Árbol de comportamiento 24
Ejemplos
● Lo habitual es observar cierta condición y
abortar (sin recuperación) la tarea actual si
otra más prioritaria se vuelve viable
Árbol de comportamiento 25
Gestión de interrupciones
● ¿Qué afirmación es la verdadera?
A. Si su primer hijo tiene éxito, la Secuencia también
B. Si su último hijo fracasa, la Secuencia tiene éxito
C. Si su último hijo fracasa, el Selector tiene éxito
D. Si su primer hijo tiene éxito, el Selector también
● Desarrolla tu respuesta (en texto libre)
Árbol de comportamiento 26
Participación
● de Byl, P.: Behaviour Trees
https://learn.unity.com/project/behaviour-trees?uv=2021.3
● de Byl, P.: Learn Advanced AI for Games
with Behaviour Trees
https://www.udemy.com/course/behaviour-trees/
● Millington, I.: Artificial Intelligence for
Games. CRC Press, 3rd Edition (2019)
● Rabin, S.: Game AI Pro (2015-2017)
https://www.gameaipro.com
● StateTree de Unreal Engine 5
https://docs.unrealengine.com/5.1/en-US/state-tree-in-unreal-e
ngine/
Árbol de comportamiento 27
Más información
* Excepto el contenido multimedia de terceros autores
Federico Peinado (2019-2023)
www.federicopeinado.es
Críticas, dudas, sugerencias...