Premium
Le blog d'EsKa

Le blog d'EsKa

Par EsKa Blog créé le 07/03/10 Mis à jour le 08/10/12 à 00h05

Le blog de moi-même, David Grivel, Game Designer sur Splinter Cell: Blacklist à Ubisoft Toronto ;)

Note : Suivez les mises à jour via Twitter : http://twitter.com/DavidGrivel

Ajouter aux favoris
Signaler
Histoires d'IA

Bonsoir à toutes et à tous.

Dans mon article précédent (http://www.gameblog.fr/blogs/eska/p_14986_histoires-d-ia-a-vous) où je vous demandais de me parler de vos meilleurs / pires moments avec une IA dans un jeu vidéo, une problématique est revenue très souvent...

Beaucoup de personnes  ne semblaient pas vraiment comprendre la différence entre IA et script. Est-ce que ce sont 2 façons complètement différentes d'avoir des IA dans un jeu ? Sont-elles complémentaires ? Peut-on les manger ?

Bref, que de légitimes questions à ce sujet bien loin d'être évident. J'avais donc répondu en commentaire de ce même article. Mais il se trouve que la réponse était assez longue et le sujet étant des plus intéressants, je me suis dit que ça valait bien un article séparé.

Voici donc ce que j'écrivais concernant la différenciation IA / script :

Je crois qu'il y a un amalgame général entre IA et script. En fait ce n'est pas aussi simple que "je choisis l'un ou l'autre pour mon jeu", ce sont 2 façons de faire complémentaires.

 

Si votre codage se rapporte à votre plumage...


Je m'explique : lorsque l'on créé une IA on commence par la coder. Et pour cela on code des arbres de comportements (comment l'IA va-t-elle réagir face à telle situation rencontrée : une grenade arrive à ses pieds : que doit-elle faire ? / un ennemi lui tire dessus : que doit-elle faire ? etc...). Ce code remplit donc la partie "systémique" de l'IA, à savoir que je peux prendre cette IA, la placer n'importe où dans mon jeu, elle se servira de son arbre de comportement pour réagir face aux situations qu'elle rencontre.

On pourrait donc parler de cette étape "codée" comme étant la vraie partie IA d'un jeu.

 

Script this!


Mais il arrive que les Designers aient besoin qu'une IA fasse un enchainement d'actions bien définies, et toujours le même, dans un niveau précis.

Par exemple : je veux que mon IA aille vers la porte, joue une animation d'ouverture de porte et parle au joueur en le regardant.

Pour être sûr et certain que l'IA fasse toujours ces actions, je vais prendre le contrôle, via un script, des actions de cette IA pour qu'elle exécute parfaitement ce que je lui demande. En gros je lui demande de mettre son "cerveau" d'IA en veille et de suivre mes instructions à la lettre.

C'est à ce moment que l'on parle de "script" à proprement parler.

Grâce à mon script, je vais donc faire appel à des actions définies précédemment en code dans l'ordre que je souhaite. Ici :

1 / J'utilise le comportement "aller a un point X" pour que l'IA aille près de la porte.
2 / J'utilise le comportement "jouer l'animation X" pour que l'IA fasse semblant d'ouvrir la porte.
3 / J'utilise le comportement "regarder vers X" pour que l'IA regarde le joueur.
4 / J'utilise un son de dialogue pour que l'IA "parle".

 

So...

En résumé, le script est une couche additionnelle à l'IA qui souvent sert aux Designers à la contrôler, notamment pour les cutscenes ou des évènements bien précis d'un niveau. Mais même pendant ce script, l'IA "codée" est toujours présente en fond et prête à reprendre ses activités dès que le Designer lui "rebranchera le cerveau" ;)



Voilou, j'espère avoir été clair (même si mon cerveau est à moitié éteint ce soir ^^).

 

Buenas tardes,

 

David Grivel

Ajouter à mes favoris Commenter (20)

Commentaires

EsKa
Signaler
EsKa
@ Jostix : merci a toi ;)

"Ne serait-ce pas plus productif de créer une IA commune à diffèrents studios d'une méme marque comme EA ? Genre vous et DICE développeriez le même IA."

Je ne pense pas non. Pour plusieurs raisons :
- Déjà DICE et nous n'avons pas la même situation. Eux sont un studio interne a EA tandis que Crytek est indépendant. Nous sommes en partenariat avec EA pour Crysis 2 mais nous ne sommes en aucun cas une filière d'EA.
- Ensuite, développer juste l'IA pour plusieurs studios me semble risqué car généralement une IA est développée pour un jeu précis (et même au sein de la famille des FPS, les IA n'ont pas les mêmes comportements car pas le même design). A la limite cela pourrait fonctionner si 2 studios se chargent de la même licence (comme IW et Treyarch pour CoD) et encore, je pense que chaque studio apporte sa propre finition.

