NPCs in Videospielen · vier spielbare Welten

NPCs in Videospielen: Wie Non-Player-Characters funktionieren (mit spielbaren Demos)

Erstelle dein eigenes NPC-Videospiel

Was ist ein NPC in einem Videospiel? Erfahre, wie NPCs gebaut werden, wie sie sich verhalten, und spiele vier echte 3D-Browser-Spiele, in denen sich Non-Player-Characters bewegen, sprechen und reagieren.

✦Spiel
Erstelle ein NPC-Videospiel

Ein NPC in einem Videospiel ist ein Non-Player-Character: eine Entität, die nicht direkt vom Spieler gesteuert wird, aber Raum einnimmt, Zustand hält und auf Bedingungen in der Welt reagiert. Der Begriff ist bewusst weit gefasst, und genau diese Weite sorgt für die meiste Verwirrung. Ein Ladenbesitzer mit Tagesablauf, ein Kamerad, der dir durch einen Korridor folgt, und ein umherziehender Händler, der eine einzige Zeile wiederholt, sind alle NPCs — aber sie sind nicht gleich gebaut und kosten nicht gleich viel im Betrieb.

Diese Seite erklärt, was ein NPC tatsächlich ist, wie einer gebaut wird und wie man ihn von einem geskripteten Trigger unterscheidet, der nur lebendig aussieht. Vier spielbare Welten auf dieser Seite dienen als funktionierende Beispiele — Agent Sprite Forge, The Cyclops' Island, Mini World und der 3D Game Builder selbst — damit du auf einen NPC zugehen und sein Verhalten beobachten kannst, statt nur darüber zu lesen.

Kurzantwort: Was zählt in einem Videospiel als NPC

Ein NPC ist jede Figur in der Spielwelt, die nicht direkt unter Spielerkontrolle steht. Sie hat eine Position, einen Zustand und mindestens ein Verhalten, das ausgelöst wird, ohne dass der Spieler eine Taste drückt. Wenn du den Spieler aus der Szene entfernst und die Figur trotzdem etwas tut — eine Route abläuft, eine Tür öffnet, auf ein Ereignis in der Nähe reagiert —, dann ist sie ein NPC.

Die Trennlinie zwischen einer Figur und einem Mechanismus ist der Besitz von Zustand. Eine Figur besitzt Variablen, die über Frames hinweg bestehen bleiben: aktuelle Gesundheit, aktuelles Ziel, aktueller Patrouillenindex, aktueller Dialogknoten. Ein Mechanismus ist in der Praxis zustandslos — er löst einmal aus, wenn eine Bedingung erfüllt ist, und dann ist er fertig. Eine Druckplatte, die ein Tor öffnet, ist ein Mechanismus. Eine Wache, die auf das Öffnen des Tors reagiert, sich merkt, dass du dort gestanden hast, und ihre Route ändert, ist ein NPC. Der Unterschied liegt nicht in der visuellen Qualität. Er liegt darin, ob etwas den Frame überlebt, in dem das Ereignis geschah.

Eine kurze Geschichte des Videospiel-NPCs

Textabenteuer der späten 1970er und der 1980er Jahre betrieben NPCs als Parser-Ziele. Eine Figur existierte nur als benanntes Substantiv, das der Parser erkannte, plus ein kleiner Block von Flags. Der Dieb in frühen Textabenteuern stahl einen Gegenstand, wenn du im selben Raum warst und er das noch nicht getan hatte — das ist ein NPC mit zwei Variablen: Anwesenheit und ein Hat-gestohlen-Flag. Kein Pathfinding, keine Animation, kein Scheduling. Das Verhalten steckte im Flag, nicht in der Figur.

NPCs der Sprite-Ära fügten Animation und Kollision hinzu, hielten das Verhalten aber dünn. Ein Stadtbewohner lief eine feste Schleife zwischen zwei Punkten ab, spielte eine Idle-Animation, wenn der Spieler sich in einem Radius befand, und öffnete bei Kontakt eine Dialogbox. Die wichtige technische Veränderung war, dass der NPC nun eine Position in der Physikwelt hatte, also günstig sein musste. Mit Dutzenden gleichzeitig auf dem Bildschirm auf 8-Bit- und 16-Bit-Hardware erhielt jeder NPC ein paar Bytes Zustand und führte eine Prüfung pro Frame aus, die nicht komplexer war als ein Distanzvergleich.

Zeitplan-gesteuerte NPCs kamen auf, als Speicher- und CPU-Budgets es erlaubten, dass eine Figur unabhängig vom Aufenthaltsort des Spielers existiert. Ein Ladenbesitzer mit einem Öffnungszeiten-Wert, einem Heimat-Wegpunkt und einer Laufroute kann woanders sein, wenn du ankommst, und diese Abwesenheit ist für den Spieler lesbar. Die Umsetzung ist eine Uhr plus eine Nachschlagetabelle: Zur Spielstunde 21 peile den Heimat-Wegpunkt an, um 08 peile den Laden an. Der Spieler sieht nie die Tabelle, nur die Konsequenz.

