08/10/2006 à 14h18 : zeDuel 2

Je me disais récemment que je relancerais bien un "zeDuel".
Ceux qui ont connu la première édition (il y a 5 ans déjà !) savent de quoi je parle :)
Sinon l'idée est simple : c'est un duel de programmation, chaque participant programme une IA qui affronte les autres joueurs dans un jeu imaginé pour l'occasion.
La dernière fois c'était puissance 6 et ça avait plutôt bien marché. J'y vois plusieurs explications : Donc si on doit faire un nouveau zeDuel je serai partisant de garder une formule similaire (un jeu sur plateau en 1 contre 1).
Le serveur serait ainsi rapidement disponible puisque je pourrais réutiliser l'ancien code en partie...
Il ne reste plus qu'à trouver de nouvelles règles : le but étant d'avoir quelque chose d'assez simple, mais qui n'existe pas pour éviter de retomber sur des algorithmes déjà faits.

J'ai déjà quelques idées en vrac de jeux où on doit faire des alignements comme la précédente édition.
La taille du plateau de jeu et la longueur des alignements restent à définir :


Voilà avant d'aller plus loin j'attend de voir si ça interesse du monde et de connaître vos avis !

Commentaires

Pseudo :
Site : (facultatif)
Email : (facultatif, pour votre avatar)
Message :
(pas de HTML)
: (recopiez le texte)
Se souvenir de mes informations

Jem [ 15/10 - 19:53 ] : Après vérif, pas si simple que ça, il y a des parades, mais je pense qu'il a quand même une piste intéressante dans l'analyse "locale" des coups (contrairement au premier duel ou l'analyse globale de la grille etait la meilleure stratégie).
Bref, on a quand même de quoi faire! ^^

Royale [ 15/10 - 12:32 ] : Aïe c'est le risque avec les règles maisons tant qu'on ne les a pas testées.
De mon côté je n'ai pas encore vraiment réfléchi au problème donc je n'ai pas trouvé la "faille" dont tu parles.

Jem [ 15/10 - 12:02 ] : Vous avez commencé à réflechir au problême mathématiquement parlant? Parce qu'avec la rêgle1, j'ai l'impression qu'il y a une stratégie gagnante assez "simple" pour le premier joueur... :S

Nono [ 14/10 - 14:02 ] : J'me renseigne, j'me renseigne ;-)

Royale [ 13/10 - 14:43 ] : Je croyais que tu jouais pas Nono :p

Royale [ 13/10 - 13:52 ] : Oui, l'année dernière on avait mis une limite à 1 seconde par tour (au delà le programme était éliminé) et on totalisait le temps total passé par chaque client pour information.
C'était aussi et surtout pour éviter qu'un client bogué bloque le tournoi.

Nono [ 13/10 - 13:13 ] : Y'a un temps limite d'exécution pour chaque tour ?

Royale [ 13/10 - 12:03 ] : Bon il faut bien commencer par quelques chose, donc je vais essayer de préparer le serveur pour la règle numéro 1, avec la modification suggérée par Jo (on ne peut plus pousser si la ligne est pleine), comme ça on évite les coups qui reviennent en arrière et on garde une partie limitée en nombre de coups.
On peut essayer avec une grille de 15x15 et des alignements de 5 pour commencer.
Attention la taille du plateau et la longueur des alignements changera sûrement, donc si vous commencez déjà à coder prévoyez des constantes pour faire évoluer tout ça...
Je sais pas si c'était clair mes dans mon esprit, les alignements sont possible en ligne et colonne, mais aussi en diagonale.

Jem [ 12/10 - 10:03 ] : Un rêgle qui peut être marrante à rajouter dans la programmation des bots : la prédiction. A chaque tour, le robot envoie son ordre plus une prédiction sur l'ordre de son concurrent : si la prédiction est bonne alors le concurrent passe son tour (par exemple). Ca oblige à programmer des bots qui prennent en compte la stratégie adverse et à l'anticiper... Ca peut etre marrant, non? :D

docj [ 11/10 - 23:09 ] : pour donner une dimension humaine à zeduel, j accepte de jouer contre tous vos robots. je serais un peu le Gorbatchev contre deep blue !

Jem [ 11/10 - 18:56 ] : >Et aussi c'est peut-être difficile de faire une règle qui marche aussi bien pour 3 joueurs que pour 10.

Oui, tout à fait!
Sinon, une autre façon de faire du multi-like :
* pour n joueurs, le serveur lance n grilles simultannées
* les tableux sont nominatifs : chaque joueur est donc associé à une grille
* chaque joueur a le choix a chaque tour de placer un pion "à domicile" (sur sa grille) ou sur l'une des autres cartes.
* Dés qu'un alignement est fait sur une grille, la grille est finie (plus personne peut jouer dessus) mais le combat continue sur les autres
* Afin d'inciter à "attaquer", on peut scorer avec des bonus : chaque joueur marque 3 pts s'il fait un alignement sur la table de quelqu'un d'autre et 2 point s'il fait l'alignement sur sa table et 1 point s'il arrive a concéder le nul sur sa table.

L'avantage ici, c'est que le multi est géré comme une somme de duels, donc c'est plus facilement adaptable aux rêgles 1v1 choisies.

Bon, c'est des idées qui viennent comme ça, mais disons que le concept de jouer multi doit permettre plus de subtilités dans la programation!

Royale [ 11/10 - 17:39 ] : Effectivement ça peut marcher.
Le problème de la 3D c'est que ça va être plus difficile de programmer un outil pour "visualiser" les parties.
Et aussi c'est peut-être difficile de faire une règle qui marche aussi bien pour 3 joueurs que pour 10.

