Bonjour à toutes et à tous !

Je vous l'avais promis, voici un nouveau post traitant du jeu vidéo vu par mes petits yeux (parfois défaillants) de développeur.

Etant principalement spécialisé dans tout ce qui touche à l'Intelligence Artificielle à Crytek niveau Design, cela faisait un petit moment que je voulais proprement aborder le sujet. Nous y voici donc. La question à laquelle j'aimerai tenter de répondre aujourd'hui est la suivante : Une IA intelligente est-elle le Saint-Graal ? Autrement dit : "faut-il qu'une IA soit super intelligente pour satisfaire un joueur ou un gameplay ?"

Tout au long de ce post je vais me servir d'un exemple générique dans les jeux vidéo : créer une IA pour un « méchant humain se servant d'une arme à feu », ce qui doit être le cas dans environ 95 % des FPS à univers réalistes de nos jours (ah oui, je prends aussi le domaine des FPS à univers réalistes, mais cela s'applique également aux autres styles de jeu).

Créer une IA : par quoi on commence ?

                               

Bon, on a notre IA à créer. Bien. Que faut-il faire maintenant ?

Et bien avant même de commencer à programmer son comportement, il faut définir quelques règles de Design. Ainsi, toujours reprenant mon exemple précédent (celui du "méchant humain se servant d'une arme à feu"), on va tout d'abord se poser quelques questions.

Qui participe à cette étape ?

Généralement un programmeur IA et un designer (ou plusieurs programmeurs et designers si le jeu le requière).
On va donc définir à ce moment la raison d'être de cette IA : est-ce un boss ? un simple soldat ? un demi-boss ? une unité de base ou d'élite ? Quel est son rôle à remplir ? Est-ce un « tank » ? Est-ce une unité agile et rapide ? etc, etc...

Grâce à cette recherche on commence tout doucement à détourer ce que va réellement être cette IA dans le jeu et surtout quelle va être son but ainsi que le challenge qu'elle renverra au joueur.

L'IA doit-elle forcément s'inspirer de l'intelligence humaine ?

Question existentielle si il en est ! En effet bien que stupide au premier abord, c'est une question à laquelle il faut bien réfléchir lorsqu'on designe une IA. Reprenant l'exemple d'avant, le fameux « méchant... » (oh et puis mince, appelons-le Georges). Bref, reprenons l'exemple de Georges (Abitbol, l'homme le plus classe au monde). Disons qu'on a défini que son rôle dans le jeu serait celui d'un soldat de base, possédant un fusil et des grenades. C'est la bidasse de base comme on en voit par pelletés dans des dizaines de jeux aujourd'hui.

Comment va-t-on s'y prendre pour rendre Georges (mon yéti) plus intelligent ? Va-t-on s'inspirer de l'intelligence humaine ?

Alors là je vous entends déjà : « bah oui, si déjà on est dans un univers réaliste... ». AHA ! Et bien non !...Ou plutôt si, mais pas vraiment...Bref, une explication s'impose.

L'écueil dans lequel il est facile de tomber est le suivant : « que ferait un être humain dans cette situation ? »
En effet, c'est une bonne question à se poser, mais on va se rendre compte en se la posant que d'apporter une intelligence vraiment humaine (ou au moins une façon de penser humaine) peut avoir de mauvaises conséquence sur le gameplay de votre jeu.

Réalisme VS Crédibilité

                                                 

Prenons un petit exemple ici :

Georges patrouille seul dans la forêt...Le joueur ne l'a pas vu. Georges voit passer une ombre furtive au loin mais ne sait pas précisément si c'est ami ou ennemi. Que va faire Georges ?

La vision réaliste :

Bon je préviens tout de suite, je ne suis pas expert militaire, mais voici ce que je ferai si j'étais Georges : je vois une ombre au loin. Je m'arrête de bouger et je m'accroupi à couvert. Je contacte le QG pour savoir si d'autres patrouilles étaient prévues dans le coin tout en gardant un œil vers l'endroit où j'ai vu l'ombre bouger. Si l'ombre se représente et que je vois que c'est un ennemi, je me fait le plus silencieux possible et si je sens que j'ai l'avantage, je lui tire dessus sans sommation.

Mettons en pratique ceci dans un jeu vidéo (du point de vue du joueur) :

Je me balade dans la forêt (pom pom pom pom...oh tiens un écureuil !) et j'arrive à une falaise, ne trouvant pas de chemin, je reviens sur mes pas et PAN, je suis mort...

Mon avis en tant que joueur ? « Mais putain ! Y avait personne ici y a 2 secondes, bordel de merde ! Qui c'est qui m'a tiré dessus ? » (oui bon d'accord c'est un joueur énervé).

Comme vous pouvez le voir avec cet exemple, avoir une IA ayant un comportement purement humain peut s'avérer frustrant voire injuste pour la majorité des joueurs. Bien sûr certains jeux jouent là-dessus (principalement les simulations, Operation Flashpoint en tête). Seulement là nous ne sommes pas dans une simulation. Alors que faire ? On veut que notre IA aie un comportement réaliste mais en même temps, on veut aussi qu'elle ne flingue pas le gameplay pour le joueur.

