Phil's Endpoint


Dazar & formule MMR

Bonjour à tous,

Je vous présente encore quelques idées à propos d’une plateforme de Dota FR pour les tournois.

Dazar

C’est le nom que je donne maintenant au projet web. Vous pouvez suivre ses « avancées » sur le dépôt GitHub (pour l’instant très vite). Les tests que je ferai seront disponible sur ce lien. Pourquoi Dazar? J’ai pensé à ce site un endroit où les gens se rencontre, un marché, un Bazar. Et vu que c’est Dota, j’ai simplement mis un ‘D’ à la place du ‘B’. On obtient le Dazar. Pour l’instant, ce n’est qu’un nom de code.

EDIT : DAZAR IS DEAD

Formules de MMR

Si vous vous souvenez, je vous ai indiqué dans un post précédent que le système devrait fonctionner avec un système de MMR pour les joueurs et les équipes. On a donc une équipe A, des joueurs allant de 1 à 5, chacun disposant de son propre MMR. Formellement:

A = [A1,A2,A3,A4,A5]

On peut confondre le nom d’une team et d’un joueur avec son MMR pour la simplicité. Ainsi, on a le MMR d’une team qui est la moyenne des MMR de ses joueurs:

A = \frac{\sum\limits_{i=1}^5 A_i}{5}

Lors d’une rencontre entre 2 teams A et B, leur MMR est mis à jour suivant leur MMR existant, en utilisant une formule de MMR classique:

A

On utilise par exemple K = 100 et C=2000. K détermine le gain maximal (si A très fort devant B) et est 2 fois le gain normal (si A = B). C détermine la limite du maximum. Cette formule permet de générer le nouveau score de l’équipe A suite à une rencontre, mais il faut aussi déterminer la modification à appliquer à tous les joueurs.On note \Delta A_i le gain appliqué à A_i. On a la propriété suivante

\sum\limits_{i=1}^5 \Delta A_i = 5*\Delta

  • L’égalité du gain

Une technique facile est de faire le même gain à tous les joueurs. On donne donc Δ à tous les joueurs:

A_i

On a une conservation de la propriété et l’équipe progresse bien de Δ. Il s’agit de la technique utilisée par Valve pour le matchmaking classique. Elle peut être adapté à des matchs où les équipes changent en permanence, mais dans le cas d’une équipe où on veut que le MMR se stabiliser, il faut faire en sorte que les MMR des joueurs convergent avec un nombre de matchs infinis.

  • Convergence du MMR

Dans cette nouvelle technique, un joueur en avance sur le MMR de son équipe gagnera moins qu’un joueur en retard. En effet, un joueur en retard sur la moyenne de son équipe a apporté plus que le niveau dont il était crédité, il devrait donc se rapprocher de ses alliés. Un joueur au dessus du MMR n’a pas été vraiment testé. Il gagne du MMR, mais moins que ses alliés.

Je propose la formule suivante, basé sur de la proportionnalité, et basé sur un gain (similaire dans le cas d’une défaite, inversé) :

\Delta A_i = \left(1 - \frac{A_i}{\sum\limits_{i=1}^{5}A_i }\right)*\Delta *\frac{5}{4}

Voici quelques exemples de modifications de MMR pour une équipe en utilisant Δ = 100.

~ $ python3 mmr.py 2000 2000 2000 2000 2400
[100.96153846153847, 100.96153846153847, 100.96153846153847, 100.96153846153847, 96.15384615384615]
~ $ python3 mmr.py 5000 4000 3000 2000 1000
[83.33333333333334, 91.66666666666669, 100.0, 108.33333333333334, 116.66666666666666]
~ $ python3 mmr.py 2000 2000 1000 1000 1000
[89.28571428571429, 89.28571428571429, 107.14285714285715, 107.14285714285715, 107.14285714285715]
~ $ python3 mmr.py 5500 4700 3800 4200 4400
[94.5796460176991, 99.00442477876106, 103.98230088495575, 101.76991150442477, 100.6637168141593]

