Rating system

fooskill uses either the Glicko rating system or the Glicko-2 rating system to determine player ratings, and, by extension, player rankings.

Rating periods

Unlike the Elo rating system, ratings are not calculated game-by-game with the Glicko rating systems. Instead, games are clustered into “rating periods” that run for fixed amounts of time; then, all games in a rating period are processed simultaneously.

Rating parameters

Glicko

Glicko calculates two parameters for each player: their rating and their rating deviation. Each player starts at a rating of 1500. Like Elo, if you win a game against a highly rated opponent, your rating will increase more than against an average rated opponent—most of the intuition for the Elo algorithm will hold with the Glicko algorithm.

Each player will also have a rating deviation, which starts (and is capped) at 350; it will decrease the more confident the system is that the player is at their “true rating”. A player’s rating deviation gets smaller the more active they are and the more predictable their game outcomes are; conversely, a player’s rating deviation gets larger the less active they are and the more unpredictable their game outcomes are.

Glicko states that you can be confident that a player’s “true rating” \(r'\) lies within

\[r - 2 \cdot RD \leq r' \leq r + 2 \cdot RD\]

where \(r\) is their rating and \(RD\) is their rating deviation.

Glicko-2

Glicko-2 shares the rating and rating deviation parameters seen in Glicko, and they behave as explained above. It also adds an additional parameter: a player’s rating volatility, which is a measure of how volatile the player’s game outcomes are. This parameter is in general not interpretable in the same way that the rating and rating deviation parameters are.

Which rating algorithm should I use?

Glicko-2 works best when you have ~15–20 games per player per rating period. If your game density is significantly less than this, you won’t see any of the benefits Glicko-2 has over Glicko, and may be better off just using Glicko.