Il nous faudra donc viser pour une crédibilité de l'IA et non un réalisme de celle-ci. Une crédibilité qui ferait en sorte de garder le joueur immergé dans le jeu, tout en lui communiquant correctement ce que l'IA cherche (ou est en train de / prévoit de) faire.

La vision « crédible » :

Georges patrouille, regardant à gauche et à droite. Il voit une ombre au fond, il lâche un bon gros « Hein ? » bien audible pour le joueur. Il contacte le QG par téléphone, mais il le fait à voix haute, en avançant vers la zone où il a vu cette ombre, fusil à la main. Il revoit cette ombre et se rend compte que c'est le joueur. Il crie un « il est là !!! » avant de lâcher une rafale de plombs dans les miches de notre pauvre joueur qui décidément n'a pas beaucoup de chance aujourd'hui.

Vous voyez maintenant où je veux en venir ? La communication au joueur de ce que fait l'IA est ce qui la rendra (ou pas) crédible aux yeux de celui-ci. Non seulement crédible d'ailleurs mais intéressante à affronter.
Alors oui ça n'est pas réaliste qu'on homme crie tout seul dans la forêt « il est là !!! » avant de commencer à tirer. Mais c'est ce qui indiquera au joueur dans quel état est l'IA à ce moment précis du jeu : est-elle inquiète ? pleine de confiance ? est-ce qu'elle est à court de munitions ? (le fameux « je recharge ! »), etc...

La communication de l'IA

Alors je vous donnais l'exemple de certaines phrases que l'IA peut dire pour communiquer avec le joueur, mais il existe de très nombreuses façons de faire « communiquer » notre IA avec le joueur. Par exemple : les phrases indiquant sa position où son état (ou même la position du joueur), ses animations, les sons (un shotgun qui recharge est un bruit bien explicite pour un joueur), la musique qui va en fond et qui accompagne l'action (on passe d'une musique calme à une musique rythmée lorsque l'IA vous remarque), etc...

« It's all smoke and mirrors »

                          

Au final et comme le dirait si bien un ami programmeur américain : une bonne IA, c'est avant tout une bonne illusion permettant au joueur de « croire » que cette IA est intelligente.

De bons exemples sont entre autres : l'IA de F.E.A.R premier du nom qui appelaient des « renforts » lorsque le joueur tuait trop de monde. Tout le monde était bluffé à l'époque en entrant dans les salles suivantes et en voyant plus de soldats dans la pièce (alors qu'il s'agit en réalité d'un simple script).

Idem pour Metal Gear Solid, où cette fois-ci, Kojima a poussé sa communication IA / joueur à fond avec le fameux « ? » et « ! » au-dessus des têtes des IA, allant de pair avec un bon gros « Hein ? ». La communication entre le « QG » et les soldats renforce encore cette sensation qu'il y ai quelque chose de « plus grand » qui régit l'univers du jeu. Mais en fin de compte, tout ceci n'est également qu'illusion puisque 30 secondes plus tard ils ont oubliés jusqu'à la présence du joueur dans leur enceintes. Ce qui ne semble pas réaliste, mais est nécessaire au gameplay infiltration du jeu. Le jeu donne une "seconde chance" au joueur à ce moment-là.

La crédibilité et non le réalisme

Voici d'après moi vers quoi il faut se tourner pour créer une bonne IA : la crédibilité. Faire en sorte que le joueur ne se dise pas « tiens ça je l'ai vu venir à 10 bornes » mais qu'il ne soit pas non plus dans une situation trop injuste car trop réaliste. Les ingrédients sur lesquels on peut jouer sont (encore une fois) : les animations, les sons, la musique et surtout le comportement de ces IA, c'est-à-dire par exemple à quel moment doivent-elles lancer des grenades ? Doivent-elles encercler le joueur ou au contraire lui foncer dessus ? Etc...

Ces comportements sont la racine de ce qui fait une bonne IA. On y ajoute des apparats sonores ou visuels mais en fin de compte, il faut une bonne base derrière tout ça. Le ciment qui va coller tous les éléments entre eux reste la communication et si celle-ci est mal faite, ça peut tout faire s'écrouler.

Enfin, afin de faire un jeu qui aura une IA un peu plus crédible ou « intelligente » (allez j'ose le mot) que les autres, il faudra jouer sur la finesse de cette communication (par exemple : ajouter des émotions dans la voix des IA : une IA seule affrontant le joueur est terrorisée alors que 5 IA contrent le joueur vont afficher avec arrogance leur trop plein de confiance, etc...).

 

Un bon exemple de cette communication « avancée » fut celle de Batman : Arkham Asylum où les IA deviennent de moins en moins confiants plus ils voient les morts (ah pardon les « inconscients » car Batman ne tue pas) autour d'eux, allant même jusqu'à avoir différents modes de patrouilles : un « calme » où ils se racontent des histoires entre eux et relâchent leur vigilance et un « nerveux » où ils se retournent toutes les 2 secondes pour vérifier qu'il n'y a personne derrière. Le tout formant un ensemble jouissif pour le joueur car la communication va alors dans 2 sens, du jeu vers le joueur et du joueur vers le jeu.

 

Voilà en quelques paragraphes ma réponse personnelle à cette question que je me suis souvent posé. Bien sûr je ne prétends pas avoir la solution universelle, mais après avoir passé quelques années dans ce domaine, voici ma version des faits ;).

En vous saluant bien bas,

David Grivel