Comportamiento de IA con máquinas de estados
Implemente completamente en scripts de Lua la lógica de IA de enemigos basada en FSM.
Comportamiento de IA con máquinas de estados es una lección gratuita de Lua Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Lua Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Lua Academy incluye 4 lecciones en total.
¿Qué es una máquina de estados finitos?
Una máquina de estados finitos (FSM) define el comportamiento como un conjunto de estados con transiciones entre ellos, activadas por condiciones o eventos.
Estructura de una tabla FSM
Represente una FSM como una tabla con un estado actual, una tabla de estados y callbacks opcionales de entrada, salida y actualización para cada estado.
local function newFSM(initialState)
return {
current = initialState,
states = {},
}
endDefinir estados
Cada estado es una tabla con funciones opcionales enter, update y exit.
local fsm = newFSM("idle")
fsm.states.idle = {
enter = function(self) print("Enter idle") end,
update = function(self, dt)
if self.enemy then self:transition("chase") end
end,
exit = function(self) print("Exit idle") end
}Añadir el estado de persecución
El estado de persecución sigue al jugador y pasa al estado de ataque cuando está lo bastante cerca.
fsm.states.chase = {
enter = function(self) print("Chasing!") end,
update = function(self, dt)
if self.distToPlayer < 2 then
self:transition("attack")
elseif not self.enemy then
self:transition("idle")
end
end
}Función de transición
Una transición llama a exit en el estado actual, cambia de estado y después llama a enter en el nuevo estado.
function fsm:transition(newState)
local cur = self.states[self.current]
if cur and cur.exit then cur:exit() end
self.current = newState
local next = self.states[newState]
if next and next.enter then next:enter() end
endActualizar la FSM
En cada tick del juego, llame a fsm:update(dt) para ejecutar la lógica de actualización del estado actual.
function fsm:update(dt)
local state = self.states[self.current]
if state and state.update then
state:update(dt)
end
endMáquinas de estados jerárquicas
Los estados pueden contener FSM anidadas. Un estado principal gestiona el comportamiento general (combate o patrulla), mientras que las FSM secundarias gestionan los detalles dentro de cada estado principal.
FSM basadas en datos
Defina las transiciones de la FSM como tablas de datos cargadas desde archivos de configuración. Así, los diseñadores pueden ajustar la IA sin modificar el código.
local transitions = {
idle = {seeEnemy = "chase"},
chase = {lostEnemy = "idle", nearEnemy = "attack"},
attack = {enemyDead = "idle"},
}Máquinas de estados apiladas
Una pila de estados permite que estados temporales (por ejemplo, «stunned») se coloquen sobre el estado actual y que este se reanude cuando terminen.
Múltiples agentes de IA
Cada entidad enemiga tiene su propia instancia de FSM, por lo que su IA se ejecuta de forma independiente. Esto resulta sencillo con tablas y closures de Lua.
Depurar una FSM
Registre todas las transiciones durante el desarrollo. Una tabla de trazas almacena {from, to, time} para analizar posteriormente el comportamiento de la IA.
Pregunta sobre las FSM
¿Qué activa una transición de estado en una FSM?
Resumen: IA con máquinas de estados
Las FSM de Lua utilizan una tabla de objetos de estado (enter/update/exit) con una función de transición. Separan claramente las responsabilidades de la IA, admiten un diseño basado en datos y escalan desde cerebros sencillos para enemigos hasta comportamientos jerárquicos complejos.
Preguntas frecuentes
¿La lección «Comportamiento de IA con máquinas de estados» es gratis?
Sí — el texto completo de «Comportamiento de IA con máquinas de estados» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Lua Academy, actualiza a CoddyKit PRO. El curso de Lua Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Comportamiento de IA con máquinas de estados»?
Implemente completamente en scripts de Lua la lógica de IA de enemigos basada en FSM. Practicas Lua Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Lua Academy?
No se requiere experiencia previa. Lua Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Comportamiento de IA con máquinas de estados»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Lua Academy?
Sí. Cada lección de Lua Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Sistemas de eventos en Lua
- Scripting basado en componentes
- Comportamiento de IA con máquinas de estados
- Configuración basada en datos y hot-reload