Pouf, pouf.
Ça fait un moment que j’ai dans l’idée d’organiser des tournois multi-joueurs, éventuellement multi-jeux, un peu comme les EuropeMasters.
Pour me simplifier la vie, j’en profite pour réaliser un petit logiciel pour gérer tout ça automatiquement. La première version beta du projet vient d’être mise à disposition à l’adresse http://jswisstour.sourceforge.net/. Elle est disponible pour Windows et Linux 32 bits (je peux facilement sortir des versions MacOSX et 64 bits) et nécessite Java 6. Cette version propose une petite interface graphique et ne devrait pas être trop compliquée à utiliser, une fois qu’on a compris le principe de base :
Le grand cadre à gauche doit contenir les informations suivantes :
* Sur la première ligne, le nom des joueurs, séparés par une virgule
* Sur la seconde ligne, la liste des tables (le nombre de joueurs pour chaque table)
À partir de la troisième ligne, les résultats de chaque match, avec à chaque fois le nom du joueur suivi de son score, séparés par des espace.
On peut faire des commentaires en commençant une ligne par un point d’exclamation.
Par exemple, mon fichier final à la fin du dernier tournoi à Nantes :
xavier,davy,laura,ronan,jim,seb,michael,marc,julien,jeoffrey,jl
4,4,3
!Funkenschlag
michael 1610 marc 1604 laura 1513 ronan 1502 jim 1300
amelie 1633 xavier 1622 julien 1618 jeoffrey 1560 seb 1511
jl 1707 stephane 1687 alban 1664 nadia 1650 davy 0
!samurai
marc 4 michael 2 jl 1 amelie 0
jeoffrey 2 alban 1 julien 0
!rftg
xavier 3 laura 2 davy 1
ronan 2 seb 1 jim -1
!rftg
julien 45 alban 41 marc 33 jeoffrey 23 michael 20 jl -1 amelie -1
!samurai
davy 3 laura 2 jim 1
xavier 3 ronan 2 seb 1
On n’est pas obligé de faire apparaitre le nom de tous les joueurs à la première ligne, mais il n’y a qu’eux qui seront pris en compte (pratique en cas de désistements). Dans cet exemple, je génère deux tables de 4 et une table de 3.
L’objectif du logiciel est de gérer un tournoi sous la forme de « rondes suisses », comme aux échecs, mais avec des tables de plus de deux joueurs. Les rondes suisses ont plein d’avantages : tout le monde fait le même nombre de parties (pas d’élimination), on joue très vite contre des joueurs de son niveau. Par contre, il n’existait aucune solution pour gérer des tables de plus de deux joueurs. Mon logiciel y arrive en utilisant des algorithmes assez complexes, à la pointe de la recherche scientifique en informatique.
Je ne sais pas si d’autre TTciens pourraient être intéressés par un système de ce genre. Là où je bloque un peu, c’est pour déterminer un classement des joueurs après un certain nombre de parties. Je ne connais pas de manière satisfaisante pour y parvenir. Du coup, mon logiciel permet le développement de « plugins », de sorte que de nouveaux systèmes de classement puissent être proposés. Cette version beta du logiciel propose quatre solutions :
* Un score est attribué à chaque joueur en fonction de son classement, on fait le total à la fin, le plus élevé gagne. C’est le genre de classement utilisé en Formule 1, par exemple. Il a le mérite d’être assez simple.
* Score pondéré : proposé par Loic pour ses tournois à Rennes, comme au dessus mais le score est pondéré avec les points obtenus au jeu par rapport au premier de la partie. Le problème ici, c’est que ça ne peut vraiment marcher que si le vainqueur d’une partie est décidé aux points (il y en a quand même pas mal), et qu’il n’y a qu’un seul jeu au tournoi.
* Méthode Schulze (cf Wikipedia), qui gère très finement qui a battu qui à chaque ronde. Le problème, c’est qu’il est difficile de comprendre comment on arrive au résultat final (il faut faire confiance au programme !), et qu’il y a facilement des égalités si tout le monde est à peu près du même niveau.
* Méthode Alternative (cf Wikipedia), plus simple à comprendre, mais peu satisfaisante : perdre contre les derniers d’un tournoi peut rapporter des points…
Pour l’instant, je suis à la recherche d’une « bonne » méthode de classement, et éventuellement de personnes prêtes à essayer mon appli de manière à la rendre la plus adaptable possible !
D’ici la version finale, j’essaierai d’être capable de gérer un tournoi de type Europemaster, avec leurs règles. Ça suppose cependant de gérer un tournoi par équipes…