Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
Hnefatafl
The Viking board game, in the browser: the attackers must take the king, the king must reach a corner. Copenhagen rules on the eleven-by-eleven board by default; Tablut, the nine-by-nine game Linnaeus wrote down in 1732, as an option, on a board that shows its age.
Built on the game kit: src/lib/game/ is the game (rules as data in
rules.ts, the board's mechanics in board.ts, the engine in index.ts,
a short alpha-beta bot in bot.ts), src/lib/components/Board.svelte is
the board, and everything else is the kit's hall, tables, gallery, ledgers,
reports desk and ops tools. docs/conventions.md is the house style; the
guide here departs from it in one way, walking the page in words and one
drawn figure rather than screenshots.
npm install && (cd server && npm install)
npm run server # the game server on port 8789
npm run dev -- --host
Tests: npm test. Deploy: deploy/deploy.sh <ip> after deploy/README.md.