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.
● A menudo los personajes de videojuego
están haciendo siempre lo mismo
○ Hasta que ocurre algo que les hace cambiar
○ Ej. Patrullan y patrullan… hasta que encuentran al
avatar del jugador y entonces: comienzan a pelear
Máquina de estados 2
Motivación
● La máquina de estados decide según el
conocimiento externo (como el árbol de
decisión) pero también según el interno
○ ¡Junto con la
guionización, es la
técnica de decisión más
utilizada en la industria!
Máquina de estados 3
Motivación
● De nuevo, los fantasmas de Pac-Man (1980)
tienen las primeras máquinas de estados de
la historia (codificadas “a fuego”) que
“parecen inteligentes”
● Llevan décadas usándose
○ Golden Axe (1989) fue
pionero en tener enemigos
que corren y te rodean, con
una máquina de estados
Máquina de estados 4
Hitos históricos
● Las máquinas de estados se sofisticaron y
popularizaron con los bots del género FPS
○ Entonces eran cruciales, había poco juego online
○ Se combinaban con otras técnicas como anotar
escenarios con puntos de ruta y de acción, usar
mallas de navegación, etc.
Máquina de estados 5
Hitos históricos
Quake 3 Arena
(1999)
Unreal Tournament
1999
etc. * Lenguaje Quake-C
● También llamada máquina de estados
finitos, son el modelo más flexible y
popular del comportamiento en juegos
○ La toma de decisiones reside en las transiciones
Máquina de estados 6
Máquina de estados
FINITE STATE MACHINE (FSM)
STATE MACHINE
● Muy a menudo, cuando
hay prisa por optimizar
se recurre a soluciones
ad hoc como una
máquina de estados
codificada “a fuego”
○ Decidir con lo básico:
switch (= ifs) y enumerados
Máquina de estados 7
Máquina de estados
HARD-CODED
FSMs
Máquina de estados 9
Pseudocódigo
Espacio = O(1)
Tiempo = O(m)
donde m es el número de
transiciones por estado
● Interfaces del estado y de la transición
Máquina de estados 10
Pseudocódigo
* Acciones DURANTE, ANTES y DESPUÉS del estado...
● A menudo los estados son estructuras que
se leen de fichero y sus transiciones se
generalizan a combinación de condiciones
Máquina de estados 11
Transiciones generalizadas
*¡Tendrás que programarte lo
que es una condición lógica!
● Se usa tanto para decisión de agentes
racionales, como para implementar el bucle
de juego o el flujo de los menús
Máquina de estados 14
Múltiples usos
● Si tenemos el típico
agente inteligente que es
un robot limpiador, su
máquina de estados admite variantes
○ No determinista
■ Ej. Aleatoria
○ De estado múltiple
○ …
○ Jerárquicas
■ Para reducir tamaño
y reutilizar código
en ciertos casos
Máquina de estados 15
Variantes
HIERARCHICAL
FSM (HFSM)
● Se usan las máquinas de estados jerárquicas
si el agente puede recibir interrupciones
○ Ej. Alarma que hace que interrumpa su patrulla
○ ¡La implementación de transiciones se complica!
● Pueden combinarse
con árboles de decisión
○ Precisamente
sustituyendo las
transiciones condicionales
por árboles de decisión
Máquina de estados 16
Máquina de estados jerárquica
● Así se implementan las “interrupciones” en
máquinas de estados (Ej. nivel de energía)
Máquina de estados 17
Máquina de estados jerárquica
● Versión mejorada con una máquina de
estados jerárquica (estados con subestados)
Máquina de estados 18
Máquina de estados jerárquica
H* señala el “subestado histórico”
por dónde empezará el estado,
aunque al salir, se recordará el
último subestado en el que estuvo
● Máquina de estados jerárquica con una
transición que cruza la jerarquía
Máquina de estados 19
Máquina de estados jerárquica
● ¿Cómo se define un estado aquí?
A. Por sus acciones y sus transiciones
B. Por sus acciones de entrada y de salida
C. Por sus acciones de entrada, salida y de estado
D. Por sus transiciones
● Desarrolla tu respuesta (en texto libre)
Máquina de estados 20
Participación
● de Byl, P.: Finite State Machines
https://learn.unity.com/project/finite-state-machin
es-1
● Millington, I.: Artificial Intelligence for Games. CRC
Press, 3rd Edition (2019)
● Unity: Introduction to Visual Scripting
https://learn.unity.com/project/introduction-to-vis
ual-scripting
● Unity: Script Machines and State Machines
https://docs.unity3d.com/Packages/com.unity.visua
lscripting@1.8/manual/vs-graph-machine-types.html
Máquina de estados 21
Más información
* Excepto el contenido multimedia de terceros autores
Federico Peinado (2019-2023)
www.federicopeinado.es
Críticas, dudas, sugerencias...
22