Pré-requisitos
Agora que criou sua primeira persona e aprimorou sua personalidade interagindo com ela no Editor de Prompt, você pode adicionar seu PNJ a uma conversa. Para conversar com um PNJ no jogo, você deve:
Definir um novo
npc_behaviorem Verse.Adicionar seu
npc_behaviorà sua Definição de Personagem PNJ.Adicionar sua definição de personagem PNJ a um Gerador de PNJ.
Habilitar o bate-papo por voz, pois é necessário para conversar com PNJs de persona.
Crie comportamento de PNJ vazio
Para configurar um comportamento de PNJ personalizado em Verse, siga estas etapas:
Na barra de menus, selecione Verse > Explorador Verse.
No Explorador Verse, clique com o botão direito do mouse no nome do seu projeto e escolha Adicionar novo arquivo Verse ao projeto para abrir a janela Criar código Verse.
Na janela Criar código Verse, clique em Comportamento de PNJ Básico para selecioná-lo como seu modelo.
Nomeie o comportamento do PNJ como persona_npc_behavior em Configurar.
Selecione Criar para criar seu arquivo Verse.
Se você selecionar Comportamento de PNJ em vez de Comportamento de PNJ Básico e escolher Criar para o seu persona_npc_behavior, o arquivo Verse criado terá um npc_behavior predefinido com funcionalidade existente que você deve substituir pelos comportamentos explicados aqui. Este tutorial fornece um código Verse npc_behavior completo que você pode usar. Assim, você pode escolher com segurança Comportamento de PNJ Básico com Criar ou Criar vazio, já que o código fornece tudo o que você precisa.
O persona_npc_behavior é onde você pode definir e adicionar um persona_component ao seu PNJ usando Verse. Todos os PNJs gerados por Geradores de PNJ são agentes e têm uma entidade associada. Essa entidade associada é como você adiciona componentes do Scene Graph, como o persona_component, a um agente PNJ.
O persona_component é adicionado automaticamente quando um Modificador de Persona é adicionado a um PNJ.
Os comportamentos de PNJ são definidos em Verse, herdando da classe base npc_behavior. Para obter mais informações sobre comportamentos de PNJ, consulte a página Como entender os comportamentos de PNJ.
Edite o comportamento do seu PNJ de persona
É preciso usar a linguagem Verse para adicionar sua persona de PNJ como um alvo de conversa para a pessoa. Sem adicionar seu PNJ como alvo de conversa para a pessoa, você não pode conversar com a persona do seu PNJ.
Nas seções a seguir, o código Verse define o persona_npc_behavior. Para adicionar este código Verse ao seu persona_npc_behavior vazio, siga estas etapas:
Na barra de menus, selecione Verse > Abrir projeto no VS Code…
Assim que o VS Code abrir, localize seu arquivo
persona_npc_behavior.verseno VS Code Explorer.Copie e cole o conteúdo de
persona_npc_behavior.verseabaixo no arquivo Verse no seu projeto.Compile seu código Verse na barra de ferramentas do UEFN ou no VS Code.
Você também pode usar Verse para criar experiências onde uma equipe de pessoas interage com agentes de LLM. A linguagem Verse gerencia as interações entre várias pessoas e os agentes de LLM usando CreateAudioTeamAndAddPlayers(), AddMember() e AddChatChannel().
Para obter um passo a passo do código Verse, siga as etapas em Explicação do código.
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 }
Explicação do código
TeamNameé o nome do canal de voz que está sendo criado. OOptionAgentGroupcontém o grupo de agentes que entrarão no canal de voz (TeamName).OptionVoiceChannelé a variável do canal de voz real em que as pessoas e o PNJ estão.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) = falseAddPlayersAsConversationTargetconfigura uma conversa de voz ao vivo entre o PNJ e todas as pessoas em seu espaço de jogo. A função primeiro reúne tudo o que precisa, e somente se tudo isso for bem-sucedido, ela constrói o grupo de agentes e o canal de voz, conecta as pessoas e PNJs a eles e as como alvos de conversa.Primeiro, ele cria um novo
agent_grouptipado comteam_member_info, que contém todos na conversa. Em seguida, cria um canal de voz (também tipo comteam_member_info), nomeando-o comTeamNamee apontando seu grupo para o grupo de agentes recém-criado. Este canal é o que transmite o áudio da conversa.Em seguida, ele preenche o grupo: percorre cada pessoa no espaço de jogo e adiciona cada uma como membro, depois adiciona o agente PNJ também, para que todos os participantes compartilhem um grupo.
Em seguida, chama
SimEntity.AddChatChannel(TeamVoiceChannel)para registrar o canal de voz com o sistema Bate-papo de Áudio, que coloca o canal on-line. Finalmente, faz um loop sobre as pessoas novamente, chamandoSetConversationTargetem cada uma para que sejam direcionadas aopersona_componentdo PNJ por meio desse canal.A última etapa armazena o grupo e o canal nas variáveis
OptionAgentGroupeOptionVoiceChannel(envolvidas emoption{}), para que funções auxiliares posteriores possam referenciar ou modificar a conversa sem reconstruí-la.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]RemovePlayerAsConversationTargetremove uma única pessoa da conversa do PNJ. Recebe um argumento da pessoa e chamaClearConversationTarget(), que a desvincula de qualquer alvo de conversa para o qual ela estava apontada (o inverso da chamadaSetConversationTargetfeita emAddPlayersAsConversationTarget).Verse# Remove Player as a conversation target RemovePlayerAsConversationTarget(Player:player):void= Player.ClearConversationTarget() Logger.Print("Removed from NPC conversation", ?Level := log_level.Debug)OnBeginadiciona a saída estruturada à sessão e define a pessoa como alvo da conversa. Em um jogo onde as pessoas podem entrar mais tarde, você quer garantir que serão adicionadas noPlayerAddedEventou quando uma pessoa se aproxima de um PNJ via um gatilho.VerseOnBegin<override>()<suspends>:void= AddPlayersAsConversationTarget()Em
OnEnd, aConversaé limpa e removida de todas as pessoas. Essa é uma boa prática.VerseOnEnd<override>():void= for (Player : GetEntity[].GetPlayspaceForEntity[].GetPlayers()): RemovePlayerAsConversationTarget(Player)
Adicione o comportamento de PNJ à Definição de Personagem PNJ.
Para adicionar seu persona_npc_behavior à sua Definição de Personagem PNJ, siga estas etapas:
Acesse sua PersonaNPCDefinition na Gaveta de Conteúdo.
Selecione o PersonaNPCDefinition para abrir para edição.
Em Comportamento do personagem PNJ, selecione Comportamento de Verse > persona_npc_behavior.
Certifique-se de salvar suas alterações na sua Definição de Personagem PNJ antes de fechar a aba.
Depois que sua Definição de Personagem PNJ for adicionada a um Gerador de PNJ, a persona do seu PNJ será adicionada automaticamente como um alvo de conversa para o público.
Adicione um Gerador de PNJ com Definição de Personagem PNJ
Para gerar PNJ com sua persona personalizada, você deve adicionar um Gerador de PNJ ao seu nível e adicionar sua PersonaNPCDefinition. Para adicionar um dispositivo Gerador de PNJ, arraste sua PersonaNPCDefinition da Gaveta de Conteúdo para a janela de visualização.
Converse com seu PNJ
Para conversar com seu PNJ, inicie uma sessão e comece o jogo. Pressione a tecla ou botão no seu dispositivo de entrada indicado na tela e converse com seu PNJ!