"Comment vous faite la part des choses entre Script et IA pour non seulement garder la liberté d'action du joueur mais en même temps lui en mettre plein les yeux ?"

Disons qu'on essaye de garder l'IA libre de ses mouvements autant que possible (car c'est la qu'elle profite le mieux de ses comportements) et on essaye de se cantonner au script pour les moments de storytelling ou bien pour contrôler des mouvements de groupes d'IA a des instants précis. Mais en général, on essaye d'avoir la main légère sur les scripts car après tout, Crysis est un jeu sandbox et doit le rester, notamment grâce a une IA systémique.

"Selon toi Eska, l'IA de crysis 2 c'est la meilleur de toutes ? :P"

Haha, ce n'est certainement pas a moi de dire ça ^^.

"Un petit HS, Crytek sera-t-il présent au premier salon de jeux vidéo en Suisse ?"

Très bonne question, si j'entends quelque chose a ce sujet, je te tiens au courant ;)
Jostix
Signaler
Jostix
Encore un super post, merci Eska.

Ne serait-ce pas plus productif de créer une IA commune à diffèrents studios d'une méme marque comme EA ? Genre vous et DICE développeriez le même IA.

Comment vous faite la part des choses entre Script et IA pour non seulement garder la liberté d'action du joueur mais en même temps lui en mettre plein les yeux ? Ce n'est qu'une histoire de feeling ou vous avez des directions "artistique" à suivre ?

Selon toi Eska, l'IA de crysis 2 c'est la meilleur de toutes ? :P

Un petit HS, Crytek sera-t-il présent au premier salon de jeux vidéo en Suisse ?
EsKa
Signaler
EsKa
@ bloodevil :

"Comment expliquer que tant de jeux sont à la ramasse ( j'exagère un peu ) à ce niveau là ?"

Cette question a elle toute seule montre combien il est difficile d'obtenir une bonne IA. Il y a beaucoup de facteurs ici. Le premier a mon avis est que dans le domaine de l'IA, nous n'avons fait qu'effleurer la surface de ce qui est possible. Cela veut donc dire que l'on avance souvent en terrain inconnu.

Et puis il y a aussi le coût d'une IA qui entre en compte. En effet, chaque IA "coûte" du temps / machine et plus cette IA devient autonome / intelligente (en d'autres termes, plus elle réfléchit et s'adapte aux possibilités) plus elle devient chère pour le hardware.

Après, il y a également les Designers qui entrent dans l'équation. Car même si les programmeurs IA ont la liberté de créer une IA comme ils l'entendent au niveau code, ils doivent tout de même suivre les Design docs fournis par les Designers. Hors, si ces documents décrivent une IA avec des comportements stupides, ce ne sera pas la faute des codeurs au bout, mais celle des designers (dans ce cas).

"Dans quelques années ça va donner quoi l'IA ? On parle toujours de nouveau moteur physiques, tout ça, mais au niveau de l'IA, y'a des perspectives intéressantes ?"

