Voilà : je réfléchis depuis quelques temps à la mise au point d'un rpg 2d (avec un tant soit peu de profondeur, pas un hack n slash à la diablo quoi...). Un des points sur lesquels je voudrais innover ce faisant (bah oui, je veux pas coder ça pour le plaisir de faire un truc pareil que les autres mais avec mon nom dessus...), c'est l'intelligence artificielle des persos, que je trouve encore trop limitée dans les jeux actuels par rapport à ce qu'on sait faire actuellement.
Par exemple : je n'ai trouvé aucun rpg dans lequel les personnages ne soient pas ancrés dans leurs habitudes fermement, au point que c'en soit parfois drôle (dans oblivion, par exemple, les personnages font tous les jours EXACTEMENT la même chose en prenant toujours EXACTEMENT le même chemin, sauf cas de force majeure auquel cas ils cessent toute forme d'activité et réessayent un peu plus tard. Ainsi, si vous êtes sur le chemin d'un personnage qui sort de chez lui, il vous marchera dessus pendant un moment avant de se résigner à l'idée de vous dire... "bonjour !").
Pourtant, les sims (c'est le meilleur exemple d'IA "humanisée" que je connaisse dans un jeu) ont montré que c'est possible de varier le comportement des personnages, en faisant que leurs décisions soient aléatoires MAIS influencées par une série de facteurs, tels leurs goûts (à priori statiques) et leurs envies (variant en fonction du temps), ou l'opinion qu'ils ont d'une personne dans le cas des interactions. Et même si on est toujours très loin de passer le test de Turing (surtout quand les sims s'enflamment en utilisant un barbecue), ce modèle du comportement humain donne une illusion de vie déjà nettement plus convaincante.
Mon idée serait donc de créer une IA basée sur les idées des sims, mais adaptée à un rpg donc un style de jeu où le joueur contrôle un personnage qui est donc potentiellement capable de faire n'importe quoi dans la limite des actions disponibles. Par exemple, l'humeur d'un pnj (personnage non joueur, donc contrôlé par l'AI), son tempérament, et son opinion au sujet du pj (personnage joueur, contrôlé par le joueur) influencera sa réaction quand il le trouvera faisant le blocus de sa porte, de "demander aimablement qu'il se pousse" à "coller un pain au perso, le pousser violemment sur le côté, et passer quand même".
Bien sûr, scriptage il y aurait quand même, mais pour les actions (comme aller d'un point à l'autre). L'innovation se situe dans le fait que les personnages fassent des CHOIX, et pas toujours les même actes avec stupidité et correction d'erreur minimale, telles des mécaniques à clé...
Mais à priori, si ça n'a pas été déjà fait, il doit y avoir une raison, et je suppose que c'est la gourmandise en calculs : déterminer à chaque instant les décisions de tous les personnages du monde, intuitivement, ça semble assez mauvais pour la fluidité. C'est sans doute pour ça que les sims vivent dans un univers aussi fermé qu'une maison d'ailleurs.
D'où une idée de varier la précision des calculs d'IA en fonction de la distance.
Je m'explique : plus une personne est éloignée du joueur, moins souvent on met à jour les données la concernant, par exemple moins souvent on fait un test pour voir si elle va changer d'activité. On pourrait ainsi aller jusqu'à ne considérer que les pnj qu'à une certaine distance du joueur, mettant les autres en "sommeil" pour les "ranimer" quand le joueur s'en rapproche.
Voilà, c'est une idée qui me paraissait intéressante (surtout sur le fait qu'avec une IA de ce type bien faite, on pourrait avoir un monde en mouvement au cours du temps, où on donne comme base à la machine la situation initiale et quelques scripts, et elle se débrouille, comme quand on fait des automates cellulaires... D'où un système qui devient imprévisible dans les limites de la cohérence si on le laisse tourner pendant... disons... un jour, et ça c'est classe). Mais comme je n'ai strictement JAMAIS programmé la moindre intelligence artificielle, je me dis que c'est possible que je me dirige droit vers un mur, et comme c'est assez ambitieux comme projet il vaut mieux que je le sache de suite, sinon je pense que ça va m'énerver ^^.
Donc voilà, je vous demande, à vous programmeurs plus expérimentés en la matière qui connaissez déjà ce qu'il ne faut pas faire dans une certaine mesure : ça a l'air viable comme concept ou pas ?
[Excusez moi si je me suis planté de forum, j'étais pas sûr entre celui là et "conception"...]
Partager