Eric WagonerandClaude Fable 5.1 8c03fd624c A position under review leads the status strip and is announced; the glass sheets' rims carry the square names
Picking a move from the chronicle now puts the review first in the strip, with Earlier, Later and Back to now on the same line, and labels the live game beneath it; the piece counts and the move line beside the boards describe the position as drawn. On a phone the chosen board scrolls to sit under the strip once the layout has settled, so a pick made from the chronicle on a phone held sideways no longer leaves the board and its controls above the viewport. Each review step says the position and its move to the live region, and returning says the game as it stands; a button that vanished or went grey under the keyboard hands focus to the grid's own square, or to Back to now.

The glass board's sheets carry the files' letters and the ranks' numbers in their rims when the flat boards show them, the far edges turned about so that each seat reads its own; the rim is a little wider for them and the posts stand a little further out.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CCLa2PaEeCj8njQZSWGqHx
2026-10-28 09:36:20 -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%