GameDev.Tech · games & tools, built in Rust · est. 2026 · retro
NETWORK
GitHub / cronos3k
Flow Field Chess
Cube Bauhaus
Benchmark

BUILT WITH
Rust . WebAssembly
WebGPU . Vulkan
Octree CSG . Flow Fields

INFO
100% hand-coded
No frameworks
1024x768 OK


  ___   _   __  __ ___ ___  _____   _______ ___ ___ _  _
 / __| /_\ |  \/  | __|   \| __\ \ / /_   _| __/ __| || |
| (_ |/ _ \| |\/| | _|| |) | _| \ V /  | | | _| (__| __ |
 \___/_/ \_\_|  |_|___|___/|___| \_(_) |_| |___\___|_||_|
games & tools, built in Rust
Flow Field Chess: a chess engine that refuses to search

2026-06-30

By 1997 Deep Blue had beaten Kasparov; by 2017 AlphaZero had dismantled Stockfish in its own house. In the narrow sense of “which move is best,” chess is a solved engineering problem — a magnificent achievement, and, for the rest of us, a faintly depressing one. Playing a full-strength engine is less a contest than a demonstration: you make moves, it makes better ones, and the result was settled before you sat down. It isn't you against a mind. It's you against an encyclopedia with an electric motor.

The usual remedy is to lobotomise the thing — less depth, a dash of noise, a meaner clock — but a throttled engine still knows the strong move and merely declines to play it. Its blunders carry no inner logic; it is performing defeat. Pretending to lose is a different animal from genuinely trying and failing, and I'm convinced you can feel the difference across the board.

So I built the opposite, on purpose. Flow Field Chess (FFCE) abandons search entirely: no tree, no opening book, no endgame tables, and a planning horizon of exactly one move. Each turn it throws the board away and rebuilds it as a stack of physical fields — each one a different opinion about who stands better — and plays whichever move most improves the aggregate weather. By any conventional metric it is a weak engine. That is the entire point. It plays like a math lab dressed in a chess suit: a curious amateur who never opened a theory book but is suspiciously well-read on diffusion equations.

Flow Field Chess in motion with a field overlay
FFCE mid-game with a field overlay switched on — the engine is reading the terrain, not a move list.

Net pressure field after 1.e4 e5
The “net pressure” field after 1.e4 e5. Green = squares White controls, red = Black's. The engine sees this terrain — not a list of moves — and simply flows downhill.

What, exactly, is a “field”?

Retire the vocabulary of “good move / bad move” and picture the board as terrain. Every piece leans on the squares around it; sum those little shoves and you get a landscape of ridges and basins. Each turn FFCE raises five such landscapes:

Pressure — P(s) = F_white(s) − F_black(s). A signed map of who controls each square (that's the green/red picture above).
Attack — a reach map of every piece, weighted by strength: “who can hit what, right now.”
Resistance — friction. Occupancy, enemy attacks, pawn locks and king zones raise the cost of influence passing through a square, so power doesn't teleport through danger.
Trace — movement memory and intent. Each piece carries a quaternion heading that projects where it's been going, adding momentum and damping jitter.
Flow — the engine room. Influence diffuses from its sources through the resistance field over a short horizon (a damped-diffusion relaxation), the way heat or current spreads through a medium.

Choosing a move is almost insultingly simple: try each legal move, rebuild the terrain, total its “energy,” keep the best. Picture an energy surface and let the side to move roll downhill. A pinch of noise on the weights keeps it from playing like a metronome with opinions.

Thirteen algorithms with no business near a chessboard

The five fields are the skeleton; the personality comes from a drawer of algorithms I borrowed, without asking, from disciplines that have nothing to do with chess. Each is gloriously unfit for the job. Each, somehow, produces chess:

Reaction–Diffusion (Gray–Scott) — the chemistry that makes leopard spots, blooming influence near the enemy king.
Cellular Automata — Conway's Life on a pressure threshold, rewarding stable colonies.
Resistor Network — the board as a circuit, pieces as voltage sources, relaxed to equilibrium.
Ising Spin — statistical-physics magnetism; clusters of aligned advantage.
Wave Resonance — a damped wave equation; “ringing” corridors toward the king.
Lattice–Boltzmann — fluid transport; influence as a slow current hugging open space.
• Plus Spectral low-frequency, Hodge/curl, Ant pheromone, Fuzzy future (Gaussian presence clouds), Topological persistence, Latent channels, and a Tensor kernel.

Not one of them was built for chess, and yet together they play a coherent game. That is the part I find genuinely delightful: real, board-relevant behaviour emerging from equations meant for chemistry, magnets and moving fluids — no search, nothing trained. They hold respectable day jobs, too: reaction–diffusion does biology and procedural graphics, lattice–Boltzmann does fluid simulation, persistence does data analysis. FFCE simply kidnaps them and sits them down at a board.

Why I actually enjoy playing it

Because it loses like a person. It can't see twenty moves ahead, so it blunders honestly. It doesn't know openings, so it improvises. It will find a plan you missed and stroll cheerfully into one you didn't. That is the sweet spot for a human opponent — competitive, surprising, beatable — and underneath it sits a real question wearing a chess costume: how far does intuition get you with no search at all? Further, it turns out, than I had any right to expect.

Under the hood

The engine and every field are Rust compiled to WebAssembly; the page is a thin shell that loads it and forwards your clicks. Move generation is perft-validated, and a full turn with all thirteen algorithms switched on still resolves in roughly 20 ms in the browser. It's GPL-3.0 — and if you'd like the same story told with a straight face and the actual equations, the paper is right there.

Play: gamedev.tech/games/ffce/play
Paper: DOI 10.5281/zenodo.21028769 · academia.edu · PDF
Source (Rust/WASM): github.com/cronos3k/FFCE

If you've ever wished your chess opponent were a little less of a database and a little more of a professor who cannot be stopped on the subject of gradients — go push some pawns into the field and watch it think.


<< back to devlog
MAIN
Methodology
Impressum
Datenschutz

INDEX
[ Games ]
[ Tools ]
[ Research ]
[ Devlog ]

SYNDICATE
RSS Feed

TECH
Rust
WebAssembly
WebGPU
Vulkan
Octree CSG

GameDev.Tech

[ RSS ]  [ Devlog ]  [ GitHub ]

visitors: visitor count
Copyright (c) 2026 cronos3k - GameDev.Tech - hand-coded by a Rust generator - best viewed @ 1024x768