Les comportements des personnages non joueurs (PNJ) jouent un rôle essentiel dans de nombreux jeux. Un gameplay captivant et immersif dépend de la façon dont les PNJ interagissent avec le monde qui les entoure, qu'il s'agisse de compagnons, de boss, de marchands ou de gardes. À première vue, ces comportements peuvent sembler intimidants, mais en réalité, la plupart des PNJ obéissent à un ensemble strict de règles logiques. Il est essentiel de comprendre ces règles pour créer des PNJ. Sur cette page, vous découvrirez la façon dont les PNJ interagissent avec le monde et la manière dont vous pouvez visualiser et orienter leurs comportements pour créer vos propres expériences.
Le générateur de PNJ facilite les interactions entre les PNJ et l'IA. Pour en savoir plus sur cet appareil, consultez les rubriques Générateur de PNJ, Définition de personnage PNJ], Créer un comportement de PNJ personnalisé et Utiliser le générateur de PNJ avec des animations.
Règles de logique
La plupart des PNJ n'agissent pas au hasard et choisissent leur prochaine action en fonction de leur état. Vous pouvez considérer l'état d'un PNJ comme un instantané du monde du PNJ à un moment donné. Les actions d'un PNJ, les actions des joueurs et toutes les autres variables dont le PNJ peut avoir connaissance constituent l'état du PNJ. Les PNJ utilisent des règles logiques pour décider quand passer d'un état à l'autre, et peuvent disposer de plusieurs règles différentes en fonction de leur état actuel.
Machines à états finis
Une façon courante de visualiser les états est d'utiliser une machine à états finis (FSM). Une machine à états finis décrit les différents états dans lesquels un PNJ peut se trouver et les transitions qu'il effectue d'un état à l'autre. Les nœuds représentent les différents états, et les flèches qui les relient décrivent les conditions nécessaires pour passer d'un état à l'autre. Un diagramme de FSM élémentaire pourrait ressembler à celui-ci :
Ici, la FSM a trois états et commence à l'état 1. Une fois certaines conditions remplies, le PNJ passe d'un état à l'autre et continue de le faire à mesure que les conditions changent.
Prenons par exemple la FSM d'un simple personnage de médecin militaire. Si le médecin voit des coéquipiers blessés à proximité, il les soigne. Si le médecin voit des adversaires à proximité, il les attaque. Sinon, il reste inactif. Une FSM élémentaire de ce personnage pourrait être la suivante :
Les FSM vous aident à visualiser les personnages et à en comprendre le fonctionnement, mais aussi à définir les réactions des personnages face aux événements et au monde qui les entourent.
Exemple de machine à états finis pour un garde
Prenons l'exemple d'un PNJ garde dans un jeu. Les PNJ gardes peuvent être créés par le générateur de gardes ou à l'aide d'une définition de personnage PNJ de type garde. Un PNJ de type garde suit un ensemble particulier de règles logiques, qui correspondent aux différents états dans lesquels le garde peut se trouver :
Inactivité
Patrouille
Méfiance
Alerte
Attaque
Lorsqu'un garde apparaît dans le jeu, il est inactif ou il commence à patrouiller si l'option correspondante est activée. Lorsque le garde détecte une cible, la jauge de suspicion commence à se remplir. Une fois la jauge pleine, le garde entre en phase d'alerte ; dans le cas contraire, il continue à patrouiller. Lorsqu'il est en alerte, le garde se dirige continuellement vers sa cible et l'attaque si elle se trouve à sa portée. Si la cible est éliminée ou échappe au garde, ce dernier continue de patrouiller. Vous pouvez visualiser la logique du garde à l'aide de la FSM suivante :
Cette FSM fournit une vue d'ensemble du comportement d'un garde, bien qu'un garde puisse adopter de nombreuses autres règles et actions. Les PNJ peuvent agir sur plusieurs éléments à la fois, et il est important de prendre en compte les facteurs environnementaux lorsque vous les ajoutez à vos expériences.
États des PNJ et Verse
Les PNJ dans l'UEFN héritent du module d'IA, dont vous pouvez utiliser les fonctions pour contrôler directement leur état. Par exemple, l'interface navigatable vous permet de diriger un PNJ vers une zone, tandis que l'interface focus_interface vous permet de forcer un personnage à se concentrer sur un objet ou un agent particulier. En utilisant ces interfaces dans les appareils Verse ou les comportements de PNJ, vous pouvez créer des PNJ personnalisés pour peupler vos expériences.
Pour en savoir plus sur la création de vos propres comportements de PNJ, consultez la page Créer un comportement de PNJ personnalisé.
Par exemple, considérez le comportement de PNJ suivant :
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:
Tous les PNJ implémentent l'interface damageable, qui leur permet de subir des dégâts. L'abonnement d'une fonction à l'événement DamagedEvent de l'interface damageable vous permet de savoir quand votre PNJ a subi des dégâts et d'exécuter du code en réponse. Dans le script ci-dessus, lorsqu'un PNJ qui implémente ce comportement subit des dégâts, il récupère l'agent à l'origine des dégâts et le stocke dans une variable InstigatingAgent. Ensuite, à l'aide de l'interface navigatable du PNJ, il définit l'instigateur comme cible de navigation, à savoir NavigationTarget, et le prend en chasse.
Ce comportement est un prolongement du comportement d'origine du PNJ. Si ce script est lié à un personnage de type garde, le PNJ continue à adopter tous ses comportements de garde habituels, mais lorsqu'il subit des dégâts, il se dirige directement vers sa cible. Il en va de même pour les animaux sauvages et les personnages personnalisés. Les scripts de comportement de PNJ sont un outil puissant pour étendre les fonctionnalités des PNJ et vous permettre de créer vos propres PNJ en fonction de vos expériences. Pour en savoir plus sur la création de vos scripts de comportement de PNJ personnalisés, consultez la rubrique Créer un comportement de PNJ personnalisé.
Types de PNJ
Les différents types de PNJ adoptent des comportements élémentaires différents, et les PNJ personnalisés que vous créez à partir de ces types de PNJ héritent de ces comportements. Pour en savoir plus sur les différents types élémentaires de PNJ et leurs comportements associés, consultez la rubrique Types de PNJ.
Parcourir le monde
Lorsqu'ils parcourent le monde, les PNJ doivent choisir le meilleur itinéraire pour arriver à destination. Le garde escalade-t-il un mur ou le détruit-il pour le franchir ? Doit-il nager ou contourner l'eau ? Les PNJ prennent ces décisions en fonction du maillage de navigation du monde. Les PNJ utilisent le maillage de navigation pour prendre leurs décisions de recherche de chemin et modifier leurs choix à mesure que le monde change autour d'eux. Pour en savoir plus sur l'utilisation et la visualisation du maillage de navigation, consultez la rubrique Maillage de navigation.