Los comportamientos de los personajes no jugadores (PNJ) desempeñan un papel fundamental en muchos juegos. La forma en que PNJ, como compañeros, jefes, mercaderes o guardias, interactúan con el mundo que les rodea favorece una jugabilidad atractiva e inmersiva. 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 resulta clave a la hora de crear PNJ, y en esta página aprenderás cómo interactúan los PNJ con el mundo, y cómo puedes visualizar y manipular sus comportamientos para crear tus propias experiencias únicas.
El dispositivo Generador de PNJ facilita muchas interacciones entre los PNJ y la IA. Para saber más sobre el dispositivo, consulta Dispositivo Generador de PNJ, Definición de personaje PNJ, la página Cómo crear un comportamiento personalizado de PNJ y Cómo utilizar el generador de PNJ con animaciones.
Reglas lógicas
La mayoría de los PNJ no actúan al azar: eligen su próxima acción en función de su estado. Puedes pensar en el estado de un PNJ como una copia instantánea de su mundo en un momento determinado. Las acciones que realiza el PNJ, las acciones que realizan los jugadores y cualquier otra variable que el PNJ pueda conocer conforman 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 distintas según su estado actual.
Máquinas de estados finitos
Una forma habitual de visualizar los estados es a través de una máquina de estados finitos (FSM). Una máquina de estados finitos describe los distintos estados en los que puede estar un PNJ y las transiciones que realiza de un estado a otro. Los nodos representan los distintos estados, y las flechas entre ellos describen las condiciones necesarias para pasar de un estado al siguiente. Un diagrama de FSM básica podría tener este aspecto:
Aquí la FSM tiene tres estados y comienza en el estado 1. Una vez que se alcanzan determinadas condiciones, el PNJ salta de un estado al siguiente, y sigue saltando de estado a medida que cambian las condiciones.
Por ejemplo, piensa en la FSM de un simple personaje médico de batalla. Si hay compañeros heridos cerca, el médico cura a los compañeros. Si hay enemigos cerca, el médico ataca a los enemigos. De lo contrario, permanece inactivo. Una FSM básica para este personaje podría tener el siguiente aspecto:
Las FSM te ayudan a visualizar y comprender cómo funcionan los personajes, y te ayudan a trazar las formas en que responden a los acontecimientos y al mundo que les rodea.
Ejemplo de máquina de estados finitos para guardia
A modo de ejemplo, vamos a fijarnos en el PNJ guardia en el juego. Los PNJ guardias se pueden generar desde el dispositivo Generador de guardias o se pueden crear con una definición de PNJ de tipo guardia. Un PNJ de tipo guardia sigue un conjunto concreto de reglas lógicas, que se corresponden con los distintos estados activos en los que puede estar el guardia:
Inactivo
Patrullando
Sospechoso
Alerta
Atacando
Cuando aparece un guardia, puede hacerlo como personaje inactivo o empezar a patrullar si la opción de patrulla está activada. Cuando el guardia detecta un objetivo, empieza a llenar el medidor de sospecha. Si el medidor se llena, el guardia entra en la fase de alerta; si no, vuelve a patrullar. Mientras esté alerta, el guardia se dirigirá continuamente hacia su objetivo y lo atacará si está a su alcance. Si el objetivo se elimina o escapa del guardia, este volverá a patrullar. Puedes visualizar la lógica del guardia con la siguiente FSM:
Esta FSM proporciona una visión general de alto nivel del comportamiento de los guardias, pero puede haber muchas más reglas y acciones que realice un guardia. Los PNJ pueden estar actuando sobre varias cosas a la vez, y es importante tener en cuenta los factores ambientales a medida que los añades a tus experiencias.
Estados de PNJ y Verse
Los PNJ de UEFN heredan del módulo de IA e incluyen funciones que puedes utilizar para controlar directamente su estado. Por ejemplo, la interfaz navigatable
te permite dirigir a un PNJ a una zona, mientras que la interfaz focus_interface
te permite obligar a un personaje a enfocar un objeto o agente concreto. Si utilizas estas interfaces en dispositivos Verse o comportamientos de PNJ, puedes crear PNJ personalizados para poblar 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 personalizado de PNJ.
Por ejemplo, observa 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 a DamagedEvent
de la interfaz damageable
te permite saber cuándo tu PNJ está dañado y ejecutar código en consecuencia. En la secuencia de comandos anterior, cuando un PNJ que implemente este comportamiento resulte dañado, obtendrá el agente que lo dañó y lo almacenará en una variable InstigatingAgent
. Entonces, establecerá en la interfaz navigatable
del PNJ 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, este seguirá con todos sus comportamientos de guardia habituales, pero cuando resulte dañado irá directamente hacia su objetivo. Lo mismo se aplica a animales salvajes y a personajes de tipo personalizado. Las secuencias de comandos de comportamiento de PNJ son una potente herramienta 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 personalizadas, consulta Cómo crear un comportamiento de PNJ personalizado.
Tipos de PNJ
Los distintos tipos de PNJ implementan comportamientos básicos 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 moverse por el mundo
Al moverse por el mundo, los PNJ tienen que elegir la mejor ruta para llegar a su destino. ¿Salta el guardia por encima de un muro o lo atraviesa? ¿Debe nadar a través del agua o rodearla? Los PNJ toman estas decisiones basándose en la malla de navegación del mundo. Los PNJ utilizan la malla de navegación para tomar decisiones de búsqueda de rutas y actualizan sus elecciones a medida que el mundo va cambiando a su alrededor. Para obtener más información sobre el uso y la visualización de la malla de navegación, consulta la página Malla de navegación.