ELO-Algorithmus für den Umgang mit Personen, die nicht oft spielen


9

Ich verwende den ELO-Algorithmus, um Spieler in einem laufenden Pong-Wettbewerb zu bewerten. Die meisten Spieler spielen jeden Tag, aber wir haben einen Spieler, der seit einem Monat nicht mehr gespielt hat. Mein Algorithmus verfolgt derzeit nur die Punktzahlen der letzten 30 Tage. Infolgedessen steigt dieser Spieler schnell durch die Ränge, obwohl er noch nie gespielt hat. Er hat einige seiner ersten Spiele verloren, aber die meisten seiner letzten Spiele gewonnen, was bedeutet, dass seine Verluste aus den Charts fallen und seine Punktzahl infolgedessen steigt.

Offensichtlich funktioniert mein Plan, nach 30 Tagen Punkte abzugeben, nicht. Mit welchen anderen Methoden kann ich Spieler dafür bestrafen, dass sie nicht oft spielen?

Das einzige, was ich mir bisher ausgedacht habe, ist, die Punkte basierend auf dem Prozentsatz zu reduzieren, der auf den Tagen der Inaktivität basiert (dh wenn ein Benutzer seit einer Woche nicht mehr gespielt hat, sind seine Punkte nur 70% des Normalwerts wert. und er müsste X mal spielen, um wieder 100% Punkte zu bekommen).

Dies scheint jedoch zu willkürlich. Hat jemand bessere Ideen oder Vorschläge für den Umgang mit inaktiven Spielern in einer ansonsten aktiven Umgebung?

Danke im Voraus.

Antworten:


18

Es hört sich so an, als würden Sie die Punkte speichern, die für jedes Spiel vergeben wurden, und diese Punktanpassungen dann im Laufe der Zeit "ablaufen" lassen. Was, wie Sie bemerkt haben, leicht ausgenutzt werden kann.

In einer Standard-ELO-Implementierung ist Ihre ELO-Punktzahl für immer. Es "verfällt" nicht im Laufe der Zeit, da Punkte, die das Rangsystem auf diese Weise verlassen, letztendlich zu einer Deflation der Gesamtpunktzahl führen (dh: 1500 bedeutet nicht mehr "Durchschnitt").

Denken Sie daran, dass ELO-Ranglisten keine "Punkte" sind, wie die Spieler sie normalerweise sehen. Sie sind ein Versuch, das Können eines Spielers im Verhältnis zu anderen Spielern einzustufen. Sie sind keine Belohnung. Diese Punkte sollten nicht als Strafe für den Spieler weggenommen werden, da sie das einzige Werkzeug sind, mit dem Sie versuchen können, Spieler gegen Gegner mit ähnlichen Fähigkeiten einzusetzen. Das einzige, was diese Werte jemals beeinflussen sollte, sind Gewinne und Verluste gegen andere Ranglisten-Spieler.

Der Ansatz der meisten Spiele, die verhindern möchten, dass Spieler eine hohe Punktzahl erreichen und dann verschwinden, um nie wieder zu spielen, besteht darin, eine Aktivitätsanforderung für die Anzeige der Bestenliste zu haben. Wenn ein Spieler seit 30 Tagen kein Spiel mehr gespielt hat (oder was auch immer), wird er erst dann in den Bestenlisten angezeigt. Wenn der Spieler zurückkehrt und ein anderes Ranglistenspiel spielt, kehrt er mit seiner vollständigen ELO-Rangliste zurück, genau so, als wäre er nie gegangen. Wenn sich ihre Fähigkeiten im Vergleich zu anderen aktiven Spielern in der Zwischenzeit geändert haben, wird das Spiel dies schnell bemerken und ihre Rangfolge durch den Standardprozess des Gewinnens und Verlierens von Spielen gegen Gegner anpassen.


1
+1 Während dies die richtige Erklärung dafür ist, warum dies fehlschlägt, würde ich stattdessen einfach die ELO fallen lassen und mich für etwas völlig anderes entscheiden. (Ich weiß nicht was, sonst hätte ich es gepostet ^^)
o0 '.

4
@Lohoris Das wäre eine absolut vernünftige Entwicklungsentscheidung. Wenn das Ziel nicht darin besteht, einen aussagekräftigen Vergleich der objektiven Fähigkeiten der Menschen im Verhältnis zueinander aufrechtzuerhalten (dh für Matchmaking-Zwecke), ist ELO keine gute Wahl für die Verwendung als Bewertungsmechanismus. Und es gibt sogar einige Spiele, die ein System wie ELO unter der Haube für Matchmaking verwenden, während sie ein völlig anderes "Punktesystem" für Anzeigezwecke verwenden, mit dem sie Leute für häufigeres Spielen belohnen können. StarCraft 2 macht dies zum Beispiel.
Trevor Powell

4