Generierte NPCs sind die aktuelle Ära. Statt eine Zeile pro Zustand zu verfassen, verfasst du eine Figurenbeschreibung und lässt ein Modell zur Laufzeit Dialog, Zurufe oder Verhalten erzeugen. Der Kompromiss ist nicht mehr Speicher, sondern Determinismus: Eine generierte Zeile lässt sich nicht vollständig vorab prüfen, also brauchst du Leitplanken für Ton, Länge und darauf, worauf sich der NPC beziehen darf. Im 3D Game Builder sind NPC-Prompts genau aus diesem Grund auf eine Beschreibung und einen kleinen Satz von Verhaltensweisen beschränkt.

Wie moderne NPCs gebaut werden

Jeder NPC ist ein Stapel aus fünf zusammenarbeitenden Teilen: Zustand, Navigation, Animation, Dialog und Wahrnehmung. Der Zustand sind die Daten, die der NPC besitzt — Gesundheit, Ziel, Patrouillenindex, Dialogknoten, Alarmstufe. Navigation ist, wie er sich zwischen Punkten bewegt. Animation ist, wie die Bewegung und die Ruhemomente dargestellt werden. Dialog ist der Text und die Stimme, die als Reaktion auf Bedingungen erzeugt werden. Wahrnehmung ist der Input, der dem NPC sagt, dass sich etwas geändert hat, meist ein Distanzcheck, ein Sichtlinien-Raycast oder eine Überlappung mit einem Trigger-Volumen.

In einem typischen Projekt liegen diese Teile an getrennten Orten. Der Zustand ist ein Skript oder eine Komponente an der NPC-Entität — in Unity-Begriffen ein MonoBehaviour, in Godot ein Node-Skript, in einem Browser-Build mit Three.js ein einfaches Objekt, das am Mesh hängt. Navigation ist entweder Wegpunkt-Daten oder ein Navmesh. Animation ist eine Zustandsmaschine mit benannten Clips wie idle, walk, attack. Dialog ist eine Datendatei, oft ein kleiner Knotengraph oder eine nach Zustand verschlüsselte Tabelle. Wahrnehmung ist meist eine Kollisionsform und eine Prüfung pro Frame.

Der häufigste Fehlermodus ist, dass Zustand und Animation auseinanderdriften. Der NPC ist im Verfolgungszustand, spielt aber noch den Idle-Clip ab, sodass er auf dich zugleitet, ohne die Beine zu bewegen. Die Lösung ist nicht mehr Animation; es ist eine Stelle im Code, die den aktuellen Zustand schreibt, und eine Stelle, die ihn liest, um den Clip auszuwählen. Wenn diese beiden in verschiedenen Skripten liegen, bekommst du das Gleiten. Wenn sie dieselbe Funktion sind, nicht.

Der zweithäufigste Fehler ist eine Navigation, die nicht zum Level passt. Eine Patrouillenroute, die gegen ein altes Layout angelegt wurde, schickt einen NPC nach einer Geometrieänderung in eine Wand oder über eine Kante. In Browser-Builds ist der günstigste robuste Ansatz, Patrouillenpunkte als benannte leere Objekte zu halten und sie beim Laden neu aufzulösen, damit das Verschieben einer Wand die Route nicht verwaisen lässt.

Die Wahrnehmung ist der Punkt, an dem NPCs teuer werden. Ein Raycast pro NPC pro Frame ist für ein paar Figuren in Ordnung und für Hunderte verschwenderisch. Die üblichen Optimierungen sind ein gemeinsames räumliches Raster, ein Prüfintervall und eine frühe Distanzverwerfung, bevor irgendein Raycast läuft. Wenn ein NPC 40 Meter entfernt ist und sein Wahrnehmungsradius 8 beträgt, sollte der Raycast nie stattfinden.

Wo jeder Teil in einer Szene liegt

Zustand: an der NPC-Entität selbst. Halte ihn klein — eine Handvoll Zahlen und ein String für den aktuellen Dialogknoten. Wenn du mehr brauchst, teile den NPC in zwei Figuren auf.

Navigation: als Liste von Weltraum-Punkten, die neben der Szene gespeichert sind, nicht ins Modell eingebacken. Animation: als benannte Clips am Rig, ausgewählt über einen einzigen Zustandswechsel. Dialog: in einer separaten Datendatei, damit Autoren ihn bearbeiten können, ohne Code anzufassen. Wahrnehmung: als Trigger-Volumen plus Distanzcheck, wobei der Raycast der letzte Schritt ist, nicht der erste.

1

01