Aaah Ze fioutcheur ! Bonne question. De mon coté je pense qu'avec les nouvelles bécanes a venir on aura plus de possibilités pour placer des IA plus intelligentes et donc plus "chères" dans nos jeux. Ça c'est pour le cote technique.

Pour le cote Design, c'est difficile a dire. Parfois les avancées du Design viennent de celle de la technique...On verra bien. Ce que personnellement j'aimerai voir se développer, ce sont les IA s'adaptant au style de jeu du joueur. Non pas seulement a ce qu'il fait (jeter une grenade, etc...) mais comment il le fait : par exemple un joueur joue comme un bourrin, en avançant droit de A vers B. Dans 2-3 situations il devrait pouvoir le faire, mais après, l'IA pourrait mettre en place des barrages ou des tactiques l'empêchant de passer par la, ou tout du moins, rendant cet accès plus difficile. On a pu voir un début de cela avec l'excellent AI Director de Left 4 Dead, ajustant les ennemis en fonction des munitions, de la vie et du nombre de personnes vivantes dans l'équipe.

@ KillerFirst : moi je vois certains types de jeu ou il est carrément préférable que l'IA ne fasse pas toujours la même chose et qui ne requière jamais de scripting, comme par exemple les jeux de course.

@ sese_seko :

"Donc, si j'ai bien compris, ce qu'on appelle "IA" sont en fait les script de comportement généraux, et ce que l'on appelle "script" sont les script de comportements particuliers."

En fait, IA c'est tous les comportements codes par les programmeurs et script ce sont les Designers qui utilisent ces comportements dans un ordre particulier pour arriver a un résultat recherche : moments "cinématiques", etc...

Cela me fait penser que j'ai oublie de préciser que parfois, le script est utilisé par les Level Designers non pas a des fins cinématiques ou de storytelling, mais pour ajuster les arènes de combat. Je m'explique : nous avons 4 zones de combats (A,B,C,D) le joueur se situe dans A, je vais alors faire converger les IA restantes dans B,C et D vers A, via un script.
Voila encore une autre utilisation possible des scripts.

@ tous : merci pour ces retours positifs, ça me fait bien plaisir :)
Terumoto
Signaler
Terumoto
Je suis friand de ce genre de post, continues à enrichir notre culture gamer c'est vraiment super =)
Herbert
Signaler
Herbert
4 KillerFirst: Il existe déjà des jeux de ce type. Le premier Halo par exemple...
sese_seko
Signaler
sese_seko
Donc, si j'ai bien compris, ce qu'on appelle "IA" sont en fait les script de comportement généraux, et ce que l'on appelle "script" sont les script de comportements particuliers.

