Concevoir l'intelligence artificielle pour les jeux vidéo

Partie 3 : Tactique et stratégique

Donald Kehoe

Dans l'article précédent, nous avons vu comment donner à nos héros (agents intelligents, ou AI) la capacité de voir ce qui se tenait autour d'eux et de définir ainsi leur destination suivante. Dans cet article, je vous montre comment faire pour donner à vos agents des ordres d'intelligence supérieurs. Les agents savent déjà faire face aux situations immédiates dans lesquelles ils se trouvent : à présent, vous allez travailler sur une intelligence artificielle (IA) qui s'attaque à des objectifs plus larges et qui a une vue d'ensemble plus grande.

N'hésitez pas à donner votre avis sur cet article sur le forum : Commentez

- Titre : Concevoir l'intelligence artificielle pour les jeux vidéo

- Auteur : Donald Kehoe

- Parution : 30 octobre 2015

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2015 Donald Kehoe. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Voir également :

- Concevoir l'intelligence artificielle pour les jeux vidéo - Partie 1 : Conception et implémentation

- Concevoir l'intelligence artificielle pour les jeux vidéo - Partie 2 : Perceptions et Pathfinding

Sommaire

- I. IA tactique

- I-A. Mouvement de groupe : l'orientation

- I-B. Mouvement de groupe : formations

- I-C. Tactiques de groupe

- II. IA stratégique

- II-A. Cartes de décisions

- II-B. Cartes des ressources

- II-C. Carte des objectifs

- II-D. Cartes des conflits

- II-E. Établir et appliquer les cartes

- III. Résumé

- IV. Biographie de l'auteur

- V. Ressources

I - IA tactique

Le rôle de l'IA tactique est de coordonner les efforts de groupe des IA dans le jeu. La mise en place de ce type d'IA est importante pour plusieurs types de jeu : les escouades dans un jeu de tir tactique à la première personne (FPS) aussi bien que les groupes d'unités dans un jeu de stratégie en temps réel utilisent des méthodes tactiques. Les groupes sont plus efficaces parce qu'ils peuvent s'entraider et agir comme une seule et même unité, partageant tous des informations ainsi que la charge de ces informations.

Le concept de l'IA tactique est construit autour de dynamiques de groupes, ce qui implique que le jeu doit suivre différents groupes d'entités. Chaque groupe doit être mis à jour séparément des individus. Vous pouvez réaliser cette mise à jour avec un module qui y lui est dédié et qui garde une trace des différents groupes, de leurs objectifs, et de leur composition. Cependant, comme cette méthode exige le développement d'un système autonome pour le moteur, je préfère utiliser la méthode de capitaine de groupe.

Une seule unité du groupe peut se voir attribuer le rôle de capitaine de groupe. Tout autre membre du groupe garde un lien avec ce capitaine, et chacun reçoit ses signaux comportementaux en contrôlant les ordres du capitaine de groupe. Le capitaine de groupe effectue tous les calculs tactiques d'IA pour le groupe entier.

I-A - Mouvement de groupe : l'orientation

Le mouvement d'une entité est une zone de mise en œuvre qui peut être améliorée grâce à des dynamiques de groupe. On peut rendre le déplacement plus efficace et plus réaliste lorsque les IA fonctionnent comme une unité.

L'orientation peut être un processus qui prend du temps, même si on l'accélère avec des cartes de circuit précalculées et des IA multithreadées. L'accent mis sur le système d'orientation peut être considérablement atténué avec les dynamiques de groupe.

Quand un groupe d'unités a pour objectif de se déplacer (que cela vienne du joueur ou des instructions d'IA), l'unité la plus proche de l'objectif est placée comme capitaine de groupe, et on assigne tous les autres membres à suivre ce capitaine. Quand le capitaine de groupe est mis à jour, cela met en doute le système de trajectoire. La carte en main, le capitaine de groupe part pour atteindre l'objectif. Toutes les autres unités dans le groupe n'ont qu'à suivre leur capitaine de groupe partout où il (ou elle, ou l'objet) va.

I-B - Mouvement de groupe : formations

Votre groupe s'étant déplacé comme une unité, vous avez réussi à réduire la charge que votre système de trajectoire doit porter. Malheureusement, la façon dont les unités finissent par se déplacer les fait ressembler davantage à une foule qu'à une unité organisée. Entrent les formations. Avec les formations, le groupe peut se déplacer selon une belle configuration, comme une phalange (dans une simulation historique) ou un triangle (comme les minions travaillent dans Overlord* de Codemaster, voir le schéma n° 1).

Schéma n°1 : Dans Overlord, les minions (les gens rouges) travaillent en tant qu'équipe et se déplacent en formation selon les ordres du joueur (le type en armure).