Setze das NPC-Modell in die Szene und hänge eine Zustandskomponente mit Feldern für aktuellen Zustand, Ziel und Patrouillenindex an.

2

02

Füge drei oder vier Wegpunkt-Objekte hinzu und benenne sie so, dass die Route Level-Bearbeitungen überlebt.

3

03

Verbinde eine Animations-Zustandsmaschine mit mindestens idle und walk und steuere sie ausschließlich über den aktuellen Zustandswert.

4

04

Füge ein Wahrnehmungs-Trigger-Volumen in der Größe des Aufmerksamkeitsradius des NPCs hinzu.

5

05

Schreibe den Dialog als kleine, nach Zustand verschlüsselte Tabelle mit einer Standardzeile für nicht zugeordnete Zustände.

6

06

Löse Wegpunkte und Dialogschlüssel beim Laden neu auf und teste dann, indem du eine Wand verschiebst und bestätigst, dass die Patrouille weiterhin läuft.

Vier spielbare Welten, vier Arten von NPCs

Der klarste Weg, NPC-Verhalten zu verstehen, ist, neben einem zu stehen und zu ändern, was er sehen kann. Diese vier Welten auf Neta Studio zeigen jeweils ein anderes Verhaltensmuster. Öffne sie, laufe in den Wahrnehmungsbereich des NPCs und tritt dann wieder heraus, um zu beobachten, was sich ändert.

Agent Sprite Forge betreibt NPCs, die durch eine kurze Figurenbeschreibung plus einen kleinen Zustandssatz definiert sind. Geh auf einen zu, und seine Antwort wird aus dieser Beschreibung generiert, beschränkt auf die Zustände, die die Welt bereitstellt. Der interessante Test ist die Wiederholung: Nähere dich demselben NPC zweimal und vergleiche, wie stark die zweite Antwort variiert. Diese Varianz gehört dem Modell, nicht der Welt — die Zustandsmaschine ist fest.

The Cyclops' Island nutzt einen großen NPC mit einem Verfolgen-und-Suchen-Muster. Wenn der Spieler sich im Wahrnehmungsradius befindet, verfolgt der Zyklop; wenn der Spieler die Sichtlinie bricht, sucht er die letzte bekannte Position ab und kehrt dann zu einer Patrouillenroute zurück. Der Suchschritt ist es, der ihn als Figur statt als zielsuchende Rakete lesbar macht — er handelt aufgrund veralteter Informationen.

Mini World platziert mehrere kleine NPCs auf kurzen Schleifen mit Interaktionshinweisen. Ihr Verhalten ist bewusst dünn: laufen, pausieren, reagieren, wenn der Spieler innerhalb eines Meters ist. Der Wert liegt hier in der Menge. Du kannst fünf oder sechs gleichzeitig beobachten und sehen, wie günstig eine überzeugende NPC-Schleife tatsächlich ist.

Der 3D Game Builder ist der Ort, an dem du NPCs direkt platzierst und konfigurierst. Jeder NPC bekommt eine Beschreibung, eine Patrouillenroute und einen Satz von Zuständen. Baue etwas Kleines — einen Raum, einen NPC, eine Route — und teste die Grenzen: Verkleinere den Wahrnehmungsradius, bis der NPC dich nie bemerkt, und vergrößere ihn dann, bis er nie aufhört, dich zu bemerken. Die Breite des nutzbaren Bands zwischen diesen beiden Extremen ist das Tuning-Problem, und es existiert in jeder Engine.

Eine Anmerkung zur Performance. In einem Browser-Build werden die NPC-Kosten von Wahrnehmungsprüfungen und Animation dominiert, nicht von der Geometrie. Zehn NPCs mit Raycasts pro Frame kosten mehr als zehn NPCs mit gemeinsamen Intervallprüfungen, selbst wenn die detailreichen Modelle die intervallgeprüften sind. Wenn eine Szene ruckelt, während NPCs aktiv sind, schau zuerst auf die Wahrnehmungsschleife.

  • Agent Sprite ForgeBeschreibungsgesteuerte NPCs mit eingeschränkten generierten Antworten. Nutze es, um zu sehen, wie ein kleiner Zustandssatz plus ein Figuren-Prompt Dialog erzeugt, der beim Thema bleibt.
  • The Cyclops' IslandEin einzelner großer NPC mit Zuständen für Verfolgung, Suche und Rückkehr zur Patrouille. Nutze es, um zu untersuchen, wie das Handeln aufgrund veralteter Informationen als Intelligenz wirkt.
  • Mini WorldMehrere leichtgewichtige NPCs auf kurzen Schleifen mit Näherungshinweisen. Nutze es, um zu sehen, wie wenig Verhalten nötig ist, bevor eine Figur als anwesend wirkt.
  • 3D Game BuilderPlatziere NPCs, setze Beschreibungen, zeichne Patrouillenrouten und stimme Wahrnehmungsradien ab. Nutze es, um das funktionierende Band zwischen einem NPC, der dich nie bemerkt, und einem, der nie aufhört, zu finden.
