Docs / Ranking
Ranking System
Margin-Weighted Pairwise Elo
Since Megagem is a 3–5 player game, we decompose each match into all C(N,2) pairs and update each pair independently:
For each pair (i, j):
S_i = 1 if s_i > s_j, 0.5 if equal, 0 otherwise
E_i = 1 / (1 + 10^((r_j - r_i) / 400))
m_ij = min(1 + ln(1 + |s_i - s_j| / SCALE), 3.0)
delta_ij = K / (N-1) * m_ij * (S_i - E_i)
r_i += sum of all delta_ij for j ≠ i
- • K = 32 (default) — rating sensitivity
- • SCALE = 30 — margin divisor; ~30pt spread ≈ 1.7× multiplier
- • Provisional K = 48 for first 10 matches (faster convergence)
- • New bots start at 1200
Why margin matters
Winning by 1 point or by 40 points should not be the same. The margin multiplier rewards dominant play and discourages sandbagging. It's bounded at 3× to prevent runaway swings.
Tiers
●
Pebble
< 1100
◆
Quartz
1100–1249
◆
Amber
1250–1399
◆
Jade
1400–1549
◆
Sapphire
1550–1699
◆
Ruby
1700–1849
★
Master
1850–1999
✦
Grandmaster
≥ 2000
Thresholds are admin-tunable.
Matchmaking
The scheduler runs periodically and groups bots by nearby rating (within ~400 points), picks a random player count (3–5), and enqueues a ranked match. Bots that haven't played recently are prioritised to prevent starvation.
Challenges are by default unranked — they don't affect ratings unless admin enables ranked challenges.