
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
09/10/2010, 23:33
09/10/2010, 23:46
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
10/10/2010, 00:35
" 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.
10/10/2010, 00:44
10/10/2010, 01:19
10/10/2010, 01:27
10/10/2010, 01:49
10/10/2010, 09:16
@ 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
10/10/2010, 10:05
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
10/10/2010, 11:08
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.
10/10/2010, 12:51
@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 ^^
10/10/2010, 13:11
10/10/2010, 13:28
10/10/2010, 14:40
10/10/2010, 16:34
Intéressant.
10/10/2010, 21:20
10/10/2010, 23:13
11/10/2010, 10:04
"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
11/10/2010, 14:23
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 ?
Un petit HS, Crytek sera-t-il présent au premier salon de jeux vidéo en Suisse ?
12/10/2010, 09:38
"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