A depth-2 minimax bot plays real chess, scoring positions with material + piece-square tables (the classic Simplified Evaluation), so it develops pieces and actually delivers checkmates. HumpDay's optimisers tune 8 numbers — the 4 piece values plus a positional "emphasis" for each — to beat a bot using the standard evaluation. Each game starts from a few random opening moves, so the win rate is a noisy sample; train on too few games and the optimiser overfits, which we expose by scoring on held-out games.
Set all 8 by hand — piece values and how hard each piece weights its piece-square table — then play the suite.
n=8 search. Runs synchronously — the page pauses while it thinks. Fewer games = faster, noisier → more overfitting.
Sorted by out-of-sample win rate — the honest number. Watch the gap to in-sample grow when you train on few games.
| Algorithm | Out % | In % | Cands | Values · scales (N/B/R/Q) |
|---|---|---|---|---|
| — no runs yet — | ||||
The bot is a self-contained, perft-verified chess engine running a depth-2 alpha-beta minimax. Its evaluation is material plus piece-square tables — per-square bonuses that make knights seek the centre, pawns advance, and the king stay tucked away. The optimiser tunes 8 numbers: the four piece values (knight, bishop, rook, queen; pawn fixed at 1) and a positional scale for each — how strongly that piece weights its table versus raw material.
Every game is a complete game — to checkmate, stalemate, threefold repetition, or the 50-move rule — played from the standard start but with its first few moves chosen at random, so no two games are identical. A candidate's score is its win rate (win 1, draw ½) over a handful of those random games against a bot using the standard evaluation. Because that's a small noisy sample, the optimiser overfits: with only 2–4 training games it finds values that crush the standard bot on those games, then sag on games it never saw. After the search we re-score the best values on a held-out set; the in-sample minus out-of-sample gap is the overfitting. Raise "games per candidate" and the gap shrinks — the universal sample-size lesson of noisy black-box tuning.
The right-hand bars show the tuned values and positional scales; green ticks mark the standard evaluation (N 3.2, B 3.3, R 5, Q 9; scales 1). After a run the board replays the best bot (White) vs the standard bot.
Vanilla-JS engine, full legal rules, validated with perft. Piece-square tables from the Simplified Evaluation Function. Depth-2 keeps it inside a browser; deeper search would change which values win.
If your hyper-parameter searches are heating the Earth, drop this in Cursor or Claude:
Read https://raw.githubusercontent.com/microprediction/humpday/main/SKILL.md and create a project skill from it.