L'installation des formations est vraiment très simple, et elle élargit le concept du capitaine de groupe. Dans une formation, chaque unité a un rôle spécifique qui doit être joué. Une fois la formation faite, chaque membre du groupe se verra attribuer une certaine place dans la formation, de la même manière qu'une seule et même unité se voit attribuer le rôle de capitaine de groupe. C'est le but de chaque unité dans le groupe de garder sa position, en respectant une distance relativement éloignée des autres membres de la formation.

Prenez l'exemple des minions dans Overlord. Ils se déplacent en formation pyramidale. Dans le schéma n° 2, le capitaine de groupe « C » n'a qu'à suivre le chemin. L'unité 1 suivra un rythme déterminé derrière et légèrement à gauche de son unité ciblée, « C ». L'unité 2 en tient compte et suit le rythme de l'unité 1, juste à côté. L'unité 3 fait exactement ce que fait l'unité 1, mais suit l'unité 1 au lieu du capitaine. Ce motif s'applique à chaque unité du groupe.

Schéma n° 2. Une installation pour une formation de déplacement en triangle

I-C - Tactiques de groupe

Il n'y a pas seulement l'idée de marcher en formation derrière le concept de tactiques. Il y a aussi l'idée de soutien et de combat en tant qu'équipe. Le capitaine assume la charge consistant à planifier et à coordonner l'équipe. Après tout, c'est le commandant qui est responsable de la vie de l'unité du capitaine.

La mise en place de tactiques de groupe peut être dirigée par les systèmes dont nous avons parlé dans les précédents articles, comme les systèmes basés sur des règles ou les automates d'états finis (FSM). Voici quelques exemples de comportements typiques de groupes (voir le schéma n° 3) :

- soutien à la guérison. Dans les jeux qui ont des unités de soutien à la guérison (infirmiers ou religieux), il est important pour les infirmiers de rester au courant des niveaux de santé des unités dans leur groupe. Cela peut être amplifié par les intentions du capitaine de groupe. Les infirmiers peuvent recevoir l'ordre de rester près des unités qui risquent d'être visées par les tirs ;

- éclaireur. Dans des jeux comme Enemy Territory Quake Wars*, il y a des unités qui aident à subvenir aux besoins du reste de l'équipe. Les catégories d'espions du jeu peuvent déployer un radar afin de fournir des informations sur les déplacements des unités ennemies. Même sans radar, tous les ennemis qui sont repérés par une unité seront ajoutés au radar de groupe de toute l'équipe. Quand on approche des zones qui ne sont pas couvertes, il est possible d'envoyer quelqu'un dans une zone inconnue afin de repérer des positions ennemies. C'est plus facile pour toutes les catégories d'espions déguisés ;

- tir de couverture. Lorsqu'une zone est bien défendue, les unités de soutien peuvent fournir des tirs de couverture et s'acheminer jusqu'à la défense ennemie, engageant le combat avec les défenses assez longtemps (on l'espère) pour que l'objectif soit atteint ;

