♟ Blundermind — Bot Creation & Play Reference

Engine · Personality · Openings · Timing · Pressure

A Blundermind bot is a layered configuration that wraps a chess engine in a personality. Each layer adds constraints and biases on top of the engine's raw move candidates, producing a bot with a distinctive — and reproducible — playing style. Bots can be saved, loaded, and shared as .json files.

1 · Engine Selection

The Engine section determines which brain generates move candidates and how strong it plays. All engines share the same Centipawmeter strength dial (ELO 600–2600).

Maia (Neural Net)

A neural network trained on tens of millions of human Lichess games. Maia produces a ranked probability distribution over legal moves rather than a single best move, which makes it uniquely suited for human-like, stylistic play. Strength is set directly in ELO — the network itself is selected to match.

ELO 600–2600Probabilistic outputHuman-pattern moves

Stockfish (Traditional)

Stockfish 18 Lite (WASM). Alpha-beta search with NNUE evaluation. Strength is controlled via Skill Level (0–20) mapped from the ELO dial. Deterministic by default; temperature sampling can be applied on top of Stockfish's MultiPV output to add variety.

Skill 0–20Alpha-beta + NNUEMultiPV ready

Lichess-Maia

Opens from the Lichess Masters or Lichess community database for a configurable number of moves, then hands off to Maia for the midgame. The opening ELO and Maia ELO are set separately.

Explorer + Maia

Lichess-SF

Same opening-book phase as Lichess-Maia, then falls back to Stockfish. Good for bots that should know their theory but play engine-style after the opening.

Explorer + SF

Hybrid

Blends Maia and Stockfish by weight for every move. A 70/30 Maia/SF split plays mostly human-style but with occasional engine precision.

Weight blend

2 · Move Sampling — Temperature

Temperature reshapes Maia's probability distribution before sampling. It has no effect when using pure Stockfish without MultiPV.

p'(m) = p(m)^(1/T) / Σ p(i)^(1/T) T < 1 (Focused): sharpens the distribution — top-ranked moves get even more weight T = 1 (Neutral): samples Maia's unmodified distribution T > 1 (Wild): flattens the distribution — lower-probability moves become reachable T → ∞ (Uniform): all legal moves equally likely argmax (Top move): always picks the single highest-probability move (deterministic)
PresetT valueBehaviour
Top moveargmaxFully deterministic — always Maia's #1 pick
Focused0.4Mostly top 1–2 moves; small variation
Neutral1.0Samples Maia's unmodified distribution
Varied1.8Wider sample; surprise moves more frequent
Wild3.0Even low-probability moves get meaningful weight

The slider accepts any value from 0.1 to 4.0. The live chart shows the full per-move pipeline on a reference position: Maia's raw distribution → after temperature → after the personality reweighting scaled by the CP Budget. Note that temperature governs only the sampled 70% of moves — 30% of the time the bot plays its top-ranked choice outright.

3 · Personality — The Centipawmeter & Attractors

The personality layer operates on the ranked list of candidate moves produced by the Maia engine.

Centipawn Budget

The Centipawmeter sets the personality's allowance: the most real, engine-calculated centipawns a personality-driven pick may lose versus Maia's most-popular move. It does double duty — it scales how hard the attractor sliders push, and it is enforced literally: when the personality's pick differs from the popular move, Stockfish evaluates both, and a pick over budget is rejected (the bot walks down its preference list until a move fits). At 0 cp personality traits are effectively disabled; at 300 cp the bot can genuinely sacrifice a knight to satisfy its style. On each move the bot plays its top-ranked choice outright 30% of the time and temperature-samples the other 70% — opinionated, but never perfectly predictable.

Hard Floor

A separate slider (always ≥ Budget) that is the absolute backstop on everything else — temperature sampling, Luck, Bad Day, and time-pressure mechanics. No played move may be more than the Floor's centipawns worse than the most-popular move, engine-checked. Slide it to the top (Off) and nothing is capped — a beginner-level bot can genuinely hang its queen, which keeps games winnable and fun for novices. The Engine panel shows both values beside the Elometer, with a one-click recommendation matched to the chosen ELO. Budget and Floor get separate ELO-scaled recommendations: Budget is the persistent per-move style spend (10 cp at master level up to ~120 cp for novices), while the Floor bounds the worst single move (80 cp up to ~520 cp).

