top of page
Search
Writer's pictureLucas Ferrantelli

[FR] Intégrer un système de ELO et inflation

Updated: Nov 8, 2020

Le Système ELO, issu des échecs, a aujourd'hui pris d'assaut le monde du jeu vidéo compétitif. Nous allons voir comment il est intégrable au sein de son jeu, quelles sont les libertés prenables par rapport au système original, comment l'adapter pour qu'il corresponde aux Game Systems de son jeu, et quelles sont les erreurs à ne pas faire.




Pourquoi le ELO


Certains jeux compétitifs n'utilisent pas du tout le système d'ELO, au profit de systèmes souvent bien plus simple à appréhender, alors pourquoi se compliquer avec un système si complexe ?


Tout d'abord, le système ELO n'est en réalité que peu complexe, surtout en comparaison des avantages qu'il propose.


En effet, le ELO est utilisé car il est efficace. Il permet de facilement :


A. Classer tous les joueurs


En effet, cela peut paraitre bête, mais il n'y a en réalité peu de systèmes de classement efficaces pouvant inclure l'intégralité des joueurs le constituant.


Souvent, quand je déclare cette affirmation, on me répond qu'on peut remplacer le ELO par une comparaison bête et méchante de taux de victoire par exemple. Pourtant, les comparaisons de performances n'est pas une manière de classement efficace. En effet, un joueur ayant fait 2 parties peut avoir 100% de victoire, et donc être en haut du classement.


Un autre système de Ranking qu'adorent les joueurs, est un système très simple : victoire vaut 1 point, défaite vaut -1 point. J'adore ce système, mais il comporte pourtant énormément de problème dans ce cadre : déjà, il ne permet pas d'efficacement classer les joueurs : deux joueurs peuvent facilement avoir le même score. Alors que le ELO utilise une échelle bien plus large. Secondement, ce système ne prend pas en compte le joueur contre qui vous avez joué. Ainsi, on récompense autant une victoire contre un très bon joueur qu'un novice.


Je pourrais continuer à présenter de mauvais systèmes, mais je pense que le ELO est suffisamment intéressant pour qu'on décide de passer du temps à le présenter.



B. Prévoir la progression dans le classement


L'avantage du ELO, est que vu qu'il suit des règles mathématiques simples, il est facile de le simuler, permettant de gérer l'expérience du joueur.


C. Gérer les égalités


Le ELO gère 3 issus à un match : victoire, défaire, et égalité, que sont les 3 issus d'une partie aux échecs. L'avantage du ELO, est que "égalité" ne correspond pas à "annuler la partie" comme d'autres systèmes de classement : dans le ELO, une égalité peut faire perdre ou gagner des points.


Remarquons que le ELO gère en revanche mal d'autres issus. Peut-être cherchez-vous un système qui prend en compte d'autres paramètres que la simple victoire, ou défaite, ou l'égalité. Il vous faudra dans ce cas travailler un peu et créer une variante du ELO.


D. Un système modulaire


Car oui, le ELO ce n'est que quelques formules, avec beaucoup de variables changeable, et d'opportunité de le modifier sans que cela ne pose trop de problème.


E. Un système ni trop rapide ni trop lent


Le ELO n'implique pas un nombre de parties défini pour arriver en bas ou en haut du classement. Si vous ne modifiez pas trop la formule de base, le ELO gère assez bien la montée et descente dans le classement.


A cela s'ajoute que le ELO permet en très peu de partie de déterminer le classement du joueur.


F. Un équilibre dans le cadre d'un système fermé


Dans le ELO, rien ne se perd, rien ne se créé. Si la somme du ELO de tous vos joueur valait 3 millions il y a 5 ans, elle vaudra toujours 3 millions.


Si vous êtes attentifs, vous aurez remarqués que malheureusement, un jeu vidéo est rarement un système fermé. En effet, de nouveaux joueurs arrivent régulièrement, et d'autres partent. Nous parlerons des solutions à ce problème plus tard.


G. Flow et matchmaking


