Championnat LFJR / Total Annihilation

Détail du systeme de calcul



Voici les explications de GFRUIT René sur la méthode de classement utilisée dans le championnat Total Annihilation. Si vous souhaitez en savoir plus sur les algorithmes de scoring et tester son magnifique applet Java simulant plusieurs types de championnats, je ne peux que vous recommander d'aller jeter un oeil sur son excellent site : L'Arm à l'Oeil Vous verez en plus il aime bien les charades :) Mais sans plus attendre, passons aux choses sérieuses... :)

Introduction

Dans un championnat, les joueurs jouent entre eux. A l'issue d'un match, le vainqueur gagne des points, et le vaincu en perd. En général, le vainqueur gagne d'autant plus de points qu'il était plus faible que le vaincu. Jusque là tout le monde est d'accord. Mais comment atteindre ce but? Ce que font les championnats, c'est qu'ils accordent un nombre de points qui dépend de la différence (Battle.net, TASRS), ou du rapport (LFTA UNC2) entre les scores des deux adversaires. Ca parait pas idiot. Il y en a qui prennent en compte la différence de classement, ça c'est carrément stupide ! Voyons pourquoi.

Niveau d'un joueur

Chaque joueur joue à un certain niveau. Il y a des joueurs meilleurs que d'autres, tout le monde l'a constaté. Le but d'un championnat est de révéler quels sont les bons joueurs, en leur permettant d'accéder aux premières places. Donc, le score d'un joueur doit être fonction de son niveau. Son classement, au contraire, dépend de son score (ben oui !) ET du nombre de joueurs inscrits dans le championnat. Si, pour une victoire, on donne donc un nombre de points qui dépend de la différence des classements, on donne un nombre de points qui dépend du nombre de joueurs dans le championnat, ce qui est absurde. Je vous laisse imaginer ce qui se passerait dans un championnat où il n'y aurait que deux inscrits...

Equité d'un classement

Un classement est équitable si un joueur se retrouve au bout d'un temps 'réaliste' (c'est à dire de l'ordre d'une dizaine de parties) à un score qui correspond à son niveau. Supposons que vous soyiez un très bon joueur, et que vous décidiez de vous inscire au TA Killers Leage Ladder, championnat bien connu d'outre Atlantique. Ce championnat a commencé il y a bien longtemps, et les meilleurs joueurs ont des scores faramineux, alors que vous ne pouvez gagner que quelques dizaines de points par match. Vous n'avez aucune chance de jamais les rejoindre.

Divergence des scores

Pourquoi n'avez vous aucune chance de les rejoindre ? Cela est dû à la divergence des scores. Si le nombre de points attribués à un vainqueur ne dépend QUE de la différence des scores des joueurs, alors le score du premier tend vers l'infini, et le score du dernier aussi, mais dans les négatifs. Plus il y a de matches joués, et plus la répartition des scores s'étale, et plus la différence de scores entre deux joueurs qui se suivent dans le classement grandi.

On voit bien que si le score du premier tend vers l'infini, rapidement, il ne pourra plus jamais être rattrapé.

Il faut donc freiner cette augmentation. La seule façon de le faire est de faire varier le nombre de points attribués au vainqueur en fonction de son score. Plus un joueur a un fort score, et moins un match contre un joueur de score équivalent lui rapportera de points. Cela est rendu nécessaire pour assurer le 'maintien' à portée des meilleurs joueurs.

Calcul des points attribués au vainqueur

