Bonjour à tous,
J'aurais besoin de vos lumières pour eclairicir ma lanterne au sujet de l'IA et des jeux.
La programmation d'une IA doit-elle s'appuyer sur le même language de programmation que son jeu?
Si demain je décidais de me lancer dans la création d'une IA concernant un jeu donné, devrais-je obigatoirement connaitre le fonctionnement intrinseque du jeu?
Pour que les choses soient plus limpides, je suis fan d'un jeu de plateau porté sur PC par des amateurs (bloodbowl pour les connaisseurs) et bien qu'il y ait 2 versions complétement jouables en P2P, aucune ne permet de jouer seul.
Quand on parle d'IA, la réponse est: "je ne m'y connais pas ou trop difficile!"
Une des 2 versions jouable est programmé en Delphi, language que je connais.
Seule chose que je sache à propose d'une l'IA, c'est qu'elle peut s'appuyer sur le systeme de reflexion neuronal.
Quel conseil pourriez vous me donner si je desirais me lancer dans son élaboration? Y-a-t-il des livres qui traitent du sujet? des exemples de programation?
Merci pour votre lanterne
Je ne suis pas un specialiste, mais vu que tu n'as recu aucune reponses, je vais essaiyer de t'aider au mieux.
Il existe differents types d'ia, et diferentes manieres de l'integree au jeu. Lorsque tu parle de reflection neuronale tu confond ces deux choses.
Les reseau de neurones sont un type d'IA tres avances car evolutive. L'IA s'adaptera , ell eaura de base les memes capacites qu'une IA classique, mais en faisant une erreur elle va readapter ses tests pour une efficacite plus poussee pour certains cas. Elles sont bien enttendu dificiles a coder, et bien que j'ai deja eu a faire quelques IA, pour moi cela reste un projet majeur qui demande de l'experience pratique en IA conventionnelle et de la theorie dans les reseau de neurone.
D'autres type d'IA sont les algorythmes en "profondeur" et les algorithmes en "largeur". Prenons l'exemple d'un PNC voulant aller d'un point A a un point B.
Dans le premier cas, "profondeur", elle irait du point b dans une direction la plus proche du point B, et s'adapterait au fur et a mesure au "terrain". Il y a des chances pour qu'elle se retrouve bloquee. C'est ce qu'il se passe dans les RTS lorsque , par exemple, tes troupes sencees prendre de revers ton adversaire se trompent de chemin et sont bloquees par une falaise. L'idee de faire le chemin par soit meme, les petits drapeaux en appuyant sur maj en general, ne sont pas une bonne idee des concepteurs mais juste un bon paliatif aux defauts de cette IA. Cette IA sera efficace dans des cartes a peu d'obstacles, mais dans un labyrinthe, autant oublier. On peut resumer cette ia par "foncer tout droit et s'adapter".
Dans le deuxieme cas cas elle calculerait toutes les possibilites en meme temps, et la premiere qui arriverait a un resultat serait gardee et consideree comme la meilleure. Dans un labyrinthe c'est la meilleure option pour trouver la meilleure solution le plus rapidement possible, mais lorsqu'il y a peu d'obstacles, ou des elements changeants dans la scene, autant oublier. Non seulement elle serait plus lente au calcul, mais en plus elel se bloquerait par des elements changeant. On peut resumer cette IA par "Je reflechis, je planifie et je fonce sans changer d'avis jusqu'a la fin".
Ces deux methodes sont des methodes "basiques" il y en a surement d'autres que je ne connais pas. Les exemples que j'ai donner ne sont pas non plus valides dans tout les cas. Il est egalement possible de "melanger" ces deux type d'ia pour avoir l'equilibre le plus ideal pour une fonction donnee. Prenons l'exemple de notre RTS (l'adaptation de ton jeu favoris :D) on veut que nos unites calculent rapidement leurs deplacements, mais qu'elles ne se bloquent pas betement. On les fera donc foncer tout droit un certiains temps et si elels sont bloquees, elles calculeront la meilleure possibilite et la suivront pour se debloquer. Ce n'est pas une solution miracle, mais c'est a toi de trouver le bon equilibre. Tout comme pour une IA generale d'u nadversaire, il dois etre capable de faire une plan d'ensemble ("je vais d'abord m'etendre par la, puis fortifier ici") mais aussi s'adapter ("Je suis attaquer par le Sud, vite, jenvoie mes troupes")
Maintenant je repond a ta premiere question : Faut il utiliser le meme language que le language de programation ?
Cela depend de ce que les concepteurs ont prevus. Si tu cree un jeu de la toute base, c'est different.
Dans ton cas tu dois deja avoir le calcul des deplacements d'unites de calculer, donc cela tu nedois pas y toucher, sauf si tu pense pouvoir l'ameliorer. Pour ce genre de choses, oui, tu aura besoin de connaitre et d'utiliser le meme language que le jeu en lui meme pusique tu dois toucher a ses sources.
Pour l'IA d'un adversaire, partie solo qui tu dis n'existe carement pas, je peux te proposer deux differentes solutions. Dans tous les cas tu aura besoin des sources du jeu et de savoir les modifier.
-Premiere solutions : Tu te contente de coder une seule IA que tu inclue directement au moteur du jeu, toutes les IA se resembleront et l'evolution du jeu sera limitee, mais au moins tu aura un jeu solo.
-deuxieme solution : Celle que je trouves la plus interessante. Tu cree un systeme de script reserve a l'IA. En gros tu ionclue a ton programme un parseur qui saura analyser et loader quelque part dans le jeu / memoire ton IA. Cela inclue un peu plus de travail tel que creer le langages pour les scripts, creer le parseur et inclure le tout au jeu.
Mais cela permetrais de donner les bases a d'autres fans de creer leur propre IA. Et aussi a des apprentis codeurs en herbe s'interessant a l'IA de se faire la main sur ton jeu. (qui est peut etre open source ?) Bref, c'est tout benef, evolutif, et dans ma condition de geek finit, je dirais amusant.
Pour les livres qu itraitent du sujet, je n'ai aucune idee, ce que je sait je l'ai appris en faisant des recherches sur le net pour divers projets ou dans des magazines specialises.
Pour les liens, je n'en ai pas, mais tente de trouver via google lee projet scars (il me semble) C'est un exemple de moteur de jeu de courses ou tu configure toi meme l'ia des conducteurs via un systeme de scripting. (et non, j'ai pas eu l'idee tout seul :p)
Il y a aussi framsticks, si tu t'interesse a l'IA plsu en general, a la genetique, a l'evolution au reseau de neurones et euh, que tu connais le terme intrinseque et ne fait pas de fautes en l'ecrivant le premier coup. (j'ai du regarder comment tu l'a ecrit :P) En bref tu dois creer des entitees qui doivent survivre, se nourire, se reproduire dans un monde, tu y aura a decouvrir des algos de deplacmeent, de combats, des choses plus grande du genre "Est ce trop tot pour avoir des enfants ?" etc. Et le tout en petits batonnets qui forment une creature. Le "jeu" en lui meme est extremement bien concut.
Ce sont une bonne introduction a l'IA, et cela t'entrainera et te donnera une idee de ce que tu poura faire avec ton petit projet, et je te conseil de le redistribuer ici que l'on puisse s'amuser nous aussi une fois que tu aura finit. :)
Si besoin de plus, Google est ton ami. :)
Merci Frosth,
Il est toujours agréable, de retour de congé, de voir qu'on a pensé à vous!
Tes renseignements m'éclairent un peu plus.
Bien que le jeu en question ne soit pas un RTS, mais en gros, un jeu de football américain à la sauce med-fan warhammer, les principes de rédaction de l'IA via un script/parseur me plait bien.
Les mouvements sont simples et entrent dans une logique d'algorithme en largeur, pour reprendre le bon terme.
Le truc maintenant, c'est de comprendre comment le faire. Avec le bon vocabulaire, il devrait etre plus facile de trouver quelque chose sur google.
Je vais me faire la main sur le jeu dont tu parles.
Merci pour les infos, et je mettrais à jour le thread le moment venu
Pour les scripts il y a le langage de script LUA. Il s'intègre facilement en C/C++.
Ya une petite introduction aussi sur le GCN.
vBulletin® v.3.6.5, Copyright ©2000-2009, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org