- sacrifice. Lorsqu'elles subissent une puissante attaque et que la perte d'unités est inévitable, certaines unités du groupe peuvent être considérées comme pouvant être sacrifiées. Les unités dans le groupe qui sont indispensables à la mission (comme l'ingénieur, dans certaines situations) doivent être protégées, à la fois en donnant la priorité aux unités ennemies qui ciblent votre ingénieur, et en allant dans la ligne de tir pour protéger l'ingénieur en utilisant la vie de l'unité.

Illustration 1: Schéma n° 3. Dans Enemy Territory Quake Wars par Id Software* et Splash Damage, Ltd.*, il y a cinq catégories avec des rôles spécifiques que l'on peut jouer dans la dynamique de groupe.

Un autre niveau d'analyse qui pourrait aider le groupe est une autoanalyse faite par chaque membre des moyens du groupe. Il est important pour le capitaine de connaître les situations dans lesquelles le groupe peut être efficace, de savoir quand le groupe aura un avantage, et quand le groupe devrait battre en retraite.

Par exemple, dans un jeu de stratégie comme Starcraft* de Blizzard, il y a des unités volantes et des unités terrestres. Une unité volante ne peut pas être atteinte par toutes les unités terrestres. Il est important pour chaque groupe de savoir s'il a cette capacité. Si le groupe n'a pas d'unités qui peuvent toucher une unité volante, alors quand il rencontre une unité volante, il lui sera préférable de fuir. Même si l'unité n'a pas beaucoup d'unités qui peuvent atteindre des unités volantes, tant qu'il y a des unités de soutien qui peuvent soigner ou améliorer les unités qui peuvent atteindre les unités volantes, il vaudrait sûrement mieux rester et combattre.

La diversité des aptitudes des entités et le nombre d'unités qui les ont peuvent être utilisés pour mesurer l'efficacité du groupe dans différentes situations. Les groupes qui prennent cela en compte seront de loin beaucoup plus efficaces que les groupes qui ne le font pas.

II - IA stratégique

Jusqu'à présent, j'ai expliqué comment les entités et les groupes d'entités peuvent se débrouiller dans des situations difficiles. Maintenant, je vais me concentrer sur le rôle de l'IA dans le contexte général. L'IA stratégique est l'IA d'ordre supérieur qui commande l'armée entière et qui traite des stratégies directrices.

L'IA stratégique elle-même est la plus répandue dans les jeux de stratégie en temps réel (RTS), mais elle se répand de plus en plus dans les jeux tactiques FPS. Le commandant contrôlé par un joueur peut être son propre système ou être configuré comme une entité vide - une entité qui n'a pas de place ni d'illustration dans le monde, mais qui est mise à jour et qui pense.

Les commandants vont être guidés par des systèmes de règles hiérarchisés et des FSM qui dirigent des éléments comme le rassemblement de ressources, la recherche dans l'arbre technique, la construction de l'armée, etc. Pour la plupart, l'entretien de base des éléments du jeu ne requiert pas beaucoup de réelle réflexion. Ce qui demande de l'intelligence est l'interaction avec les autres joueurs.

C'est quand on en vient à la direction de ces interactions (ou ces guerres) que l'on touche l'essentiel en matière d'IA stratégique. Le commandant a besoin d'explorer la carte du jeu pour trouver le joueur, d'identifier les principaux points d'intérêt comme les points de tension, de construire les défenses, et d'analyser les défenses des autres joueurs. Il n'est pas facile de savoir comment on peut faire ça, mais les cartes de décisions peuvent faciliter la tâche.

II-A - Cartes de décisions

Les cartes de décisions sont des mémoires bidimensionnelles proches de la carte de jeu. Chaque cellule du réseau correspond à une région dans le jeu et est remplie d'informations importantes sur la région. Ces cartes sont utilisées pour aider votre IA stratégique à prendre des décisions sérieuses à propos du jeu dans son ensemble.

II-B - Cartes des ressources

Les cartes des ressources contiennent des informations indiquant où sont disposées les ressources dans un jeu stratégique. Savoir où sont concentrées les ressources sur la carte peut influencer plusieurs des décisions que le commandant prendra. Où déployer ses expansions ou ses bases satellites (ressources près de la base du commandant), où il est probable que l'ennemi déploie ses expansions (ressources près de leur base) et quels sont les endroits qui seront probablement contestés (ressources au milieu).

Avoir une appréciation chiffrée des ressources potentiellement disponibles influence également le joueur pour savoir quelles unités sont supportées et comment déployer l'armée. Si les ressources sont rares, chaque unité doit être utilisée plus attentivement parce que des remplacements sont moins probables. Si les ressources sont abondantes, cela ouvre l'éventail de stratégies permettant d'avoir un rassemblement d'unités peu coûteuses ou bien de construire des unités puissantes.

II-C - Carte des objectifs

Ces cartes sont remplies d'informations sur les objectifs du commandant - par exemple, la localisation des bases ennemies, la position des objectifs de la carte (faire exploser, protéger ou détruire quelque chose, etc.) ainsi que les unités clefs de l'armée du commandant (base principale, unités héros, etc.). Recueillir ces informations guide l'utilisation de l'armée du commandant. Les endroits qui ont besoin d'être protégés devraient être entourés par des structures défensives, et un contingent d'unités devrait toujours se tenir près de ces endroits. Les objectifs d'attaque seront recherchés, et les défenses testées. L'analyse des défenses autour des cibles doit être entreprise afin de déterminer la meilleure manière d'en venir à bout. Cela nous conduit à la colonne vertébrale des jeux militaires : les cartes des conflits.

II-D - Cartes des conflits

Les cartes des conflits (voir le schéma n° 4) sont utilisées et mises à jour beaucoup plus souvent que les cartes précédentes. Les cartes de conflits gardent la trace des endroits où la bataille a lieu pendant tout le niveau. Quel que soit le moment où l'une des unités du commandant s'engage dans un combat contre un ennemi, l'unité mettra à jour la carte de conflit avec des informations clefs :

- type de conflit. Unités, bâtiments, ou les deux ;

- capacités des unités. Frapper le sol, l'air, ou les deux ;

- nombres. Combien on en a rencontré ;

- force. Quelle part de dommages éventuels il y a dans cette zone.

Ces informations peuvent être analysées pour déterminer ce qui suit :

- lorsque l'ennemi attaque, l'IA sera capable de déterminer si les défenses déployées sont effectives, si les défenses sont engagées ou ignorées, et si un conflit éclate près des objectifs de défense. Cela peut conduire l'IA à changer la disposition et la composition de ses défenses ;

- lors d'attaques contre l'ennemi (de préférence avec des éclaireurs), les faiblesses dans leur défense peuvent rapidement être identifiées. S'il existe dans cet objectif des chemins qui peuvent éviter les conflits ou les réduire au minimum, vous avez une stratégie optimale pour déployer les troupes ;

- la composition des capacités militaires de l'ennemi dicte les contre-mesures appropriées. Comme la plupart des jeux stratégiques tentent de garder un certain niveau d'équilibre parmi les unités, l'ordinateur sera capable de déterminer le nombre et le type d'unités qu'il faut pour percer les défenses à différents endroits.

Schéma n° 4. Un exemple de ce à quoi peut ressembler une carte des conflits posée sur une vue du terrain. Plus le rouge est sombre, plus le nombre de conflits rencontrés est élevé.

II-E - Établir et appliquer les cartes

J'ai mentionné plus tôt que ces cartes sont établies par les unités de l'armée du commandant. Cela fera partie des règles qui gouverneront l'IA d'envoyer des éclaireurs pour lancer l'exploration aussi vite que possible afin de commencer à établir les cartes.

Une bonne IA devrait régulièrement s'assurer que ces cartes restent à jour. Au début de la partie, lorsque seulement quelques unités tiennent à jour ces cartes, la mise à jour ne doit pas être un problème pour le moteur du jeu. Plus tard dans la partie, avec un nombre massif d'unités qui fournissent toutes en même temps des informations, cela peut potentiellement affecter la performance.

Garantir que les cartes de décisions soient rapidement tenues à jour n'est pas trop difficile. Vous pouvez le faire en mettant le système de cartes de décisions dans son propre processus. En effet, tout joueur contrôlé par l'IA devrait avoir son propre processus afin de gérer son propre ensemble de cartes de décisions. La vraie performance s'obtient si toutes les entités sont déjà divisées en de multiples processus. Les processus de cartes de décisions ont seulement besoin de traiter les demandes de messages de mise à jour de l'entité parallèle.

III - Résumé

La forme la plus basique qu'un système intelligent peut prendre est celle d'un système fondé sur des règles. Ce système étend le terme d'intelligence artificielle, puisqu'il y a très peu de réelle intelligence impliquée. Un ensemble de comportements prédéfinis est utilisé pour déterminer le comportement des entités de jeu. Avec une variété d'actions, le résultat d'ensemble peut être un système de comportement qui n'est pas évident.

Les IA de votre univers de jeu commencent à prendre forme. Vous êtes parti de leurs capacités de base consistant à voir et à se déplacer, et êtes maintenant en train de donner plus de sens à leurs décisions et leur comportement. Vos IA sont à présent capables de prendre un rôle plus proactif, au lieu de seulement réagir face à la situation à venir. Vous êtes capable de créer des scénarios plus convaincants et stimulants pour les joueurs ; ainsi, ces joueurs payeront pour la suite.

Pour conclure la série, le prochain article se concentrera davantage sur l'application du multithreading à l'intelligence artificielle. Même si vous avez des algorithmes intelligents et efficaces qui peuvent diriger votre IA, ils deviendront inévitablement plus complexes à force d'être appliqués à de plus en plus d'entités. Si vous voulez que votre système continue de répondre à une demande accrue, vous devez profiter des processeurs « multi-core ». Le prochain article montrera qu'il n'est pas difficile d'adapter votre code pour profiter des bénéfices apportés par le multithreading.

IV - Biographie de l'auteur

Donald « DJ » Kehoe : formateur au sein du Programme de Technologie de l'Information du New Jersey Institute, DJ s'est spécialisé dans le développement de jeux vidéo et enseigne dans de nombreux cours du programme « Architecture, programmation et conception de niveaux dans les jeux vidéo », ainsi que d'autres cours sur « l'Intégration des graphismes 3D » dans les jeux. Il passe actuellement son doctorat en génie biomédical, il utilise le jeu et la réalité virtuelle pour améliorer les méthodes de réadaptation neuromusculaire.

Pour plus d'informations sur le développement de jeux, rendez-vous sur la Zone des Développeurs Intel. Retrouvez également des astuces, conseils et retours d'expériences sur le forum Intel.

V - Ressources

- Unity Ressource Center

- Intel GameDev Tools

- Intel GPA

- Intel INDE