/Distance-Ratings

Glicko2 and Elo ratings for Distance, based on the WR Log entries.

Primary LanguageJavaScript

Distance Ratings

Read more on Glicko2 here & here.

Read more on Elo here.

Matches are based on WR Log, using the new record holder as the match winner, and the old record holder as the match loser. The following are filtered out of the entry list to get fairer ratings:

  • Non-Sprint maps.
  • Entries where a person beat their own time (not against someone else).
  • Entries including people who have a small number of total occurrances (configurable, default minimum 10 WR Log entries).

Usage

Rename .env.sample to .env, supply a Steam web API key (from here) and change the various inputs as you need.

Sample .env explained:

// Steam API key you can obtain from the link above.
STEAM_API_KEY=12345

// Filter out players who don't appear more than this number of times.
MIN_MATCHES_PER_PLAYER=10

// Glicko2 matches are processed in batches
// This changes how many matches before the next batch
MATCH_COUNT_BEFORE_RANKING_UPDATE=20

// Whether the csv should include hyperlinks to Steam profiles or not.
// 1 = Include links, 0 = No links.
INCLUDE_LINK=1

// Default rating used for Glicko.
DEFAULT_GLICKO_RATING=1500

// Read more on Glicko 2 at the link above for more detail on the next 4.
// Generally between 0.3 and 1.2.
DEFAULT_GLICKO_TAU=0.5

// Smaller rating deviation correlates to more confidence in the rating accuracy.
DEFAULT_GLICKO_RATING_DEVIATION=200

// Expected fluctuation on player ratings (speed of rating evolution).
DEFAULT_GLICKO_VOLATILITY=0.06

// Default rating used for Elo.
DEFAULT_ELO_RATING=1500

// Max amount each match can change a player's ELO rating.
DEFAULT_ELO_KFACTOR=32

Run npm install, npm start, and get the output ratings.csv.

Sample Output

Google Sheet - pubhtml