Finalement, l'avantage principal du ELO dans les jeux vidéo, est la possibilité d'y intégrer aisément un système de matchmaking (qui, contrairement a la croyance, n'est pas directement intégré dans le système de ELO).



C'est quoi le ELO


Durant cette partie, nous nous pencherons sur les formules mathématiques du ELO. Promis, bien qu'elles puissent faire peur, ces formules ne mangent pas. Si en revanche vous n'aimez pas du tout les mathématiques, vous pouvez passer cette partie.



Le principe du ELO est vraiment simple : estimer la probabilité de victoire de chaque parti dans un jeu, puis comparer cette valeur théorique face a l'issue véritable. Si l'issue était prévisible, les joueurs vont gagner et perdre peu de points. Plus l'issue était improbable, plus les joueurs s'échangeront de points.


Le terme d'échange de point ici est important : un joueur gagnera toujours autant de points qu'il n'en a fait perdre à son opposant. C'est ce qui explique pourquoi le ELO fonctionne si bien dans un système fermé : il n'y a pas de création ou de destruction de ELO, juste des échanges.


Sans plus tarder, présentons le système ELO :



A. Initialisation



On donne a chaque membre du système une valeur de ELO de base

(traditionnellement entre 800 et 1200) .


Lors d'un affrontement entre deux joueurs (nommés A et B), on note Ra le ELO actuel du joueur A, et Rb le ELO actuel du joueur B.




B. Calcul des chances de victoire



Il est alors temps de calculer l'issue attendue de cet affrontement (compris entre 0 et 1.

0 signifie qu'un joueur n'a aucune chance de gagner, 1 signifie que le joueur ne peut pas perdre).


On nomme Ea l'issue attendue pour le joueur A :


Ea = 1 / ( 1 +10^((Rb-Ra)/400) )


Screenshot de la formule


Et, évidemment, on note Eb l'issue attendue pour le joueur B, ce qui est la même formule, en inversant juste le terme A par B et B par A



Essayons de comprendre ce qu'implique cette formule :


Sans faire l'équation le prouvant, je vous demande de me croire sur le fait que la somme de Ea et Eb est égal à 1, ce qui est tout à fait légitime, vu que plus un joueur a de chance de gagner, plus l'autre a de chance de perdre, et ce, de manière proportionnelle. Ainsi, Eb = 1 - Ea et vice-versa.



De plus, remarquons que si Rb et Ra sont égaux, on se retrouve avec 1/(1+10^0), ce qui revient a un sur deux. Cela signifie que si les joueurs ont le même ELO, ils ont ont la même chance de gagner que de perdre.



Vous pouvez alors vous viennent faire des nombres aussi arbitraires que sont le 10 ou le 400. Il s'agit ici de variables arbitraires qui définiront le rapport de force au sein du ELO : tout les 400 points de ELO de différence, le rapport de force est multiplié par 10.


Exemple : si on fait s'affronter un joueur a 200 de ELO contre un joueur a 1000, les

chances de gagner d'un des joueurs est d'environ 1%, contre 99% pour l'autre. Si en

revanche, on fait s'affronter un joueur a 600 contre 1000, on obtient 10% de chance

de gagner contre 90%


D'ailleurs, de nombreux systèmes de ELO considèrent qu'une différence de plus de 400 points n'est plus représentative : l'écart est trop grand pour espérer qu'un joueur gagne.


Note : je parle ici de "chance de gagner". Ce terme est un peu malhonnête, car ça n'est pas exactement ce qu'il signifie, je ne réussi en revanche pas à trouver un terme simple pour exprimer ce qu'il signifie. A défaut de mieux, ce terme remplit plutot bien sa fonction.




C. Résultat théorique contre résultat réel



Maintenant que nous avons le résultat théorique de l'affrontement, il ne reste plus qu'à réellement faire s'affronter A et B. Il existe 3 issues possibles : A gagne, A perd, ou A égalise.


Soit Sa l'issue réelle de A.


Si A gagne, Sa = 1

Si A perd, Sa = 0

Si A égalise, Sa = 0.5




Il ne reste donc maintenant plus qu'à regarder si le joueur A nous a "surprit". C'est très simple à faire, on compare le score théorique Ea (compris entre 0 et 1) avec le score réel Sa (compris entre 0 et 1). Pour se faire, il suffit de soustraire l'un à l'autre : Sa - Ea


Si le résultat est supérieur à 0, cela veut dire que le score réel est supérieur au score attendu, et donc que A nous a surprit en bien. A l'inverse, si le résultat est inférieur à 0, A nous a surprit en mal.


On a plus qu'à ajouter ce résultat au ELO au joueur, et à l'enlever au joueur B la même valeur : nos joueurs viennent d'échanger du ELO !


Souvent, on multiplie ce résultat par un coefficient (appelé K), qui permet d'éviter que les joueurs ne gagnent que 1 point par 1 point. La valeur de K est souvent de 32. Les échecs utilisent cette valeur de K = 32, mais la passe a K = 16 pour les joueurs avec énormément de ELO.


Globalement, plus K est élevé, plus il est facile d'échanger énormément de ELO en peu de temps, à l'inverse, plus K est élevé, plus il faudra faire de match pour gagner/perdre beaucoup de ELO.




