Concevoir l'intelligence artificielle pour les jeux vidéo

Partie 1 : Conception et implémentation

Donald Kehoe

Au cours des dernières décennies, l'industrie du jeu a fait de grands progrès. Hier : des jeux simples comme Pong* et Pac-Man* qui offraient aux joueurs de brefs moments d'évasion. Aujourd'hui : des jeux comme World of Warcraft* et Call of Duty 4* qui demandent une implication importante et deviennent des loisirs à part entière. Les gamers d'aujourd'hui, qui, selon l'Entertainment Software Association (ESA), ont une moyenne de 13 années de jeu à leur actif, se sont habitués à des jeux de plus en plus complexes, engageants, et intelligents. Pour les développeurs, le défi consiste à repousser les limites pour créer des jeux qui sont de plus en plus convaincants. L'Intelligence Artificielle (IA) contrôlée par ordinateur a évolué sur bien des aspects pour satisfaire les joueurs. Toutefois, la création d'une interaction qui s'adapte aux comportements du joueur et encourage son évolution dans le jeu n'est pas une tâche facile. Cet article est le premier d'une série de quatre qui explore les concepts essentiels de l'IA et explique comment les optimiser pour leur assurer un fonctionnement optimal avec les processeurs multicœur de pointe disponibles aujourd'hui :

- 1re partie : Conception et implémentation

- 2e partie : Orientation et perceptions

- 3e partie : Tactique et stratégie de l'IA

- 4e partie : Utilisation de la parallélisation pour la mise en œuvre de l'IA

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.

Sommaire

- I. Qu'est-ce que l'IA dans un jeu ?

- II. Qu'est-ce qui différencie l'IA des jeux vidéo d'une IA classique ?

- III. L'objectif de l'IA dans les jeux

- III-A. Impératifs de base pour l'IA dans les jeux vidéo

- IV. La prise de décisions

- V. Les perceptions de base

- V-A. Les systèmes conditionnels

- V-B. Les automates finis en tant qu'IA

- V-C. IA adaptative

- VI. La prédiction

- VII. Résumé

- VIII. À propos de l'auteur

I - Qu'est-ce que l'IA dans un jeu ?

