Script et IA : question existentielle

Une question me turlupine depuis pas mal de temps; on parle souvent de jeux “scripté” en désignant des scène ou quand le joueur X arrive dans une zone, une action Y se déclenche.

Cette différence entre script et IA n’est-elle pas un peu arbitraire si on considère qu’il est possible de créer un comportement aléatoire ou répondant à certains critère en scripting (opration flashpoint pour ne point le nommer).

Si partiellement. C’est aussi une maniere de critiquer un jeu selon les mots qu’on choisit:

  • elle est bien cette IA
  • il est tout pourri ce jeu, il est supra scripte.

Maintenant un script est en general moins complexe qu’une IA, et des scripts mal faits ne font pas une IA … Genre un streum qui poureaute et que tu peux buter par derriere sans qu’il bouge parceque t’es pas passe sur le point X qui le fait se reveiller c’est scripte, mais hypra mal. L’IA recouvre plus les reactions “independantes” des entites. Genre “un streum se fait attaquer, il se tourne vers son assaillant et riposte” ou alors “un streume a un champ de vision et patrouille aleatoirement autour du point X”. C’est un melange mais au final tout est plus ou moins base sur un mix equilibre de scripts du type “pour faire avancer les scenar du jeu il faut faire X qui declanche Y” (script) et des trucs du genre “mis dans telle situation telle entite reagira de telle maniere avec l’aglo untel” (IA).
Ce message a été édité par GloP le 14/10/2003

Là de but en blanc, j’ai envie de répondre qu’une routine d’IA pourrait être un script où on envisage beaucoup plus d’évènements que d’habitude. Exemple de script :

  • si joueur fait “A” alors “X”
  • sinon “rien”

Exemple de IA :

  • si joueur fait “A” alors “X”
  • si joueur fait “B” alors “Y”
  • si Heure = “Z” et joueur fait “C” alors “FFOEKBJH”

etc, etc.

Ceci dit, je ne suis pas programmeur!! ;-p

Glop> ça répond partiellement à ma question, dans le sens ou c’est effectivement un terme arbitrairement utilisé car, somme toute, un script peut-être utilisé pour un comportement individuel. Je vais prendre OFP comme exemple :

Le script ne se déclanchera que si le joueur X est aux abords d’une ville. S’il se fait detecter par une untié ennemie, l’unité en question fuira. Si elle survit plus de 10 seconde, elle alertera ses amis qui dirigeront un tir d’artillerie imprécis sur la dernière position du connue du joueur X par l’ennemi Y (genre on définir une zone à bombarder et on randomise les impactes, easy).

Ce script est extremement facile à réaliser et s’executera selon la façon qu’a le joueur de faire la mission sans pour autant diminuer l’effet de suprise. On peut imaginer ça sur une plus grande échelle en créant d’autre scripts de comportements qui se déclancheraient selon les actions du joueurs. Peut-on pour autant continuer à appeler ça du script ?

Pour moi, dans Médaille d’Honneur par exemple, ou Half Life, les scripts sont des évènements scénaristiques spéciaux qui sont censés donner un plus à l’action ou à la narration.
Exemples : le scientifique qui te parle, te suit, t’ouvre une porte, etc dans Half Life.
Dans Médaille d’Honneur c’est par exemple la scène du débarquement. Les bateaux qui avancent, les coups de canon qui en coulent quelques uns, les morts sur la plage, les 3 types qui arrivent au bunker, les 2 qui se font tuer par les mitrailleuses, etc…

L’IA c’est (toujours selon mes termes) un script global qui permet de gérer les réactions des NPCs en toute situation, et souvent pour le combat. Comment ils tirent, s’ils se mettent debout, s’ils reculent, se mettent à couvert, vont voir le médecin quand ils sont blessés, etc…
Dans Splinter Cell les ennemis ont généralement des rondes de garde, et dès qu’ils voient un ennemi, ils tirent dessus = IA
Par contre il y a certains scripts que tu peux laisser se dérouler ou interrompre, tels que le colonel qui va tripoter son ordinateur, ou se servir un café, ce genre de choses.

