Skip to main content
r/chessprogramming icon

r/chessprogramming

members
online

Adaptive difficulty below Stockfish Skill 0: linear blend of engine moves and random legal moves Adaptive difficulty below Stockfish Skill 0: linear blend of engine moves and random legal moves

Posting about the adaptive difficulty approach I used in Chess Rocket (open-source chess tutor) because the sub-1320 Elo calibration problem doesn't get discussed much.

Stockfish UCI skill levels (0-20) map roughly to 1100-3500 Elo. Skill 0 plays around 1100. That's too strong for a 400-500 rated player, and the skill degradation isn't linear at the low end. It drops off steeply and unpredictably.

My approach for the 100-1320 Elo range: the engine picks its best move via depth-limited search, then with some probability replaces it with a random legal move. The probability is linear in Elo. At 100 it's near 1.0 (almost all random). At 1320 it's 0.0 (pure Stockfish Skill 0). Simple interpolation between those endpoints.

This gives much finer-grained difficulty where it matters most, at the beginner level.

Above 1320, I just use Stockfish's native `UCI_LimitStrength` and `UCI_Elo`, which work well in that range.

Other pieces in the project:

Opening database: 3,627 openings from Lichess, stored in SQLite. Searchable by ECO code, name, or partial move sequence.

Mistake tracking: SM-2 spaced repetition. Each mistake stores interval, ease factor, and repetition count. Positions resurface at the calculated review time, same scheduling logic as Anki.

Puzzle system: 284 puzzles across 9 sets (forks, pins, skewers, back-rank mates, beginner endgames, opening traps, etc.). Sourced from Stockfish self-play, Lichess DB, and constructed positions.

The chess tools are exposed to Claude via FastMCP (17 tools total). Claude does the coaching; Stockfish does the evaluation. They don't overlap.

GitHub: https://github.com/suvojit-0x55aa/chess_rocket

If anyone has tried different approaches to the sub-1320 problem or has thoughts on the blending math, I'd like to hear about it.


Protect what matters most this year. Compare life insurance quotes with Policygenius and see if you could save up to 50% on premiums.
Image Protect what matters most this year. Compare life insurance quotes with Policygenius and see if you could save up to 50% on premiums.



I built a Soviet chess computer simulation with a commentary system that roasts you in real time I built a Soviet chess computer simulation with a commentary system that roasts you in real time

I've been working on Pioneer 2 : a chess program disguised as a fictional Soviet chess computer from the Cold War era. CRT interface, green phosphor glow, the whole aesthetic. The part people seem to enjoy most is the commentary system.

The machine comments on every move, yours and its own, with deadpan Soviet humor: - "This variation was solved before you were born." - "Your bishop has been nationalized." - "King secured behind the iron curtain." - "This move serves the plan. You cannot see the plan. That is the plan."

The engine itself is written in Python with PVS, null-move pruning, LMR, and PeSTO evaluation. It's not going to beat Stockfish, but it plays a solid game at club level and the commentary makes every move entertaining. gor the Boss Level i developed an engine in C that interacts with the code we wrote to reproduce human Grandmaster playing style. 6 difficulty levels, 19 languages, opening book, runs offline on Windows.

Free download: https://arnebailliere-oss-svg.github.io/pioneer2/

Would love feedback from this community!