Au niveau le plus basique, l'« intelligence artificielle » consiste à émuler le comportement d'autres joueurs ou entités (c'est-à-dire tous les éléments qui peuvent agir ou interagir : des joueurs, des projectiles ou encore des points de régénération) qu'elle représente. Le concept de base consiste à simuler ces comportements. Autrement dit, l'IA des jeux vidéo est plus « artificielle » qu'« intelligente ». Ce peut être un système simple, conditionnel (avec des règles), ou aussi complexe que celui d'une armée qui s'oppose au joueur.

II - Qu'est-ce qui différencie l'IA des jeux vidéo d'une IA classique ?

Les recherches classiques en intelligence artificielle ont pour but de créer une véritable intelligence, même si cette création se fait grâce à des moyens artificiels. Des projets comme Kismet*, menés par le MIT (Massachusetts Institute of Technology), tentent de créer une IA capable d'apprendre, d'avoir des interactions sociales et des émotions. Aujourd'hui, le MIT travaille sur une IA possédant des capacités semblables à celles d'un jeune enfant, et a déjà obtenu des résultats prometteurs.

Pour les jeux vidéo actuels, une véritable IA est très loin de ce que l'on attend dans un logiciel ludique. L'IA des jeux vidéo n'a pas besoin d'être douée de raison ou de conscience (en réalité, il vaut mieux que ce ne soit pas le cas) ; elle n'a pas besoin d'apprendre quoi que ce soit au-delà du gameplay. Dans les jeux vidéo, l'objectif de l'IA est de simuler un comportement intelligent et d'opposer au joueur un défi crédible, mais qu'il doit pouvoir relever.

III - L'objectif de l'IA dans les jeux

L'IA peut avoir de nombreux rôles dans les jeux. Il peut s'agir d'un ensemble de règles générales qui régissent les entités de l'univers du jeu. On peut aussi considérer que les événements préscénarisés que suivent les entités relèvent d'un certain type d'IA. Par exemple, dans le jeu F.E.A.R*, la petite fille qui donne la chair de poule et apparaît pour effrayer les joueurs et annoncer des phases de jeu est un événement préscénarisé. Pour terminer, ce qui vient souvent à l'esprit lorsqu'on parle d'IA et de jeux vidéo, ce sont les joueurs contrôlés par l'ordinateur dans les jeux multijoueurs. Tous ces rôles différents peuvent être assumés par l'IA.

Les événements scénarisés dans F.E.A.R. (Vivendi Universal) sont un type d'IA.

III-A - Impératifs de base pour l'IA dans les jeux vidéo

Selon la nature du rôle que l'IA doit jouer, les besoins du système peuvent être très limités. En revanche, plus le système est complexe, plus nombreux seront les impératifs imposés à l'IA. Les besoins correspondent simplement au temps de traitement nécessaire à la gestion de l'IA. Des systèmes plus complexes nécessitent que l'IA perçoive son environnement et détecte les actions du joueur mais ont également besoin d'une évaluation de la réussite des décisions prises précédemment.

IV - La prise de décisions

La prise de décisions est le concept de base derrière l'IA. Pour faire ces choix, le système intelligent doit être capable d'influer sur les entités contrôlées par l'IA. Pour ce faire, on peut choisir entre une stratégie en mode « push » ou en mode « pull ».

Les systèmes d'IA en mode « push » tendent à être isolés en tant qu'éléments indépendants de l'architecture du jeu. Cette stratégie prend souvent la forme d'un ou plusieurs fils (threads) où l'IA calcule constamment les meilleurs choix en fonction des options du jeu. Lorsqu'elle prend une décision, celle-ci est transmise aux entités concernées. Cette approche est la plus efficace pour les jeux de stratégie en temps réel où l'IA prend en compte le jeu dans son intégralité.

Les systèmes en mode « pull » sont les plus adaptés aux entités simples. Dans ces jeux, les entités en appellent au système d'IA lorsqu'elles « réfléchissent » ou se mettent à jour. Cette approche fonctionne parfaitement dans les systèmes possédant un grand nombre d'entités qui n'ont pas besoin de réfléchir en permanence, par exemple des entités qui doivent tirer. Cette méthode peut également tirer parti des techniques de parallélisation (multi-threading), mais c'est plus compliqué à mettre en œuvre (pour plus de détails, voir l'article techniques de parallélisation & IA par Orion Granatir).

V - Les perceptions de base

Pour que l'IA puisse prendre des décisions sensées, elle doit être capable de percevoir son environnement. Dans les systèmes simples, cette perception peut se résumer à la vérification de la position du joueur. Avec des systèmes plus complexes, les entités doivent pouvoir identifier certains éléments essentiels de l'univers du jeu, par exemple les chemins à emprunter pour survivre, les terrains à couvert et les zones de conflit.

Pour les concepteurs et les développeurs, le défi consiste à trouver un moyen de repérer les éléments importants pour le système d'intelligence artificielle. Les zones à couvert peuvent ainsi être prédéterminées par le concepteur du niveau, précalculées lors du chargement ou lors de la compilation d'une map. Certains éléments doivent être évalués au fur et à mesure, comme les maps de conflit et les dangers imminents.

V-A - Les systèmes conditionnels

Le système conditionnel est la forme la plus basique d'un système intelligent (un système régi par des règles qui dépasse d'ailleurs le sens du terme « intelligence artificielle »). Un ensemble de comportements prédéterminés sont utilisés pour déterminer le comportement des entités du jeu. Avec une série d'actions possibles, le résultat global constitue un système de comportements complexes, même si « l'intelligence » du système est très limitée.

Les jeux de Black Jack (vidéo ou réels) sont un bon exemple d'un système conditionnel. Le donneur obéit à une règle simple : il continue à donner tant que la somme totale des cartes est inférieure ou égale à 17. La perception du joueur moyen sera que le donneur joue pour gagner. Le joueur imagine que son adversaire est plus compétent qu'il ne l'est en réalité (sauf que la règle imposée au donneur est clairement énoncée).

