Eric WagonerandClaude Fable 5.1 2de6e1f6ba The status line on your move says what the other side just did, in place of "Checkmate their King", which told the player nothing
"Vritra’s Warrior went to 2a2.", "took the Hero on 2e5", "struck 2g4 from the air", "and is a Hero now"; "The first move is yours." before any move.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CCLa2PaEeCj8njQZSWGqHx
2026-10-27 18:03:02 -04:00
2026-10-26 16:08:50 -04:00
2026-10-26 16:08:50 -04:00
2026-10-26 16:08:50 -04:00
2026-10-26 16:08:50 -04:00
2026-10-26 16:08:50 -04:00

Wyrm

Gary Gygax's Dragonchess, from Dragon Magazine No. 100 (August 1985), for the browser: three boards of twelve by eight, Gold against Scarlet, 42 pieces a side, checkmate to win. Built from the game kit, so the hall, the tables, the Peanut Gallery, the ledgers and the ops tools are the kit's; docs/conventions.md is the house style they follow.

What is where

docs/source.md              the article, transcribed, and the readings the engine takes where it is unclear
src/lib/game/board.ts       the three boards and how every piece moves, on a bare array of cells
src/lib/game/index.ts       the game around them: seats, turns, check and the ends, the GameSpec
src/lib/game/bot.ts         the drake, the house player: alpha-beta over a fixed budget of nodes
src/lib/game/index.test.ts  every example move Gygax gives, the ends, and the drake
src/lib/source.ts           reads docs/source.md for the rules page, so the page and the engine share one text
src/lib/components/BoardArtwork.svelte   the boards drawn, shared by the table, the hall and the share card
src/lib/components/Board.svelte          the table: moving, the record, the talk
docs/og-card.html, docs/icon.html        the share card and the icon; screenshot them with the site running

Where it differs from the kit

  • The house player is a drake wherever the kit says "a bot", and its names are the dragons of old stories.
  • Board 3 is the air, 2 the land and 1 the underworld, following the piece descriptions and not the one paragraph that says otherwise. The other readings are listed under "Decisions" in docs/source.md and on the rules page.
  • The drake's search is bounded by a count of nodes, not a clock, so the same position always gives the same move and a ledger replays without asking it again.
  • The glass board, src/lib/components/Glass.svelte, draws a game as three sheets of tinted glass with figures standing on them, in three.js, and takes the same taps as the flat boards. The figures in static/figures/ are glTF, one per kind, with a livery material the view recolours per side; docs/figures-brief.md is what they were made from. three.js and the figures load only when the view is opened. The flat boards are the default; the glass board is offered under them at the table and on the told game.
  • The guide's figures are screenshots in static/guide/, taken from the running site at 960 pixels wide.

Running it

npm run dev:all       # the server on 8791 and the site on 5173
npm test              # the engine and the server
deploy/deploy.sh 159.203.115.252

The name is this site's. Dragonchess was Gygax's and TSR's, and a Canadian company holds a registered mark on "Dragon Chess" for an unrelated game.

S
Description
Wyrm: an unofficial rebuild of Gary Gygax’s 1985 Dragonchess, from Dragon Magazine No. 100, for Kestrel’s Hall
Readme
32 MiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 49.7%
Svelte 40.2%
Shell 6.6%
Python 1.7%
CSS 0.8%
Other 1%