0Pricing
Lua Academy · Lektion

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  = {},
  }
end

Zustä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
end

Die 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
end

Hierarchische 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

  1. Ereignissysteme in Lua
  2. Komponentenbasierte Skripterstellung
  3. KI-Verhalten mit Zustandsautomaten
  4. Datengetriebene Konfiguration und Hot-Reload
← Zurück zu Lua Academy