Maintenant, pour parler de quelque chose de très personnel, il y a des choses que je déteste certains scripts. C’est quand on ne peut les interrompre. Je reviens sur l’exemple du débarquement de Médaille d’Honneur:
1- On est dans des chalands avec beaucoup de monde, on s’approche de la plage et on voit les chalands autour de nous se faire exploser à coups de mortier. On ne peut rien faire de là où on est, pas grave.
2- Ensuite on est sur la plage et on se fait canarder par les mitrailleuses. Déjà à cet endroit vous remarquerez que la progression de vos alliés se fait toujours de la même manière. Ils se font toujours tuer au meme endroit, mais on ne voit meme pas les mitrailleuses à cause du brouillard. Passe encore.
3- Enfin on arrive au bunker. Toujours de la même façon, on se retrouve à 4 (moi, le sergent et 2 soldats) à l’abri des mitrailleuses. Que se passe-t-il ensuite ? Le Sergent envoit les 2 soldats traverser, ils se font tuer par les mitrailleuses. Je dis ça suffit ! Je prend mon courage à deux mains, je recharge, je fonce avant eux, je prend le fusil dans le trou et je tue les deux mitrailleurs avant que mes potes n’arrivent (il faut être très rapide). Que se passe-t-il ? Ils meurent tout de même.
Flashpoint au contraire, les scripts servent à donner des indications sur le comportement et l’arrivée ou non de renforts (entre autres choses), mais ils ne servent surtout pas à décider de l’issue des combats. Il ne forcent pas telle unité à mourir de manière totalement artificielle comme le fait Médaille d’Honneur ou d’autres jeux (Red Faction par exemple). Dans Flashpoint, non seulement vous avez un impact important sur le cours du jeu, selon que vous soyez bon ou mauvais, plus ou moins de vos coéquipiers s’en sortiront. Mais en plus, si vous ne faites rien, l’issue d’un combat peut être différent d’une partie à l’autre, si vos hommes ont plus ou moins bien tiré ou si ils ont attaqué comme il faut ou pas, selon les blessures et ce genre de choses.

Un autre exemple que l’on voit dans pas mal de jeux, un script classique (dans un FPS), c’est l’arrivé dans une pièce et l’exécution d’un otage par un méchant.
Le bon script est celui qui vous permettra de tuer le méchant et de sauver l’otage si vous avez des réflexes de folie.
Le mauvais script est celui où vous verrez l’otage mourir d’une balle fantome alors que le méchant est déjà mort.

J’allais pondre une jolie prose, mais les exemple de Le_Jedi_Fou font tout et je vois pas trop quoi ajouter là…

Pour moi, un (mauvais) script s’exécutera “quoi que” (z’avez remarqué les guillemets? ) le joueur fasse, alors qu’une IA permettra de vivre un scénario différent à chaque fois. (le coup des alliés abattus alors que les mitrailleuses sont out est quand-même poussé à l’extrême selon moi, c’est pas joli joli).

Pour reprendre l’exemple de l’unité qui voit le joueur et va prévenir ses potes s’il survit plus de 10sec :
si en chemin, il “croise” un gros gun ou des grenades, avec une certaine IA, il va peut-être prendre confiance, les récupérer et tenter d’arrêter le joueur. Ou si le joueur bloque d’une manière ou d’une autre le chemin de l’unité sans la tuer, l’unité va chercher un autre chemin ou par dépit, tenter d’éliminer le joueur, se rendre, etc. (mais bon, là, ça devient des trucs ptet un peu abusés )

Je suis un peu créateur de missions a flashpoint: Le vice est encore plus poussé. Quand tu mets une unités, tu lui donnes un objectif: capturer un lieu etc… (avec des waypoints si tu veux…). Mais une fois dans la map, rien n’empeche l’unité de faire ce qu’elle sent. En effet j’avais fait le test j’ai posé une mission ou un groupe de soldats devaient attaquer une ville. Le reste, tout était automatique, les placements, les contournements de la ville…

L’IA de flashpoint est une des plus réussies, et a par obéir aux ordres, elle est totalement autonome.

[quote]Je suis un peu créateur de missions a flashpoint: Le vice est encore plus poussé. Quand tu mets une unités, tu lui donnes un objectif: capturer un lieu etc… (avec des waypoints si tu veux…). Mais une fois dans la map, rien n’empeche l’unité de faire ce qu’elle sent. En effet j’avais fait le test j’ai posé une mission ou un groupe de soldats devaient attaquer une ville. Le reste, tout était automatique, les placements, les contournements de la ville…

L’IA de flashpoint est une des plus réussies, et a par obéir aux ordres, elle est totalement autonome.[/quote]Alors on voit que tu n’as jamais utilisé de scripting. C’est de la pure folie ce qu’on arrive à faire avec quelques lignes de code.

L’IA n’est pas si incroyable que ça puisque les unités ne font que suivre les waypoints. Leur comportement est prédéfini par la commande setBehaviour “CARELESS”, “SAFE”, “AWARE”, “COMBAT” et “STEALTH”. Ensuite, pendant les combats, ils courent, rampent et tirent de manière assez aléatoire. L’IA à apparemment des priorités au niveau des menaces (blindés/soldats) ce qui rend les batailles relativement réaliste mais il reste plein de points négatifs qui rendent obligatoire l’utilisation de scripts.