Fifteen figures in static/figures, one per kind, made to docs/figures-brief.md: a round base, a livery material the view recolours per side, and a base material left alone. The view loads three.js and the figures only when it is opened. It plays a move as a walk and a capture as a sink into the glass, dims a piece a Basilisk holds, marks the last move, the targets and a King in check, and lets a tap reach a figure or a marked square through the glass above it. Three cameras: from the corner, from the player's seat, from above. The table and the told game offer it behind the gate in src/lib/glass.svelte.ts, which opens for a browser that visits with ?glass=<word> whose hash it keeps. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CCLa2PaEeCj8njQZSWGqHx
51 lines
2.8 KiB
Markdown
51 lines
2.8 KiB
Markdown
# 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. Until the keeper opens it
|
|
to everyone, the view shows only to a browser let in through
|
|
`src/lib/glass.svelte.ts`.
|
|
- 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.
|