Le classique Pac-Man applique cette règle. Quatre fantômes harcèlent le joueur. Chacun respecte un ensemble de règles simples. L'un d'eux tourne toujours à gauche, un autre toujours à droite, le troisième dans une direction aléatoire et le dernier toujours vers le joueur. Individuellement, les fantômes seraient faciles à anticiper et le joueur pourrait facilement les éviter. Mais en groupe, leurs mouvements semblent être une chasse complexe et coordonnée. En réalité, seul le dernier fantôme consulte la position du joueur.

Figure 2 : Représentation visuelle des règles régissant les mouvements des fantômes de Pac-Man (les flèches représentent les « décisions »).

Comme le suggère cet exemple, inutile que les règles soient « codées en dur » : elles peuvent s'appuyer sur des états perçus (comme pour le quatrième fantôme) ou sur des paramètres modifiables de l'entité. Des variables comme l'agressivité, le courage, la portée de la vision ou la rapidité de prise de décision peuvent diversifier les comportements d'une même entité, y compris dans le cadre d'un système conditionnel. Ces systèmes représentent la structure la plus simple d'une IA. Les systèmes intelligents plus complexes sont construits à partir d'une série de règles conditionnelles. Dans les jeux tactiques, les règles régissent les tactiques ;  dans les jeux de stratégie, elles contrôlent l'ordre de construction et la manière dont l'IA réagit aux conflits. Les systèmes conditionnels sont la base de l'IA.

V-B - Les automates finis en tant qu'IA

Un automate fini (FMS) est une façon de conceptualiser et d'implémenter une entité dont les états changent au cours de son fonctionnement. Un « état » peut représenter les conditions physiques de l'entité ou les émotions qu'elle peut manifester. Dans cet exemple, les états émotionnels n'ont rien à voir avec ceux d'une véritable IA, ce sont des modèles de comportements prédéterminés qui correspondent au contexte du jeu.

Voici quelques exemples d'états pour un système d'IA d'un jeu comportant des éléments de furtivité :

Figure 3 : Schéma des états d'un automate fini classique (les flèches représentent les changements d'état possibles).

- Inactif (Idle). Dans cet état, l'entité est passive, ne se déplace pas ou se déplace selon un parcours défini. Le niveau de perception est faible. Les sons émis par le joueur ne sont pas ou rarement pris en compte. Ce n'est que si l'entité est attaquée ou qu'elle « voit » directement un joueur que son état passe à un niveau de conscience plus important.

- Conscient (Aware). Dans cet état, l'entité cherche activement les intrus. Elle « écoute » les sons émis par le joueur et sa vision couvre une distance et un angle plus important que celle d'une entité inactive. Elle passera à l'état « intrigué » si elle remarque quelque chose d'anormal (à vérifier) : porte ouverte, entité inconsciente, chargeur d'arme vide, etc.

- Intrigué (Intrigued). Cette entité a conscience que quelque chose ne va pas. Elle abandonne son poste ou son parcours normal pour se déplacer vers la zone de l'événement anormal, par exemple vers la porte ouverte ou l'entité inconsciente. Si elle aperçoit un joueur, elle passe en mode « alerte ».

- Alerte (Alert). Dans cet état, l'entité est consciente de la présence du joueur et déclenche les actions visant à le traquer : se mettre à portée de tir, alerter d'autres gardes, donner l'alerte et se mettre à couvert. Lorsque l'entité est à portée de l'ennemi, elle passe en état « agressif ».

