Das Verhalten von Nicht-Spieler-Charakteren (NPCs) spielt in vielen Spielen eine wichtige Rolle. Von Gefährten bis zu Bossen, von Händlern bis zu Wächtern – die Art und Weise, wie NPCs mit der Welt um sie herum interagieren, sorgt für ein fesselndes, immersives Gameplay. Auf den ersten Blick mag dieses Verhalten einschüchternd wirken, aber in Wirklichkeit folgen die meisten NPCs einer strengen Reihe logischer Regeln. Diese Regeln zu verstehen ist der Schlüssel zum Erstellen von NPCs. Auf dieser Seite lernst du, wie NPCs mit der Welt interagieren und wie du ihr Verhalten visualisieren und manipulieren kannst, um deine eigenen einzigartigen Erfahrungen zu erschaffen.
Das NPC-Spawner-Gerät ermöglicht viele Interaktionen zwischen NPCs und KI. Um mehr über das Gerät zu erfahren, siehe NPC-Spawner-Gerät, NPC-Charakterdefinition, Seite Benutzerdefiniertes NPC-Verhalten erstellen und NPC-Spawner mit Animationen verwenden.
Logikregeln
Die meisten NPCs handeln nicht zufällig, sondern wählen ihre nächste Aktion ausgehend von ihrem Zustand. Du kannst den Zustand eines NPCs als einen Schnappschuss der Welt des NPCs zu einem bestimmten Zeitpunkt verstehen. Alle Aktionen, die der NPC durchführt, die Aktionen der Spieler und alle anderen Variablen, die der NPC kennen könnte, bilden den Zustand des NPCs. NPCs verwenden logische Regeln, um zu entscheiden, wann sie von einem Zustand in einen anderen übergehen, und können je nach ihrem aktuellen Zustand viele verschiedene Regeln haben.
Endliche Automaten
Gewöhnlich werden Zustände durch einen Endlichen Automaten (engl. Finite-State Machine, FSM) visualisiert. Ein endlicher Automat beschreibt die verschiedenen Zustände, in denen sich ein NPC befinden kann, und die Übergänge von einem Zustand zum nächsten. Die Knoten stellen die verschiedenen Zustände dar, und die Pfeile zwischen ihnen beschreiben die Bedingungen, die für den Übergang von einem Zustand zum nächsten erforderlich sind. Ein einfaches FSM-Diagramm könnte wie folgt aussehen:
Hier hat der FSM drei Zustände und beginnt in Zustand 1. Sobald bestimmte Bedingungen erfüllt sind, springt der NPC von einem Zustand in den nächsten und springt weiter in den nächsten, wenn sich die Bedingungen ändern.
Betrachte zum Beispiel den FSM für einen einfachen Charakter eines Sanitäters. Wenn verletzte Teamkameraden in der Nähe sind, heilt der Sanitäter Teamkameraden. Wenn Feinde in der Nähe sind, greift der Sanitäter die Feinde an. Sonst steht er inaktiv. Ein einfacher FSM für diesen Charakter könnte wie folgt aussehen:
FSMs helfen dir, die Funktionsweise der Charaktere zu visualisieren und zu verstehen, und sie helfen dir, die Art und Weise zu abzubilden, wie die Charaktere auf Events und die Welt um sie herum reagieren.
Endlicher Automat am Beispiel eines Wächters
Ein Beispiel aus dem Spiel ist der Wächter-NPC. Wächter-NPCs können entweder vom Wachen-Spawnpunkt-Gerät gespawnt oder mit einem Wächter-Typ NPC-Charakterdefinition erstellt werden. Ein NPC vom Typ Wächter folgt einer bestimmten Logik, die den verschiedenen aktiven Zuständen entspricht, in denen sich der Wächter befinden kann:
Inaktiv
Patrouilliert
Verdächtig
Warnung
Angreifen
Wenn ein Wächter spawnt, beginnt er entweder im Inaktiv-Zustand oder geht auf Patrouille, wenn die Option Patrouille aktiviert ist. Wenn der Wächter ein Ziel erkennt, beginnt er, die Misstrauensanzeige zu füllen. Wenn die Anzeige gefüllt ist, geht der Wächter in die Phase der Alarmierung über, andernfalls kehrt er wieder zum Patrouillieren zurück. Während er alarmiert ist, navigiert der Wächter ständig zu seinem Ziel und greift es an, wenn es in seiner Reichweite ist. Wenn das Ziel eliminiert wird oder dem Wächter entkommt, wird der Wächter zur Patrouille zurückkehren. Du kannst die Logik des Wächters mit dem folgenden FSM visualisieren:
Dieser FSM bietet einen Überblick über das Verhalten der Wächter, aber es könnte auch noch viele weitere Regeln und Aktionen geben, die ein Wächter ausführen kann. NPCs können auf mehrere Dinge gleichzeitig reagieren, und es ist wichtig, Umgebungsfaktoren zu berücksichtigen, wenn du sie zu deinen Spielerlebnissen hinzufügst.
NPC-Zustände und Verse
NPCs in UEFN erben vom KI-Modul und besitzen Funktionen, mit denen du ihren Zustand direkt steuern kannst. Mit dem navigatable
-Interface kannst du zum Beispiel einen NPC zu einem Gebiet navigieren, während du mit dem focus_interface
den Fokus eines Charakters auf ein bestimmtes Objekt oder einen bestimmten Agent lenken kannst. Mit diesen Interfaces in Verse-Geräten oder NPC-Verhalten kannst du benutzerdefinierte NPCs erstellen, die deine Erlebnisse bevölkern.
Weitere Informationen zum Erstellen deines eigenen NPC-Verhaltens findest du auf der Seite Benutzerdefiniertes NPC-Verhalten erstellen.
Betrachte zum Beispiel das folgende NPC-Verhalten:
using { /Fortnite.com/AI }
using { /Fortnite.com/Characters }
using { /Fortnite.com/Game }
using { /Verse.org/Simulation }
on_damaged_behavior<public> := class(npc_behavior):
# This function runs when the NPC is spawned in the world and ready to follow a behavior.
OnBegin<override>()<suspends>:void=
if:
Alle NPCs implementieren das damageable
-Interface, das es ihnen erlaubt, Schaden zu nehmen. Durch das Abonnieren einer Funktion des damageable
-Interface DamagedEvent
erfährst du, wenn dein NPC beschädigt wurde und kannst daraufhin Code ausführen. Wenn im obigen Script ein NPC, der dieses Verhalten implementiert, beschädigt wird, holt er den Agent, der ihn beschädigt hat, und speichert ihn in der Variable InstigatingAgent
. Dann legt er den Anstifter über das navigatable
-Interface des NPCs als NavigationTarget
, also als Navigationsziel, fest und jagt ihn.
Dieses Verhalten ist eine Erweiterung des ursprünglichen Verhaltens des NPCs. Wenn dieses Script an einen Charakter vom Typ Wächter angekoppelt wird, führt er weiterhin sein normales Verhalten aus, navigiert aber bei Beschädigung direkt sein Ziel an. Das Gleiche gilt für Wildtiere und benutzerdefinierte Charaktere. NPC-Verhaltensskripte sind ein leistungsstarkes Werkzeug, um die Funktionalität von NPCs zu erweitern und um eigene NPCs zu erstellen, die zu deinen Erlebnissen passen. Weitere Informationen zum Erstellen eigener benutzerdefinierter NPC-Verhaltensskripte findest du unter Benutzerdefiniertes NPC-Verhalten erstellen.
NPC-Typen
Verschiedene Typen von NPCs implementieren unterschiedliches Basis-Verhalten, und benutzerdefinierte NPCs, die du aus diesen Typen erstellst, erben dieses Verhalten. Weitere Informationen zu den verschiedenen Basis-Typen von NPCs und ihren assoziierten Verhaltensweisen findest du unter NPC-Typen.
Navigation in der Welt
Beim Navigieren durch die Welt müssen NPCs Entscheidungen über die beste Route zu ihrem Ziel treffen. Klettert der Wächter über eine Mauer oder durchbricht er sie? Soll er durch das Wasser schwimmen oder um es herumgehen? NPCs treffen diese Entscheidungen ausgehend vom Navigationsmesh der Welt. NPCs benutzen das Navigationsmesh, um Entscheidungen zur Pfadfindung zu treffen und aktualisieren ihre Entscheidungen, wenn die Welt um sie herum aktualisiert wird. Weitere Informationen zur Verwendung und Visualisierung des Navigationsmeshs findest du auf der Seite Navigationsmesh.