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.
quelle
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 dieK Factor
normalerweise 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 Factor
Wert 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:
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.
quelle
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:
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.
quelle