How Elo works
Chessception uses a standard Elo rating system — the same mathematical model used in chess, tennis, and competitive gaming worldwide. Your rating is a single number that estimates your skill relative to every other ranked player. Win against stronger opponents and you gain more. Lose to weaker ones and you lose more.
Starting rating: All new players begin at 1200 Elo. This places you in Novice tier from game one. Your rating will move quickly during the provisional period as the system calibrates to your true skill level.
K-Factor
The K-factor controls how fast your rating can change. A high K-factor means bigger swings — important when you're new and the system is still learning your skill. A low K-factor stabilises the rating of established players.
| Condition | K-Factor | Reason |
| Fewer than 30 ranked games played |
40 |
Provisional — high volatility to reach true skill quickly |
| Rating ≥ 2000 (Advanced tier and above) |
10 |
High-skill ratings are hard-earned and stabilise faster |
| All other players |
20 |
Standard — balanced between responsiveness and stability |
Why does this matter? A new player (K=40) who upsets someone rated 200 points above them gains roughly +33 Elo in a single game. The same upset by a settled player (K=20) earns only +16 Elo. Your first 30 games are your fastest path to your true tier. Once you reach Advanced (2000+), K drops to 10 — ratings become very stable.
Rating examples
Concrete numbers to show how Elo moves in practice. Both players below are standard-K (K=20, more than 30 games played).
| Your rating | Opponent rating | Result | Your ΔR |
| 1200 | 1200 | Win | +10 |
| 1200 | 1200 | Loss | −10 |
| 1200 | 1200 | Draw | 0 |
| 1200 | 1400 | Win (upset) | +16 |
| 1200 | 1400 | Loss (expected) | −4 |
| 1400 | 1200 | Win (expected) | +4 |
| 1400 | 1200 | Loss (upset) | −16 |
Beating stronger opponents always rewards more than beating equals. Losing to weaker opponents always costs more. This is what makes the Elo system self-correcting.
Placement games
When you enter ranked play for the first time, your first 10 games are placement games. They determine your initial settled rating before you appear on the leaderboard.
1
You start at 1200 Elo. Your rating is calculated normally (K=40) from game one — it just isn't shown publicly until placements are complete.
2
During placements you are matched against other players normally via the Elo matchmaking system. Your placement result depends on whether you win or lose, not on some fixed placement bracket.
3
After game 10 your rating is published to the leaderboard. You will still have 20 more K=40 games (up to 30 total) before the system considers you settled.
Season resets: At the start of each season all ratings are soft-reset toward 1200 — specifically, the gap between your rating and 1200 is halved. A player at 2400 (Master) resets to 1800 (Skilled). This compresses the ladder and gives everyone a fresh climb.
Provisional period
The provisional period covers your first 30 ranked games. During this window:
- K-factor is 40 — your rating moves roughly twice as fast as a settled player.
- A "provisional" badge appears on your profile to signal to opponents that your rating is still calibrating.
- Your rating does count for matchmaking from game one — you will be matched against players near your current rating, whatever it is at the time.
- Elo cannot go below 100 during the provisional period to prevent new players from bottoming out from a rough start.
Tip: The fastest way through your provisional period is to play consistently and avoid long breaks between sessions. Rank quickly, then your rating stabilises with K=20.
Rank tiers
Your tier is a label that corresponds to your current Elo rating. It updates instantly — there is no "promotion series" or lock-in. If your rating crosses a threshold, your tier changes on the next page load.
⚙️
Beginner
< 1200
Learning the game. Focus on mechanics over results.
K = 40 / 20
🪵
Novice — starting tier
1200 – 1399
Where all new players land. Developing fundamentals.
K = 40 / 20
🥉
Apprentice
1400 – 1599
Growing tactical awareness. Basic AoE usage emerging.
K = 40 / 20
🥈
Intermediate
1600 – 1799
Consistent play. AoE timing and buff management are reliable.
K = 40 / 20
🥇
Skilled
1800 – 1999
Above average. Multi-kill setups and deliberate pawn structures.
K = 40 / 20
💠
Advanced
2000 – 2199
High-skill. Deep strategic play and endgame precision. K-factor drops here.
K = 40 / 10
💎
Expert
2200 – 2399
Elite. Near-perfect AoE reads and opener execution.
K = 10
🔮
Master
2400 – 2499
Top 1%. Tournament-level positioning and adaptation.
K = 10
👑
Grandmaster
2500 – 2699
Peak rated. Highly stable rating — hard to gain, harder to lose.
K = 10
✨
Legendary
2700 +
The absolute top of the ladder. Fewer than a handful of players.
K = 10
K values show provisional (first 30 games) / settled. The K=10 settled rate kicks in at 2000+ (Advanced and above).
Rating decay
To keep the ladder competitive, inactive Platinum+ accounts slowly lose rating over time.
| Inactivity period | Action |
| 14 days without a ranked game | Warning shown on dashboard |
| 21 days (Intermediate – Skilled, 1600–1999) | −10 Elo per additional 7 days of inactivity |
| 21 days (Advanced and above, 2000+) | −20 Elo per additional 7 days of inactivity |
Floor protection: Decay cannot push you below the floor of your current tier. A player at Intermediate (1600) will not decay below 1600, even after months away. Novice, Apprentice, and Beginner have no decay at all.
Queue algorithm
When you click Online Match, the server immediately fetches your current Elo from the database and starts searching for an eligible opponent. Matching is skill-first — the system always selects the closest Elo candidate within your tolerance window, never the player who has been waiting longest.
How a match is made
- DB lookup — your Elo is retrieved (or a 1200 default used if the DB is temporarily unavailable).
- Immediate scan — the queue is scanned for any player whose Elo is within ±100 of yours. If multiple qualify, the closest is selected.
- Match created — both players receive a
matchFound message with their colour and the opponent's rating. Colours are randomised 50/50.
- If no match found — you are added to the queue and receive a
waiting message with your current Elo and the initial search range.
Closest-Elo selection: If three players are waiting — 1150, 1220, and 1300 — and you are 1200, the system picks 1220 (difference of 20) over 1150 (difference of 50) even though 1150 joined the queue first. Queue age only matters as a tiebreaker.
Tolerance expansion
If no match is found immediately, your search window expands automatically every 15 seconds so you always find a game — even at extreme ratings with few concurrent players.
t = 0 s
± 100 Elo
Initial window. Very well-matched games.
t = 15 s
± 150 Elo
First expansion. Still tightly matched.
t = 30 s
± 200 Elo
Roughly one full tier difference.
t = 45 s
± 250 Elo
Still within two tier boundaries for most.
t = 75 s
± 350 Elo
Wide net — most players in queue will qualify.
t = 90 s +
± 500 Elo (cap)
Maximum range. At this point you will match anyone in the queue.
The background matching tick runs every 5 seconds, so in practice you may be matched up to 5 seconds after your range expanded enough to cover a waiting opponent.
Queue signals
The game client receives live updates while you wait so you always know what's happening.
| Message type | When sent | Contents |
waiting |
Immediately on joining the queue |
Your Elo, initial search range (±100) |
queueStatus |
Every 5 s while waiting |
Seconds waited, current search range, your Elo |
matchFound |
When a pairing is made |
Your colour (white/black), room ID, opponent's Elo |
Disconnection handling: If you disconnect mid-queue, the server detects your closed connection within 5 seconds (next background tick) and removes you automatically. Re-joining starts a fresh queue entry.
Turn timer & time bank
Every ranked game is governed by a per-move clock and a small personal time bank. Both are server-enforced — the client cannot manipulate them.
| Setting | Value | Notes |
| Turn time |
30 s |
Resets to 30 s at the start of each new turn |
| Time bank |
15 s |
Personal reserve drawn when the 30 s turn clock hits zero |
| Match limit |
60 min |
Hard wall on total game length — drawn if reached (rare) |
How the clocks interact
- When your turn begins the turn clock starts counting down from 30 s.
- If you move before it expires, the clock resets for the next turn. Your time bank is untouched.
- If the turn clock hits 0 s, the server draws from your time bank one second at a time. The turn display shows the bank draining from 15 → 0.
- When both the turn clock and time bank are depleted, a timeout fires (see Strikes below).
Time bank does not regenerate. Once spent, those seconds are gone for the rest of the game. Use it deliberately on genuinely complex positions — don't bleed it on move 5.
Timer signals sent to the client
| Message | Frequency | Contents |
timerUpdate | Every 1 s | Current turn, seconds left on turn clock, time bank remaining for both players |
timeout | On clock expiry | Which color timed out, strike count, text message |
strikeDecay | Every 10 turns | Updated strike counts for both players |
Strike system
Timeouts don't end the game immediately — they add a strike. Three strikes and you lose. This gives players a small buffer for occasional lapses without enabling indefinite stalling.
| Event | Effect |
| Turn clock + time bank both reach 0 |
+1 strike. Server executes a random legal move on your behalf. |
| 3 strikes accumulated |
Automatic loss. Opponent wins as if they won normally (Elo applied). |
| Every 10 complete turns (both players moved) |
−1 strike from each player (minimum 0). Strike decay rewards sustained play. |
What happens during a timeout
- The strike is recorded and both players receive a
timeout message.
- The server selects a random legal move for the timed-out player from all valid moves on the board. This is server-side only — the client cannot influence which move is chosen.
- The turn advances normally. The timer resets to 30 s for the next player.
- If 3 strikes are now total, the game ends before the random move is executed.
Strike decay example: You pick up 2 strikes in the early game. Over the next 20 turns both strikes are erased (one removed at turn 10, one at turn 20). You start the endgame clean. This prevents one bad stretch from defining the whole match.
Disconnect handling
The server detects a dropped WebSocket connection within its next tick (≤5 s). It immediately pauses the timer and opens a 60-second reconnect window.
| Phase | What happens |
| Connection drops |
Server pauses the turn timer. Opponent receives an opponentDisconnected message and waits. |
| 0 – 60 s |
Reconnect window open. Player can re-join using the same player ID and will be restored to the game mid-turn. |
| Reconnect within window |
Full game state sent to the returning player. Timer resumes from where it paused. No strike added. |
| Reconnect window expires |
+1 strike added. If the game was the disconnected player's turn, a random move is executed. Game resumes for the opponent. 3 strikes total still ends the game. |
Intentional disconnecting is not a viable strategy. Each failed reconnect costs a strike. Two disconnects in one game leave you one timeout away from an automatic loss.
Reconnection procedure
When you reconnect to the game, the server sends a gameState message containing the full board, all piece HP values, turn number, both players' time banks, and current strike counts. The client rebuilds the game exactly as it was — no information is lost.
Common questions
Why did my rating barely change after a win?
You beat someone with a much lower rating than you. Elo rewards beating opponents who are expected to beat you — if E was 0.9 and you won, you only gain K × 0.1 points. Beating equal-rated opponents gives the most consistent gains.
Can I lose rating from a draw?
Yes, if you were the heavy favourite. Drawing against someone rated 400 points below you loses you points because your expected score was nearly 1.0 and you only achieved 0.5.
Does the queue factor in anything other than Elo?
No. The matchmaking system uses only Elo and queue time. Mode (Ranked vs Casual), connection quality, and region are not currently factored into pairing.
What happens if my opponent disconnects?
If an opponent disconnects mid-game, their clock continues. They have a 30-second reconnection window. If they don't reconnect, the game is forfeited and you receive the full Elo gain as if you won from the current board position.
Is there a ranked season?
Yes. Each season runs for approximately 3 months. At the end of a season, the leaderboard is locked and top finishers receive a permanent season badge on their profile. All ratings then soft-reset toward 1200 at the start of the next season.
Can casual games affect my rating?
No. Only Ranked mode games count toward your Elo and tier. Casual and AI games are tracked for stats and archetypes but have zero impact on your rating.