Comment intégrer l'ELO dans votre système



Voila, maintenant que le ELO n'a plus aucun secret pour vous, il est temps de réfléchir à l'implémenter dans votre système. En effet, le système brut n'est probablement pas la meilleure solution pour vous, on peut être même qu'il n'est pas implémentable tel quel.


A. Jeu d'équipe


C'est évidemment le premier problème auquel on pense : dans le cadre d'un jeu d'équipe, où plusieurs joueurs s'affrontent, comment calcule-t-on le ELO ?


Notons que la solution sera nécessairement discutable. Dans tous les cas, un des membres d'une équipe se sentira lésé si il connaissait le système sous-jacent.


Notons également que plus les joueurs ont des ELO différents, plus l'injustice sera grande. Dans le cas parfait, tous les joueurs des deux équipes ont exactement le même ELO. Plus on s'éloignera de cette situation, moins la solution sera parfaite, d'où l'intérêt de faire un bon matchmaking.


Sans plus tarder, regardons quelques pistes de solution :


La plus intuitive, qui vous est probablement venu à l'esprit, c'est de faire la moyenne de ELO de chaque team et les faire s'affronter entre elle. C'est en effet une très bonne réponse. On calcul le ELO de Team A et de Team B. On les fait s'affronter, on compare le résultat théorique au résultat réel, et on ajoute/soustrait cette valeur au ELO personnel de chaque joueur. Cette solution est très bien dans le sens où elle ne créé pas de ELO ni n'en supprime : elle respecte la règle de stabilité. En revanche, l'injustice des joueurs peut être grande : peut importe le ELO de chaque joueur de la team, ils gagnent et perdent autant de point. Comme si le joueur avec 2500 points de ELO et celui a 800 qui font parti de la même équipe étaient autant responsable de leur défaite/victoire.




Un autre système, c'est de faire abstraction de l'équipe. On classe tous les joueurs de chaque équipe en fonction de leur ELO. On compare ensuite le résultat du joueur avec le plus haut ELO de chaque équipe, de même pour les seconds et ainsi de suite. Un peu comme si chaque joueur n'avait finalement affronté qu'un autre joueur.

Ce système encore une fois, respecte le principe de stabilité. En revanche, je ne le trouve pas pleinement satisfaisant, en effet, il ne prend en compte que un autre joueur.




Le troisième système que je compte vous présenter est moins intuitif. Il consiste à affronter le ELO moyen de l'équipe adverse face au ELO personnel d'un joueur. Imaginez un jeu en 2 contre 2. On a donc 4 ELO différents. Notés Ra1, Ra2, Rb1 et Rb2. A cela s'ajoute le ELO moyen des deux Ra, noté Rta, et Rtb pour l'autre équipe.


On applique ensuite a la formule originale Ra1 contre Rtb. Ra1 contre Rtb, Rb1 contre Rta et Rb2 contre Rta.


Bien que cela ne soit pas évident au premier abord, ce système a lui aussi le mérite de respecter le principe de stabilité. L'avantage de ce système, est que l'on prend en compte ici le ELO moyen de la team adverse. Évidemment, le problème est qu'on ne prend pas du tout en compte le ELO des alliés.





Voilà, je vous ai présenté les 3 méthodes simples que je recommande. Comme vous avez pu le voir, aucune n'est pleinement satisfaisante. Elles ont toutes les trois leurs défauts. A vous de voir laquelle correspond au mieux à votre jeu. Remarquons que le meilleur système pour votre jeu dépend sans doute également de votre système de matchmaking, du nombre de joueur dans chaque équipe, et de la quantité de joueurs dans votre communauté.




B. Changer les constantes


Un sujet un peu moins prise de tête : les constantes !

En réalité, il y a 3 constantes modifiable dans le ELO : le 10 et le 400 de la première formule (Ea = 1 / ( 1 +10^((Rb-Ra)/400) ) ) . Je ne vous recommande pas d'y toucher. En effet, les changer rend juste la valeur finale du ELO contre intuitive. Votre système marchera tout aussi bien, mais l'échelle n'aura plus rien à voir avec celle du système classique. N'importe quel joueur ayant eu affaire a un jeu comportant du ELO sait que 2000 de score c'est très bien, et que 3000 c'est hors du commun. En modifiant ces deux variables, vous aurez juste une échelle peu lisible.


