UPDATE FROM THE AI GUY

UPDATE FROM THE AI GUY

mercredi, juin 14, 2017

Salut à tous !

Je suis Chris, programmeur chez ArtCraft, et je suis ici pour vous parler des récents développements apportés à nos systèmes d'IA.

Peu après le lancement de Big World, toutes sortes de systèmes ont commencé à se mettre en place rapidement, et toute l'équipe était focalisée sur ces nouveautés. Il faut croire que c'est l'IA qui a perdu à la courte paille pendant cette phase de production. En effet, nous avons quelque peu laissé de côté les performances et les comportements de l'IA parce que notre attention était concentrée ailleurs.

On m'a récemment confié la mission d'évaluer notre IA et de l'améliorer pour nos plus grandes cartes. Dans le cas des Royaumes Éternels, la carte peut être modifiée à la volée par le placement des parcelles et des bâtiments, ce qui complique un peu la manière de procéder. Ma deuxième mission consiste à travailler sur l'intégration de nos futurs projets pour l'IA, qui incluent un comportement stable et approprié face aux modifications de l'environnement "statique".

Team Effort

Contrairement à ce que l'on peut penser, l'IA est le fruit d'un effort collectif. Depuis que l'on m'a affecté à la reprogrammation de l'IA il y a quelques semaines, je suis considéré en interne comme le "gars de l'IA", puisque presque tous mes rapports de statut et toutes mes réunions quotidiennes font référence de près ou de loin à l'IA. Cela dit, même si mes collègues ne sont pas directement affectés à l'IA, presque tout le monde y contribue chaque jour. La reproduction, la gestion des objets, le comportement, le code des déplacements, les améliorations des performances et de la mémoire, les statistiques, l'inventaire et les systèmes de collecte, l'animation, la modélisation, la texturisation, le son et les illustrations originales... Tout cela contribue au résultat final. Et j'en oublie certainement !

Malheureusement, notre code avait d'urgence besoin d'une mise à jour, afin que le travail de tous puisse porter ses fruits sur l'IA. Initialement, le code était écrit pour des cartes plus simples et relativement plates, sans placement dynamique des bâtiments ou des accessoires, dans un monde très statique. Les conditions environnementales étaient donc idéales pour intégrer une IA. Ce système a été écrit avant le Monde entier, et nous le corrigions sans cesse pour le maintenir "à un niveau correct", afin que nous puissions continuer à travailler sur nos tâches les plus urgentes. Nous avons finalement décidé d'y mettre un terme pour au moins deux raisons : le comportement et les performances de l'IA n'étaient plus satisfaisants.

Bestiaire

Les cochons musqués

Commençons par le brave cochon musqué. Vous vous souvenez peut-être que notre ami pouvait se retrouver coincé en escaladant une colline, et qu'il avait une attirance toute particulière pour les extrémités de la carte.

Le premier problème est survenu parce que nous avons essayé d'envelopper son modèle 3D dans un conteneur plus petit, plus large, et placé plus près du sol. Cela ne pouvait pas fonctionner parce que nous n'avions pas fait le travail nécessaire pour adapter la forme du conteneur aux changements de position et de dimension, même si nous disposions de ces données exactes dans l'éditeur.

Par exemple, en modifiant le rayon du conteneur, notre navmesh, prégénéré pour un rayon standard de personnage, ne pouvait plus initier un chemin que l'IA pouvait suivre. (Un navmesh, ou réseau de navigation, est une structure de donnée décrivant les zones du monde où l'IA peut se déplacer. Il est prédéfini, de façon à ce que les requêtes urgentes puissent être exécutées au niveau du moteur.)

Le deuxième problème concernait un état du "cerveau" de l'IA, qui pouvait rechercher un chemin vers un endroit aléatoire qui n'existait pas. C'est pourtant une question de bon sens, non ? Quoi qu'il en soit, et pendant longtemps, l'un des états du cerveau (le mode Errance) pouvait potentiellement rechercher un endroit en dehors de la carte.

Pour faire court, le mode Errance est l'état dans lequel se trouve une IA quand elle n'est pas au combat. Il présente un rayon et un point central. Une IA en mode Errance recherche un chemin qui l'emmène vers une destination aléatoire, située dans une zone délimitée. Une fois sa destination atteinte, elle y reste pendant un certain laps de temps (à moins qu'elle ne soit interrompue par un combat, par exemple).

Avant, l'IA se dirigeait aussi vite que possible vers cette destination, avant d'être bloquée par l'extrémité de la zone. Elle n'atteignait jamais sa destination, mais elle s'obstinait à essayer. Sans cette limite, elle sortait tout simplement de la carte, et disparaissait à tout jamais. Dans ce cas, la solution consiste à définir un chemin dans une direction spécifique, tout en supprimant la portion située au-delà de la carte, de manière à ce que l'IA s'arrête à l'extrémité de celle-ci.

Les smilodons

Les smilodons ont eux aussi été coincés aux extrémités de la carte, en raison du même problème lié au mode Errance. Chez eux, ce mode était tout simplement inopérant. En ce qui concerne leur comportement, nous pouvons augmenter leur agressivité, et raccourcir leur rayon d'errance, afin qu'ils restent à proximité de la zone dans laquelle ils apparaissent en premier lieu.