Il ne s’agit que d’exemples, et on peut construire la même chose pour une perte de MMR de l’équipe dans le cas d’une défaite. Un joueur avec un MMR plus élevé perdra alors plus de points que les équipiers les plus faibles. Avec un tel système, les MMR des joueurs finissent par converger et une équipe qui joue de nombreux matchs avec les mêmes joueurs finira par être homogène dans le score.

Je pense même qu’une répartition des points de cette façon peut-être fonctionnelle pour des matchs sans équipes (type matchmaking), même si elle peut être vue comme du « communisme du MMR », étant donné qu’elle ne va pas en faveur des hauts MMR.

Un autre format de Tournois

Je vais vous proposer une nouvelle (encore!) possibilité de tournois avec seed « en hauteur », différente de l’arbre unique à seed en hauteur. Il s’agit d’un arbre de poules, avec seed en hauteur.

Pour rappel, voici un exemple de l’arbre que je proposais avec 64-96 Teams

L’idée est de répondre à des points précis: les équipes les plus faibles rencontrent des équipes de leur niveau et seul les meilleures vont affronter des équipes de plus haut niveau. Chaque équipe doit pouvoir jouer un certain nombre de matchs, surtout dans un système à MMR qui évolue à chaque rencontre, la hype de la fin d’arbre est nécessaire pour un tournois.

Je considère l’exemple de 64 équipes, même si l’idée peut-être adaptée à plus/moins d’équipes. De plus, le système repose sur un choix de division des équipes, un choix du nombre d’équipes montantes, et de la taille des poules. Je donne un exemple suivant. On divise les équipes en trois classes, le top 8 (A = 8 équipes), le 9 à 32 (B = 24 équipes), et les restantes (C = 32 équipes).

  • Le premier round, les équipes C sont réparties aléatoirement dans 8 poules de 4 équipes. Elles s’affrontent alors (3 matchs par équipes) et la première équipe est qualifiée pour le reste du tournois.
  • Le second round est constitué des meilleures du round 1 et du groupe B, c’est à dire de 8+24 = 32 équipes. Elles sont réunies dans 8 poules de 4 équipes (3 matchs par équipes). La première équipe de chaque poule passe au niveau suivant.
  • Le troisième round est constitué des meilleures équipes du round 2 et du groupe A, c’est à dire de 8 + 8 équipes. Elles sont réunies dans 4 poules de 4 équipes (3 matchs par équipe), par seed organisés (les 2 premiers ne sont pas dans la même poule). La première équipe de chaque poule passe au niveau suivant.
  • L’arbre finale: il commence en demi finale avec 4 équipes.

Exemple d’arbre à Poules

Le nombre d’équipes qui montent, la taille des poules et leur nombre est à fixer. Cela peut apparaître comme beaucoup de matchs, et ça peut ne pas tenir en une seule journée. Il faut bien comprendre qu’une partie des matchs peuvent être jouer en parallèle. Ainsi, les seed des poules supérieures peuvent s’affronter en attendant l’arrivée d’un qualifié, et les matchs peuvent commencer dès son arrivée.

Les phases finales pourraient être faîtes un autre jour ? Le lendemain ? A fixer.

Phil

 

Théorisation d’un système pour les Tournois FR

Bonjour à tous,

La communauté FR se réunit maintenant autour de la très bonne démarche de la FroggedTV de former des tournois « oneshot » et des tournois type majors. Je propose ici un système d’organisation autour de ces tournois pour les rencontres entre équipes, qui changent en général beaucoup.

Classement des Équipes

Étant donné la forte volatilité des équipes, il est nécessaire de classer les participants avec une agrégation des scores des joueurs. Donc les résultats passés doivent servir à évaluer la position à adopter pour les tournois futurs.

  • Première option: un système de points. Les résultats des anciens tournois donnent des points (par joueurs) et ils sont alors individuellement classés. Les points d’une équipe formé avant un tournois sont la moyenne des points individuels. Ce système créé une inflation des points (les joueurs étant là depuis plus longtemps ont plus de points) mais peut-être modifié en ne considérant que les tournois les plus récents (points sur les 2 derniers tournois). On en revient à un système de MMR.
  • Seconde option (mon choix): chaque joueur a un MMR (début à 3K). Une équipe est la moyenne des MMR des joueurs, peut importe si elle est nouvelle ou non. Cependant une équipe a d’écrit sur son profil la date de dernier changement de joueur (pour les majors). Lors de rencontres, le MMR d’une équipe évolue avec modification du MMR des joueurs. On obtient un classement pour les joueurs (peu utile) et pour les équipes (très utile).