Move Distribution Range

A dual-thumb slider that selects a band within the candidate list ranked by Maia probability — how often players at the chosen rating play each move, which is not the same as engine quality. The right thumb excludes the most-expected mainstream moves; the left thumb excludes the rare tail. The tail isn't a defect zone: sharp tactics and unconventional ideas often live there, so restrict it only if you want predictable, book-standard play. Default: 0–100% (the full distribution).

Personality Fingerprint (Radar)

The 11-spoke radar summarises the active attractor profile. Drag any spoke node directly, or use the sliders below the radar. The radar updates live.

4 · Strategic Attractors

Each attractor adds a continuous bias score to candidate moves. Scores are summed across all active attractors and re-rank the whole candidate list; the bot then plays its top-ranked choice 30% of the time and temperature-samples the re-ranked list the other 70%, with the CP Budget verifying the final pick's real cost. Sliders run −5 (left label) to +5 (right label); 0 = neutral (no effect).

AttractorLeft (−)Right (+)Mechanism
Chaos AgentSimplifierChaos AgentScores via Stockfish MultiPV σ (std-dev of top-N evaluations). High σ = tactical, branching position.
Complicate When WinningSimplify when winningComplicate when winningActivates when eval ≥ +100 cp. Boosts (or suppresses) moves that increase MultiPV variance — keeping complications alive vs. trading into a clean win.
Space CadetSpace WasterSpace CadetCounts weak squares (empty, unattacked) in own camp before/after each candidate using full attack maps. Positive = reduce weak squares; negative = cede space.
Fort KnoxGlass CannonFort KnoxSums total defender count across all own pieces. Positive = maximise defensive support; negative = expose pieces aggressively.
GambitoGambit ShyGambitoOpening phase only (first 20 moves). Boosts ECO-matched gambit lines; falls back to pawn-sacrifice detection (pawn moving to an opponent-attacked, undefended square).
Trade SeekerTrade AvoiderTrade SeekerReweights by capture and threat value. Positive = boost captures and new threats; negative = avoid exchanges.
StructureLoose structureRigid structurePawn structure delta via Stockfish's pawn evaluation (isolated, doubled, pawn islands). Positive = consolidate; negative = open, mobile structure.
HustleOverthinkerCoffeehouse HustlerScales think-time allocation: t = base × (1 − v × 0.15). Also feeds directly into the degradation curve input — a hustler at +5 thinks ~0.3 s and sees steep ELO drops.
LuckGood dayBad dayShifts the sampling window within Maia's ranked list. Positive = sample from the tail (off-form, lower-probability moves); negative = sample from the top of the distribution.
PanickyCalm under pressurePanickyScales the steepness of the time-pressure ELO degradation curve. Positive = sharper ELO drop in the final seconds; negative = flat curve regardless of clock.
AttackerPeacemakerAttackerScores by total opponent pieces under attack after the move: score += w × tanh(Σ_threats / 6). Positive = maximise threat coverage; negative = prefer quiet positions.

Piece Preferences (Pieces tab)

Six additional sliders bias move selection toward or away from moves that involve specific piece types. Range −5 to +5. Example: a Queen +4 bot will preferentially find moves where the queen participates, within the cp budget.

♙ Pawn

Boosts/suppresses pawn advances and pawn captures. Does not affect forced captures.

♘ Knight

Rewards knight manoeuvres. Combines well with closed-position preferences (rigid structure + Fort Knox).

♗ Bishop

Boosts diagonal play and bishop-pair exploitation. Works well with a loose-structure preference.

♖ Rook

Rewards rook lifts and file seizure. Most impactful in the middlegame/endgame transition.

♕ Queen

Positive = active queen, early development, queen-led attacks. Negative = conservative, avoid premature queen exposure.

♔ King

Positive = king activity and endgame aggression. Negative = king-safety priority, prefer the castled position.

One-Click Personalities

Pre-configured attractor profiles that set all 11 attractors at once. Any individual slider can be tweaked after applying a personality — the name clears when a manual edit is made.

