Back to Blog
·Summer Team

Wie du KI-NPCs mit Gedächtnis und Persönlichkeit in Godot 4 baust

Lerne, wie du NPCs erstellst, die sich an Spieler erinnern, im Charakter bleiben und dynamisch reagieren, mithilfe von KI in Godot 4.

NPCs in den meisten Spielen sind State Machines. Sie patrouillieren einen Pfad, entdecken den Spieler, wechseln in den Angriffsmodus und starten den Loop von vorn. Das funktioniert für Gegner, aber es zerbröselt bei Charakteren, die sich lebendig anfühlen sollen.

Ein Ladenbesitzer, der immer dieselben drei Sätze sagt, egal was du im Spiel getan hast. Ein Quest-Geber, der nicht zur Kenntnis nimmt, dass du letzte Woche sein Dorf gerettet hast. Ein Begleiter, der jedes Gespräch vergisst, sobald es endet.

KI verändert, was hier möglich ist. Nicht indem sie Game Design durch Chatbots ersetzt, sondern indem sie Schichten aus Gedächtnis, Persönlichkeit und dynamischer Reaktion auf traditionelle NPC-Systeme obendrauf legt.

Was KI-NPCs tatsächlich sind

Ein KI-NPC ist kein Chatbot, der in eine Spielwelt eingefügt wurde. Das ist das häufigste Missverständnis, und es führt zu NPCs, die sich von dem Spiel, in dem sie existieren, abgekoppelt anfühlen.

Ein gut gebauter KI-NPC kombiniert Sprachmodelle mit Spielsystemen. Er hat:

  • Einen Persönlichkeits-Prompt, der definiert, wie er spricht, was ihm wichtig ist und wie er auf verschiedene Situationen reagiert. Ein schroffer Schmied redet anders als ein nervöser Lehrling.
  • Ein Gedächtnissystem, das Interaktionen mit dem Spieler nachverfolgt. Was gesagt wurde, was gehandelt wurde, welche Quests vergeben und abgeschlossen wurden.
  • Ziele und Motivationen, die das Verhalten beeinflussen. Ein Händler will Geld verdienen. Ein Wächter will die Stadt beschützen. Ein Dieb will nicht erwischt werden.
  • Bewusstsein für die Spielwelt, damit er sich auf tatsächliche Ereignisse, Items, Orte und andere Charaktere beziehen kann. "Ich habe gehört, du hast die Banditen von der Oststraße vertrieben" funktioniert nur, wenn der NPC den Spielzustand abfragen kann.

Das Ergebnis ist ein Charakter, der konsistent bleibt, Kontext behält und dem Spieler auf eine Weise antwortet, die sich natürlich und in der Spielwelt verankert anfühlt.

Die drei Schichten eines KI-NPCs

Jeder KI-NPC lässt sich in drei klar getrennte Schichten zerlegen. Du kannst alle drei umsetzen oder mit einer oder zwei anfangen.

Schicht 1: Verhalten

Das ist traditionelle Game-KI. Patrouillenrouten, Reaktionsauslöser, Kampflogik, Tagesabläufe. Ein Behavior Tree oder eine State Machine verwaltet die physischen Aktionen des NPCs in der Welt.

Diese Schicht läuft lokal, ohne dass eine Internetverbindung nötig ist. Sie ist deterministisch und vorhersehbar. Der Schmied steht tagsüber an der Esse und geht nachts nach Hause. Der Wächter patrouilliert die Mauern. Der Händler öffnet den Laden bei Sonnenaufgang.

In Godot 4 würdest du das typischerweise mit einem AnimationTree für State-Übergänge, Area3D-Nodes für Detektionszonen und einem Script, das die State Machine oder den Behavior Tree verwaltet, umsetzen.

enum State { IDLE, WORKING, SLEEPING, TALKING }
var current_state: State = State.IDLE
var schedule: Dictionary = {
    6: State.WORKING,
    20: State.IDLE,
    22: State.SLEEPING
}

Diese Schicht ist das Fundament. Selbst wenn du KI-Konversation und Gedächtnis hinzufügst, hält die Verhaltensschicht den NPC mit konsistenten, verlässlichen Aktionen in der Spielwelt verankert.

