Comportamentos de personagens não jogáveis (PNJ) têm uma função de extrema importância em vários jogos. Companheiros, chefes, comerciantes, guardas, não importa; a maneira como os PNJs interagem com o mundo ao seu redor confere imersão e envolvimento ao jogo. Vendo pela primeira vez, esses comportamentos podem dar medo. Mas, na verdade, a maioria dos PNJs segue um conjunto rígido de regras lógicas. Compreender essas regras é importante para criar PNJs. Nesta página, você saberá mais como os PNJs interagem com o mundo e como visualizar e manipular seus comportamentos para criar suas próprias experiências únicas.
O Gerador de PNJs facilita muito as interações com IA e PNJs. Para saber mais sobre o dispositivo, consulte Dispositivo Gerador de PNJs, Definições de PNJ, página Como criar comportamento de PNJ personalizado e Como usar o Gerador de PNJs com animações.
Regras lógicas
A maioria dos PNJs não age aleatoriamente e escolhe sua ação seguinte com base em seu estado. Você pode considerar o estado de um PNJ como sendo um instantâneo do mundo do PNJ em um momento específico. O estado do PNJ consiste das ações que o PNJ está realizando, ações que os jogadores estão realizando e outras variáveis de conhecimento do PNJ. Os PNJs usam regras lógicas para decidir quando passar de um estado para outro e podem ter regras diferentes conforme seu estado atual.
Máquinas de estado finitas
Uma maneira comum de visualizar os estados é através da Máquina de Estado Finita (FSM). Máquinas de estados finitas descrevem os diferentes estados de um PNJ e as transições entre cada um deles. Os nós representam os diferentes estados, e as setas as condições necessárias para passar de um estado para o outro. Um diagrama de FSM básico pode ter a seguinte aparência:
Aqui, o FSM tem três estados e começa no Estado 1. Quando algumas condições específicas forem satisfeitas, o PNJ passa de um estado para o outro e continua passando de estado em estado conforme as condições mudarem.
Por exemplo, considere o FSM de um personagem, um simples paramédico de batalha. Se houver colegas de equipe feridos por perto, o paramédico os cura. Se houver inimigos por perto, o paramédico os ataca. Caso contrário, permanece ocioso. Um diagrama de FSM para este personagem pode ter a seguinte aparência:
FSMs ajudam a visualizar e compreender como o personagem funciona, bem como mapear as respostas dos personagens aos eventos no mundo ao seu redor.
Máquina de estado finita — exemplo de guarda
Para este exemplo de jogo, vejamos o PNJ guarda. Os PNJs guardas podem ser gerados a partir do dispositivo Gerador de Guardas ou criados com uma Definição de personagem PNJ do tipo guarda. Um PNJ do tipo guarda obedece a um conjunto específico de regras lógicas, que corresponde a estados ativos distintos em que o guarda pode estar:
Ocioso
Patrulhando
Desconfiado
Alerta
Atacando
Quando um guarda for gerado, começará ocioso ou patrulhando, se a opção de patrulha estiver disponível. Quando o guarda detectar o alvo, o medidor de suspeita começará a encher. Se o medidor encher, o guarda entrará em fase de alerta. Caso contrário, voltará a patrulhar. Em estado de alerta, o guarda continuará a se deslocar até o jogador, atacando-o se estiver no alcance. Se o alvo for eliminado ou fugir do guarda, o guarda voltará a patrulhar. Você pode visualizar a lógica do guarda com o seguinte FSM:
Esse FSM proporciona uma visão geral de alto nível do comportamento do guarda, mas podem haver muito mais regras e ações para o guarda realizar. Os PNJs podem estar agindo em várias coisas ao mesmo tempo, e é importante considerar fatores ambientais ao adicioná-los às suas experiências.
Estados de PNJ e Verse
PNJs no UEFN herdam do módulo de IA e têm funções que podem ser usadas para controlar diretamente seu estado. Por exemplo, a interface navigatable
permite levar um PNJ até uma área, enquanto a focus_interface
permite forçar um personagem a focar em um agente ou objeto específico. Usando essas interfaces em dispositivos Verse ou comportamentos de PNJ, você pode criar PNJs personalizados para povoar suas experiências.
Para obter mais informações sobre como criar seus próprios comportamentos de PNJ, confira a página Como criar comportamento de PNJ personalizado.
Por exemplo, considere o seguinte comportamento 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 os PNJs implementam a interface damageable
, permitindo que recebam dano. Inscrever uma função ao DamagedEvent
da interface damageable
permite saber quando seu PNJ recebe dano e executa seu código em resposta. No código acima, quando o PNJ em que esse comportamento foi implementado receber dano, o agente que o causou será obtido e armazenado na variável InstigatingAgent
. Em seguida, ao usar a interface navigatable
do PNJ, o instigador será definido como NavigationTarget
e perseguido.
Esse comportamento é uma extensão do comportamento original do PNJ. Se esse script for anexado ao personagem do tipo guarda, este ainda realizará todos os seus comportamentos comuns de guarda, mas, ao receber dano, irá direto até o alvo. Isso também se aplica a personagens do tipo Personalizado e Animais Selvagens. Scripts de comportamento de PNJ são uma ferramenta poderosa para ampliar as funcionalidades do PNJ e permitem que você crie seus próprios PNJs personalizados para adequar suas experiências. Para obter mais informações sobre como criar seus próprios scripts personalizados de comportamento de PNJ, consulte Como criar comportamento de PNJ personalizado.
Tipos de PNJ
Comportamentos base diferentes são implementados em tipos distintos de PNJ, e esses comportamentos serão herdados pelos tipos de PNJ criados a partir dos PNJs personalizados. Para obter mais informações sobre diferentes tipos base de PNJ e seus comportamentos correspondentes, consulte Tipos de PNJ.
Como navegar no mundo
Ao navegar no mundo, os PNJs precisam fazer suas próprias escolhas sobre qual é a melhor rota para tomar até seu destino. O guarda se esgueira pela parede, ou simplesmente a derruba? Deve ir nadando pela água, ou dar a volta? Os PNJs tomam essas decisões com base na malha de navegação do mundo. A malha de navegação é usada para tomar decisões de pathfinding e atualizar suas escolhas à medida que o mundo é atualizado ao seu redor. Para mais informações sobre como usar e visualizar a malha de navegação, consulte a página Malha de navegação.