NameTagCharacter
Captain EntropyChaosMaximises complexity; keeps complications alive; attacks aggressively. Chaos +4, Gambit +3, Attacker +2.
NormOrderPrefers closed, simplified positions. Chaos −4, Complicate −4, Structure +4.
Attacky McTackersonCapturesFavours captures and threats within the cp ceiling. Trade +4, Attacker +3.
OverthinkerMethodicalDeliberate; long think times; likely gets into time trouble. Hustle −4, Panicky −3, Structure +3.
Coffeehouse HustlerFastFast imprecise early play, tightens in the endgame. Hustle +5, Luck +2, Gambit +2.
The BlundererHumanPlays well then cracks unexpectedly under pressure. Luck +3, Panicky +5.
The HoarderMaterialNever sacrifices material voluntarily. Trade −3, Gambit −3, Luck −2.
Pawn Chain GangPawnsMaximises connected pawns and pawn structure. Structure +5.
Spite CheckChecksAlways checks if a check exists. Chaos +3, Attacker +3, Trade +2.
Clock WatcherClockConservative when ahead on time; reckless when behind. Panicky −3, Complicate −2.
Grandmaster Bad DayHumanMaia 2400 skill but samples from low-probability moves. Luck +5, Panicky +2.

5 · Custom Controls — Build Your Own Rule

Custom controls let you write board-feature rules not covered by the fixed attractors. Each control selects a metric, optionally gates on game phase, advantage state, and time pressure, then applies a continuous bias to move candidates that increase (or decrease) that metric.

Available Metrics (30+)

CategoryMetricWhat it measures
PawnsPassed pawnsOwn passed pawns (no enemy pawn ahead on file or adjacent files)
Pawn advancementHow far own pawns have advanced from the start rank
Doubled pawnsOwn doubled pawns
Isolated pawnsOwn isolated pawns (no friendly pawn on an adjacent file)
Pawn islandsNumber of separate pawn groups
Connected pawnsPawns supported by a neighbour (phalanx or chain)
Pawn structureOverall health — fewer islands, doubled and isolated pawns
Pieces & activityCentralizationRewards knights, bishops, rooks and queens near the centre
OutpostsMinor pieces on advanced squares defended by own pawn, unchallenged
MobilityTotal squares own pieces attack — proxy for activity
Bishop pairWhether own side holds both bishops
Rooks on open filesOwn rooks on files with no pawns
Rooks on the 7thOwn rooks on the enemy's second rank
DevelopmentKnights and bishops off the back rank. Best gated to the Opening phase.
MaterialMaterial balanceOwn material minus opponent's (P=1, N/B=3, R=5, Q=9)
Pieces on boardTotal pieces — slide left to simplify, right to complicate
Queens on boardQueens still on the board
KingEnemy king pressureOwn attacks on the 9 squares around the enemy king
My king safetyEnemy attacks on the 9 squares around own king
My pawn shieldFriendly pawns sheltering own king
Gives checkBoosts moves that put the enemy king in check
ThreatsEnemy pieces attackedDistinct enemy pieces own side attacks after the move
Loose enemy piecesEnemy pieces attacked and undefended — free-material radar
My hanging piecesOwn undefended attacked pieces
Piece defenseTotal defensive coverage of own pieces
Square controlMy weak squaresEmpty squares in own camp no longer controlled
Holes in enemy campEmpty squares in the enemy half the opponent doesn't control
Central controlControl of d4, e4, d5 and e5
SpaceEmpty squares in the enemy half own side controls

Gates — When the Rule Fires

Game Phase

Any — fires every move
Opening — first ~20 moves
Middlegame — pieces on board
Endgame — few pieces remain

Advantage State

Any result — always active
When winning — eval ≥ +100 cp
When losing — eval ≤ −100 cp
When equal — |eval| < 100 cp

Time Pressure

Any clock — always active
Bot pressured — bot < 30 s or < 15%
Opp pressured — opponent in time trouble
Either side — either clock low

Custom controls can be stacked. All active controls score candidates simultaneously; the scores are summed with the attractor scores before selection.

6 · Openings

Off

No opening book. The engine picks from move 1.

Main Line

Follows the most popular book moves from either the Lichess Masters database or the Lichess community database, up to a configurable book depth (default 20 moves). A "Modern only" filter restricts to games from 2010 onward. White and Black can have separate settings.

