Intelligence artificielle Horizon Zero Dawn: comportement individuel

Dans la première partie de l' étude AI Horizon Zero Dawn , j'ai expliqué comment le jeu crée des troupeaux de machines animales pilotées par l'IA. Cela nécessite un système complexe de hiérarchie des agents, dans lequel chaque machine peut prendre des décisions sur la façon de se comporter à l'aide du planificateur de réseau des tâches hiérarchiques, et les agents de groupe attribuent conjointement des rôles et des responsabilités aux machines en tant que parties du troupeau. Tout cela fait partie d'un système appelé «The Collective» qui prend en charge l'écosystème de toutes les machines du monde lorsque l'utilisateur est dans le jeu.


Dans ce dernier article, nous examinerons de plus près les systèmes que les machines individuelles peuvent utiliser dans le cadre de leur comportement de base. Ils comprennent des systèmes de capteurs, la navigation pour les voitures terrestres et volantes, ainsi que la connexion étroite des comportements de l'IA avec les systèmes d'animation, qui fournit à chaque voiture un comportement dangereux, mais en même temps réaliste.

Capteurs et mouvement


Tout d'abord, examinons les capteurs utilisés par les machines pour déclencher des réactions de l'IA, et apprenons également comment l'animation est liée au processus global d'exécution de leurs comportements. La machine peut utiliser un nombre important de capteurs uniques: capteurs visuels, par exemple, les yeux du «chevalier» , radar et capteurs de présence des «striders» , capteurs auditifs qui captent les sons d'explosions lointaines et jetant des pierres à proximité, ainsi que la capacité de sentir les joueurs toucher la machine. Chaque machine possède un ensemble de ces capteurs, calibrés par leurs propres valeurs de sensibilité, il est donc assez facile d’atteindre, par exemple, un «chevalier» ou un «ruminant» , mais il est beaucoup plus difficile d’attraper un «chasseur» .


Le système de capteurs traditionnel est uniquement capable de suivre les événements autour de l'IA et de les «voir» / «les entendre», mais en réalité, le système de capteurs a beaucoup plus de nuances. Ils utilisent des paquets d'informations attachés à des objets qui peuvent provoquer des stimuli sur l'un des capteurs des machines: ces objets peuvent être un joueur, d'autres PNJ, des pierres, des flèches volantes, d'autres voitures et la nature. Ces données informent la destinataire (la machine qui a détecté quelque chose) des informations sur ce qu'elle a trouvé et son état. Par conséquent, les machines, comme les PNJ humains, peuvent comprendre la différence entre le cadavre se trouvant devant eux et la flèche, sifflée à côté de leur tête; de plus, cela vous permet de vous assurer que le joueur qui se cache dans les hautes herbes ou derrière les arbres n'est pas perceptible - les machines reçoivent des informations selon lesquelles il est invisible dans cet état.

Chaque personnage de l'IA, qu'il s'agisse d'une machine ou d'une personne, est capable de traiter et d'interpréter les données sensorielles de différentes manières, de sorte que certaines informations peuvent être ignorées par certains personnages, tandis que d'autres y répondent de manière appropriée. En fait, selon la puissance du capteur dans la machine, il peut réduire la quantité de données reçues de l'événement capteur qu'il peut lire. Cela vous permet de contrôler les propriétés émergentes du jeu afin que chaque type de personnage puisse répondre aux informations de sa propre manière.

Si l'IA doit effectuer une action basée sur ces données sensorielles, alors nous devons toujours la rendre réaliste. Par conséquent, lorsque la machine décide de prendre des mesures, par exemple en se déplaçant vers un nouvel emplacement, en recherchant la source d'anxiété ou en attaquant le joueur, il y a un problème d'animation de l'exécution de ces actions de la manière la plus réaliste possible. L'animation de ces machines est une tâche très difficile: elles doivent simultanément ressembler à des prototypes vivants et avoir un comportement semblable à une machine. Pour cela, il est nécessaire que les systèmes de navigation et de combat prennent en compte la distance que le véhicule doit parcourir, et la chaîne d'outils d'animation doit ajuster les os des racines des animations et les mélanger en fonction de la distance et du temps de mouvement perçus.


