Captured from the build that ships · $9

Battle Chess — every piece has hit points

A finished roguelike sold as Python source. Climb a branching map to the Dread Monarch, carrying your survivors, their XP and their equipment from one fight to the next. The pieces you lose stay lost.

These are screenshots of the exact tree that becomes the download — served by the app itself and captured in a browser, not mocked up. The numbers on each piece are its current and maximum hit points.

Measured

87tests pass, with python-chess uninstalled
296assertions on the chess rules alone
13/13deliberately broken rules the harness caught
2runtime dependencies — Flask and Gunicorn

Two screens

A battle nine moves in
A battle nine moves in. Each piece carries its own hit points and damage — the queen at 10/10, the king at 15/15, pawns at 5/5 — and the small arrow is the direction it faces, because a strike from behind hurts more than one head-on. There is no checkmate: you win by taking the enemy king's hit points to zero.
The run map between battles
The run map between battles. One node per step, up to the Dread Monarch: battles, elites, treasure, merchants and campfires. Only the lit nodes at the bottom are reachable from here, and the route you take decides what your army looks like by the time you arrive.

What you should know before buying

  • No support. One-time download, sold as-is, no bug fixes and no updates.
  • Single player against an AI. No multiplayer, no accounts, no matchmaking.
  • File-backed state, one worker. Fine for playing; not a service you can scale horizontally without replacing the store.
  • Balance is not tuned. scripts/simulate.py runs AI-vs-AI batches so you can measure it yourself, but nobody has spent weeks balancing this.
  • No art of its own. Pieces are the standard chessboard.js set; there are no sprites, no sound and no animation beyond piece movement.
  • One licensing question is open, and it is not the code. The chess rules are written in-repo and carry no third-party licence, but the 12 vendored piece images derive from Cburnett's Wikimedia Commons set, commonly distributed under the share-alike CC BY-SA 3.0. Which licence applies to those exact files is not confirmed. They are swappable through chessboard.js's pieceTheme option and nothing else depends on them. The licence states this in full.
  • The army roster panel is not shown here. Its HP bars would not paint in the headless browser used for these captures and I could not confirm how they look in a real one, so it is left out rather than shown possibly wrong.

Get it

Battle Chess — complete Python source — $9

Flask + vanilla JS. pip install -r requirements.txt, python app.py, open the page. No build step, no database, no API key, no network calls.

Get it — $9 →