Comportamento dell'IA con macchine a stati
Implementi interamente negli script Lua la logica dell'IA dei nemici basata su FSM.
Comportamento dell'IA con macchine a stati è una lezione Lua Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Lua Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Lua Academy include 4 lezioni in totale.
Che cos'è una macchina a stati finiti
Una macchina a stati finiti (FSM) definisce il comportamento come un insieme di stati con transizioni tra loro, attivate da condizioni o eventi.
Struttura a tabella di una FSM
Rappresenti una FSM come una tabella con uno stato corrente, una tabella degli stati e callback opzionali di entrata/uscita/aggiornamento per ogni stato.
local function newFSM(initialState)
return {
current = initialState,
states = {},
}
endDefinizione degli stati
Ogni stato è una tabella con funzioni opzionali enter, update e 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
}Aggiunta dello stato di inseguimento
Lo stato di inseguimento segue il giocatore e passa all'attacco quando è sufficientemente vicino.
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
}Funzione di transizione
Una transizione chiama exit sullo stato corrente, cambia stato e poi chiama enter sul nuovo stato.
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
endAggiornamento della FSM
A ogni tick del gioco chiami fsm:update(dt) per eseguire la logica di aggiornamento dello stato corrente.
function fsm:update(dt)
local state = self.states[self.current]
if state and state.update then
state:update(dt)
end
endMacchine a stati gerarchiche
Gli stati possono contenere FSM annidate. Uno stato padre gestisce il comportamento generale, ad esempio combattimento o pattugliamento, mentre le FSM figlie gestiscono i dettagli all'interno di ogni stato padre.
FSM guidate dai dati
Definisca le transizioni della FSM come tabelle di dati caricate dai file di configurazione. In questo modo i designer possono modificare l'IA senza intervenire sul codice.
local transitions = {
idle = {seeEnemy = "chase"},
chase = {lostEnemy = "idle", nearEnemy = "attack"},
attack = {enemyDead = "idle"},
}Macchine a stati impilate
Uno stack degli stati consente agli stati temporanei, ad esempio "stunned", di essere inseriti sopra lo stato corrente e di riprenderlo al termine.
Più agenti di IA
Ogni entità nemica ha una propria istanza FSM, quindi la relativa IA viene eseguita indipendentemente. Con le tabelle e le closure di Lua è semplice ottenere questo comportamento.
Debug delle FSM
Registri tutte le transizioni durante lo sviluppo. Una tabella di traccia memorizza {from, to, time} per l'analisi a posteriori del comportamento dell'IA.
Domanda sulle FSM
Che cosa attiva una transizione di stato in una FSM?
Riepilogo: IA con macchine a stati
Le FSM in Lua utilizzano una tabella di oggetti stato (enter/update/exit) con una funzione di transizione. Separano chiaramente gli aspetti dell'IA, supportano la progettazione guidata dai dati e scalano dai comportamenti semplici dei nemici fino a complessi alberi comportamentali gerarchici.
Domande Frequenti
La lezione «Comportamento dell'IA con macchine a stati» è gratuita?
Sì — il testo completo di «Comportamento dell'IA con macchine a stati» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Lua Academy, passa a CoddyKit PRO. Il corso Lua Academy include 4 lezioni in totale.
Cosa imparerò in «Comportamento dell'IA con macchine a stati»?
Implementi interamente negli script Lua la logica dell'IA dei nemici basata su FSM. Eserciti Lua Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Lua Academy?
Non è richiesta alcuna esperienza precedente. Lua Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Comportamento dell'IA con macchine a stati»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Lua Academy?
Sì. Ogni lezione Lua Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Sistemi di eventi in Lua
- Scripting basato sui componenti
- Comportamento dell'IA con macchine a stati
- Configurazione data-driven e hot reload