Cela garantit qu'à n'importe quelle distance de mouvement et de vitesse de la machine, il pourra démarrer l'animation, aller à la partie principale du comportement, puis les mélanger correctement et au bon moment. Ceci est important pour des comportements tels que la course vers un point spécifique, lorsque la machine doit non seulement ralentir et s'arrêter au bon point. Mais c'est particulièrement important au combat. De nombreuses animations utilisées pour les attaques ont deux séquences distinctes: «swing», qui indique le début de l'attaque, suivi de la fin, causant des dégâts. Horizon Zero Dawn utilise une méthode similaire à celle dont j'ai parlé dans l'article DOOM AI : le système surveille le mouvement actuel de la machine, mélange les animations de mouvement ou d'attaque pour atteindre les points souhaités, puis fait apparaître ou arrêter la voiture exactement à la fin.

La navigation


Il y a une autre tâche sérieuse dont je n'ai pas encore parlé - la navigation. La tâche de déplacer des voitures dans le monde est très complexe, il existe une grande variété de types d'ennemis uniques, et ils ont tous des tailles et des formes différentes. Par conséquent, ils doivent se déplacer le long du relief de manière naturelle pour eux. De plus, ils doivent reconnaître les changements de géométrie locale et s'y adapter, ou simplement les ignorer, selon le type de machine. Pour ce faire, vous avez besoin d'un outil d'IA largement utilisé appelé maillage de navigation. Navmesh stocke des informations sur la façon dont un personnage particulier peut se déplacer sur la carte en fonction de ce qui est considéré comme des obstacles dans le monde pour lui. Bien que nous puissions calculer tout cela pendant l'exécution du jeu, ces données sont généralement intégrées ou «cuites» avant la sortie du jeu et, si nécessaire, chargées en mémoire.


