Voraussetzungen
Nachdem du deine erste Persona erstellt und ihre Persönlichkeit durch die Interaktion im Prompt-Editor verfeinert hast, kannst du deinen NPC zu einem Gespräch hinzufügen. Um im Spiel mit einem NPC zu sprechen, musst du:
Definiere ein neues
npc_behaviorin Verse.Füge dein
npc_behaviordeiner NPC-Charakterdefinition hinzu.Füge deine NPC-Charakterdefinition einem NPC-Spawnpunkt-Gerät hinzu.
Achte darauf, dass der Sprach-Chat aktiviert ist, da er für Gespräche mit Persona-NPCs benötigt wird.
Ein leeres NPC-Verhalten erstellen
Um ein benutzerdefiniertes NPC-Verhalten in Verse einzurichten, befolge diese Schritte:
Wähle in der Menüleiste Verse > Verse-Explorer.
Klicke im Verse-Explorer mit der rechten Maustaste auf deinen Projektnamen und wähle Neue Verse-Datei zum Projekt hinzufügen, um das Fenster Verse-Script erstellen zu öffnen.
Klicke im Fenster Verse-Script erstellen auf NPC-Verhalten – Einfach, um diese Vorlage auszuwählen.
Benenne das NPC-Verhalten persona_npc_behavior unter Konfigurieren.
Wähle Erstellen, um deine Verse-Datei zu erstellen.
Wenn du NPC-Verhalten statt NPC-Verhalten – Einfach auswählst und Erstellen für dein persona_npc_behavior wählst, enthält die erstellte Verse-Datei ein vordefiniertes npc_behavior mit vorhandener Funktionalität. Diese musst du durch die hier erläuterten Verhaltensweisen ersetzen. Dieses Tutorial enthält ein vollständiges npc_behavior-Verse-Script. Du kannst daher bedenkenlos NPC-Verhalten – Einfach mit Erstellen oder Leer erstellen auswählen, da das Script bereits alles Nötige enthält.
In persona_npc_behavior kannst du durch Verse eine persona_component für deinen NPC definieren und hinzufügen. Alle von NPC-Spawnpunkt-Geräten gespawnten NPCs sind Agenten und besitzen eine zugehörige Entität. Über diese zugehörige Entität fügst du einem NPC-Agenten Szenendiagramm-Komponenten wie die persona_component hinzu.
Die persona_component wird automatisch hinzugefügt, wenn du einem NPC einen Persona-Modifikator hinzufügst.
NPC-Verhalten wird in Verse definiert und erbt von der Basisklasse npc_behavior. Weitere Informationen zu NPC-Verhalten findest du auf der Seite Grundlagen des NPC-Verhaltens.
Verhalten deines Persona-NPC bearbeiten
Verse ist erforderlich, um deine NPC-Persona als Gesprächsziel für den Spieler hinzuzufügen. Wenn du den NPC nicht als Gesprächsziel des Spielers hinzufügst, kann der Spieler nicht mit deiner NPC-Persona sprechen.
In den folgenden Abschnitten definiert das Verse-Script persona_npc_behavior. Um diesen Verse-Code zu deinem leeren persona_npc_behavior hinzuzufügen, befolge diese Schritte:
Wähle in der Menüleiste Verse > Projekt in VS Code öffnen… aus.
Suche nach dem Öffnen von VS Code nach deiner Datei
persona_npc_behavior.verseim VS-Code-Explorer.Kopiere den unten stehenden Inhalt von
persona_npc_behavior.verseund füge ihn in die Verse-Datei deines Projekts ein.Kompiliere deinen Verse-Code entweder über die Werkzeugleiste von UEFN oder in VS Code.
Du kannst auch Verse verwenden, um Erlebnisse zu erstellen, in denen ein Team von Spielern mit LLM-Agenten interagiert. Verse handhabt die Interaktionen zwischen mehreren Spielern und den LLM-Agenten mithilfe von CreateAudioTeamAndAddPlayers(), AddMember() und AddChatChannel().
Eine schrittweise Erläuterung des Verse-Scripts findest du unter Erklärung des Scripts.
persona_npc_behavior.verse
using { /Fortnite.com/AI }
using { /Fortnite.com/Devices }
using { /Fortnite.com/Playspaces }
using { /UnrealEngine.com/Conversations }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Verse.org/Chat }
using { /Verse.org/SceneGraph }
using { /Verse.org/Simulation }
Erklärung des Scripts
TeamNameist der Name des erstellten Sprachkanals.OptionAgentGroupenthält die Gruppe der Agenten, die dem Sprachkanal (TeamName) beitreten.OptionVoiceChannelist die Variable des eigentlichen Sprachkanals, in dem sich die Spieler und der NPC befinden.Verse#Team name for the Team Voice Channel we are creating. TeamName<localizes>:message = "Persona Chat" #Variable that stores the agent group we are using to create the voice channel. We can use this group to create new channels or get current players in a conversation. var OptionAgentGroup:?agent_group(team_member_info) = false #Variable that stores the Voice Channel that our players and NPC will be inside of. This is what actually holds the conversation. var OptionVoiceChannel:?voice_channel(team_member_info) = falseAddPlayersAsConversationTargetrichtet ein Live-Sprachgespräch zwischen dem NPC und allen Spielern in seinem Spielbereich ein. Die Funktion sammelt zunächst alle benötigten Elemente. Nur wenn diese Schritte erfolgreich waren, erstellt sie die Agentengruppe und den Sprachkanal, verknüpft die Spieler und den NPC damit und registriert die Spieler als Gesprächsziele.Zunächst erstellt die Funktion eine neue
agent_groupvom Typteam_member_info, die alle Teilnehmer des Gesprächs enthält. Anschließend erstellt sie einen voice_channel, der ebenfalls mitteam_member_infotypisiert ist, benennt ihn mitTeamNameund verweist seine Group auf die soeben erstellte Agentengruppe. Über diesen Kanal wird das Gesprächsaudio übertragen.Danach füllt die Funktion die Gruppe: Sie durchläuft alle Spieler im Spielbereich, fügt jeden als Mitglied hinzu und nimmt anschließend auch den NPC-Agenten auf, sodass sich alle Teilnehmer in derselben Gruppe befinden.
Anschließend ruft sie
SimEntity.AddChatChannel(TeamVoiceChannel)auf, um den Sprachkanal beim Audio-Chat-System zu registrieren und ihn dadurch zu aktivieren. Zum Schluss durchläuft die Funktion die Spieler erneut und ruft für jedenSetConversationTargetauf. Dadurch wird der Spieler über diesen Kanal mit derpersona_componentdes NPC als Gesprächsziel verbunden.Im letzten Schritt werden die Gruppe und der Kanal in den Variablen
OptionAgentGroupundOptionVoiceChannelgespeichert und inoption{}eingeschlossen. So können spätere Hilfsfunktionen auf das Gespräch verweisen oder es ändern, ohne es neu erstellen zu müssen.Verse# Add the Player as a conversation target for this NPC AddPlayersAsConversationTarget():void= if: NPCEntity := GetEntity[] Playspace := NPCEntity.GetPlayspaceForEntity[] NPCAgent := GetAgent[] Players := NPCEntity.GetPlayspaceForEntity[].GetPlayers() SimEntity := Players[0].GetSimulationEntity[] PersonaComponent := NPCEntity.GetComponent[persona_component]RemovePlayerAsConversationTargetentfernt einen einzelnen Spieler aus dem Gespräch des NPC. Die Funktion übernimmt einen Spieler als Argument und ruftClearConversationTarget()auf. Dadurch wird die Verbindung des Spielers mit seinem bisherigen Gesprächsziel getrennt. Dies kehrt den AufrufSetConversationTargetausAddPlayersAsConversationTargetum.Verse# Remove Player as a conversation target RemovePlayerAsConversationTarget(Player:player):void= Player.ClearConversationTarget() Logger.Print("Removed from NPC conversation", ?Level := log_level.Debug)OnBeginfügt der Sitzung den strukturierten Output hinzu und legt den Spieler als Gesprächsziel fest. In einem Spiel, dem Spieler später beitreten können, solltest du sie beimPlayerAddedEventhinzufügen – oder wenn sie sich über einen Trigger einem NPC nähern.VerseOnBegin<override>()<suspends>:void= AddPlayersAsConversationTarget()In
OnEndwirdConversationbereinigt und von allen Spielern entfernt. Dies ist eine gute Vorgehensweise.VerseOnEnd<override>():void= for (Player : GetEntity[].GetPlayspaceForEntity[].GetPlayers()): RemovePlayerAsConversationTarget(Player)
NPC-Verhalten zur NPC-Charakterdefinition hinzufügen
Gehe wie folgt vor, um dein persona_npc_behavior deiner NPC-Charakterdefinition hinzuzufügen:
Navigiere zu deiner PersonaNPCDefinition in der Inhalts-Schublade.
Wähle die PersonaNPCDefinition aus, um sie zur Bearbeitung zu öffnen.
Wähle unter NPC-Charakterverhalten die Option Verse-Verhalten > persona_npc_behavior.
Achte darauf, deine Änderungen an deiner NPC-Charakterdefinition zu speichern, bevor du den Tab schließt.
Sobald du deine NPC-Charakterdefinition einem NPC-Spawnpunkt-Gerät hinzugefügt hast, wird deine NPC-Persona automatisch als Gesprächsziel des Spielers hinzugefügt.
NPC-Spawnpunkt-Gerät mit NPC-Charakterdefinition hinzufügen
Um einen NPC mit deiner angepassten Persona zu spawnen, musst du einen NPC-Spawnpunkt-Gerät in deinem Level platzieren und ihm deine PersonaNPCDefinition zuweisen. Um ein NPC-Spawnpunkt-Gerät hinzuzufügen, ziehe deine PersonaNPCDefinition aus der Inhalts-Schublade in den Viewport.
Unterhalte dich mit deinem NPC
Um mit deinem NPC zu sprechen, starte eine Sitzung und anschließend das Spiel. Drücke die auf dem Bildschirm angezeigte Taste auf deinem Eingabegerät und unterhalte dich mit deinem NPC!