kr0w4 min read
Adversary, then analyst

Gambit

A chess set carved from frosted glass, and a deadpan machine that plays you, then tells you, flatly, how you lost.

Chessthree.jsStockfishWebGL

"The AI beat Kasparov. Now it's studying you."


Brands like Kith keep doing these beautifully made chess board and poker set collabs, the kind of object you leave out on the table on purpose. I've never seen the software version. A thousand chess apps, all built like tools: ratings, puzzles, tournament grey. Nobody seemed to have made a chess game designed the way those boards are.

Then one night I watched Game Over, the documentary about Garry Kasparov losing to IBM's Deep Blue in 1997, and thought it was cool. No thesis about this AI moment, just a world champion coming apart on stage against a machine that gave nothing away, and me wanting to play against something like that. It's where the line on the front page comes from, the AI beat Kasparov, now it's studying you, and it's why the machine in Gambit doesn't only play you. It reads you.

So I gave it a weekend to see if I could make one.

The pieces are glass because I like glass. Real glass: the kind that bends the light behind it, catches a highlight on the queen's coronet, and goes cloudy where it's thick. Not a texture pretending to be glass. Actual transmission.

Pearl and smoke

The set comes in two tones: pearl and smoke. Each piece is a lathe profile turned in 3D, using the exact geometry from a design handoff I kept as the source of truth, with the tops modeled by hand: the rook's merlons, the bishop's finial, the knight's head, the queen's coronet, the king's cross.

They're rendered with three.js transmission glass under a procedural studio environment. No photo, no HDR file, just lightformers arranged until the glass reads as glass. One shared transmission pass covers the whole set, so a full board stays cheap enough to run smoothly in a browser tab. It's the Apple "Liquid Glass" dark look, except you can pick the board up and turn it.

The machine

Then it needed someone to play against. That's Stockfish, compiled to WASM and running in a web worker, strength-capped so it doesn't vaporize you on move nine. Rules by chess.js, an opening book so the first few moves feel human.

But my favorite part isn't the engine. It's the voice.

FIG 01One engine, two rolespearl & smoke
THE MACHINEone engineSMOKEADVERSARYduring the game · plays youPEARLANALYSTafter · reads you
One engine, two tones. The adversary that beats you and the analyst that breaks it down are the same machine.

There's a single character in Gambit called the machine. The same engine that plays you is also your analyst afterward, and the conceit is that it was reading you the entire game. It's deadpan. Dry. Never rattled. It doesn't gloat, which is exactly what makes it land. Here it is on a bad rook move, mid-game:

"That was a choice. Your rook could have been more effective elsewhere."

And declining a draw offer from a position it liked:

"That's generous of you. I don't consider this position equal, so I'll decline."

Both lines are real output from one game, not copy I wrote. Every line is pinned to the real position and the real evaluation. It isn't allowed to invent a tactic or claim an advantage the eval doesn't support. It just states the true thing, flatly. Losing to a number is fine. Losing to something that then describes how you lost, in one dry sentence, is worse.

FIG 02Why the trash-talk is honestmove → eval → line
YOUR MOVEchess.jslegal?STOCKFISHWASM · search + evalENGINE REPLYmove + evalTHE MACHINEsays the true thing, flatlyEVALthe real position scoreGROUNDED IN THE REAL EVAL
The deadpan line is pinned to the real evaluation. It can't claim an advantage the number doesn't support.

The rivalry

And it remembers. Your wins, losses, and draws against the machine persist between sessions, so it stops being one game and becomes a running score you are quietly trying to even out. You versus the machine, for as long as you keep coming back.


The weekend did not survive contact with the project. There's a lessons mode now, drills, a daily puzzle, a rating that remembers you. I stopped pretending it was a prototype somewhere around the opening book. The scoreboard says the machine and I are still playing.

click to play

Thanks to Jonathan, Ziad, Erik, Ken, Viktor, and Viktor for playing early builds and giving feedback all through development.

Kyle Rowley

Kyle Rowley

Builder & Ball Player

Email meLinkedInGitHubX (Twitter)