Little Ritual — Quest-NPCs auf einem kleinen Planeten.

Warum Verhalten, nicht Grafik, einen NPC verkauft

Eine detailarme Figur, die eine Route abläuft, an einer Tür pausiert und woanders ist, wenn du zurückkommst, wirkt lebendig. Eine detailreiche Figur, die an einem Ort steht und eine Zeile wiederholt, wirkt wie ein Möbelstück. Der Spieler bewertet keine Polygone. Der Spieler baut ein Modell davon auf, was die Figur will, und dieses Modell entsteht aus Timing und Position, nicht aus dem Mesh.

Der Mechanismus ist Erwartung. Wenn eine Figur morgens auf dem Markt und nachts zu Hause ist, bildet der Spieler eine Hypothese — diese Figur hat eine Routine —, und die Hypothese wird beim zweiten Besuch bestätigt. Diese Bestätigung ist der ganze Effekt. Sie kostet eine Uhr und eine Nachschlagetabelle. Sie lässt sich nicht durch mehr Detail an einer Statue ersetzen, denn die Statue widerspricht oder bestätigt nie etwas.

Deshalb werden zeitplan-gesteuerte NPCs aus viel älteren Spielen noch diskutiert, während visuell überlegene statische NPCs vergessen werden. Das Verhalten ist der Inhalt. Das Modell ist die Verpackung. Wenn du in einem Browser-Editor baust und begrenzte Zeit hast, investiere sie in Zustandsübergänge und Patrouillenrouten, bevor du sie in Texturen investierst.

Wie man einen NPC von einem geskripteten Trigger unterscheidet

Sowohl NPCs als auch Trigger reagieren auf den Spieler, weshalb sie in Design-Reviews verwechselt werden. Der Unterschied ist, ob nach dem Ereignis etwas bestehen bleibt. Nutze die folgenden Signale als Checkliste, wenn du entscheidest, womit du es zu tun hast.

Die Tabelle ist kein Reinheitstest. Viele Spiele nutzen einen Trigger, um das Verhalten eines NPCs zu starten — ein Trigger-Volumen, das eine Wache von Patrouille auf Alarm umschaltet. Das ist normal und richtig. Das Problem entsteht, wenn ein Trigger dem Spieler als Figur präsentiert wird: Er löst einmal aus, die Figur nimmt danach nie wieder etwas zur Kenntnis, und die Illusion bricht bei der zweiten Begegnung zusammen.

SignalEs ist ein NPCEs ist ein geskripteter Trigger
WiederholungDieselbe Figur reagiert bei der zweiten Begegnung nochLöst einmal aus und nie wieder
ZustandBesitzt Variablen, die den Frame überleben — Alarmstufe, PatrouillenindexHat keinen Zustand außer einem Ausgelöst/Nicht-ausgelöst-Flag
PositionBewegt sich zwischen Begegnungen durch die WeltBleibt, wo er platziert wurde
ReaktionsumfangReagiert je nach Kontext anders (Tageszeit, Gesundheit, Distanz)Gleiche Antwort unabhängig vom Kontext
VersagenKann steckenbleiben, ein Ziel verlieren oder schlecht pathenKann nicht versagen — entweder er hat ausgelöst oder nicht
KostenWahrnehmungs- und Animationsbudget pro FrameNach dem Ereignis vernachlässigbar
DialogWählt eine Zeile aus einem nach Zustand verschlüsselten SatzSpielt eine feste Zeile ab
The Cyclops' Island — ein feindlicher NPC mit Kollision.
Ashenmere — eine Gegner-KI, die du während des Duells lesen kannst.
Mini World — durchlaufe eine Welt und triff die darin platzierten Figuren.

Laufe in die Welt hinein, zu der er gehört

Ein Sprite ist eine Figur ohne Ort zum Stehen. Der letzte Schritt ist der, den sonst niemand bietet: Nimm das Blatt, das du gerade gebaut hast, und setze es in eine Welt, in der jemand herumlaufen kann — eine kleine Insel, einen Planeten, eine verregnete Straßenecke. Jede Welt auf dieser Seite wurde aus einer einzigen geschriebenen Beschreibung erstellt und als spielbare Seite veröffentlicht.

Zurück zum 3D Game Builder

Alle 31 fertigen 3D-Welten, Spiele und Szenen leben auf einer Seite — jede einzelne spielbar.

Plattform: Neta StudioSeite: NPCs in Video Games: How Non-Player Characters Work (With Playable Demos)Als Nächstes lesen: /explore/guide/what-is-a-non-player-character · /explore/guide/what-are-npcs · /explore/guide/npc-behavior
×