Fair Play
How scores are verified
Ranked scores (Levels and Daily) are verified server-side. The server controls every part of a ranked session:
- Server timestamps — sessions start, pause, and finish against the server clock, so elapsed time can't be rewound.
- Move replay — your moves are replayed on the server to count mistakes and confirm the solve.
- Solution check — a score only submits when the finished grid matches the puzzle's one valid solution.
- Duplicate prevention — each session can be submitted once, and one account gets one daily score per day.
- Rate limits — session and submission frequency is capped to keep the leaderboard usable.
Practice never affects rankings
Practice mode is never ranked and never records progress. Games played in Practice create no session, post no score, and can't appear on any leaderboard.
Hints
In ranked modes a hint reveals a cell and reduces your score by 10% each — using one hint multiplies your score by 0.9, two hints by 0.9², and so on. Hints are not available in Practice.
Honest limits of client-side protection
The client submits moves for server verification, but it runs in your browser, and the code is open source. A determined user can inspect the client. What protects the leaderboard is not the client but the server: scores are computed and verified server-side, so tampering with the client can't inflate a submitted score. That said, no web app is completely ungameable — the verification described above is a strong deterrent, not a guarantee.
The scoring formula
Each puzzle has a base score and a par time by difficulty. Your score is:
score = floor(base × timeFactor × 0.95^mistakes × 0.9^hints)
- timeFactor =
clamp(1.5 × par / (elapsed + par), 0.3, 1.0)— solving at par gives 0.75×, faster solves approach 1.0× (capped there), and very slow solves bottom out at 0.3×. - mistakes — conflicting placements, counted by replaying your moves on the server. Each mistake multiplies your score by 0.95.
- hints — each hint multiplies your score by 0.9.
| Difficulty | Base score | Par time |
|---|---|---|
| Easy | 1000 | 360s (6 minutes) |
| Medium | 1500 | 600s (10 minutes) |
| Hard | 2000 | 900s (15 minutes) |
| Expert | 2500 | 1200s (20 minutes) |