Les tournois « One-shot »

Un certain nombre d’équipes s’inscrivent, nouvelles ou non. Il faut alors former un arbre qui permet aux équipes à bas MMR de rencontrer des équipes à bas MMR, mais également de découvrir du nouveau en rencontrant du plus haut MMR si ils ont des bonnes performances. Je propose un système de seed avec introduction plus haut dans l’arbre.

Avant le tournois, on peut former un classement de toutes les équipes inscrites utilisant leur MMR. Je vais présenter le système pour un cas de 64 équipes inscrites.

On produit ensuite un arbre avec des seeds plus en hauteur. Voir Figure 1. Il est possible de gérer la granularité des seeds, mais le 32+16+8+8 me semble approprié. Il est également possible de faire un arbre secondaire classique avec les perdants des matchs 1 et 2 (arbre de 32 équipes).

20160507_184857

Figure 1: Arbre principal

Chaque match met à jour le MMR des joueurs constituant les équipes.

Les Majors FR

Avant les majors, les équipes les plus hautes en MMR et n’ayant pas changé depuis une date limite sont invités. Leur nombre est à définir. Si on veut des qualifiers, on peut faire un tournois « One-Shot » et inviter les teams les plus hautes. Par exemple, si il reste 4 places, les équipes gagnantes du match 6 sont invités.

Je pense qu’il faut les Majors FR entre les Majors Valve pour la simple raison que on peut rêver voir une team FR se concentrer sur ces événements.

Les Minors FR

Je ne suis pas spécialement pour des minors, mais plus pour de nombreux tournois « One-shot ». Les majors à eux seuls seront une très grosses avancée pour la communauté FR et je remercie la FroggedTV pour cette idée et les tournois « One-shots » à venir.

Si ils décident vraiment d’en faire, je pense que les Minors devraient être avant les Majors Valve, histoire de monter la « hype ».

Comment mettre cela en place ?

Le problème d’une telle structure est qu’il faut créer une plateforme web qui va le gérer pour nous. On ne peut pas utiliser Toornament (très bonne plateforme pour les tournois) avec ce genre de structure fortement « custom ».

Je pense évaluer les besoins qu’il faut pour créer ce projet, et si c’est la direction choisie, je pourrais la mettre en place relativement rapidement (1 mois ?).

Philaeux

Retour sur mes vidéos Dota

Bonjour,

J’ai fait quelques vidéos Dota en FR que vous pouvez retrouver dans cette playlist. Il s’agit de quelques tutoriaux à propos de points en particuliers sur Dota. L’expérience m’a permis de comprendre quelques difficultés sur le montage vidéo et je ne suis pas très content du résultat (sa qualité). Du coup je pense reprendre depuis le début en soignant davantage la production. Enfin, je vais faire les vidéos à la fois en français et en anglais. Je ne veux pas abandonner le public français, et je veux également toucher le plus de monde possible. Cela me semble une bonne idée étant donné ma relative maîtrise de la langue anglaise.

Phil

Notation de stream sur The Cluster

Bonjour,

J’ai ajouté un système de notation à The Cluster. Un utilisateur logué peut noter un stream de 1 à 5 (inclus). La moyenne et affichée en utilisant les notes de tous les utilisateurs. Je ne suis pas sûr que cette feature soit  « bug-free » mais l’avenir nous le dira.

Il y a également un nouveau système de sauvegarde de filtres. Il est basé sur les contrôles groupes des jeux RTS (SHIFT + Numéro) pour sauvegarder des filtres. Si logué, les filtres sont sauvegardés sur le serveur. La touche 0 remet à zéro les filtres.

Have Fun,
Philaeux