- Agressif (Agressive). C'est l'état où l'entité engage le combat avec le joueur. Elle l'attaque dès qu'elle peut et se met à couvert entre les tirs (pour récupérer des points de vie ou recharger son arme). Elle quitte cet état uniquement si le joueur est tué (retour à la normale), si l'ennemi n'est plus à portée de tir (retour à l'état « alerte ») ou si elle meurt (passage à l'état « mort »). Si son niveau de vie diminue, elle peut passer en état de « fuite », en fonction de son indice de courage.

- Fuite (Fleeing). Dans cet état, l'entité tente de fuir le combat. Selon les jeux, elle peut avoir un objectif secondaire, comme récupérer des points de vie ou quitter la zone. Lorsqu'elle a récupéré de la vie, elle revient en état d'alerte et peut reprendre le combat. Une entité qui « fuit » est simplement supprimée.

- Mort (Dead). Dans certains jeux, l'état de mort ne correspond pas forcément à une inactivité totale : en état de mort ou de mort imminente, l'entité peut « pousser un cri » pour donner l'alerte à d'autres entités à proximité.

Elle peut également n'être qu'assommée pour pouvoir être ranimée par un médecin (et revenir en état d'alerte). Il existe au moins deux méthodes simples pour mettre en œuvre un automate fini dans le système d'entités. La première consiste à faire en sorte que chaque état soit une variable consultable (souvent par une commutation massive). L'autre est d'utiliser des pointeurs de fonctions (en langage C) ou des fonctions virtuelles (en C++ ou dans d'autres langages orientés objet).

V-C - IA adaptative

Les méthodes précédemment évoquées sont utilisées pour concevoir les réactions de l'intelligence artificielle pendant les événements prédéfinis du jeu. Dans la plupart des cas, c'est suffisant à condition que la conception soit complète et que l'on puisse clairement comprendre les objectifs des entités intelligentes. Quand un jeu doit opposer au joueur de meilleurs adversaires avec des comportements plus variés et plus dynamiques, l'IA doit pouvoir se développer et s'adapter d'elle-même.

L'IA adaptative est généralement utilisée dans les jeux de combat et de stratégie, où les mécanismes sont complexes et les options de gameplay innombrables. Pour proposer un défi permanent au joueur sans qu'il parvienne à trouver une stratégie optimale pour battre l'ordinateur à coup sûr, l'IA doit pouvoir apprendre et s'adapter.

VI - La prédiction

La capacité d'anticiper le prochain coup d'un adversaire est cruciale dans un système adaptatif. Il est possible d'utiliser plusieurs méthodes, dont la reconnaissance des combinaisons antérieures (sujet abordé dans un prochain article) ou la prédiction aléatoire, afin de déterminer l'action à effectuer.

L'une des méthodes de base de l'adaptation consiste prendre en compte les décisions précédentes et à évaluer leur réussite. Le système d'IA enregistre donc les choix antérieurs du joueur. Les décisions passées doivent pouvoir être évaluées (par exemple, dans les jeux de combat, la victoire ou la défaite, les points de vie perdus ou l'avantage en termes de temps peuvent permettre de mesurer la réussite d'une stratégie). Des informations supplémentaires peuvent également être collectées pour donner plus de contexte aux décisions : niveau de vie relatif, actions précédentes et position dans le niveau (on joue différemment lorsque l'on est acculé).

Il est possible d'évaluer ces données afin de déterminer la réussite des actions précédentes et d'envisager ou non un changement de tactique. Avant la création d'une liste des actions antérieures, l'IA peut recourir à des tactiques générales ou effectuer des actions aléatoires. Ce système peut être combiné à des systèmes conditionnels et à différents états.

Dans un jeu tactique, l'historique permet de décider des meilleurs choix tactiques à appliquer contre une équipe de joueurs : défensive, offensive, « berserk » ou équilibré. Dans un jeu de stratégie, la composition optimale des unités d'une armée peut se décider selon les joueurs. Dans les jeux où l'IA contrôle des personnages qui accompagnent le joueur, l'IA adaptative peut accompagner et soutenir le joueur en s'inspirant de son style naturel de jeu.

VII - Résumé

Le champ de recherche de l'intelligence artificielle est complexe. L'IA des jeux vidéo prend différentes formes en fonction des besoins du jeu, d'un ensemble de règles simples pour les entités contrôlées par l'ordinateur aux systèmes adaptatifs les plus évolués. Appliquer les concepts de l'IA aux jeux est indispensable pour renforcer la crédibilité des personnages virtuels, mais ce défi n'est pas impossible à relever. Le prochain article de cette série abordera les enjeux d'une IA pour percevoir un environnement complexe, y évoluer et la réponse à ces enjeux.

Pour davantage de ressources concernant le développement de jeux vidéo, consultez la Zone des Développeurs Intel ou rendez-vous sur le forum dédié.

Pour découvrir les technologies Intel, c'est par ici :

- GPA

- Intel Realsense

- Intel XDK

VIII - À propos 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.