KI-Verhalten mit Zustandsautomaten
Implementieren Sie vollständig in Lua-Skripten eine auf FSM basierende Logik für Gegner-KI
KI-Verhalten mit Zustandsautomaten ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Lua Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist ein endlicher Automat?
Ein Finite State Machine (FSM) definiert Verhalten als eine Menge von Zuständen mit Übergängen zwischen ihnen, die durch Bedingungen oder Ereignisse ausgelöst werden.
Tabellenstruktur einer FSM
Stellen Sie eine FSM als Tabelle mit einem aktuellen Zustand, einer Zustandstabelle und optionalen Enter-, Exit- und Update-Callbacks für jeden Zustand dar.
local function newFSM(initialState)
return {
current = initialState,
states = {},
}
endZustände definieren
Jeder Zustand ist eine Tabelle mit optionalen Funktionen enter, update und 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
}Den Chase-Zustand hinzufügen
Der Chase-Zustand verfolgt den Spieler und wechselt zum Angriff, sobald der Abstand klein genug ist.
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
}Übergangsfunktion
Ein Übergang ruft exit für den aktuellen Zustand auf, wechselt den Zustand und ruft anschließend enter für den neuen Zustand auf.
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
endDie FSM aktualisieren
Rufen Sie in jedem Spiel-Tick fsm:update(dt) auf, um die Aktualisierungslogik des aktuellen Zustands auszuführen.
function fsm:update(dt)
local state = self.states[self.current]
if state and state.update then
state:update(dt)
end
endHierarchische Zustandsautomaten
Zustände können verschachtelte FSMs enthalten. Ein übergeordneter Zustand behandelt das grobe Verhalten (Kampf oder Patrouille), während untergeordnete FSMs die Details innerhalb des jeweiligen übergeordneten Zustands übernehmen.
Datengesteuerte FSMs
Definieren Sie FSM-Übergänge als Datentabellen, die aus Konfigurationsdateien geladen werden. So können Designer die KI anpassen, ohne den Code zu verändern.
local transitions = {
idle = {seeEnemy = "chase"},
chase = {lostEnemy = "idle", nearEnemy = "attack"},
attack = {enemyDead = "idle"},
}Gestapelte Zustandsautomaten
Ein Zustandsstapel ermöglicht es temporären Zuständen, etwa "stunned", den aktuellen Zustand zu überlagern und ihn nach Abschluss fortzusetzen.
Mehrere KI-Agenten
Jede Gegnerentität besitzt eine eigene FSM-Instanz, sodass ihre KI unabhängig voneinander ausgeführt wird. Mit Lua-Tabellen und Closures lässt sich dies einfach umsetzen.
FSM debuggen
Protokollieren Sie während der Entwicklung alle Übergänge. Eine Trace-Tabelle speichert {from, to, time} zur nachträglichen Analyse des KI-Verhaltens.
FSM-Frage
Was löst in einer FSM einen Zustandsübergang aus?
Zusammenfassung: KI mit Zustandsautomaten
Lua-FSMs verwenden eine Tabelle aus Zustandsobjekten (enter/update/exit) mit einer Übergangsfunktion. Sie trennen KI-Aufgaben klar voneinander, unterstützen ein datengetriebenes Design und lassen sich von einfachen Gegnerlogiken bis hin zu komplexen hierarchischen Verhaltensbäumen skalieren.
Häufig gestellte Fragen
Ist die Lektion „KI-Verhalten mit Zustandsautomaten“ kostenlos?
Ja — der vollständige Text von „KI-Verhalten mit Zustandsautomaten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Lua Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „KI-Verhalten mit Zustandsautomaten“?
Implementieren Sie vollständig in Lua-Skripten eine auf FSM basierende Logik für Gegner-KI Du übst Lua Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Lua Academy zu starten?
Keine Vorkenntnisse erforderlich. Lua Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „KI-Verhalten mit Zustandsautomaten“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Lua Academy-Lektion Code schreiben und ausführen?
Ja. Jede Lua Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Ereignissysteme in Lua
- Komponentenbasierte Skripterstellung
- KI-Verhalten mit Zustandsautomaten
- Datengetriebene Konfiguration und Hot-Reload