Algorithmen wie Elo und TrueSkill bestimmen die Fähigkeiten eines Spielers basierend auf dem Ergebnis jedes gespielten Spiels, ohne Rücksicht auf den Zeitablauf. Beide Algorithmen haben jedoch einen "Unsicherheits" -Faktor - im Fall von Elo gibt es einen K Factor, der normalerweise für neue Spieler hoch eingestellt ist, so dass ihre Elo-Bewertung schnell mit ihrer "wahren" Fähigkeitsbewertung konvergiert. Nach einer festgelegten Zeit oder einer festgelegten Anzahl von Spielen wird die K Factornormalerweise reduziert, sodass sich die Bewertung zwischen den Spielen weniger ändert.

Was Sie sehen, ist wahrscheinlich ein typisches Elo-Verhalten (abhängig von Ihrer Elo-Implementierung): Ihr Spieler hat weniger Spiele gespielt als seine Konkurrenten, was ihn zu einem "neuen Spieler" mit einem höheren K FactorWert macht. Da er seine Spiele gewinnt, sieht ihn der Algorithmus als einen höher qualifizierten Spieler und verleiht ihm einen höheren Rang!

Beachten Sie, dass Ranglistenalgorithmen im Allgemeinen nur für Vergleiche zwischen Spielern verwendet werden und nicht , um das Ergebnis von Wettbewerben aufgrund ihres Verhaltens zu bestimmen. Wenn Sie die Teilnahme belohnen möchten, würde ich empfehlen, die Spieler im Wettbewerb auf andere Weise zu bewerten. Einige Vorschläge:

  • Bewerten Sie die Spieler anhand der Anzahl der Siege.
  • Weisen Sie Gewinnen / Verlusten Punktwerte zu, z. B. 2 Punkte für einen Gewinn, 1 Punkt für einen Verlust.
  • Zählen Sie nur die besten X-Spiele des Spielers in einer bestimmten Woche / einem bestimmten Monat.
  • Spieler müssen eine Mindestanzahl von Spielen spielen, um sich zu "qualifizieren".

Beachten Sie, dass keine dieser Lösungen zu einem vollständig "fairen" Ergebnis führt, da Spieler, die mehr spielen, eine höhere Punktzahl erzielen als Spieler, die dies nicht tun. Die einzige Möglichkeit, Fairness zu gewährleisten, besteht darin, dass die Spieler eine identische Anzahl von Spielen spielen.


Ich denke, es ist nur fair, dass Spieler, die mehr spielen (bei gleichem durchschnittlichen Gewinn / Verlust-Verhältnis), eine höhere Punktzahl haben sollten als Spieler, die nicht so viel spielen ...
David Gouveia

3
@davidluzgouveia - das ist nicht unbedingt die Definition von "fair". Wenn Spieler in einem Turnier gewertet werden, ist das Ergebnis "fair", wenn kein Spieler einen Vorteil hat, den ein anderer Spieler nicht hat (ohne Rücksicht auf seine Fähigkeiten). Trotzdem denke ich, dass der Fall, über den wir sprechen, ein gelegentlicher Wettbewerb zwischen Freunden ist; Bei der Wertung geht es mehr um die Förderung der Teilnahme als um den direkten Gewinn.
Blair Holloway

Ja, dies ist eher ein Gelegenheitswettbewerb als ein strenges Turnier. Ich stimme natürlich Davids Kommentar zu, weshalb ich hier nach einer Lösung suche. Danke für deinen Beitrag!
Jemaclus

0

Ich weiß nichts über den ELO-Algorithmus, aber wie wäre es, wenn Sie nicht Leute bestrafen, die nicht oft spielen, sondern Leute belohnen , die oft spielen? Zum Beispiel, wenn Sie Ihre Punktzahl wie folgt gemacht haben:

Score = (Wins / Losses) * (Total Games Played) * Some_Scale_Factor

Dann würden Leute, die oft spielen, wahrscheinlich mehr Spiele spielen und mehr Chancen haben, eine höhere Punktzahl zu erreichen.

Und eine andere Sache, die Sie möglicherweise ändern möchten, ist zu verhindern, dass das Löschen alter Punkte einen Einfluss auf die Gesamtpunktzahl des Spielers hat. Das ist der Hauptgrund, warum dieser Spieler in den Rängen aufsteigt (und auch, warum er irgendwann komplett aus den Charts fallen wird).

Auch Menschen, die eine Weile ernsthaft spielen und eine großartige Erfolgsbilanz vorweisen können, werden wahrscheinlich nicht glücklich sein zu wissen, dass ihre Erfolge irgendwann verblassen und verschwinden werden. Dieses System ist ernsthaft entmutigend.

Dies lässt sich leicht beheben, indem Sie einen Cache mit den "insgesamt gespielten Spielen" und dem "Gewinn / Verlust-Verhältnis" jedes Spielers behalten, selbst nachdem Sie die Ergebnisse selbst gelöscht haben.

Mit diesen Informationen können Sie leicht zurückverfolgen, wie viele Gewinne und Verluste der Spieler hatte, und sie entsprechend aktualisieren, wenn er erneut spielt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.