Schicht 2: Konversation

Hier kommen LLMs ins Spiel. Statt aus vorgeschriebenen Dialogzeilen auszuwählen, generiert der NPC Antworten basierend auf seiner Persönlichkeit, dem aktuellen Kontext und der Gesprächshistorie.

Der Persönlichkeits-Prompt ist das wichtigste Stück. Er definiert die Stimme, das Wissen und die Grenzen des Charakters:

Du bist Tormund, ein Schmied im Dorf Ashford.
Du bist schroff, aber fair. Du bist stolz auf dein Handwerk.
Du verlangst angemessene Preise und gibst Stammkunden Rabatte.
Du hast eine Nebenquest: Du brauchst seltenes Erz aus den nördlichen Minen,
um eine legendäre Klinge zu schmieden. Du bittest vertrauenswürdige Kunden um Hilfe.
Du weißt über: Dorfklatsch, Waffenqualität, Abbauorte.
Du weißt nichts über: Magie, Politik, Ereignisse außerhalb von Ashford.

Die Konversationsschicht braucht ein KI-Modell. Das kann eine Cloud-API sein (OpenAI, Anthropic, Google) oder ein lokales Modell, das über Ollama läuft. Lokale Modelle haben höhere Latenz, aber keine laufenden Kosten und vollständige Privatsphäre.

Eine wichtige Design-Entscheidung: Die Antworten des NPCs müssen begrenzt sein. Ein uneingeschränkter Chatbot halluziniert Orte, die nicht existieren, referenziert Items, die es im Spiel gar nicht gibt, oder bricht komplett aus dem Charakter aus. Der Persönlichkeits-Prompt, kombiniert mit einem System, das den aktuellen Spielzustand injiziert, hält die Antworten geerdet.

Schicht 3: Gedächtnis

Gedächtnis ist das, was einen überzeugenden KI-NPC von einer Spielerei trennt. Ohne Gedächtnis startet jedes Gespräch von vorn. Der NPC hat keine Ahnung, wer der Spieler ist oder was vorher passiert ist.

Ein Gedächtnissystem trackt:

  • Interaktionsverlauf: Was der Spieler gesagt hat, was der NPC geantwortet hat und wann es passiert ist.
  • Beziehungsstatus: Vertraut der NPC dem Spieler? Sind sie freundlich, neutral oder feindselig?
  • Schlüsselereignisse: Der Spieler hat eine Quest für diesen NPC abgeschlossen. Der Spieler hat aus seinem Laden gestohlen. Der Spieler hat sein Kind vor Gefahr gerettet.
  • Geteiltes Wissen: Informationen, die der Spieler preisgegeben hat. "Ich suche den verlorenen Tempel" wird zu etwas, auf das der NPC sich später beziehen kann.

Die Gedächtnisspeicherung kann simpel sein. Eine JSON-Datei oder eine SQLite-Datenbank reicht für die meisten Spiele. Der kritische Teil ist, wie Erinnerungen abgerufen und in den Gesprächskontext injiziert werden.

var memories: Array[Dictionary] = []

func add_memory(event: String, importance: float) -> void:
    memories.append({
        "event": event,
        "importance": importance,
        "timestamp": Time.get_unix_time_from_system(),
    })

func get_relevant_memories(context: String, limit: int = 5) -> Array:
    # Nach Wichtigkeit und Aktualität sortieren, Top-Erinnerungen zurückgeben
    var sorted = memories.duplicate()
    sorted.sort_custom(func(a, b):
        return a.importance * _recency_weight(a.timestamp) > \
               b.importance * _recency_weight(b.timestamp)
    )
    return sorted.slice(0, limit)

Wenn der Spieler mit dem NPC spricht, werden relevante Erinnerungen gezogen und in den Prompt eingefügt. "Der Spieler hat dir vor drei Tagen geholfen, seltenes Erz zu finden. Du bist dankbar und hast einen Rabatt angeboten." Das LLM nutzt diesen Kontext, um eine Antwort zu generieren, die die gemeinsame Geschichte anerkennt.

Das Gedächtnis bleibt über Sessions hinweg bestehen. Wenn der Spieler seinen Save lädt, erinnert sich der NPC weiterhin an alles. Genau das macht KI-NPCs echt anders als gescriptete.

