Toribash
Fanby, est ce que tu peux m'expliquer brièvement le principe de ton IA ?

Car, ingénieur développement logiciel de métier, je me suis déjà penché sur la réalisation d'une IA pour ToriBash, et je me suis bien cassé les dents... le nombre de mouvements possibles à chaque tour est monstueux (20 joints, 4 états + 2 mains à 2 états).
D'ailleurs, je suis pas le seul à avoir essayé (voir la section third party du forum).

Donc voila, un bot qui reste connecté, qui fait des mouvements au hasard (ou des openners préprogrammés), je sais faire, mais une véritable IA.... je sèche !

Donc par curiosité, je veux bien connaitre le principe... et si tu as besoin d'aide pour effectuer les basses besognes, je veux bien essayer, ça a l'air passionant.
Au lieu de parler du principe,je vais plutot parler de son fonctionnement et comment cela fonctionne(ce qui revient bien entendu au principe,mais en plus compliqué) :

Dans mon métier,je développe des IA capable de s'auto-réécrire,c'est a dire,capable a n'importe quel moment de changer sa propre situation(son code-source) en fonction de l'environnement(disons les CSP pour commencer).

Je me suis donc dis,l'ia va rencontrer bcp de contraintes,car changement de l'environnement et des paramètres a chaque tour.
J'ai donc développé une IA "mère" qui gère Uke en général.Cette IA "mère" va a son tour créer des IA "filles" qui seront allouer a chaque joint de Uke permettant une facilité de calcul et un renvoi de données immédiat a l'IA "mère" pour prendre des décisions trés rapidement.

Chaque IA fille fais un check up de la situation a chaque frame(savoir si telle partie a pris des coups,si tel vitesse de rotation ne vas pas briser le membre,etc..)et envoi le rapport a l'IA mere qui prendra la meilleur décision en fonction de son placement et suivant la situation,des dégats subies et autres.

Aprés,une autre partie est créer,c'est ce que j'appelle les "offensives".Ce sont des IA tout aussi créer a partir de l'IA mère qui vont définir les positions,dégats,etc du joueur adverse et déterminer le meilleur coup possible(aprés avoir eu le rapport sur "soi-meme" avant et de ses capacitées offensives voir défensives)en ayant le moins de pertes et en infligeant un maximum.

Toutes ces IA communiquent entre elles tant que le match n'est pas terminé ou qu'elles ont la certitude de gagner.

Pour toutes les possiblitées que tu citais Melmoth,les IA filles déterminent a leur tour les meilleures solutions possibles pour leur joint donné,cad qu'elles font elles aussi un check up de leur propre environnement pour savoir que faire.

Vous allez me dire,mais cela doit prendre un temps fou de tout calculer !?
Je vous réponds non !
J'utilise une programmation qui permet des calculs trés rapides avec trés peu de moyens(algorythmes développées en laboratoire),la puissance n'est donc pas en cause.

Autre point trés important,l'IA est doté de "compréhension",cad qu'elle apprend.En effet,le tout premier match sera surement gagnant pour vous,car elle n'aura aucune base pour commencer ses calcules,mais dès lors que vous commencerez a bouger,elle commencera a porgrammer ses IA filles pour ses meilleures options(et bien sur,sera se mettre au mod joué par l'adversaire).
Plus vous jouerez avec elle,moins de chances vous aurez a la battre.
Lorsque ma version finale sortira(ui je l'espere est pour bientot,cela dépend de mon emploi du temps),il n'y aura pas plus de trois matchs avant qu'elle ne soit au top(je me permettrais de lui adjoindre des alogrythmes trés performant pour un minimum de puissance).

Si vous avez des questions sur des passages et que vous voulez que j'approfondisse,n'hésitez pas.

PS => ce n'est qu'un résumé vulgaire,et je m'en excuse !

@tte et bon jeu
je comprends ^^

seulement tu aurais pu prendre des termes techniques, melmoth est quand même programmeur =P

Donc voila, un bot qui reste connecté, qui fait des mouvements au hasard (ou des openners préprogrammés), je sais faire

j'ai testé, en modifiant random.lua mais toribash me mets error script loading ^^

ET j'ai testé au moin une centaine de truc (sans déconner, j'y suis résté une heure)

EDIT: fichier joint ajouté
Attached Files
random.lua (494 Bytes, 3 views)
Last edited by sny; Jan 19, 2009 at 06:41 PM.
hampa has sent you 300000 toricredits.
-- random.lua
-- Joint state randomiser

local function joint_random()
	for k,v in pairs(JOINTS) do
		set_joint_state(1, v, math.random(1,4))
	end
	
	set_grip_info(1, BODYPARTS.L_HAND, math.random(0,2))
	set_grip_info(1, BODYPARTS.R_HAND, math.random(0,2))
	
	knee_info = get_joint_info(1, 16) -- Right Knee = 16

	if (knee_info.state==2) then
		set_joint_state(1,1,1)
	end
	
end

local function start()
	run_cmd("echo random.lua")
	joint_random()
end
start()

add_hook("new_game", "random_lua", start)
add_hook("enter_freeze", "random_lua", joint_random)
J'ai pas testé, mais il n'y a plus d'erreur !
Originally Posted by vins84 View Post
J'ai une question....
Comment on va l'appeler?

kiki la quiche ^^
Google est ton ami!
Je poste ici surement mon dernier message avant un bon mois.J'ai beaucoup de travail qui vient d'arriver,ce qui va me prendre énorméménet de temps.

Je suis désolé pour le développement de l'IA,mais il va etre en stand-by.Je viens de terminer l'optimisation et dès que je le pourrais,je commencerais les choses sérieuses.
Je tiens quand meme a m'escuser car d'une part la vidéo que j'avais annoncé,c'est Kyat qui l'a faite,et de deux,l'IA,c'est pas pour demain.

Je vais cependant créer un petit programme pendant que j'ai encore le temps pour que l'IA se développe toute seule et dès qu'elle era prete et si aucun réglage n'est a faire,je ferais mon possible puor l'envoyer,soyez en sur !

@ toutes et tous,je tiens a vous souhaiter une bonne semaine,de bonnes vacances,et un bon tout !

@tte les z'ami(e)s !
Merci Fyerrblad !

@ vins : si jamais elle est prete,je créerais un serveur 24h/24h et dès que tu jouera avec,l'IA s'intégrera a ton jeu directement.Tu n'auras plus qu'a poster un replay lambda et tout le monde l'aura.

Voila,@tte !

PS oooh ce n'était pas mon dernier message