En revanche, la dernière variable, K, est très importante : c'est le nombre de points mis en jeu durant une partie. Comme dit précédemment, il est souvent de 16 ou de 32. Rien ne vous empêche de le modifier. Plus K sera élevé, plus l'importance d'un match sera grande, plus K sera bas, moins le match aura d'importance.


De même, au sein de votre système, vous pouvez intégrer différentes valeurs de K. Souvent, on donne une très grande valeur à K pour les nouveaux joueurs, permettant de rapidement les classer à leur niveau réel.



C. Cumuler le ELO a un autre système


Si vous n'étiez pas familier au ELO, il y a de forte chance que pour vous, il y avait dans le ELO une question de division (Argent, Or, Platine, Diamand, etc.). Pourtant, il n'est jamais question de ce genre de classement dans le ELO. L'existence de ces divisions est une manière de rendre la progression dans le classement plus attractive. En effet, un simple chiffre comme le ELO score n'est souvent pas assez motivante pour les joueurs. La coupler avec un autre système est souvent une bonne idée. Ce système peut être cumulatif ou complémentaire.


De nombreux systèmes utilisent un ELO caché, qui leur permet ensuite de définir le classement de leur autre système.





D. Victoire mitigée ou Perte minime


Comme vu précédemment, le ELO ne gère par défaut que 3 issues : défaite, victoire ou égalité. En réalité, il est possible d'ajouter d'autres issues, l'importance est que le total des issues ai une valeur de 1 (actuellement, Sa est égal à 1 si Sb est égal à 0, et vice versa. Si Sa est égal a 0.5, il en va de même avec Sb). Ainsi, il est possible de créer un cas de victoire mitigée, qui vaudrai par exemple 0.75 . Ou même un système qui ajoute +0.1 pour chaque action remarquable effectuée.


Je précise une fois de plus, il faut que la somme des deux partis soit égal à 1, sinon, vous risquez de "créer" du ELO ou d'en supprimer, menant à des situations d'inflation ou déflation.




E. Inflation, gestion de balance et échange volontaire de ELO


Il est maintenant l'heure des mises en garde. Le système théorique parfait a été présenté, regardons comment il peut être contourné, manipulé et trompé.


Tout d'abord, rappelons que dans un système fermé, le ELO n'est jamais détruit ou créé, il est simplement échangé par les joueurs. Malheureusement, l'arrivée d'un joueur vient rajouter du ELO. La sortie d'un joueur vient supprimer du ELO. Le plus problématique est bien la création de ELO, surtout si elle est faite de manière intentionnelle pour gonfler le ELO d'un autre joueur. Une des solutions efficaces est la création de barrières à l'entrée. Il s'agit de préalables pour offrir du ELO a un joueur (donc un préalable pour qu'il rentre dans le système). Cette barrière peut être monétaire (ex : votre jeu est payant), ou dissuasive, en obligeant le joueur a faire plusieurs parties avant de rentrer dans le système de classement.


Un autre problème du ELO dans sa forme la plus simple, est le fait qu'il n'y a pas de restriction pour l'échange de points. En effet, deux joueurs avec 1000 ELO peuvent théoriquement approcher d'un échange total, amenant un joueur a près de 2000 points et 0 pour l'autre (si vous avez bien les formules dans la tête, vous vous rendez compte que cela sera très long et fastidieux, mais il ne faut jamais sous estimer la détermination des joueurs !). Pour contrecarrer ce problème, il faut nécessairement interdire les échanges de ELO entre joueurs avec un niveau trop élevé (souvent défini à 400).




Finalement, le dernier conseil que je puis vous donner, c'est de souvent réinitialiser le ELO de vos joueurs (ou du moins partiellement). C'est la meilleure manière de s'assurer que votre système ne finisse pas par casser. De plus, créer cette sécurité vous permet de prendre des libertés sur certaines règles fondamentales du ELO, comme le règle de stabilité. Vous pourriez par exemple punir les joueurs qui quittent une partie en leur retirant plus de ELO. A terme, cette pénalité devrait déréguler le ELO de votre jeu, mais si ce dernier est souvent réinitialiser, l'impact n'aura pas le temps d'être perçu à grande échelle.







Voila, c'est la fin de l'article sur le ELO. J'ai essayé de rester un maximum dans la simplicité. Si comme moi, ce système vous fascine, je vous conseille de jeter un oeil sur les analyses complètes du ELO trouvable sur Internet.



Finalement, si vous vous sentez à l'aise avec les mathématiques, et cherchez un autre système que celui du ELO, je vous conseille de jeter un oeil au Glicko 2, qui est un ELO revisté cherchant à réduire les lacunes de ce système.




22 views0 comments

Recent Posts

See All

Comments


bottom of page