Intéressant.
Antho2909
Signaler
Antho2909
j'adore ces article qui explique très bien les jeux vidéo, j'en veux d'autres please.
Valpokbest
Signaler
Valpokbest
Intéressant, j'espère pouvoir lire d'autres posts "inside-a-game" !
Billou
Signaler
Billou
@KillerFirst : Je pense que l'on est obligé d'avoir du script pour contrôler les IA sinon, le jeu serait peut-être tout le temps différent, mais le long d'un temps de jeu, le joueur n'aurait peut-être aucun moment "épique" que les scripts servent à faire (quand on sait s'en servir). Si l'IA ne produit que des situations trop faciles pour le joueur, il va se sentir frustré.
MrMouche
Signaler
MrMouche
@EsKa : Pour ce qui est de "détecter les IA" à partir de l'observation de leurs animations, j'ai justement remarqué un truc assez marrant ce matin en regardant des video de la beta multi d'assassin's creed 2.5. Les bots se déplacent de façon bien rectiligne en prenant les virages de façon bien net. On remarque donc facilement lorsqu'un personnage est vraiment controlé par un joueur humain..... sauf si il fait l'effort de se comporter comme un bot. Ce qui est génial, c'est qu'avant les developpeurs devaient se donner du mal pour que leur bots aient l'air un peu plus humain, maintenant c'est les joueurs humains qui essayent de ressembler à des Bots. j'aime l'ironie presque comique de la situation ^^

@Bloodevil : ça a l'air simple ? pourtant je te garantie que ça ne l'est pas :)
Tu te doute que dans une boite de jeu il y a plusieurs métier differents regroupés en équipe qui ont chacun leur mission propore. Je pense que EsKa va pouvoir t'en parler beaucoup mieux que moi mais idealement l'équipe des outils doit fournir à ses game-designer les outils les plus simple et puissant possible pour leur permettre consevoir les comportements des IA sans se prendre la tete avec la techinque (c'est dans l'ideal parcequ'en pratique tout le mon a droit à se part de prise de tete ^^). D'un point de vue des codeurs d'IA bas niveau (là c'est plus mon domaine), c'est une unsine à gaz tres complexe. Si ça semble simple au gamer designer, c'est que l'équipe des outils à fait du bon boulot. L'inverse est aussi vrai, si le moteur et les outils sont poucraves, meme le meilleur gamer designer n'arrivera pas à un résultat correcte. Je pense que ça répond en partie à ta premiere question. Tes autres questions sont interessantes, je crois qu'on a plus qu'a demander gentillement à EsKa un nouvel article de vulgarisation comme il semble si bien savoir les faire ^^
KillerFirst
Signaler
KillerFirst
Très bon article, mais en le lisant j'ai eu une idée qui m'ait venu à l'esprit (je ne sais pas si c'est possible par contre).

Imaginons un jeux qui n'est pas du tout de scripte, que ca soit l'IA qui décide de se qu'elle va faire pendant, même pendant les moment fort d'un jeux. Ça permettrais de refaire le jeux autant de fois que l'on veut en ayant la sensation de ne pas refaire la même chose à chaque fois.

Par exemple l'IA de nos alliés serais tellement puissante qu'elle réagirais quasiment pareil que un joueur humain, on aurais l'impression de faire une campagne en compagnie d'autres personnes. Et bien sure pour que l'IA ne réagisse pas tout le temps pareils il fraudais que le jeux créer une IA différente quand on recommencerais la campagne. Du genre noob, pgm ect...

Bon évidemment il fraudais que l'IA ennemie soit meilleur sinon le jeux sera trop simple.
Bloodevil
Signaler
Bloodevil
Dit comme ça, coder l'IA à l'air "simple".

Comment expliquer que tant de jeux sont à la ramasse ( j'exagère un peu ) à ce niveau là ? Contraintes techniques, manque de temps, préférer bosser d'autres aspects ... ?

Quelles sont les difficultés rencontrées dans le codage ? Si c'était simple, j'imagine qu'on verrait des IA très surprenante, bourrées de comportements réalistes, ne faisant pas toujours les mêmes choix.

Dans quelques années ça va donner quoi l'IA ? On parle toujours de nouveau moteur physiques, tout ça, mais au niveau de l'IA, y'a des perspectives intéressantes ?

Merci d'avance ;D
EsKa
Signaler
EsKa
@ ladanettedu94 / MrMouche : je pense que notre ami du 94 n'a pas totalement tord a propos des animations. Ou plus précisément du changement d'état d'une IA (cad. quand une IA change de tache, par exemple : de shooter a jeter une grenade puis a courir puis a recharger, etc...) . Dans les productions ou cela est fait "a la serpe" (j'aime bien cette expression MrMouche ^^) il devient alors très évident pour le joueur de détecter ces changements sur l'IA. De nos jours on essaye vraiment de gommer ces changements et de les rendre les plus fluides possible au niveau visuel mais ce n'est pas toujours évident. Par contre je suis également d'accord avec toi, MrMouche, pour dire que le pathfinding peut rapidement devenir une @#$%^&* si on n'y fait pas attention.

@ msklywenn : *mache* *mache* *mache* *mache* *mache* Hein ?... *mache* *mache* *mache* ;)