Le nombre de points attribué au vainqueur doit donc dépendre de la différence des scores, et du score du vainqueur (ou du vaincu, c'est selon). Aucun championnat ne fait ça à l'heure actuelle, pas même les Fédérations sportives.

Entrée des joueurs dans le classement

Il y a un truc très paradoxal dans cette histoire. Tout le monde s'accorde à dire qu'il y a très peu de très bon joueurs, pas mal de joueurs de niveau moyen, et très peu de très mauvais joueurs. Malgré cela, tout le monde trouve normal que les joueurs entrent dans un championnat avec un score nul. Si on suppose que la moyenne du niveau des joueurs est moyenne (précisément !), alors il faut faire rentrer les joueurs dans le championnat par le mileu, avec un score moyen. Si le système d'attribution de points fait que le score de tous les joueurs est compris entre 0 et 4000, alors il faut donner 2000 points à un joueur qui rentre.

Cela a en plus deux gros avantages : si l'on donne au vainqueur autant de points que l'on retire au perdant, alors la moyenne des scores reste constante et égale à 2000, et le nombre de points total en jeu est proportionnel au nombre N de joueurs, et égal à 2000xN.

Quelle sont les particularités d'un championnat TA ?

Il y en a plusieurs, qui font que l'on ne peut pas appliquer tel quel d'autre modèles, issus des championnats sportifs ou autres. Tout d'abord, certains joueurs jouent beaucoup, jusqu'à 10 ou 15 parties par semaine, et d'autres jouent moins, une ou deux parties seulement par semaine. De plus, des joueurs peuvent entrer à tout moment dans le championnat, et le quitter quand bon leur semble.

La situation est donc très différente de celle d'un championnat sportif, où toutes les equipes jouent le meme nombre de matches, et où le nombre de protagonistes reste constant. De plus, un championnat sportif redémarre en général toutes les saisons, ce qui n'est pas le cas d'un ladder TA.

Il faut conserver malgré cela une certaine justice dans le classement, en laissant la possibilité à un très bon joueur d'accéder aux meilleures places en un nombre raisonnable de parties. Cela impose donc de contrôler le score des joueurs les mieux classés, et d'empêcher ces scores de diverger.

Caractéristiques du calcul pour un duel

Le nombre de points en jeu dans la partie dépend du joueur le mieux classé, et du fait qu'il gagne ou qu'il perd la partie. Appelons Sa le score du meilleur joueur, et Sb le score du joueur le moins bon. Sa est donc plus grand que Sb, par définition. Appelons g le nombre de points en jeu pendant le match. Posons Go = 100 et D = 4. Calculons g :

  • Si c'est le meilleur des deux joueurs qui gagne le match, alors g = Go - (Sa - Sb)/D. Si ce calcul donne un nombre plus petit que 10, alors on pose g = 10. Comme ça, le vainqueur remporte au moins 10 points.
  • Si le meilleur des deux joueurs perd, alors le nombre de points en jeu est g = G + (Sa - Sb)/D. Si ce calcul donne un nombre plus grand que 190, alors on pose g = 190. Comme ça, le vaincu ne perd pas plus de 190 points.

Remarquez que si vous battez un joueur, et qu'il vous bat ensuite au match suivant, les deux joueurs se retrouvent tous les deux au même score. Une revanche est donc une vraie revanche : elle annule une victoire. C'est un des avantages de ce mode de calcul. Cette propriété n'est pas vérifiée pour le classement ELO...

Ensuite, intervient un coefficient de ponderation, qui s'applique à g. On fixe une limite théorique à la variation des scores. On choisit de limiter les scores les plus faibles au-dessus de 0, et les scores les plus forts en-dessous de 4000. Le coefficient de ponderation appliqué sur g dépend de qui, du joueur le plus fort ou le plus faible remporte le match. C'est là que ça se complique un peu.

On définit une fonction de pondération f, qui est assemblage de cosinus de de fonctions constantes. Peu importe son expression exacte (elle est un peu compliquée). L'idée est que cette fonction a une forme de cloche, qu'en 0 elle vaut 0, qu'en 4000 elle vaut aussi 0, et que grosso modo, entre 1000 et 3000, elle vaut 1. Elle croît dont comme un cosinus entre 0 et 1000, et décroît de la même façon entre 3000 et 4000. Je répète que c'est une simplification, qui masque quelques propriétés importantes de f. Cette fonction de pondération permet de calculer pA et pB, la pondération pour le joueur A (le plus fort) et celle pour le joueur B, le plus faible. Calculons maintenant la pondération p à appliquer sur g.

  • Si le meilleur des deux joueurs gagne le match, alors on prend comme pondération p la plus petite valeur de pB et de pA.
  • Sinon, on prend la plus forte. Cela favorise en fait le moins bon des deux joueurs. Petit cadeau gratuit au newbie :)

Donc, on a maintenant une valeur de g et une valeur de p. Le vainqueur du match remporte g multiplié par p points, et le vaincu en perd autant. Vous remarquerez que deux joueurs proche de 4000 et de même niveau ne jouent plus que pour très peu de points, ce qui empêche leurs scores de s'envoler.

Cas d'un match en NvN

Le cas d'un match en NvN se résoud de la même façon. On appelle A le joueur qui a le meilleur score dans l'équipe vainqueur, et B le joueur qui a le moins bon score de l'équipe vaincue. On calcule le nombre de points en jeu et la pondération comme précédemment, en supposant qu'il s'agit d'un duel opposant A et B. Réfléchissez deux minutes, et vous vous rendrez compte qu'avec un tel système un joueur très faible allié à un joueur très fort ne gagnera rien contre deux joueurs faibles... Un joueur très faible ne profite donc pas du niveau de son partenaire, c'est étudié pour ! Les matches en NvN sont d'autant plus lucratifs que chacune des équipes est équilibrée, ce qui est une bonne chose.

Cas d'un match en NvM

Le cas d'un match en NvM se résoud de la même façon suivante. On appelle A le joueur qui a le meilleur score dans l'équipe vainqueur, et B le joueur qui a le moins bon score de l'équipe vaincue. Supposons que l'équipe vainqueur soit l'équipe N, et l'équipe vaincue la M. On calcule le nombre de points en jeu et la pondération comme précédemment, en supposant qu'il s'agit d'un duel opposant un joueur de score N.A/(N + M) et un joueur de score M.B(N + M). Vous remarquerez qu'un match en 2v3 opposant des joueurs de même niveau est plus lucratif pour l'équipe de deux joueurs que s'ils avaient fait un 3v3 en prenant un joueur de niveau moindre. Normal, c'est ce que l'on veut :)

Pour les matheux : ces deux derniers calculs reviennent à prendre une norme 1 sur les équipes pour calculer leurs scores. On peut bien sûr prendre toute autre norme. Les autres favorisent un peu plus les équipes déséquilibrées. C'est une question de choix. Si vous voulez, on peut en parler.