Prerrequisitos
Ahora que has creado tu primera persona y perfeccionado su personalidad a través de la interacción con ella en el editor de indicaciones, puedes añadir tu PNJ a una conversación. Para conversar con un PNJ en el juego, debes hacer lo siguiente:
Define un nuevo
npc_behavioren Verse.Añade tu
npc_behaviora la definición de tu personaje PNJ.Añade tu definición de personaje PNJ a un generador de PNJ.
Asegúrate de tener el chat de voz habilitado, ya que es necesario para conversar con los PNJ de persona.
Crear un comportamiento de PNJ vacío
Para configurar un comportamiento de PNJ personalizado en Verse, sigue estos pasos:
En la barra de menús, selecciona Verse > Explorador de Verse.
En el explorador de Verse, haz clic derecho en el nombre de tu proyecto y elige Añadir nuevo archivo de Verse al proyecto para abrir la ventana Crear secuencia de comandos de Verse.
En la ventana Crear secuencia de comandos de Verse, haz clic en Comportamiento de PNJ para seleccionarlo como plantilla.
Nombra el comportamiento de PNJ persona_npc_behavior en Configurar.
Selecciona Crear para crear tu archivo de Verse.
Si seleccionas Comportamiento de PNJ en lugar de Comportamiento de PNJ básico y eliges Crear para tu persona_npc_behavior, el archivo de Verse creado contiene un npc_behavior predefinido con funcionalidad existente que debes reemplazar con los comportamientos explicados aquí. Este tutorial te proporciona una secuencia de comandos Verse de npc_behavior completa que puedes usar, así que puedes elegir con seguridad Comportamiento básico de PNJ con Crear o Crear vacío, ya que la secuencia de comandos proporciona todo lo que necesitas.
En persona_npc_behavior es donde puedes definir y añadir un persona_component a tu PNJ a través de Verse. Todos los PNJ generados por generadores de PNJ son agentes y tienen una entidad asociada. Esta entidad asociada es la forma en que añades componentes de Scene Graph, como el persona_component, a un agente PNJ.
El persona_component se añade automáticamente cuando se añade un modificador de persona a un PNJ.
Los comportamientos de PNJ se definen en Verse heredando de la clase base npc_behavior. Para obtener más información sobre los comportamientos de PNJ, consulta la página Cómo comprender los comportamientos de PNJ.
Editar el comportamiento de tu PNJ de persona
Se requiere Verse para añadir la persona de tu PNJ como objetivo de conversación para el jugador. Si no añades a tu PNJ como objetivo de conversación para tu jugador, no podrás conversar con tu persona de PNJ.
En las siguientes secciones, la secuencia de comandos de Verse define el persona_npc_behavior. Para añadir este código Verse a tu persona_npc_behavior vacío, sigue estos pasos:
En la barra de menús, selecciona Verse > Abrir proyecto en VS Code…
Una vez que VS Code se abra, busca tu archivo
persona_npc_behavior.verseen el Explorador de VS Code.Copia y pega el contenido de
persona_npc_behavior.versea continuación en tu archivo de Verse en tu proyecto.Compila tu código Verse ya sea en la barra de herramientas de UEFN o en VS Code.
También puedes usar Verse para crear experiencias en las que un equipo de jugadores interactúa con agentes con tecnología LLM. Verse gestiona las interacciones entre varios jugadores y los agentes con tecnología LLM utilizando CreateAudioTeamAndAddPlayers(), AddMember() y AddChatChannel().
Para obtener una guía paso a paso de la secuencia de comandos de Verse, sigue los pasos en Explicación de la secuencia de comandos.
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 }
Explicación de la secuencia de comandos
El
TeamNamees el nombre del canal de voz que se está creando. ElOptionAgentGroupcontiene el grupo de agentes que van al canal de voz (TeamName). LaOptionVoiceChanneles la variable del canal de voz real en el que se encuentran los jugadores y el PNJ.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 una conversación de voz en vivo entre el PNJ y cada jugador en su espacio de juego. La función primero reúne todo lo que necesita, y solo si todo eso tiene éxito, construye el grupo de agentes y el canal de voz, los conecta con los jugadores y PNJ, y registra a los jugadores como objetivos de conversación.Primero, crea un nuevo
agent_groupde tipoteam_member_info, que contiene a todos los participantes de la conversación. Luego, crea un voice_channel (también tipificado conteam_member_info), nombrándolo conTeamNamey apuntando su grupo al grupo de agentes recién creado. Este canal es el que transmite el audio de la conversación.Luego, forma el grupo: hace un bucle sobre cada jugador en el espacio de juego y añade a cada uno como miembro, luego añade también al agente PNJ, para que todos los participantes compartan un grupo.
Luego llama a
SimEntity.AddChatChannel(TeamVoiceChannel)para registrar el canal de voz con el sistema de chat de audio, lo que pone el canal en línea. Finalmente, vuelve a recorrer a los jugadores, llamando aSetConversationTargeten cada uno para que apunten alpersona_componentdel PNJ a través de ese canal.El último paso almacena el grupo y el canal en las variables
OptionAgentGroupyOptionVoiceChannel(envueltas enoption{}), para que las funciones auxiliares posteriores puedan hacer referencia o modificar la conversación sin reconstruirla.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]RemovePlayerAsConversationTargetelimina a un solo jugador de la conversación del PNJ. Toma un argumento de jugador y llama aClearConversationTarget(), lo que desvincula a ese jugador de cualquier objetivo de conversación al que estuviera apuntando (lo contrario de la llamada aSetConversationTargetrealizada enAddPlayersAsConversationTarget).Verse# Remove Player as a conversation target RemovePlayerAsConversationTarget(Player:player):void= Player.ClearConversationTarget() Logger.Print("Removed from NPC conversation", ?Level := log_level.Debug)OnBeginagrega la respuesta estructurada a la sesión y establece al jugador como el objetivo de la conversación. En un juego en el que los jugadores pueden unirse tarde, querrás asegurarte de añadirlos en elPlayerAddedEvento cuando un jugador se acerca a un PNJ mediante un activador.VerseOnBegin<override>()<suspends>:void= AddPlayersAsConversationTarget()En
OnEnd, laconversaciónse limpia y se elimina de todos los jugadores. Es una práctica recomendada.VerseOnEnd<override>():void= for (Player : GetEntity[].GetPlayspaceForEntity[].GetPlayers()): RemovePlayerAsConversationTarget(Player)
Agregar comportamiento del PNJ a la definición del PNJ
Para añadir tu persona_npc_behavior a la definición de personaje de tu PNJ, sigue estos pasos:
Ve a tu PersonaNPCDefinition en el cajón de contenido.
Selecciona PersonaNPCDefinition para abrirlo y editarlo.
En Comportamiento del personaje PNJ, selecciona Comportamiento de Verse > persona_npc_behavior.
Asegúrate de guardar los cambios en la definición de personaje PNJ antes de cerrar la pestaña.
Una vez que tu definición de personaje PNJ se añade a un generador de PNJ, tu persona de PNJ se añade automáticamente como objetivo de conversación para tu jugador.
Añadir generador de PNJ con definición de personaje PNJ
Para generar un PNJ con tu persona personalizada, debes añadir un generador de PNJ a tu nivel y añadir tu PersonaNPCDefinition. Para añadir un dispositivo generador de PNJ, arrastra tu PersonaNPCDefinition desde el Cajón de contenido hasta el Visor.
Conversa con tu PNJ
Para conversar con tu PNJ, inicia una sesión y comienza el juego. Pulsa la tecla o el botón de tu dispositivo de entrada indicado en pantalla y ¡conversa con tu PNJ!