Jem [ 11/10 - 17:36 ] : Oui, je parle bien de parties à n joueurs.
Pour ce qui est de l'adaptation des rêgles, tout dépend du jeu sur lequel on se base, par exemple, pour reprendre le morpion du zeduel1, on peut le rendre multi et simultannée assez facilement:

version basique
- chaque bot envoie sa case en même temps au serveur
Le serveur place les pions pour lesquels il n'y a pas conflit (deux bots qui proposent la même case)
En cas de conflit, les bots passent leur tour!
Ou alors, une version un peu plus élaborée :
-chaque bot renvoie une liste d'ordre (par exemple 10), le serveur place en priorité le choix numéro1 d chaque bot, en cas de conflit, il "neutralise" la case qui ne pourra plus être jouée et passe au choix numéro2, etc. en fin de liste, s'il y a encore "égalité", les bots en question passent leur tour!

Bien sur, avec plusieurs bots, il faut probablement changer aussi le nombre de cases à aligner pour gagner (pour 4 joueurs, peut-etre que 4 ou 5 cases sont suffisantes?) ou alors on passe en 3D(?) pour compenser l'augmentation du nombre de pions adverses. (enfin, c'est un détail, on peut demander des bots paramétrables, ensuite on fait quelques tests pour voir si on a des parties assez longues sans avoir trop de parties nulles)

Pour le serveur, ça doit pas changer grand chose, non? (enfin, à vue de nez, tu es mieux placé que moi pour savoir si c'est jouable ou non! :p )

Royale [ 10/10 - 22:29 ] : Si par jeu "multi", tu veux dire un jeu où on est 3 ou 4 sur la même partie, il faut trouver des règles adaptées. Les défis de Prologin par exemple sont souvent adaptés mais le serveur est beaucoup plus compliqué à programmer...

Jem [ 10/10 - 21:05 ] : Coucou tout le monde!
Le premier jeu me parait plus intéressant que le second à programmer, et j'aime bien le petit coté "abalone" des rêgles!
Sinon, ça serait vraiment dur de partir sur un jeu "multi"? Idem, un jeu avec coups simultannés pourrait amener une petite part de probabilités sympa!
En tout cas, je suis partant! :D

Royale [ 10/10 - 19:39 ] : Aussi si vous avez d'autres idées de règles pas trop difficiles à programmer n'hésitez pas.

Royale [ 10/10 - 18:48 ] : Moi aussi j'ai une préférence pour la première règle. La combinaison des deux peut être intéressante aussi...
Enfin on peut faire comme la dernière fois, on essaye quelque chose et on avisera.
Pour ce qui est de la taille du terrain et de l'alignement, il faudrait que tout le monde prévoit des constante de configuration si on change les règles (si on voit que c'est trop facile/trop dur).
Pour caml ça doit être possible, il n'est pas installé pour l'instant, mais je sais que ocaml compile vu que mldonkey le fait.

NoMan [ 10/10 - 18:28 ] : J'en suis ! (je préfère la première règle, bien que j'ai pas approfondu la question !) On pourra faire du caml ?

docj [ 10/10 - 13:13 ] : je me rappelle ne pas avoir fini dernier la fois précédente

Royale [ 10/10 - 10:49 ] : Les sujets prologin sont effectivement beaucoup plus sympa... mais ils ont déjà été proposés, donc on risque de retomber sur du code existant.

Jo [ 10/10 - 10:47 ] : Perso, les règles ne m'enthousiastent pas tant que ça (encore beaucoup à discuter). Pourquoi pas un ancien faux sujet Prologin X@ ? En plus je ne sais pas si j'aurai beaucoup de temps à y consacrer. D'autant plus que je n'ai pas encore tout analysé ta super solution pour le zeDuel précédent. Donc je ferai mon schéma habituel: mouais bof, puis je fais quand même un truc à la fin ;)<br/>Royale &gt; pourras-tu résumer les langages disponibles (C, C++ + STL, freepascal, bash, perl, python, java, brainf*ck, scheme, prolog) ? Le principe c'est toujours d'avoir un seul fichier source ?<br/>Royale 2 &gt; pour le problème de l'infinité des poussages de ligne, on peut limiter à pousser seulement si la ligne n'est pas complète (s'il manque des pions à la fin ou n'importe où au milieu).<br/>Nono &gt; dans la précédente version, je testais mon bot contre d'autres versions de lui-même; pour voir où ça pêche, tu attends le match contre un très bon bot (au hasard celui de Royale) et tu analyses ce log-là. De plus, si le nombre de coups jouables est fini (borné supérieurement), ce n'est pas du tout compliqué de générer tous les logs possibles, mais ça prendra du temps et de la place, et ne sera pas forcément très utilisable.<br/>[/myblog]

Nono [ 09/10 - 20:10 ] : Ce n'est pas intéressant donc pour moi, à moins d'avoir une quantité phénoménale de logs :P

Royale [ 09/10 - 13:42 ] : Non on ne peut pas car je garde pas le code source (donc les binaires ne seront pas portables).
Et pour l'apprentissage ton programme n'est qu'un executable, donc il faut embarquer ta "base de connaissance" dans ton code.
Tu peux toujours apprendre en utilisant les logs des parties qui seraient disponibles.

Nono [ 09/10 - 13:20 ] : On ne peut pas exécuter chez soi les clients des autres ??? Indispensable pour écrire des soft qui fonctionnent par apprentissage...

Royale [ 09/10 - 09:48 ] : Merci ed pour ta réponse, j'ai cru que j'allais vraiment faire un bide ;)

ed [ 09/10 - 09:26 ] : Je signe :)