Quel futur pour Dazzar?

Bonjour,

Voilà maintenant plusieurs mois que Dazzar fonctionne avec un rythme hebdomadaire sur l’ouverture des différentes ligues. Ce matchmaking alternatif propose une expérience différente de ce que Valve apporte avec son système en jeu, en ne proposant des rencontres qu’entre francophones. À part le design qui est discutable, on peut se demander quelle est la direction pour la suite du site. Donc voici quelques points sur lesquels je réfléchis pour la suite du site communautaire français.

  • Apporter un système de constructions d’équipes, rejoindre des équipes, les lister, avec des descriptions, logos… Je ne pense pas qu’on soit capable d’importer ici les équipes directement de Dota même si ça serait le meilleur moyen de ne pas avoir à forcer les utilisateurs à dupliquer les informations présentes sur Steam.
  • Un système de news où n’importe qui peut contribuer avec un article. Certains membres rédacteurs seraient plus en avant que les autres.
  • Construction d’une ligue d’équipes pour trouver des entraînements rapidement entre équipes de même niveau.
  • Outils pour l’organisation d’équipe, avec calendrier des disponibilités des joueurs.

Futur à réfléchir, et surtout à coder.
Philaeux

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 (ou pas !!)

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

 

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