Les Ressuscités

Les Ressuscités ont également connu quelques problèmes de déplacement. Nous avons aussi revu certaines de leurs attaques, comme leur puissant coup arrière qui n'était pas très apprécié.

Certains des nouveaux Ressuscités ont pour modèles des classes que les joueurs peuvent adopter, telles que le druide et le champion, et ont la capacité d'utiliser des pouvoirs que seuls les joueurs peuvent déclencher pour le moment. L'adaptation de l'IA, bien qu'elle demeure encore approximative, démontre parfaitement la puissance impressionnante de nos systèmes.

L'AVENIR

Personne ne peut dire de quoi demain sera fait, pas vrai ? I mean, if you really just stare into space and think about it... like, whoa.

Nous savons que nous devons encore régler certains aspects. L'IA doit être capable de mieux s'autogérer en présence d'autres éléments gérés par l'IA et des joueurs. The AI also needs to behave appropriately (not necessarily realistically) when parcels are added, removed, rotated, or moved, and when building pieces are placed or unplaced.

Voici le détail :

Déplacement ou rotation d'une parcelle

Les éléments gérés par l'IA seront déplacés / pivotés au sein de la parcelle selon la nouvelle position de celle-ci.

Ajout d'une parcelle

Les éléments gérés par l'IA seront libres de se déplacer sur le terrain s'ils atteignent la nouvelle région générée, et seront intégrés au navmesh environnant. (Cela se passe en arrière-plan). Les éléments gérés par l'IA qui apparaissent directement sur ces nouvelles parcelles se comporteront comme prévu. Ils seront libres d'agir comme bon leur semblera lorsque le navmesh de la région aura été mise à jour.

Suppression d'une parcelle

Les éléments gérés par l'IA situés sur une parcelle supprimée disparaîtront tout simplement. Désolé pour eux ! Puisqu'ils proviennent tous d'un même point d'apparition, d'autres éléments gérés par l'IA viendront rapidement prendre leur place (à moins que la parcelle supprimée n'abritait ce point d'apparition).

Ajout d'un bâtiment

Les éléments gérés par l'IA bloqueront le placement d'un bâtiment jusqu'à ce qu'ils soient tués ou qu'ils se déplacent hors du champ. (S'ils meurent, leur cadavre et les objets en leur possession disparaîtront aussi à tout jamais.)

Suppression d'un bâtiment

Les éléments gérés par l'IA seront libres de se déplacer à l'endroit du bâtiment supprimé, dès lors que le navmesh de la nouvelle région sera généré, et ils seront intégrés à l'environnement.

PETIT À PETIT...

Avec la réintroduction de l'IA, nous devons avancer à tâtons. Initialement, les éléments gérés par l'IA ne sont pas capables d'escalader des pentes trop raides, et ne peuvent pas non plus trop s'approcher des obstacles statiques, comme les arbres, les rochers, les murs et les terrains escarpés. Nous reviendrons sur ces aptitudes à partir des rapports de test que nous recevrons, de façon à renforcer le nouveau code pour le comportement de l'IA.

Crowfall AIPath Watermarked-1024x646

KNOWN ISSUES

Comme je le disais ci-dessus, les IA ne peuvent pas trop s'approcher des obstacles. Enfin, si, elles le peuvent. Et croyez-moi, elles le feront. Et parfois, elles se retrouveront coincées. Espérons simplement que cela n'arrive plus aussi souvent qu'avant ! Nous essayons de résoudre ce problème, mais en attendant, sachez que vous pouvez les libérer en les attaquant et en les attirant dans une autre direction.

Les IA ont également du mal à coordonner leurs déplacements en fonction des autres. Toutefois, dans la mesure où nous ne prévoyons pas de les faire se déplacer en masse, cela ne constitue pas un problème majeur. Par ailleurs, leur portée d'attaque au corps à corps est actuellement augmentée de manière artificielle, ce qui devrait leur permettre de vous toucher même depuis le dernier rang. Nous travaillons en ce moment sur un mode qui aidera les IA à encercler leur cible, mais nous devons encore le peaufiner avant de l'intégrer à l'environnement de test LIVE. Une certaine forme d'esquive dynamique devrait aussi faire son apparition.

(NOT THE) END

Nous espérons que cette mise à jour sur les IA de Crowfall vous a plu. Nos projets ne sont certes pas les plus ambitieux, mais nous nous devons d'atteindre un certain niveau de stabilité, de performances et de fonctionnalités, de manière à satisfaire tous les utilisateurs du jeu avant de pouvoir nous focaliser à nouveau sur les autres aspects de Crowfall.

Nous n'en serions pas là aujourd'hui sans vos précieux retours lors des phases de test, et vous pouvez encore nous aider en identifiant les bugs liés aux IA et en nous envoyant vos vidéos, captures d'écran et autres explications.

Merci de votre attention, et à bientôt dans le jeu et sur ses forums !

Chris Ledwith Principal Programmer, ArtCraft Entertainment

besoin d'aide ??