Skip to content CHRNX
Color theme Following system theme

Ailed: A Chess Engine That Feels

Psyche-driven chess engine — two AI robots playing an intense chess match, representing emotional AI in game playing

PRE-PRINT • arXiv:2603.05352 • March 2026

Ailed: A Psyche-Driven Chess Engine with Dynamic Emotional Modulation

Diego Armando Resendez Prado • Independent Researcher

I just built a psyche-driven chess engine — and published my first research paper about it. Ailed is a chess engine with something no chess engine has ever had: an emotional state that actually changes how it plays.

Let me walk you through it.

The Starting Point: Why We Need a Psyche-Driven Chess Engine

Chess engines are insanely strong. Stockfish, Leela, AlphaZero — they left humans behind a long time ago. But here’s the thing: they don’t play like humans. A grandmaster under clock pressure blunders in ways a club player on a hot streak never would. A player who just lost a tough game comes back tilted. Someone on a winning streak starts taking risks that make no positional sense.

Stress, overconfidence, tilt — these are real things that shape how we play chess, and no engine captures any of it.

What if the engine’s mistakes weren’t random noise, but patterns that responded to what’s happening in the game?

That was my starting point. Not making engines weaker — but making their imperfections meaningful.


The Psyche

I gave my engine — Ailed — an internal emotional state called the psyche. It’s a single number from −100 (stressed out) to +100 (overconfident). After every move, five factors from the board position push it around:

Material Balance

Are we up or down in pieces? Losing a queen tanks the psyche. Winning material boosts it.

King Safety

Is our king tucked behind pawns or exposed? An exposed king pushes psyche toward stress.

Pieces Under Attack

How many of our pieces are being threatened right now? More threats = more stress.

Center Control

Do we control the key squares (d4, d5, e4, e5)? Owning the center builds confidence.

Mobility

How many legal moves do we have? More options = calmer psyche. Fewer options = panic.

Getting checked? That’s a flat −50 penalty to the psyche. Because nobody likes being in check.

Between sessions, the psyche decays 20% back toward neutral — like sleeping off a bad day. Half-life of about 4 days. It creates a feedback loop: bad positions → stress → worse play → worse positions. And the reverse — good positions build confidence, but too much confidence makes you reckless. That’s basically how tilt works in real life.

Stress Zone (ψ < −33)
Open gate, flat distribution, scattered EQ. The engine considers too many moves, plays erratically, makes mistakes under pressure.

Neutral Zone (|ψ| ≤ 33)
Balanced chain — moderate gate, unity dynamics, standard EQ. The engine plays its natural game without emotional interference.

Overconfident Zone (ψ > +33)
Tight gate, compressed distribution, risk-seeking EQ. The engine narrows its focus and explores creative lines over safe ones.


The Signal Chain: What Makes This a Psyche-Driven Chess Engine

Here’s the part I’m most proud of. The analogy hit me one day staring at guitar pedals: shaping a probability distribution over chess moves isn’t that different from running audio through effects. So I built a literal signal chain — four stages, each one controlled by the psyche:

SIGNAL CHAIN

Model Logits → ⬤ Noise Gate⬤ Dynamics⬤ EQ⬤ Saturation → Move

Noise Gate

Silences moves below a psyche-dependent threshold. Stress opens the gate wide — weak moves leak through. Overconfidence tightens it — only the strongest survive.

Dynamics

Reshapes the probability spread with a power-law transform. Stress flattens the distribution — the engine considers too many options. Overconfidence sharpens it — zeroes in on fewer candidates. This is mathematically equivalent to temperature scaling, but dynamically coupled to psyche.

Equalizer (5-band)

Moves ranked into five bands: best, good, mild, bad, worst. Each band gets a gain multiplier based on psyche. Under stress, mid-tier moves get boosted — scattered attention. Under overconfidence, “good” alternatives get boosted — modeling creative risk-taking over safe defaults.

Saturation

Caps the maximum probability of any single move, keeping some randomness even at peak confidence. The engine never becomes fully deterministic — there’s always a little chaos.

Every parameter is a function of psyche. The psyche is a function of board position. The board changes because of the moves. It’s a closed loop — this psyche-driven chess engine creates its own emotional trajectory as the game unfolds.

Engine-agnostic: The signal chain doesn’t care what engine is underneath. Any system that outputs move probabilities can be wrapped in it — it’s middleware.


Personality Presets

Since the whole thing came from an audio analogy, I named the personality presets after music genres. Personality defines who the engine is. Psyche defines how that personality reacts under pressure. They’re orthogonal.

PresetCharacterPlay Style
🎻 ClassicalDisciplinedTight gate, sharp dynamics — methodical and precise
🎸 RockBoldV-shaped EQ, goes for it without overthinking
🎷 JazzCreativeAvoids the obvious move, heavy saturation — the contrarian
🤘 MetalChaoticBoosts even weak moves — will try anything
🧑 HumanRealisticStress-sensitive, tilts like a real person (default)

Results: Testing the Psyche-Driven Chess Engine Across 22,419 Games

I tested this across 22,419 games in six experiments against Maia2 at three ELO levels.

EXPERIMENT B — Maia2+Psyche vs. Vanilla Maia2-1100 (667 games per condition)

ConditionWinsDrawsLossesScore
😰 Stress (ψ₀ = −80)12315538930.1%
😐 Neutral (ψ₀ = 0)9540217044.4%
😎 Overconfident (ψ₀ = +80)415963050.8%

Static temperature scaling produces <2.5 pp of behavioral spread.
Psyche-coupled signal chain produces 34.7 pp.
That’s a 14× amplification.

The contribution comes from the dynamic coupling, not the transform itself.

1.89

Cohen’s d effect size
(0.8 = “large”)

22,419

Total games tested
across 6 experiments

23.7M

Parameter transformer
trained in 32 min on Apple M-series

The signal chain works on both Ailed’s own transformer and on Maia2, producing the same qualitative gradient — it really is engine-agnostic. Against a stronger opponent (Maia2 at 1500 ELO), the gradient still holds: 25.5% under stress rising to 40.9% under overconfidence.

Honest limitation: This paper validates the mechanism — that the signal chain produces controllable, measurable behavioral differences. What it doesn’t validate yet is whether humans actually perceive these as emotionally meaningful. That’s the next study.


Beyond Move Selection

The psyche also drives two cognitive extensions:

Thinking Mode

A lookahead planner that builds multi-move plans. At maximum stress (ψ = −100), there’s an 80% chance the engine abandons the plan mid-execution — like a tilted player who panics and plays something random. At maximum overconfidence, plans become rigid.

Study Mode

Post-game analysis where quality degrades at psyche extremes. Stress produces noisy, scattered analysis. Overconfidence produces narrow analysis that misses important alternatives. The engine literally studies worse when it’s emotional.

There’s also a progressive learning loop: play → study → retrain → play. The engine keeps learning from its own games over time. If you’re curious about the tech stack behind my other projects, check out my other posts.



Watch It Play

Here’s a real game from Lichess — ailedbot vs bananarama3000, 103 moves. The bot won on time as white. Step through the moves and see the kind of chess this psyche-driven chess engine produces:

View full game on Lichess

What’s Next

Ailed is deployed as a Lichess bot playing real games right now. The paper is on arXiv, and I’m working on expanding the system further. There’s more in the works, but I’ll share when it’s ready.

If you’re interested in the intersection of emotion modeling and game AI — or if you just want to challenge a chess engine that might tilt on you — check it out. I’d genuinely love to hear feedback.

Stay in the loop

Get new stories and episodes when they are published.

Subscribe