KI-NPCs in Summer Engine bauen

Summer Engine macht diesen Prozess konversationell. Statt jede Schicht manuell zu verkabeln, beschreibst du den NPC, den du willst:

"Füge einen Schmied-NPC namens Tormund hinzu. Er ist schroff, aber fair, verlangt angemessene Preise und hat eine Nebenquest, bei der es darum geht, seltenes Erz in den nördlichen Minen zu finden. Er erinnert sich an vergangene Transaktionen und gibt Stammkunden Rabatte."

Die Engine erstellt:

  • Die NPC-Node mit einem CharacterBody3D, Collision Shape und Mesh
  • Einen Behavior Tree mit Tagesablauf (arbeitet tagsüber an der Esse, geht nachts nach Hause)
  • Ein Konversationssystem mit Persönlichkeits-Prompt basierend auf deiner Beschreibung
  • Einen Memory Store, der Spielerinteraktionen und Transaktionshistorie trackt
  • Ein Shop-Interface mit Preislogik, die den Beziehungsstatus mit einbezieht

Du kannst jede dieser Komponenten per Konversation verfeinern. "Mach Tormund misstrauischer gegenüber Fremden" passt den Persönlichkeits-Prompt und den initialen Beziehungsstatus an. "Füge eine Kampfreaktion hinzu, damit er sich wehrt, wenn er angegriffen wird" erweitert den Behavior Tree.

Weil Summer Engine kompatibel mit Godot 4 ist, nutzen die generierten Systeme standardmäßige Godot-Nodes und GDScript. Du kannst alles, was die Engine erstellt, einsehen und bearbeiten. Der KI-NPC ist keine Blackbox; er ist eine Sammlung aus Nodes, Scripten und Ressourcen, die dir gehören.

KI-NPCs vs. gescriptete NPCs

Beide Ansätze haben legitime Einsatzbereiche. Die richtige Wahl hängt von deinem Spiel ab.

Gescriptete NPCs:

  • Komplett vorhersehbar. Du kontrollierst jedes Wort, das sie sagen.
  • Funktionieren offline ohne Laufzeitkosten.
  • Leichter zu testen und QA-fähig, weil Verhalten deterministisch ist.
  • Skalieren gut. Hundert gescriptete NPCs kosten genauso viel wie einer.
  • Limitiert durch den Content, den du schreibst. Spieler schöpfen Dialoge schnell aus.

KI-NPCs:

  • Dynamisch und reaktiv. Jedes Gespräch ist einzigartig.
  • Behalten Kontext über Interaktionen hinweg.
  • Können unerwarteten Spieler-Input elegant handhaben.
  • Höhere Laufzeitkosten (API-Calls oder lokale Modell-Inferenz).
  • Schwerer zu testen, weil Antworten variieren.
  • Risiko, aus dem Charakter zu fallen oder ohne passende Guardrails unangemessenen Content zu generieren.

Der hybride Ansatz funktioniert für die meisten Spiele am besten. Nutze gescriptetes Verhalten für die Basisschicht: Patrouillenrouten, Kampflogik, Tagesabläufe und kritische Story-Momente. Nutze KI für die Konversations- und Gedächtnisschicht, wo dynamische Antworten den größten Mehrwert bringen.

Ein questkritischer NPC könnte gescriptete Dialoge für zentrale Story-Beats haben, aber KI-getriebene Antworten für alles andere. Der Spieler bekommt immer die Informationen, die er zum Weiterkommen braucht, und hat gleichzeitig die Freiheit, Fragen zu stellen und eine Beziehung mit dem Charakter aufzubauen.

Loslegen

Die RPG-Templates in Summer Engine kommen mit KI-NPC-Systemen, die direkt zum Anpassen bereit sind. Beschreibe die Charaktere, die du willst, und die Engine baut sie mit Persönlichkeit, Gedächtnis und Bewusstsein für die Spielwelt.

Wenn du KI-NPC-Generierung erkunden willst, schau dir den KI-NPC-Generator an oder lade Summer Engine herunter, um deine ersten KI-getriebenen Charaktere zu bauen.