Donner des yeux à ses IA
Dans un jeu d’infiltration, les IA des PNJ (Personnages Non Joueurs) ont généralement une implémentation qui leur permet de détecter le joueur s’il sort de l’ombre ou se décale un peu trop d’un mur. Vous pouvez le faire avec quelques opérations et calculs via un script.
les plus développeurs d’entre vous penseront à faire un raycast pour vérifier si un obstacle se tient entre l’IA et le joueur, puis à calculer si le joueur est bien dans le cône de détection de l’IA. Le problème de cette méthode, c’est que si seulement le pied du joueur dépasse d’un mur (ce que l’IA devrait voir), on n’a pas moyen de le tester. Si vous avez besoin d’affiner la vision de votre IA pour gérer ce comportement, vous pouvez utiliser une caméra et les compute shaders d’Unity.
Kévin Drure, qui était intervenu en avril dernier lors d’un MUUG#608, et qui par ailleurs donne des formations gratuite sur Unreal Engine 4 a rédigé un article à ce sujet sur son blog.
Le principe est simple : placer une caméra et la paramétrer pour simuler la vision d’un personnage, puis utiliser les compute shaders pour faire le rendu de cette caméra. Le fonctionnement des compute shaders repose sur la parallélisation des calculs sur le GPU. Cela permet de rendre une image optimisée pour la vision de l’IA, avec seulement les éléments dont on a besoin : l’environnement proche et le joueur (s’il est dans le coin…).
En utilisant cette méthode, vous pourrez détecter n’importe quelle partie visible d’une entité, et même réagir aux occlusions visuelles sans collisions (comme un fumigène par exemple).
Nous vous invitons à lire son article (en anglais) et découvrir comment émuler le sens de la vue à vos IA !