Please wait ...

ProZero

About

ProZero is a father-and-son project — born from a shared love for chess and a slightly delusional plan to one day knock Stockfish off its throne. Spoiler: we're not there yet. Stockfish still eats us for breakfast. But we keep tuning the search, tweaking the heuristics, and arguing about move ordering over coffee — and that's half the fun.

The engine

Hand-rolled in C# from move generation up. Alpha-beta with iterative deepening, a growing transposition table, quiescence search to keep tactical positions honest, and a steadily growing pile of opinions about what makes a good move. No external engine, no neural net — just code we wrote, debugged, and occasionally cursed at.

The interface

Blazor Server with a canvas-rendered board. The whole thing renders on a single HTML5 canvas — no DOM-per-square, no SVG sprites, no framework chess components. Just a render loop, some pre-rasterized piece bitmaps, and a layout that respects the math of optical centering.

Self-hosted, no CDNs. Every byte you load comes from our server — not because we're zealots, but because letting a third party watch every page view felt like the wrong default.

Playing

Click a piece to select it, click a destination to move. The board shows your legal targets the moment a piece is selected; pressing anywhere else flashes the pieces you can move (in case you forgot whose turn it is — we've all been there).

After a move is played, the move-history panel records it. Click the [+] (or swipe left, on a touch screen) to open it. Step through with the arrow keys, Home, and End — or press-and-hold any move to peek at the position it produces.

Where it goes from here

Stronger search. Better evaluation. A more confident endgame. And eventually — eventually — a game we win against Stockfish. Until then: another coffee, another commit.

An unhandled error has occurred. Reload 🗙