Repertoire

Define up to several opening lines by name (e.g. "Sicilian Defence", "King's Gambit"). Each line gets a percentage weight. The bot randomly selects a line each game according to the weights, then follows the Lichess book within that opening. White and Black repertoires are configured independently.

Book sources: Lichess Masters · Lichess Community

7 · Move Timing

Think time is computed before the engine is queried. It combines the timing mode, the Hustle attractor, clock-pressure shortcuts, and a ±20% jitter to produce an actual seconds value — which then feeds directly into the time-pressure degradation curves.

ModeBehaviour
Fixed intervalConstant pause between all moves. Set the delay in seconds. Simplest and most predictable.
InstantaneousResponds at engine speed (effectively 0 delay). Useful for analysis or speed variants.
Complexity scaledThink time scales with position complexity (measured as Stockfish MultiPV variance). Tactical positions get more time; forced sequences get less. Mimics human time allocation.
Mirror userBot matches the human's move rhythm ± a configurable offset. If you played fast the bot plays fast; if you took 30 seconds it will too. Creates a psychologically realistic feel.

The Hustle attractor (from the Personality section) acts as a global multiplier on the timing mode's base time:

t_actual = t_base × (1 − hustle × 0.15)

A Hustle +5 bot cuts think time by 75%. This same t_actual value is the input to both degradation curves — not a clock percentage.

Each mode's setting sits directly beneath it in the panel — Fixed interval has its Duration, Mirror user its Speed offset — so you can see what every mode is tuned by without selecting it first.

Human Timing Habits

Three modifiers layer on top of whichever mode you pick, and they are what make the pacing feel human rather than mechanical:

ModifierWhat it does
Reconsideration pausesOccasionally hesitates and takes noticeably longer, as if changing its mind mid-thought.
Move blink on forced movesPlays obvious recaptures and forced replies almost instantly (200–500 ms) — the human reflex of not thinking about a move that has only one sensible answer.
Clock-pressure mirroringSpeeds up when your clock runs low, the way a real opponent presses when they smell a flag.

Blink overrides your timing mode. It is checked before the mode is consulted, so a bot set to a fixed 22-second interval will still snap out obvious recaptures in a fraction of a second. So that the interval you set is the interval you get, selecting Fixed interval switches blink off and highlights the row to say why. Switch it back on whenever you want that behaviour — the panel respects your choice.

Premoves & Premove Traps

In fast chess, players premove: they queue their reply before the opponent has moved, so it fires the instant the opponent's move lands. It saves precious seconds — but it commits blind. The premove doesn't react to what you actually played. That is the whole point, and the reason it can be punished.

Switch premoving on and the bot does the same thing: it guesses your reply using Maia, decides its own answer in advance, and plays that answer the moment you move — whatever you actually played.

How to trap it. Play a move the bot didn't predict and its committed reply can walk a piece onto a square you control, or leave something hanging. If your move makes the premove illegal — you pin the piece, capture it, or move its target away — the premove is busted: the bot has to think from scratch and burns extra time on its own clock. Baiting premoves is a real bullet skill, and this is where to practise it.

ControlWhat it does
Min confidenceThe one that matters most. How sure Maia must be of your reply before the bot commits. 85% mirrors real play — humans premove on near-forced replies, not coin flips. Drop it far below ~60% and the bot premoves into positions a human never would, so its play looks erratic rather than fast.
Premove rateOf the moves that already cleared the confidence bar, the percentage it actually premoves — not a percentage of all moves. 100% = every time it's confident.
Only when low on clockOptional. Restricts premoving to time scrambles, as humans do. Two independent triggers sit under it — your clock, or the bot's — and either one alone is enough to start it premoving.
Busted-premove delayExtra thinking time when you bust one — the "didn't see that coming" stall. This is your reward for springing the trap. It can never flag the bot.

Premoving requires the Maia 3 model, since the prediction runs on it. Live counts of premoves armed, fired and busted appear in the panel while you play, and the collapsed Move Timing header always reports whether premoving is on — a bot that answers instantly looks broken if you don't know the setting is active.

8 · Time-Pressure Degradation

