I have a multiplayer game that, similar to chess, will have a win/tie/lose outcome in a 1v1 setting.

I've been looking at Elo versus Glicko & Glicko-2 and it seems Glicko-2 might be a good one to try to implement. However, I am confused on how to build Glicko-2 in a scalable way.

It seems that I have to load all games & players into memory in order to calculate the new ratings of players in a match.

From my understanding, the ratings/deviation are supposed to change the longer a player hasn't played... From my understanding the algorithm 'auto' changes the deviation for players who haven't played.

Is there a kind of O(1) way to apply a glicko rating to the two players of a game and maybe daily run some type of 'decay' on everyone's ratings confidence (for those who haven't played) in a mathematically accurate way?

I'm leaning on sticking with Elo but I know many games have scaled Glicko-2, so I want to try to find a way to do that.

  • \$\begingroup\$ If I'm reading the algorithm correctly, it looks like after each match, you can immediately calculate new rank and deviation values for each player involved in that match, using their previous R & RD values and their time since their previous match. So if that's the case, you don't necessarily need to do any batch processing with all players in memory at a time. Am I missing or misunderstanding something? \$\endgroup\$
    – DMGregory
    Commented Nov 25, 2022 at 23:21
  • \$\begingroup\$ Where does the time since come into play in the algorithm? I guess I'm looking at implementations like github.com/animafps/glicko2.ts and github.com/KenanY/glicko2-lite . These libraries seem to just accept the results not necessarily accept any time aspect... \$\endgroup\$
    – K2xL
    Commented Nov 26, 2022 at 0:25
  • \$\begingroup\$ Time powers the decay mechanic. In the Wikipedia link above, it's the variable t. \$\endgroup\$
    – DMGregory
    Commented Nov 26, 2022 at 0:43


You must log in to answer this question.

Browse other questions tagged .