Étant donné que la carte Horizon Zero Dawn est énorme et que seuls certains segments sont requis à un moment donné (l'IA est active et ne se déplace que près du joueur), un maillage de navigation est créé pendant le jeu, mais uniquement à proximité immédiate du joueur. Mais ce qui est intéressant, c'est que pas un navmesh n'est utilisé, mais six! Quatre d'entre eux offrent un mouvement de personnage en fonction de la taille de l'objet: petit, moyen, grand ou énorme. Par conséquent, les gens et les chevaliers peuvent se déplacer autour d'un petit maillage, et pour les machines comme les éclairs, le maillage naval est presque entièrement le leur. De plus, il y a deux navmesh supplémentaires: un pour les machines flottantes, par exemple pour les «dents de clic», ainsi qu'un maillage unique qui permet aux machines de se tenir dans des endroits pratiques au cas où le joueur essaierait de les grimper.


Dans chacun de ces cas, les obstacles peuvent bloquer ou modifier la structure des mailles de navigation, et le système recalcule les changements en temps réel afin que les obstacles en mouvement (et même d'autres machines) puissent affecter la capacité de se déplacer dans l'espace. Ce qui est intéressant ici, c'est que les obstacles peuvent avoir des propriétés différentes, et peuvent être complètement infranchissables, ou simplement indésirables à déplacer - mais cela dépend grandement de l'état de comportement de la machine AI. Comme indiqué dans la première partie, après leur création, les voitures qui patrouillent activement évitent la végétation dans laquelle vous pouvez vous cacher, mais lorsque vous explorez les sources d'anxiété les plus proches, l'herbe reste indésirable et, en même temps, la machine peut toujours la traverser si nécessaire. Le même principe s'applique aux petites pierres et aux arbres: ce sont des objets infranchissables, à l'exception des grosses machines, comme les «hippopotames» , les «rongeurs de pierre» et les « têtes de tonnerre» . Ces monstres peuvent casser des pierres et déraciner des arbres, mais seulement s'ils sont en colère ou poursuivent un joueur. Étant dans un état d'autres comportements, ces machines perçoivent ces obstacles comme les autres.

Mouvement d'air


Bien que cette chaîne d'outils de navigation gère les véhicules terrestres de toutes tailles et formes, elle ne fonctionne pas du tout pour ceux qui volent dans les airs. Les personnages non-joueurs se déplaçant dans les airs doivent non seulement prendre en compte les obstacles les plus proches, afin de ne pas entrer en collision avec des arbres ou des falaises, mais doivent également connaître la hauteur de la géométrie qui les entoure. Le monde d'Horizon Zero Dawn est plein de collines, de forêts, de falaises et de montagnes escarpées ... Deux types de voitures volantes, un «cerf-volant» et un «pétrel», doivent savoir voyager dans les airs pour décoller, parcourir les routes de patrouille, atterrir, ainsi que décliner et, si nécessaire, attaquer le joueur. Pour cela, le jeu a non seulement un système de maillage de navigation au sol, mais aussi un système aérien complètement séparé.


Sa création s'est avérée être une tâche difficile pour le département de développement de jeux AI. Il a utilisé une technique appelée «planification hiérarchique des chemins sur les cartes MIP». MIP Mapping est une technique utilisée en infographie. visant à minimiser la quantité de mémoire occupée par la texture ou l'image. Pour ce faire, un ensemble d'images identiques est créé avec une résolution progressivement décroissante. Cette solution est idéale pour contrôler le niveau de détail dans les jeux: les objets situés à des centaines de mètres du joueur sont visibles, mais utilisent moins de mémoire de texture que ceux qui sont à côté du joueur et utilisent une qualité maximale. Cette approche a été utilisée pour la navigation car lorsque la voiture vole le long du chemin tracé dans le monde, elle n'a pas besoin de connaître avec une grande précision la géométrie locale de l'endroit où elle se trouvera en une minute, mais il est nécessaire de connaître l'emplacement de la terre juste avant de devoir atterrir. Un système de planification de trajectoire pour les véhicules aéroportés utilise la texturation MIP pour créer une carte de hauteur de la géométrie locale - une structure de données qui nous indique la hauteur à une position x / y donnée dans le monde. Les textures MIP ont quatre niveaux et, à mesure qu'elles approchent du sol, elles deviennent plus complexes et réalistes. Le niveau 3 est un modèle simple et abstrait, et la texture de niveau 0 est une carte assez précise des hauteurs du monde.


De la même manière que les maillages de navigation, des textures de mip sont créées pendant l'exécution du jeu et selon les besoins: lorsque vous volez dans une certaine zone, la machine n'a pas besoin de connaître les données d'altitude du monde entier. Lorsqu'ils doivent voler vers un autre emplacement, l'IA de navigation de vol démarre l'algorithme de recherche A * par la texture MIP de plus haut niveau, c'est-à-dire qu'il calcule la version la plus simple de l'itinéraire de vol en utilisant la version de géométrie approximative. L'algorithme A * rend le survol et le franchissement d'obstacles plus coûteux que le vol autour d'eux, de sorte que les voitures planent près des montagnes et des rochers plus souvent que de survoler. Chaque fois que le système appelle l'algorithme A *, il n'a qu'un nombre limité d'itérations, donc après avoir calculé le chemin en utilisant la texture de mip la plus simple (niveau 3), il prend un certain segment du chemin calculé puis l'améliore, en empruntant des données des niveaux 1 et 0, pour le rendre plus réaliste et cohérent avec la géométrie. De plus, il lisse les itinéraires de manière à exclure les pentes raides et les virages serrés, ce qui les rend plus réalistes. Ce système fonctionne très bien, toute machine volante dans les airs a toujours un plan de vol (même quand il est mauvais), et si nécessaire, il peut l'améliorer en appelant à plusieurs reprises l'algorithme de recherche pour que le chemin devienne de plus en plus naturel. De plus, il utilise efficacement la mémoire, mais cette approche a un inconvénient - car elle est basée sur la hauteur maximale d'une zone donnée de la carte. les voitures ne peuvent pas voler sous les ponts ou les arches de pierre, mais le plus souvent, le joueur ne le remarque pas.


Grâce aux textures navmesh au sol et aux mip aéroportés, les machines volantes peuvent coordonner les attaques, les atterrissages, les attaques de plongée et même les atterrissages en fonction de la géométrie. Les machines survolant le joueur pendant l'attaque utilisent toujours le plan de vol pré-calculé, mais ne se déplacent pas nécessairement sur cette trajectoire et jouent l'animation correspondante. La vitesse de la voiture est liée au mode (vol, vol stationnaire ou vol stationnaire), afin qu'ils puissent tourner de manière réaliste au-dessus du joueur en utilisant le même outil de navigation.

Les décollages et atterrissages utilisent un système séparé qui interagit avec la navigation de vol et le maillage de navigation au sol: il recherche des positions appropriées sur le maillage sur lesquelles vous pouvez atterrir (généralement ce sont des points un peu plus élevés au-dessus du sol que la moyenne locale), puis ils sélectionnent les angles et la vitesse. A l'atterrissage, la voiture utilise un navmesh au sol adapté à sa taille. Le même principe s'applique en cas de chute, mais dans ce cas, les seules positions d'atterrissage appropriées sont basées sur le cours actuel de la machine, et bien que l'accident semble moins gracieux, il utilise en fait les mêmes outils. Un cas limite spécialement programmé ici est l'attaque de plongée «pétrel» . Le Pétrel tourne au-dessus du joueur puis tombe vers la position actuelle du joueur. Il utilise les mêmes systèmes, mais d'une manière beaucoup plus dramatique. Cependant, il y a une autre astuce: tourbillonnant au-dessus du joueur, le pétrel attend souvent avant l'attaque jusqu'à ce qu'il ferme le soleil. Peut-être, en jouant au jeu, vous l'avez remarqué, et cela a été fait intentionnellement. Lors du test de l'IA "pétrel", le département QA a remarqué qu'elle recouvre périodiquement le joueur avec le soleil, ce qui rend son attaque plus désorientante, car pendant la plongée la lumière bouge et aveugle le joueur. Ensuite, cela s'est produit complètement par accident, mais le département de développement de l'IA a décidé que cela devrait se produire plus souvent.


En conclusion


Horizon Zero Dawn crée un gameplay unique; un monde rempli de vie mécanique devient un lieu où se déroule l'histoire d'Eloy et les secrets de son passé. L'intelligence artificielle et les systèmes de gameplay des machines sont l'aspect le plus important de la création de cet avenir apocalyptique exploré par les joueurs. Ce fut un travail d'envergure pour une équipe de 10 personnes, qui a pris plusieurs années de développement. Créer des systèmes d'IA de cette ampleur, fonctionnant bien dans des jeux avec un monde ouvert énorme, devient une tâche de plus en plus difficile. Par conséquent, la communauté des développeurs de jeux est vitale pour partager leurs expériences avec les autres.

Les références


  • Julian Berteling, 2018. "Beyond Killzone: Création de nouveaux systèmes d'IA pour Horizon Zero Dawn", GDC 2018.
  • Arjen Beij, 2017. «L'IA d'Horizon Zero Dawn», Game AI North 2017.
  • Wouter Josemans, 2017. «Remettre l'IA dans l'air: naviguer dans l'espace aérien d'Horizon Zero Dawn», Game AI North 2017

Source: https://habr.com/ru/post/fr440136/


All Articles