|
(vous remarquerez l'effort que j'ai fait en mettant un petit tag dans mon titre, pour annoncer le sujet )
Bonjour à tous Peut-être certains s'en souviennent-ils encore, il y avait quelque temps un sujet traitant de la Memetic AI (que je traduis hasardeusement par "IA mimétique") sur ce même forum. Cette forme d'IA, que je considère encore et toujours comme révolutionnaire, permet de créer des comportements nombreux et complexes, et de les assigner à des créatures par un système de priorité. L'avantage de ce système est donc son évolutivité et son paramétrage aisé, l'inconvénient (majeur) étant la difficulté pour arriver à le faire marcher Même si le sujet date un peu, je me suis repenché dessus pour essayer vraiment d'en tirer quelquechose. Quelqu'un avait parlé à l'époque de l'IA du dragon de Bioware qui était assez peu efficace. Donc j'ai essayé de faire mieux Enfin rapidement, j'ai oublié le "mieux" pour simplement essayer de faire une IA de dragon tout court Tout d'abord, le module test (3mo environ). Ce module comprend un dragon noir adulte (un peu modifié, surtout au niveau des sorts, je lui ai rajouté un sort de zone à distance et boosté ses projectiles magiques), ainsi qu'une bonne troupe de gobelins divers&variés. Le dragon possède une IA mimétique, mais pas les gobelins, faut pas rêver . Au lancement du mod (je conseille de le lancer en mode MJ, sinon le dragon risque de s'en prendre à vous), l'ami écailleux va entreprendre d'aller à son premier waypoint, mais rencontrera inévitablement sur la route nos amis gobelinoïdes. C'est là que le système entre vraiment en jeu : le dragon va commencer par déterminer le sort le plus pertinent à lancer suivant la situation, ou éventuellement ne pas en lancer si le besoin ne se fait pas sentir, etc. Normalement, tout ne se passe pas trop mal. Il arrive que le dragon reste plusieurs secondes sans rien faire, je ne suis pas arrivé à déterminer si c'est parcequ'il attend de lancer un sort, parceque le système d'IA bugue, ou parceque je me suis planté quelquepart Mais en théorie, il devrais toujours finir par agir. Ca, c'est pour la version abordable Passons aux détails. En clair, le dragon possède 4 comportements distincts, dont 1 qui n'est pas permanent : 1/ faire le tour de ses waypoints : très basse priorité, ce comportement n'est présent que lorsque le dragon n'a vraiment rien d'autre à faire 2/ rester sur place (et se tourner vers l'ennemi le plus proche) : ce comportement ne survient que rarement, en fait uniquement lorsque le dragon repère un ennemi mais que celui-ci ne l'attaque pas (plus probable dans le cas d'un PJ) 3/ courir après les ennemis, et les attaquer, jusqu'au dernier : ce comportement s'active dès que le dragon est attaqué, et disparait lorsqu'il ne perçoit plus aucun ennemi; c'est le comportement d'arrière plan pendant un combat 4/ lancer un sort : à chaque sort lancé, un comportement de ce type est crée; il y a un système de priorité, qui fait que le dragon ne lance que le sort le plus important à un instant précis (ou le garde en mémoire si il en lance déja un) Une fois que ces comportements marchèrent correctement, le plus dur était fait Après, il suffit de faire une brève analyse du champ de bataille lorsque le dragon est attaqué ou lorsqu'il perçoit un ennemi, pour entreprendre les actions adéquates. Par exemple, si le dragon est attaqué au corps-à-corps par une grande quantité d'ennemi, il va probablement leur souffler dessus, à moins qu'il y ait un groupe d'ennemi nettement plus puissant à longue distance, auquel cas il lancera un sort de zone sur ceux-ci, etc. C'est, il me semble, sur ce genre de tests que se fait une bonne part de la qualité d'une IA, à savoir faire les choix les plus logiques au bon moment. Bien sûr, mon système de sort pourrait probablement être amélioré, mais j'ai préféré ne pas placer la barre trop haut. Ce n'est après tout que ma 2e tentative sur la Memetic AI Bon, pour finir : petit bonus pour ceux qui ont lu jusqu'ici J'ai remarqué que lorsque le dragon se battait contre les gobs, il n'avait pratiquement jamais l'occasion de lancer ténèbres (il ne le fait qu'en cas d'adversaire vraiment puissant), ni projectiles magiques (le souffle ou le nuage puant est souvent plus intéressant). Par contre, lorsqu'on spawne à bonne distance de lui un roublard Duergar FP 13, l'occasion de voir ces sorts se présente rapidement Voilà mon conseil si vous voulez être persuadés de la polyvalence dont peut faire preuve un dragon Bon, je crois avoir fait le tour. J'espère qu'à défaut de vous intéresser, le module test vous aura diverti PS: j'ai concçu cette IA de manière très spécifique, ce qui fait qu'elle ne conviendra pas vraiment à d'autre dragons, et je l'ai surtout conçue dans l'idée d'un combat contre les gobelins. Cela dit, il serait intéressant de mesurer le dragon à un PJ, ce que je n'ai jamais vraiment fait |
05/07/2003, 01h27 |
|
Aller à la page... |
[IA] Memetics, le retour !
Suivre Répondre |
|
Partager | Rechercher |
|
En fait, je me suis servi du Memetic AI Toolkit (http://www.summermeat.net/memeticai/) pour construire l'IA.
Cet ensemble de fonctions, dont l'utilisation est assez difficile à assimiler, permet de gérer les comportements et leurs priorités, les générateurs, les évenements etc. Concrètement, une créature adaptée à ce système d'IA est paramétrée comme suit : - sur tous ses évenements (même si certains sont inutiles, par exemple ... OnHeartBeat ), on place un script de "callback" (cb_<évenement>) qui va être chargé de déclencher les différents générateurs de la créature; en clair cela permet d'avoir de multiples scripts pour chaque évenement, ce qui est déja un progrès. - sur son OnSpawn, pas de callback, mais un script d'initialisation de l'IA ("s_dragon" dans mon cas). C'est dans ce script que l'on crée les comportements qui seront permanents, ainsi que les générateurs et les évenements; ce script est un des seuls que j'ai commenté , ça peut valoir le coup de le regarder Je ne vais pas encore rentrer dans les détails à propos du fonctionnement de l'IA mimétique, si vous voulez des précisions, cf. ... l'ancien thread qui n'existe plus . Azrael, si tu as regardé les scripts du module, tu aura peut-être remarqué que le générateur g_dragon n'est actif que sur deux évenement : OnPerception et OnPhysicalAttacked. J'ai pensé que ces deux évenements étaient suffisants pour que le dragon puisse agir de façon à peu près logique. Malgré tout, effectivement une IA vraiment, vraiment poussée demanderais probablement l'utilisation du OnHeartBeat, vu qu'il permettrait d'analyser régulièrement le champ de bataille, afin d'utiliser une vrai stratégie. Enfin là, c'est vraiment, vraiment poussé Quant à une IA générique à tous les monstres, ben au début je me suis dit : je vais faire un dragon, puis : je vais faire un dragon et des gobelins, puis : je vais faire une IA générique qui marchera dans les deux cas, puis je suis revenu sur terre Vu comment certains scripteurs très connus s'y sont cassé les dents (je pense par exemple à l'IA de CODI, qui n'a pas du être faite du jour au lendemain), ben pour l'instant j'abandonne l'idée |
05/07/2003, 12h54 |
|
|
Alors un conseil : télécharge le toolkit Memetics et fais toi plaisir
Les possibilités sont vraiment très vastes, et c'est d'après moi le support idéal pour programmer une IA. |
06/07/2003, 12h07 |
|
gaeriel/nekresh |
Voir le profil public |
Trouver plus de messages par gaeriel/nekresh |
|
Memetic AI Toolkit DR6 Beta 4 dispo ...
download : http://www.memeticai.org/download/index.html info : http://www.memeticai.org/download/view.html?file=75 la nouvelle version demande SOU |
11/07/2003, 07h04 |
|
Suivre Répondre |
Fil d'ariane
Connectés sur ce fil1 connecté (0 membre et 1 invité)
Afficher la liste détaillée des connectés
|