A downloadable plugin

Cet outil a été créé dans le cadre de ce projet : Projet Ozone

De la même manière que les Behavior Trees ou les States Trees, ce plugin sert à créer le comportement des IA. 

Sa particularité est dans son approche : il utilise un planificateur HTN lié à un système de claim. 

Les comportements sont donc priorisés et les IA peuvent arrêter une tâche pour effectuer un comportement plus important, tout en se coordonnant !

Pour voir les différents comportements créés pour le jeu : 


Donnée pour le planificateur
Données pour le planificateur

En suivant l'approche des Behavior Trees de Unreal, le plugin est complètement Data driven : On choisit le comportement des IA avec des tâches génériques (MoveTo, Wait, PickUp, etc).

Ces tâches récupèrent ensuite leurs données au runtime pour effectuer le comportement voulu (Se déplacer vers le bon acteur par exemple).


Plus en détail : Lors d'une planification, les IA vont chercher dans une pool d'actions actuellement disponibles (GiveResource, StoreItem, etc). Ces actions possèdent les informations pour mener à bien le comportement.

Dans l'éditeur, créer un comportement revient à :

  1. Choisir une action à récupérer au runtime
  2. Décrire une série de tâches en utilisant les informations de l'action 


Menu déroulant custom pour gérer le choix entre plusieurs acteurs
Menu déroulant custom pour gérer le choix entre plusieurs acteurs

Il arrive qu'une action ait plusieurs fois le même type de donnée. Ici par exemple, on veut transporter un item au sol ("Actor") vers un stockage ("ItemStorageActor").

En utilisant la reflection de Unreal, un menu déroulant custom a été créé pour montrer tous les acteurs stockés dans l'action. 

Évidemment lorsqu'il n'y a qu'un choix d'acteur, le menu déroulant n'apparaît pas.


Création de l'action de transport de ressource vers une table de craft
Création de l'action de transport de ressource vers une table de craft

Pour faciliter l'utilisation du système de claim, un Node kismet custom a été créé pour être utilisé en blueprint.

Il fonctionne comme le node SpawnActor : On choisit la classe d'action à créer et des pins apparaissent selon ses besoins. 

Le node est donc générique en prenant n'importe quel type de paramètre demandé par l'action.


Visualisateur du comportement de pickup
Visualisateur du comportement de pickup

Lors du débugage des comportements, le plan généré par le planificateur est affiché par un visualisateur. 

Les informations runtime utilisées sont visibles pour pouvoir vérifier le bon fonctionnement du comportement.


Pour faciliter l'utilisation du plugin, quelques optimisations d'UX ont été faite grâce à de la reflection : Optimisations UX

StatusReleased
CategoryTool
AuthorXetoDi
AI DisclosureAI Assisted, Code

Leave a comment

Log in with itch.io to leave a comment.