Slime and Seek
Style: projet 3D , projet scolaire
Plateforme: Windows
Logicielle et langage utiliser: Unity, C#
Slime and Seek et un projet qui explore l’implémentation d’IA et de système de déplacement afin de permettre aux agents d’interagir dans le niveau. Durant la partie, l’équipe de gardiens patrouille le labyrinthe et cherche à attraper l’évadé. L’évadé tente de récupérer les trésors placés aléatoirement dans le labyrinthe en évitant de se faire repérer par les gardes.
Index des expressions Anglophones:
Arbre de comportement = Behaviour tree
System de déplacement = Steering behaviour
Comportement Général
Les IA utilisent un arbre de comportement pour contrôler leurs décisions. L’utilisation de comportements généraux permet de réutiliser des scripts dans plusieurs agents différents.
Le mouvement des IA est contrôlé en utilisant un système de déplacement. Les formules mathématiques ont été programmées à la main afin de créer les comportements de bases suivants : poursuite, fuite et évasion.
Prévention de mauvais pathfinding
Les agents utilisent des raycast à court porter afin d’éviter de traverser les murs. Si l’agent détecte qu’il frappe un mur à répétition, il va se diriger vers la node de déplacement accessible la plus proche et recalculer son chemin avec l’algorithme A*.
Garde
Champ de vision
Les gardes utilisent six raycast comme cône de visions. Le calcul de l'angle entre les rayons est exécuté en temps réel afin de créer un champ de vision variable.
Le champ de vision des gardes est affecté par leur vitesse de déplacement. Plus les gardes sont rapide, plus leur champ de vision est restreint.
Patrouille
Le comportement de base des gardes est de circuler en suivant une liste de node qui représentent leurs chemins de patrouille. À chaque node, le garde stop et examine ses alentours pour repérer l’évadé.
Si un garde est amené à quitter son chemin de patrouille, il retourne au dernier point qu’il a patrouillé et reprend son comportement de base.
Poursuite
Lorsque le garde repère l’évadé, il entre dans un état de poursuite. Dans cet état, le gardien utilise le système de déplacement “Poursuite” afin d’attraper l’évader. Si l’évadé n’est plus visible, le gardien va inspecter le dernier emplacement connu de l’évader. Quand le gardien repère l’évader pour la première fois, il communique avec le gardien le plus proche afin de demander du renfort. L’agent qui arrive en renfort tente d’intercepter l’évadé en empruntant un chemin différent que celui du garde original. Si les gardiens n’arrivent pas à localiser l’évadé, ils retournent à leur dernier point patrouiller.
Évadé
Déplacement et collecte
L’objectif premier de l’évadé est de collecter les 3 tomates dorées qui sont placés aléatoirement sur la carte. Après avoir sélectionné la tomate qu’il veut récupérer, il trouve le chemin le plus rapide avec algorithme A* et tente de la rejoindre. Après avoir récupéré une tomate, l’évadé fuit les lieux avant de sélectionner l’objectif suivant.
Fuite
Si l’évadé repère un garde, il va fuir dans la direction opposée du garde. Une fois en sécurité, il va retenter de collecter la tomate qu’il avait sélectionnée.
Si le garde est directement à côté, l’évader va abandonner son pathfinding et va se concentrer à esquiver le garde en fuyant dans la direction opposée.