Two independent curves describe how the bot's play deteriorates as its clock runs low.

ELO Degradation

As think time per move shrinks, the bot's effective ELO is reduced. The curve starts on a power-law time–rating model: D(s) = 339 − 1442·s−0.283, shifted so the bot plays its full configured ELO at the nominal pace of the chosen time control (base/60 + increment seconds per move) and degrades from there — halving think time costs roughly 100 ELO at rapid pace, more in blitz. It is a fit of IM Kenneth Regan's rating-loss vs time-control data, from his Perpetual Chess Podcast interview with Ben Johnson. The Max ELO drop slider caps how far the curve can fall, and every control point stays draggable, so you can reshape the curve directly on the chart.

A bot configured at ELO 2400 in time trouble does not suddenly play like a calm 1900 — it plays like a stressed 2300: still strong, but more likely to pick from the wrong part of the distribution.

Move Quality Degradation

Separately, the move quality window shifts under time pressure. At full time the bot samples from its normal quality range. As time runs low, the window shifts downward (toward weaker moves) by a configurable amount. This captures the empirical finding that time-pressured players don't just play at a lower "level" — they make a specific kind of mistake: playing the first plausible move rather than the best one.

Both curves can be disabled with the Pressure Off toggle — for a bot that never cracks no matter the clock.

9 · Saving, Loading & Sharing

Any bot configuration can be saved as a .json file and reloaded in any Blundermind session.

Saving a bot

Click Start to lock in the current configuration. Use the Save bot file button to download a .json snapshot. Optionally give the bot a name — the name is stored in the file.

Loading a bot

Click Load bot file and select a .json file. All settings are restored: engine, ELO, temperature, all attractors, piece preferences, custom controls, openings, timing, and degradation curves. The loaded bot's name is displayed above the controls.

What is saved: engine mode, ELO, temperature value, all 11 attractor values, 6 piece-preference values, all custom controls (metric, phase, advantage gate, time-pressure gate, strength), opening mode and repertoire for each colour, book source and depth, timing mode and parameters, both degradation curves, and the personality name if one is selected.

10 · Playing Against Your Bot

Starting a game

Configure the bot in the Bot Controls panel. Select your colour (White / Black / Random). Set the time control (untimed, or any Fischer/delay format). Press Start. The board switches to playing mode, and Bot Controls remains open to let you monitor the bot's active state during the game.

During the game

Resign — ends the game immediately; prompts for confirmation.
Draw offer — handled by the bot's draw behaviour (Personality → Draws & Desperation): it can accept and offer draws judged at its own rating's blurred evaluation, and seek stalemate swindles when lost — or leave it all off for a bot that always plays on.
Save game — download the game as PGN at any point.
Rematch — immediately restarts with the same bot settings and swaps colours.
In Expert (pro) mode: the result is displayed in the notation column; Resign and Draw buttons disable after game over.

Learning Mode Indicators

While playing a bot, all board-vision indicators remain available in Learning mode: threat circles, capture safety, pins, forks, discovered attacks, x-ray pressure, overloaded pieces, weak squares, and the check-threat overlay. These are independent of the bot and provide real-time positional feedback.

11 · Quick Reference

GoalKey settings
Human-like club playerMaia 1200–1500 · Neutral temp · Luck +2 · Panicky +1 · Fixed timing 3–8 s
Tactical sluggerMaia or SF 1800 · Varied temp · Attacker +4 · Chaos +3 · Trade +3
Positional grinderSF 1600 · Top move or Focused temp · Structure +3 · Fort Knox +2 · Hustle −3
Gambit specialistMaia 1400 · Varied temp · Gambito +4 · Chaos +2 · Repertoire openings
Time-trouble simulatorAny engine · Pressure degradation enabled · Panicky +3 · Hustle +3
Openings trainerLichess-SF 2200 · Repertoire with target lines · Depth 25 · Instant timing
Endgame trainerSF 2000 · Top move · Pawn-advancement custom control (Endgame gate)
Bad-day GrandmasterMaia 2400 · Wild temp · Luck +5 · Panicky +2 · "Grandmaster Bad Day" preset

All ELO values are relative playing strengths within the Blundermind engine; they are not official FIDE ratings.  ·  Back to top ↑