Requisitos previos
Ahora que has creado tu primera identidad y perfeccionado su personalidad interactuando con ella en el Editor de comandos, puedes añadir tu PNJ a una conversación. Para hablar con un PNJ en el juego, debes:
Definir un nuevo
npc_behavioren Verse.Añadir el
npc_behaviora la definición de personaje PNJ.Añadir la definición de personaje PNJ a un generador de PNJ.
Asegurarte de tener el chat de voz habilitado, ya que es necesario para conversar con los PNJ con identidad.
Cómo crear un comportamiento de PNJ vacío
Para configurar un comportamiento de PNJ personalizado en Verse, sigue estos pasos:
En la barra del menú, selecciona Verse > Explorador de Verse.
En el explorador de Verse, haz clic con el botón derecho del ratón en el nombre de tu proyecto y selecciona 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 básico para seleccionarlo como plantilla.
Asigna el nombre persona_npc_behavior al comportamiento del PNJ desde 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 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 de npc_behavior en Verse completa que puedes utilizar, así que puedes elegir con total tranquilidad Comportamiento de PNJ básico con Crear o Crear desde cero, 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 mediante Verse. Todos los PNJ generados por generadores de PNJ son agents y tienen una entity asociada. Esta entity asociada es la forma de añadir componentes de Scene Graph, como el persona_component a un agente de PNJ.
El persona_component se añade automáticamente cuando se añade un modificador de identidad 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 los PNJ.
Cómo editar el comportamiento del PNJ con identidad
Es necesario utilizar Verse para añadir la identidad de tu PNJ como objetivo de conversación para el jugador. Si no añades el PNJ como objetivo de conversación para tu jugador, no podrás conversar con el personaje PNJ.
En las siguientes secciones, la secuencia de comandos de Verse define el persona_npc_behavior . Para añadir este código de Verse al persona_npc_behavior vacío, sigue estos pasos:
En la barra del menú, selecciona Verse > Proyecto abierto en VS Code...
Una vez que se abra VS Code, 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 el archivo de Verse de tu proyecto.Compila el código de Verse en la barra de herramientas de UEFN o en VS Code.
También puedes utilizar Verse para crear experiencias en las que un equipo de jugadores interactúa con agentes de LLM. Verse gestiona las interacciones entre varios jugadores y los agentes LLM mediante CreateAudioTeamAndAddPlayers(), AddMember() y AddChatChannel().
Si quieres 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.OptionAgentGroupcontiene el grupo de agentes que entran en el canal de voz (TeamName).OptionVoiceChanneles 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) = falseAddPlayersAsConversationTargetinicia una conversación de voz en directo entre el PNJ y cada jugador en su espacio de juego. La función primero recopila todo lo que necesita, y solo si todo esto tiene éxito compila el grupo de agentes y el canal de voz, conecta a los jugadores y PNJ en ellos 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 tipado conteam_member_info), nombrándolo conTeamNamey apuntando su grupo al grupo de agentes que se acaba de crear. Este canal es el que transmite el audio de la conversación.A continuación, rellena el grupo: recorre 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 mismo grupo.
Luego, llama a
SimEntity.AddChatChannel(TeamVoiceChannel)para registrar el canal de voz en el sistema de chat de audio, lo que pone el canal en línea. Por último, 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 a la conversación o modificarla 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(), 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)OnBeginañade la salida estructurada a la sesión y establece al jugador como 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 acerque a un PNJ, a través de un activador.VerseOnBegin<override>()<suspends>:void= AddPlayersAsConversationTarget()En
OnEnd,Conversationse limpia y se elimina de todos los jugadores. Esto es recomendable.VerseOnEnd<override>():void= for (Player : GetEntity[].GetPlayspaceForEntity[].GetPlayers()): RemovePlayerAsConversationTarget(Player)
Cómo añadir comportamiento de PNJ a la definición de personaje PNJ
Para añadir el persona_npc_behavior a la definición de personaje PNJ, sigue estos pasos:
Ve a PersonaNPCDefinition en el almacén de contenido.
Selecciona PersonaNPCDefinition para abrirla y editarla.
En Comportamiento de 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 la definición de personaje PNJ se añade a un generador de PNJ, la identidad de PNJ se añade de forma automática como objetivo de conversación para el jugador.
Cómo añadir un generador de PNJ con definición de personaje PNJ
Para hacer aparecer un PNJ con tu identidad personalizada, debes añadir un Generador de PNJ al nivel y añadir tu PersonaNPCDefinition. Para añadir un dispositivo Generador de PNJ, arrastra la PersonaNPCDefinition desde el almacén de contenido al visor.
Cómo conversar con tu PNJ
Para conversar con tu PNJ, inicia una sesión y el juego. Pulsa la tecla o el botón del dispositivo de entrada que se muestra en pantalla y habla con el PNJ.