Instalacja wstępna
Teraz, gdy masz już swoją pierwszą personę, której osobowość została dopracowana poprzez interakcję z nią, w edytorze promptów możesz dodać swoją postać niezależną do rozmowy. Aby porozmawiać z postacią niezależną w grze, należy:
Zdefiniować nowe
npc_behaviorw Verse.Dodać
npc_behaviordo definicji postaci niezależnej.Dodać definicję postaci niezależnej do generatora NPC.
Upewnić się, że czat głosowy jest włączony, ponieważ jest on wymagany, aby rozmowa z postaciami niezależnymi była możliwa.
Tworzenie pustego zachowania postaci niezależnej
Aby skonfigurować niestandardowe zachowanie postaci niezależnej w Verse, wykonaj następujące kroki:
Na pasku menu wybierz kolejno Verse > Eksplorator Verse.
W Eksploratorze Verse kliknij prawym przyciskiem myszy nazwę projektu i wybierz Dodaj nowy plik Verse do projektu, aby otworzyć okno Utwórz skrypt Verse.
W oknie Utwórz skrypt Verse kliknij Podstawowe zachowanie postaci NPC, aby wybrać je jako szablon.
Nazwij zachowanie postaci niezależnej persona_npc_behavior w sekcji Konfiguruj.
Wybierz opcję Utwórz, aby utworzyć plik Verse.
Jeśli zamiast opcji Podstawowe zachowanie postaci NPC wybierzesz opcję Zachowanie postaci niezależnej i klikniesz przycisk Utwórz dla persona_npc_behavior, utworzony plik Verse będzie zawierał predefiniowane npc_behavior z istniejącą funkcjonalnością, którą należy zastąpić zachowaniami opisanymi w niniejszym dokumencie. Ten samouczek zawiera pełny skrypt Verse npc_behavior, którego można użyć, dzięki czemu można bezpiecznie wybrać opcję Podstawowe zachowanie postaci NPC z opcją Utwórz lub Utwórz pusty, ponieważ skrypt ten zawiera wszystko, czego potrzebujesz.
W persona_npc_behavior można zdefiniować i dodać persona_component do postaci niezależnej za pomocą Verse. Wszystkie postacie niezależne spawnowane przez generatory NPC są agentami i mają powiązaną jednostkę. Ta powiązana jednostka służy do dodawania komponentów Scene Graph, takich jak persona_component, do agenta postaci niezależnej.
Komponent persona_component jest dodawany automatycznie po dodaniu modyfikatora persony do postaci niezależnej.
Zachowania postaci niezależnych są zdefiniowane w Verse i dziedziczą po klasie bazowej npc_behavior. Więcej informacji na temat zachowań postaci niezależnych można znaleźć na stronie Objaśnienie zachowań postaci niezależnych.
Edytowanie zachowania persony postaci niezależnej
Aby dodać personę postaci niezależnej jako cel rozmowy dla gracza, konieczne jest użycie Verse. Bez dodania postaci niezależnej jako celu rozmowy dla gracza nie można prowadzić rozmowy z tą personą postaci niezależnej.
W poniższych sekcjach skrypt Verse definiuje persona_npc_behavior. Aby dodać ten kod Verse do pustego persona_npc_behavior, wykonaj następujące kroki:
Na pasku menu wybierz kolejno Verse > Otwórz projekt w VS Code…
Po otwarciu VS Code znajdź swój plik
persona_npc_behavior.versew Eksploratorze VS Code.Skopiuj i wklej poniższą zawartość pliku
persona_npc_behavior.versedo pliku Verse w projekcie.Skompiluj kod Verse na pasku narzędzi UEFN lub w VS Code.
Możesz również użyć Verse do tworzenia przygód, w których drużyna graczy wchodzi w interakcje z agentami LLM. Verse obsługuje interakcje między wieloma graczami a agentami LLM za pomocą CreateAudioTeamAndAddPlayers(), AddMember() i AddChatChannel().
Szczegółowy opis krok po kroku skryptu Verse znajduje się w sekcji Objaśnienie skryptu.
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 }
Objaśnienie skryptu
TeamNameto nazwa tworzonego kanału głosowego.OptionAgentGroupprzechowuje grupę agentów wchodzących do kanału głosowego (TeamName).OptionVoiceChannelto zmienna określająca aktualny kanał głosowy, w którym znajdują się gracze i postacie niezależneVerse#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) = falseAddPlayersAsConversationTargetkonfiguruje rozmowę głosową na żywo między postacią niezależną a każdym graczem w jej przestrzeni gry. Funkcja najpierw gromadzi wszystkie niezbędne elementy i dopiero po pomyślnym zakończeniu tych czynności tworzy grupę agentów oraz kanał głosowy, przypisuje do nich graczy i postacie niezależne, a także rejestruje graczy jako cele rozmowy.Najpierw tworzy nową
agent_groupz danymi typuteam_member_info, która obejmuje wszystkich uczestników rozmowy. Następnie tworzy voice_channel (również z danymi typuteam_member_info), nadając mu nazwęTeamNamei wskazując jako grupę właśnie utworzoną grupę agentów. To właśnie ten kanał przenosi dźwięk rozmowy.Następnie wypełnia grupę: przechodzi po pętli przez wszystkich graczy w przestrzeni gry i dodaje każdego z nich jako członka, a potem dodaje również agenta NPC, dzięki czemu wszyscy uczestnicy należą do tej samej grupy.
Następnie wywołuje
SimEntity.AddChatChannel(TeamVoiceChannel), aby zarejestrować kanał głosowy w systemie czatu audio, co powoduje, że kanał staje się dostępny online. Na koniec ponownie przechodzi po pętli przez graczy, wywołując dla każdego z nich funkcjęSetConversationTarget, dzięki czemu są oni kierowani do komponentupersona_componentpostaci NPC za pośrednictwem tego kanału.Ostatni krok przechowuje grupę i kanał w zmiennych
OptionAgentGroupiOptionVoiceChannel(zawarte woption{}), dzięki czemu późniejsze funkcje pomocnicze mogą odwoływać się do rozmowy lub modyfikować ją bez konieczności jej ponownego tworzenia.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]RemovePlayerAsConversationTargetusuwa pojedynczego gracza z rozmowy z postacią NPC. Przyjmuje jeden argument typu gracz i wywołujeClearConversationTarget(), która odłącza tego gracza od dowolnego celu rozmowy, na który był skierowany (jest to odwrotność wywołaniaSetConversationTargetdokonanego wAddPlayersAsConversationTarget).Verse# Remove Player as a conversation target RemovePlayerAsConversationTarget(Player:player):void= Player.ClearConversationTarget() Logger.Print("Removed from NPC conversation", ?Level := log_level.Debug)OnBegindodaje ustrukturyzowane wyniki do sesji i ustawia gracza jako cel rozmowy. W grze, w której gracze mogą dołączyć później, trzeba upewnić się, że zostaną dodani w ramach zdarzeniaPlayerAddedEventlub za pomocą aktywatora, gdy gracz podejdzie do postaci niezależnej.VerseOnBegin<override>()<suspends>:void= AddPlayersAsConversationTarget()W
OnEndConversationjest czyszczona, a wszyscy gracie zostają usunięci. Jest to dobra praktyka.VerseOnEnd<override>():void= for (Player : GetEntity[].GetPlayspaceForEntity[].GetPlayers()): RemovePlayerAsConversationTarget(Player)
Dodawanie zachowania postaci niezależnej do definicji postaci niezależnej
Aby dodać persona_npc_behavior do definicji postaci niezależnej, wykonaj następujące kroki:
Przejdź do PersonaNPCDefinition w Szufladzie zawartości.
Wybierz PersonaNPCDefinition, aby otworzyć do edycji.
W sekcji Zachowanie postaci niezależnej wybierz Zachowanie Verse > persona_npc_behavior.
Pamiętaj, aby zapisać zmiany w definicji postaci niezależnej przed zamknięciem karty.
Po dodaniu definicji postaci niezależnej do generatora NPC, persona postaci niezależnej zostanie automatycznie dodana jako cel rozmowy dla gracza.
Dodawanie generatora NPC z definicją postaci niezależnej
Aby spawnować postać niezależną z niestandardową personą, musisz dodać do swojego poziomu generator NPC i dodać swoją PersonaNPCDefinition. Aby dodać urządzenie generatora NPC, przeciągnij PersonaNPCDefinition z Szuflady zawartości do okna wizualizacji.
Prowadzenie rozmowy z postacią niezależną
Aby porozmawiać z postacią niezależną, uruchom sesję i rozpocznij grę. Naciśnij klawisz lub przycisk na urządzeniu wejściowym wskazany na ekranie i porozmawiaj ze swoją postacią niezależną!