@ Lancelot : aaah oui mais la tu nous parle d'une véritable IA, qui, comme je le disais précédemment (dans un autre article) n'existe pas dans le jeu vidéo, par choix de Design notamment mais aussi et surtout car une telle IA, si elle venait avoir le jour (on parle ici d'une IA capable d'apprendre et de s'adapter a toutes les situations), elle serait bien trop chère (en terme de temps/machine) pour pouvoir exister sur nos hardwares actuels.

@ Sanasoke / ladanettedu94 / Ink : merci les gars :)
Ravine
Signaler
Ravine
J'avoue que je ne sais pas si le post juste au dessus de moi c'est de l'IA ou du script. Le doute m'habite.
Lancelot
Signaler
Lancelot
mais c est pas vraiment de AI. elle ont rien d intellegitente. c est toujours et que du scrypte, l IA est incapable d apprendre.. une vrai IA serait implementable dans n importe quel type de jeu et jouerai aussi bien que un joueur humain.
Ink
Signaler
Ink
En voilà une explication claire et bonne à prendre ! Merci de ce bon article ! =)
msklywenn
Signaler
msklywenn
Ca nous dit toujours pas si on peut les manger...
MrMouche
Signaler
MrMouche
Comme disait Mikael Hedberg de DICE à la derniere Paris Game AI Conference :

" 80% AI + 20% de moments mémorable scriptés => Cheating is winning ! "

et je trouve qu'il a plutot raison le bougre, un bon mélange des 2 peux donner un tres bon résultat si on passe de l'un à l'autre au bon moment.


@ladanettedu94 : pas tout à fait. Ce que tu constate sur certains jeux ne viens pas de l'IA dont il est question ici (c'est à dire le décisionnel) mais d'une autre branche de la grande famille des intéligences artificielles qu'on appel la Navigation. Lorsqu'on demande à une IA de navigation de déplacer un perso, il arrive que la courbe de navigation (le path planning) soit taillé à la serpe, si on l'utilise directement sans lissage ça risque de donne des mouvements peu naturels (virage à angle droit, arret net et autre joyeusetés de ce genre). Cela dit, en faisant bien communiquer le moteur d'IA et le moteur n'animation ( en travaillant bien toutes les combinatoirs de transitions par exemple), il est possible d'obtenir de beaux déplacements à base d'AI, c'est le cas des grosses produitions les plus lechées.
ladanettedu94
Signaler
ladanettedu94
Très intéressant, effectivement :)
J'ajouterais que c'est très facile de différencier un script d'une IA : les animations. Si les animations sont hachées (même dans le plus beau jeu de tous les temps, on voit les transitions entre deux animations), c'est de l'IA, étant donné qu'elle ne sait pas ce qui va suivre (l'IA court, arrive devant une couverture, donc elle arrête son animation "courir" pour passer à celle de "se mettre à couvert"), alors que les scripts sont comme une cutscene, quoiqu'il arrive autour, elle fera toujours la même chose, même si on contrôle quand même notre personnage (Half Life 2, par exemple).

J'ai juste ? ^^
En tout cas, j'adore tes posts de blog, je trouve toujours ça hyper instructif :)
Sanasoke
Signaler
Sanasoke
Vraiment très intéressant !! Si il y avait moyen que tu nous fasses plein de petits posts sur le fonctionnement d'un jeu , expliquer les mécanismes etc .... je suis preneur !

Édito

Salut à tous !

Voici un petit blog sans prétention pour vous raconter mon expérience en tant que Game Designer dans l'industrie. Ca parle principalement de jeux vidéo, notamment de mon expérience professionnelle à Crytek (sur Crysis2), à Ubisoft Paris sur GRFS et actuellement à Ubisoft Toronto sur SC: Blacklist.

Enjoy !

David Grivel aka. EsKa

PS : Suivez les mises à jour via Twitter : http://twitter.com/DavidGrivel

Archives

Favoris