Los comportamientos de los personajes no jugadores (PNJ) desempeñan un papel fundamental en muchos juegos. Desde compañeros a jefes, y de comerciantes a guardias, la forma en que los PNJ interactúan con el entorno impulsa una jugabilidad atractiva y envolvente. A primera vista, estos comportamientos pueden parecer intimidantes, pero en realidad, la mayoría de los PNJ siguen un estricto conjunto de reglas lógicas. Comprender estas reglas es clave a la hora de crear PNJ, y en esta página aprenderás cómo interactúan con el entorno y cómo puedes visualizar y manipular sus comportamientos para crear experiencias únicas.
El dispositivo generador de PNJ facilita muchas interacciones entre PNJ e IA. Para obtener más información sobre el dispositivo, consulta Dispositivo generador de PNJ, Definición de PNJ, Cómo crear una página de comportamiento de PNJ personalizado y Cómo usar el generador de PNJ con animaciones.
Reglas lógicas
La mayoría de los PNJ no actúan al azar, y eligen su siguiente acción en función de su estado. Puedes entender el estado de un PNJ como una instantánea del entorno del PNJ en un momento determinado. Las acciones que realiza el PNJ, las que realizan los jugadores, y cualquier otra variable que el PNJ pueda conocer, forman el estado del PNJ. Los PNJ utilizan reglas lógicas para decidir cuándo pasar de un estado a otro y pueden tener muchas reglas diferentes según su estado actual.
Máquinas de estado finito
Una manera común de visualizar estados es mediante una máquina de estado finito (FSM). Una máquina de estado finito describe los diferentes estados en los que puede estar un PNJ y las transiciones que hace de estado a estado. Los nodos representan los diferentes estados, y las flechas entre ellos describen las condiciones necesarias para pasar de un estado al siguiente. Un diagrama de FSM básico puede verse de la siguiente manera:
Aquí, el FSM tiene tres estados y comienza en el estado 1. Una vez que se alcanzan las condiciones específicas, el PNJ salta de un estado al siguiente y continúa saltando estados a medida que las condiciones cambian.
Por ejemplo, considera el FSM para un simple personaje médico de batalla. Si tiene compañeros de equipo heridos cerca, el médico cura a los compañeros de equipo. Si tiene compañeros de equipo heridos cerca, el médico ataca a los enemigos. Si no, se queda en espera. Un FSM básico para este personaje puede verse de la siguiente manera:
Los FSM te ayudan a visualizar y comprender la manera en la que trabajan los personajes, además de ayudarte a planificar la manera en la que los personajes responden a los eventos y al entorno.
Máquinas de estado finito de un ejemplo de guardia
Para tener un ejemplo en el juego, observemos al PNJ guardia. Los PNJ guardia pueden generarse en el dispositivo generador de guardias o crearse con una definición de personaje PNJ de tipo de guardia. Un PNJ de tipo guardia se rige por un conjunto de reglas lógicas, que corresponden con los diferentes estados activos en los que un guardia puede estar. Entre ellos, los siguientes:
En espera
Patrullando
Vigilante
Alerta
En ataque
Cuando un guardia aparece, comienza ya sea en espera o patrullando, si es que la opción de patrullar está habilitada. Cuando el guardia detecta un objetivo, comienza a llenar el medidor de sospecha. Si el medidor se llena, el guardia entra en la fase de alerta; de lo contrario, vuelve a patrullar. Durante el estado de alerta, el guardia se moverá continuamente hacia su objetivo y lo atacará si se encuentran al alcance. Si se elimina el objetivo o si se le escapa al guardia, el guardia volverá a patrullar. Puedes visualizar la lógica del guardia en el siguiente FSM:
Este FSM brinda información general sobre el comportamiento del guardia, pero podría haber más reglas y acciones que realicen los guardias. Los PNJ pueden actuar sobre varias cosas a la vez, y es importante tener en cuenta los factores ambientales al añadirlos a las experiencias.
Estados de PNJ y Verse
Los PNJ en UEFN derivan del módulo de IA y exponen funciones que puedes usar para controlar directamente su estado. Por ejemplo, la interfaz navigatable
te permite desplazar a un PNJ a una zona, mientras que la interfaz focus_interface
te permite forzar a un personaje a centrarse en un objeto o agente en particular. Al utilizar estas interfaces dentro de los dispositivos de Verse o de los comportamientos de PNJ, puedes crear PNJ personalizados para completar tus experiencias.
Para obtener más información sobre cómo crear tus propios comportamientos de PNJ, consulta la página Cómo crear un comportamiento de PNJ personalizado.
Por ejemplo, considera el siguiente comportamiento de PNJ:
using { /Fortnite.com/AI }
using { /Fortnite.com/Characters }
using { /Fortnite.com/Game }
using { /Verse.org/Simulation }
on_damaged_behavior<public> := class(npc_behavior):
# This function runs when the NPC is spawned in the world and ready to follow a behavior.
OnBegin<override>()<suspends>:void=
if:
Todos los PNJ implementan la interfaz damageable
, que les permite recibir daño. Suscribir una función al DamagedEvent
de la interfaz damageable
te permite saber cuándo sufre daño tu PNJ, y te permite ejecutar código en respuesta. En la secuencia de comandos anterior, cuando un PNJ que implementa este comportamiento sufre daño, obtendrá el agente que lo dañó y lo almacenará en una variable InstigatingAgent
. Entonces, mediante la interfaz navigatable
del PNJ, establecerá al instigador como NavigationTarget
y lo perseguirá.
Este comportamiento es una extensión del comportamiento original del PNJ. Si esta secuencia de comandos se adjunta a un personaje de tipo guardia, seguirá realizando todos sus comportamientos regulares de guardia, pero cuando sufra daños se desplazará directamente hacia su objetivo. Lo mismo se aplica a los personajes animales salvajes y personalizados. Las secuencias de comandos de comportamiento de PNJ son una herramienta poderosa para ampliar la funcionalidad de los PNJ y te permiten crear tus propios PNJ personalizados para adaptarlos a tus experiencias. Para obtener más información sobre cómo crear tus propias secuencias de comandos de comportamiento de PNJ personalizados, consulta Cómo crear un comportamiento de PNJ personalizado.
Tipos de PNJ
Los distintos tipos de PNJ implementan comportamientos base diferentes, y los PNJ personalizados que crees a partir de estos tipos de PNJ heredarán estos comportamientos. Para obtener más información sobre los distintos tipos básicos de PNJ y sus comportamientos asociados, consulta Tipos de PNJ.
Cómo desplazarse por el entorno
Cuando se desplazan por el entorno, los PNJ tienen que tomar decisiones sobre la mejor ruta para llegar a su destino. ¿El guardia trepa por una pared o la atraviesa? ¿Debe nadar por el agua o rodearla? Los PNJ toman estas decisiones en función de la malla de desplazamiento del entorno. Los PNJ utilizan la malla de desplazamiento para tomar decisiones de búsqueda de ruta y actualizan sus elecciones a medida que el entorno se actualiza a su alrededor. Para obtener más información sobre el uso y la visualización de la malla de desplazamiento, consulta la página Malla de desplazamiento.