About

What is this?

Arena Rankings is an automated ratings service for the arena FPS scene. It discovers and downloads match/tournament pages from plusforward.net, parses the results into structured data, and computes Elo and Glicko-2 ratings that are served through this web site, a JSON API, and Discord/Twitch chat bots. The pipeline is game-agnostic and tracks multiple arena shooters side by side โ€” each with its own leaderboards and ratings.

How ratings are calculated

Elo

Standard Elo with a variable K-factor: how much your rating moves per match depends on your experience and on the tier of the tournament you played.

Base K by experience (games played):

40
< 30 games ยท provisional
24
30โ€“100 games ยท established
16
> 100 games ยท veteran

Tournament tier multiplier (on top of base K):

ร—2.0
Premier
ร—1.5
Major
ร—1.0
Minor / unknown

Final K = base K(games) ร— tier multiplier. Expected score follows the standard logistic curve E = 1 / (1 + 10(R_opp โˆ’ R)/400), and each match updates Rโ€ฒ = R + Kยท(score โˆ’ E). Everyone starts at 1500. These numbers (the K-factors and tier multipliers above) are all tunable โ€” the exact values shown are what this site runs today.

Worked example

Say Alice (1700 Elo, 150 games played) beats Bob (1500 Elo, 40 games) in a premier tournament:

  • Alice: K = 16 ร— 2.0 = 32  ยท  E = 1/(1+10^(โˆ’200/400)) โ‰ˆ 0.76  โ†’  +32 ร— (1 โˆ’ 0.76) โ‰ˆ +7.7
  • Bob:   K = 24 ร— 2.0 = 48  ยท  E = 1/(1+10^(+200/400)) โ‰ˆ 0.24  โ†’  โˆ’48 ร— (0.24 โˆ’ 0) โ‰ˆ โˆ’11.5
  • Alice โ†’ 1707.7  ยท  Bob โ†’ 1488.5

Glicko-2

Glicko-2 is a more careful system. Instead of a single number, every player has three: a rating, a rating deviation (RD) โ€” how sure we are โ€” and a volatility โ€” how consistent they are. It updates once per rating period โ€” currently monthly โ€” using all the games in that period at once (based on the Glicko-2 paper). A system constant, ฯ„ = 1.2, controls how much a player's volatility is allowed to swing between periods (the range is 0.2 = very stable to 1.2 = very volatile).

The constants that describe a player:

1500
Starting rating
all new players begin here
350
Initial RD
maximum uncertainty
0.06
Initial volatility
how jumpy results are
1.2
ฯ„ (tau) ยท volatility limit
0.2 stable โ†’ 1.2 volatile

What the RD really means:

The lower the RD, the more confident we are in a rating. The leaderboard shows the cautious lower end (rating โˆ’ RD), so an uncertain player can't sit artificially high:

Confident โ€” 1800 ยฑ 25tight range โ†’ stable
Fresh โ€” 1500 ยฑ 350huge range โ†’ unknown

Every game played shrinks the range. Sitting out a month grows it again (back toward 350). Only players with โ‰ฅ 30 matches appear on the Glicko-2 leaderboard, so you never see a rating we don't really trust yet.

Worked example

Alice (1700 ยฑ 40) plays 5 matches this month: wins 3, loses 2, against a field averaging ~1550 with their own RDs. Because Glicko-2 weighs each opponent by their uncertainty, beating a high-RD player moves your rating less than beating a proven one.

Result: rating 1700 โ†’ ~1731,  RD 40 โ†’ ~28  (more games = more confidence)

The RD drop matters as much as the rating gain โ€” after more matches, 1731 is a trusted number, not a hopeful one.

Features
Contact & source

Bugs, feature requests and questions are welcome:

Match data is sourced from plusforward.net.