AI-NPCs: Wie AI-gesteuerte Nicht-Spieler-Charaktere funktionieren (und wie du einen erstellst)
Erstelle deinen eigenen AI-NPC
NPCs mit künstlicher Intelligenz können sprechen, sich erinnern und reagieren. Lerne, wie AI-NPCs funktionieren, erstelle dann einen mit nur einem Satz und setze ihn in eine begehbare 3D-Welt.
Ein AI-NPC ist ein Nicht-Spieler-Charakter, dessen Dialog und Absicht zur Laufzeit von einem Sprachmodell erzeugt werden, während Bewegung und Kollision auf einem deterministischen Pfad bleiben. Die AI steuert, was der Charakter sagt und will; die Engine steuert, wohin der Körper geht. In Neta Studio beschreibst du einen Charakter mit einem Satz, die Agent Sprite Forge erzeugt eine Low-Poly-Komponente, und diese Komponente wird in eine begehbare 3D-Welt eingefügt, die auf Three.js basiert.
Diese Trennung ist wichtig, weil sie dir sagt, wo Fehler leben. Wenn ein NPC durch eine Wand läuft, ist das Pathfinding falsch. Wenn ein NPC den Spieler unaufgefordert beleidigt, ist der Prompt-Vertrag falsch. Diese Seite behandelt die zweite Kategorie: wie AI-NPC-Systeme Zeilen erzeugen, Persönlichkeitsparameter halten, sich an eine Sitzung erinnern und scheitern, wenn das Modell plant und die Engine nicht ausführen kann.
Kurzantwort: Was ein AI-NPC tatsächlich ist
Zerlege den Begriff. „AI“ bedeutet hier, dass ein Modell Text und eine übergeordnete Absicht erzeugt. „NPC“ bedeutet einen Charakter-Controller, einen Collider und eine Animations-Zustandsmaschine. Die beiden laufen auf unterschiedlichen Takten: Das Modell antwortet in Hunderten von Millisekunden, der Controller aktualisiert sich mit jedem Frame bei 60 Hz. Sie kommunizieren über eine schmale Schnittstelle, meist ein kleines JSON-Objekt, das der Controller abfragt.
In der Praxis sieht die Schnittstelle so aus: Das Modell gibt {line, intent, target} zurück. Der Controller liest intent, prüft, ob das Ziel auf dem Navmesh erreichbar ist, und spielt entweder die Zeile mit passender Animation ab oder ersetzt sie durch eine Fallback-Zeile. Wenn du diese beiden Ebenen verschmilzt, bekommst du NPCs, die teleportieren, rutschen oder mitten im Satz stehen bleiben, während das Modell fertig generiert.
Die Arbeitsdefinition lautet also: Ein AI-NPC ist ein NPC, dessen gesprochene Ausgabe und Auswahl der nächsten Aktion von einem generativen Modell stammen, begrenzt durch eine feste Menge zulässiger Absichten, die die Engine tatsächlich ausführen kann.
- Dialog-EbeneModellaufruf. Latenz 200–900 ms. Kann fehlschlagen, rate-limitiert werden oder fehlerhaftes JSON zurückgeben.
- Absichts-EbeneEin kurzes Enum: greet, follow, flee, trade, attack, idle. Alles außerhalb des Enums wird verworfen.
- Bewegungs-EbeneNavmesh-Pathing, Collider, Animations-Blending. Läuft in jedem Frame. Ruft das Modell nicht auf.
- Gedächtnis-EbeneEin Key-Value-Speicher mit Fakten, die der NPC abrufen darf, begrenzt durch das Token-Budget.
Regelbasiert vs. AI-gesteuert
Ein regelbasierter NPC wählt aus einer Tabelle. Du verfasst die Zustände, Übergänge und Zeilen von Hand. Er ist exakt, günstig und reproduzierbar: Dieselbe Eingabe erzeugt immer dieselbe Ausgabe, was ihn trivial zu testen und trivial zu debuggen macht. Die Obergrenze ist deine Schreibzeit, und der Fehlerfall ist ein Spieler, der etwas eintippt, das du nicht vorhergesehen hast, und einen leeren Blick erntet.
Ein AI-gesteuerter NPC generiert die Zeile. Du verfasst einen Vertrag und eine Menge zulässiger Absichten, und das Modell füllt den Raum dazwischen. Es geht souverän mit unerwarteten Eingaben um, aber dieselbe Eingabe kann über zwei Durchläufe hinweg unterschiedliche Ausgaben erzeugen, was naive Replay-Tests bricht. Die Kosten skalieren mit der Gesprächslänge statt mit der Zeichenzahl, sodass eine gesprächige Szene mehr kostet als eine stille.
Keiner ist strikt besser. Der ehrliche Vergleich:
| Dimension | Regelbasierter NPC | AI-gesteuerter NPC |
|---|---|---|
| Verhaltensquelle | Von Hand verfasste Zustandsmaschine und Zeilentabelle | Modellausgabe, beschränkt durch ein Absichts-Enum |
| Replay-Fähigkeit | Bit-identisch über Durchläufe hinweg | Nicht deterministisch, es sei denn, du fixierst Seed und Temperatur |
| Kostenform | Festgelegt zur Build-Zeit | Pro Token zur Laufzeit, wächst mit der Gesprächslänge |
| Debugbarkeit | Verfolge den Übergang; das Log ist der Code | Logge Prompt, Rohantwort, geparste Absicht und Fallback getrennt |
| Fehlerfall | Leere oder falsch verzweigte Antwort | Vertragswidrige Zeile, Latenzspitze oder nicht parsebares JSON |
| Autorenaufwand | Hoch pro Zeile, niedrig pro Zustand | Niedrig pro Zeile, hoch pro Constraint |
Dynamischer Dialog
Ein Dialogbaum ist ein Graph mit von Hand verfassten Knoten. Der Autor kontrolliert jedes Wort, weshalb Quests, Verträge und handlungskritische Enthüllungen weiterhin Bäume verwenden. Die Eingabe des Spielers wird einem von N Zweigen zugeordnet; alles außerhalb von N bleibt unbehandelt. Bäume skalieren linear mit dem Inhalt: Eine Verdopplung des Gesprächs verdoppelt das Schreiben.
Generierter Dialog unterscheidet sich der Art nach, nicht nur im Umfang. Das Modell liest den tatsächlichen Satz des Spielers plus den Kontext, den du einspeist — NPC-Name, aktuelles Ziel, die letzten drei Wortwechsel — und schreibt eine passende Antwort. Es kann eine Frage bewältigen, die du nie vorhergesehen hast. Es kann diese Frage auch schlecht, selbstsicher und in-character bewältigen, was schlimmer ist als zu scheitern.
Wo ein Baum weiterhin richtig ist: jede Zeile, die einen Zustand trägt, von dem der Rest des Spiels abhängt. „Der Torcode ist 4417.“ Lass ein Modell das nicht erfinden. Das zuverlässige Muster ist hybrid — der Baum besitzt Fakten und Verzweigungspunkte, das Modell besitzt Formulierung und Small Talk. In Neta Studio, wenn du einen AI-NPC aus einer Beschreibung erstellst, legt die generierte Komponente ein Absichts-Enum offen; Fakten, die garantiert sein sollen, kommen als feste Strings in die Komponente, nicht als Anweisungen in den Prompt.
Prompt-Form, die den Kontakt mit Spielern übersteht
Halte den System-Prompt unter ungefähr 300 Token. Rolle, Ton, drei Constraints und das Ausgabeschema. Alles andere — Inventar, Quest-Status, Weltfakten — kommt in einen separaten Kontextblock, den die Engine pro Zug einspeist. Wenn du die ganze Welt in den System-Prompt packst, steigt die Latenz und das Modell beginnt, spätere Anweisungen zu ignorieren.
Fordere immer strukturierte Ausgabe an. Verlange ein JSON-Objekt mit line und intent. Parse es. Wenn das Parsen fehlschlägt, verwirf die Zeile und spiele den Fallback. Rendere niemals rohen Modelltext ohne Längenprüfung direkt in die Dialogbox; eine außer Kontrolle geratene Generierung erzeugt einen 400-Wörter-Monolog, der dein UI sprengt.
Prozedurale Persönlichkeit
Eine Persönlichkeit ist kein Backstory-Absatz. Ein Backstory-Absatz sind Trainingsdaten für die Fantasie des Modells, und er verschlechtert sich mit der Länge: Ab ein paar hundert Wörtern beginnt das Modell, ihn als Beiwerk zu behandeln und zu generischer Hilfsbereitschaft abzudriften. Behandle Persönlichkeit stattdessen als drei oder vier Parameter, von denen jeder das beobachtbare Verhalten verändert.
Ziel ist, was der NPC gerade jetzt will. Ton ist, wie er spricht: knapp, förmlich, spöttisch. Constraint ist, was er nicht tun wird: nicht lügen, nicht über den Krieg sprechen, nicht handeln. Diese drei passen in eine einzige Prompt-Zeile und sind einzeln testbar. Füge einen vierten nur hinzu, wenn du beschreiben kannst, was sich ändert, wenn du ihn variierst.
In Neta Studio nimmt die Agent Sprite Forge eine Beschreibung entgegen und gibt eine Low-Poly-Komponente zurück, bei der diese Parameter als Felder der Komponente offengelegt sind. Du kannst das Ziel bearbeiten, ohne den Modell-Prompt anzufassen, und du kannst eine Komponente klonen und nur den Ton ändern, um einen zweiten NPC zu erhalten. Zwei NPCs mit demselben Mesh und unterschiedlichem Ton werden in einer Szene als unterschiedliche Charaktere wahrgenommen, was günstiger ist, als zwei Sprites zu verfassen.
- ZielEin Satz im Präsens. „Bring den Spieler dazu, den Schrein zu verlassen.“
- TonZwei bis vier Adjektive. „Knapp, archaisch, ungeduldig.“
- ConstraintNegative Regeln. „Nennt nie den Fluss. Nimmt nie einen Gegenstand an.“
- WissensgrenzeWorauf der NPC sich beziehen kann. Alles außerhalb davon sollte eine rollengerechte Ausweichantwort erzeugen, keine Erfindung.
Adaptives Verhalten
Gedächtnis innerhalb einer Sitzung ist günstig und effektiv. Du hältst einen rollierenden Puffer der letzten N Wortwechsel plus einen kleinen Key-Value-Speicher mit Fakten, die dem NPC mitgeteilt wurden. N von 8 bis 12 funktioniert für die meisten Szenen; darüber hinaus wächst der Prompt schneller als die Geduld des Spielers, und ältere Züge beeinflussen die Ausgabe ohnehin nicht mehr.
Was ein NPC zuverlässig erinnern kann: den Namen des Spielers wie genannt, ob ein bestimmter Gegenstand gegeben oder abgelehnt wurde, ob eine frühere Interaktion in Feindseligkeit endete und das zuletzt genannte Ziel. Was er nicht zuverlässig erinnern kann: die genaue Formulierung von vor zwanzig Zügen, Fakten, die nie in den Key-Value-Speicher geschrieben wurden, und alles über einen Seiten-Reload hinweg, sofern du es nicht persistierst. Gedächtnis, das nur im Prompt lebt, ist Gedächtnis, das verdampft.
Reaktion ist die zweite Hälfte. Die Engine beobachtet Zustandsänderungen — Gesundheitsverlust, Gegenstandsübergabe, Überschreiten einer Distanzschwelle — und schiebt ein Ereignis in den Kontext des NPC. Das Modell wählt dann eine Absicht aus dem Enum. Deshalb existiert das Absichts-Enum: Das Modell schlägt vor, die Engine verfügt. Ein NPC, der „beschließt“ anzugreifen, muss trotzdem die Erreichbarkeitsprüfung bestehen. Wenn sie fehlschlägt, spielt er eine Warnzeile ab und bleibt stehen.
Was Persistenz tatsächlich kostet
Gedächtnis in den Speicher zu schreiben ist eine Zeile Code und eine Schema-Entscheidung. Halte die Schlüssel kurz und flach: playerName, gaveItem, hostility. Verschachtelte Objekte blähen auf und verrotten. Versioniere das Schema von Anfang an; eine spätere Umbenennung verwirft stillschweigend alte Spielstände, es sei denn, du schreibst eine Migration.
Über Sitzungen hinweg versuche nicht, die gesamte Gesprächshistorie in den Kontext zurückzuspielen. Das ist teuer und macht den NPC repetitiv. Persistiere die Zusammenfassung — drei bis fünf Fakten — und starte mit dem Transkript frisch.
Ein AI-NPC in einem Satz erstellen
Die Pipeline in Neta Studio ist bewusst kurz. Du schreibst eine Beschreibung. Die Agent Sprite Forge generiert eine Low-Poly-Komponente mit einem Mesh, einer Palette und einem Verhaltensmodus. Du setzt sie in eine begehbare Szene ein, die mit dem 3D Game Builder erstellt wurde, und sie erscheint mit Kollision, Pathfinding und einem bereits verdrahteten Dialog-Hook.
Eine funktionierende Beschreibung ist konkret bei Rolle, Ton und einer Einschränkung. „Ein misstrauischer Leuchtturmwärter, knapp und aus dem Norden, der nicht über den Schiffbruch sprechen will.“ Das erzeugt eine Komponente, deren Prompt genau diese drei Parameter enthält. Etwas wie „ein cooler Charakter“ erzeugt ein generisches Ergebnis, weil es nichts einzuschränken gibt.
Du kannst das Ergebnis an zwei Orten testen: The Cyclops' Island, die ausführliche begehbare Szene, und Mini World, die kleiner und schneller zu iterieren ist. Beide laufen im Browser auf Three.js. Setze die Komponente ein, lauf auf sie zu, tippe eine Zeile und lies die Antwort. Wenn der Ton daneben liegt, bearbeite das Ton-Feld der Komponente, statt den Prompt von Grund auf neu zu schreiben.
01
Schreibe einen Satz: Rolle, Ton, eine Einschränkung.
02
Lass ihn durch die Agent Sprite Forge laufen, um eine Low-Poly-Komponente zu generieren.
03
Öffne Mini World oder The Cyclops' Island im 3D Game Builder.
04
Setze die Komponente in die Szene ein; sie erscheint mit Kollision und einem Dialog-Hook.
05
Lauf hin und tippe eine Zeile. Lies die Antwort und die gewählte Absicht.
06
Bearbeite Ton oder Einschränkung an der Komponente, nicht den System-Prompt.
07
Teste den Fehlerpfad: Tippe etwas Themenfremdes und bestätige, dass der Fallback auslöst.
08
Verschiebe die Komponente in die größere Szene, sobald sie sich richtig verhält.
Was AI-NPCs noch immer nicht können
Langfristige Planung funktioniert nicht. Ein Modell, das gebeten wird, dreißig Schritte über eine Szene hinweg zu planen, erzeugt einen plausiblen Plan und verliert dann bis Schritt sechs den Faden, weil zwischen den Schritten nichts den Zustand hält außer dem Prompt, und der Prompt wird länger und rauschhafter. Wenn du eine mehrstufige Quest brauchst, verfasse die Stufen und lass das Modell innerhalb jeder Stufe den Dialog füllen. Bitte es nicht, den Handlungsbogen zu halten.
Wirklich offene Ziele funktionieren ebenfalls nicht. „Mach, was du willst“ erzeugt entweder Lähmung oder eine generische Hilfsbereitschaftsschleife, weil das Modell kein Signal dafür hat, was als Fortschritt zählt. Ein Ziel ist nur brauchbar, wenn die Engine prüfen kann, ob es erfüllt wurde. Wenn du diese Prüfung nicht schreiben kannst, hast du kein Ziel, sondern eine Stimmung.
Kostenkontrolle ist die eigentliche Lücke. Die Kosten pro Zug sind klein; das Scheitern liegt im Gespräch, das nie endet. Ein Spieler, der weiterredet, wird weiter abgerechnet. Du brauchst eine harte Obergrenze für Züge pro Interaktion, eine Obergrenze für Kontext-Token und einen Degradationspfad — nach der Obergrenze wechselt der NPC zu kürzeren, vorgefertigten Antworten. Ohne diese drei kann ein neugieriger Playtester mehr Budget verbrennen als der Rest deiner Szene zusammen.
Und die kleineren Fehler: Latenz über etwa 1,5 Sekunden wird als kaputtes Spiel gelesen, nicht als nachdenklicher Charakter. Nicht-Determinismus bricht Replay-Tests, sofern du Seed und Temperatur nicht fixierst. Und jede generierte Zeile kann etwas widersprechen, das der Baum bereits etabliert hat, weshalb Fakten im Baum bleiben.
- PlanungshorizontZuverlässig für 1–2 Schritte. Danach stark abnehmend.
- ZielüberprüfungMuss von der Engine prüfbar sein. Sonst ist das Ziel dekorativ.
- KostenobergrenzeBraucht eine Zug-Obergrenze pro Interaktion plus Token-Obergrenze plus einen Fallback-Modus.
- LatenzbudgetUnter 1,5 s für ein Gesprächsgefühl; darüber nehmen Spieler ein Einfrieren an.
- DeterminismusStandardmäßig nicht deterministisch. Fixiere Seed und Temperatur, wenn du per Replay testest.
Lauf in die Welt hinein, zu der er gehört
Ein Sprite ist ein Charakter ohne Ort zum Stehen. Der letzte Schritt ist der, den niemand sonst bietet: Nimm das Blatt, das du gerade erstellt hast, und setze es in eine Welt, in der jemand herumlaufen kann — eine kleine Insel, einen Planeten, eine regnerische Straßenecke. Jede Welt auf dieser Seite wurde aus einer geschriebenen Beschreibung erstellt und als spielbare Seite veröffentlicht.
FAQ
Sind NPCs AI? +
Traditionell nicht. Ein klassischer NPC ist eine Zustandsmaschine mit von Hand verfassten Zeilen, und das ist in den meisten veröffentlichten Spielen noch immer der Standard. Der Begriff „AI-NPC“ bezeichnet speziell Charaktere, deren Dialog oder Absichtsauswahl zur Laufzeit von einem Modell erzeugt wird, statt aus einer Tabelle ausgewählt zu werden.
Was ist ein AI-NPC? +
Ein Nicht-Spieler-Charakter, dessen gesprochene Ausgabe und Auswahl der nächsten Aktion von einem generativen Modell stammen, beschränkt durch eine feste Menge von Absichten, die die Engine ausführen kann. Bewegung, Kollision und Animation bleiben deterministisch; das Modell füllt nur den Dialog und schlägt eine Absicht vor.
Können AI-NPCs sich Dinge merken? +
Innerhalb einer Sitzung ja — ein rollierender Puffer der letzten 8 bis 12 Wortwechsel plus ein kleiner Key-Value-Speicher mit Fakten deckt die meisten Szenen ab. Über einen Seiten-Reload hinweg nur, wenn du die Fakten in den Speicher persistierst. Gedächtnis, das nur im Prompt lebt, verschwindet, wenn der Kontext verschwindet.
Kann ich einen kostenlos erstellen? +
Die Agent Sprite Forge und der 3D Game Builder laufen im Browser und lassen dich eine Komponente aus einem Satz generieren, ohne lokale Toolchain. Die Modellaufrufe zur Laufzeit sind der Teil, der Kosten verursacht, und diese Kosten hängen davon ab, an welches Modell du weiterleitest und wie lange deine Gespräche laufen.
Brauche ich eine Game Engine, um einen AI-NPC zu erstellen? +
Für eine Browser-Szene nicht. Der 3D Game Builder übernimmt das Rendering auf Three.js und gibt der generierten Komponente Kollision, Pathfinding und einen Dialog-Hook, sodass du den Engine-Setup-Schritt überspringst. Eine vollständige Engine brauchst du nur, wenn du auf einen nativen Build abzielst.
Funktionieren AI-NPCs in einem Browser? +
Ja. Der Modellaufruf ist eine Netzwerkanfrage und das Rendering ist WebGL, sodass beide Seiten im Browser laufen. Die praktische Einschränkung ist die Latenz: Halte den System-Prompt kurz und den Kontextblock getrennt, sonst treffen Antworten erst ein, nachdem der Spieler bereits angenommen hat, das Spiel sei eingefroren.
Wie viel kostet der Betrieb eines AI-NPC? +
Er skaliert mit der Gesprächslänge, nicht mit der Anzahl der Charaktere, die du platzierst. Ein schweigender NPC ist nahezu kostenlos; ein gesprächiger wird pro Zug abgerechnet. Die entscheidende Kontrolle ist eine harte Zug-Obergrenze pro Interaktion plus eine Token-Obergrenze, mit einem Fallback auf vorgefertigte Antworten, sobald die Obergrenze erreicht ist.
Zurück zum 3D Game Builder
Alle 31 fertigen 3D-Welten, Spiele und Szenen leben auf einer Seite — jede einzelne spielbar.