Files
systemic-game-design-course/README.md
T
Lucas WintherandClaude Opus 5.5 638549161f
CI / Tool tests and sync-check (push) Successful in 13s
CI / Verify references (all modules, Rust and TS) (push) Successful in 1m32s
CI / Verify Expansion Drop solutions (all modules, Rust and TS) (push) Successful in 1m35s
CI / Coupling audit on references (push) Successful in 13s
CI / Site build (push) Successful in 25s
CI / Naive engine tests (Module 0) (push) Successful in 32s
feat(ci): verify Expansion Drop solutions; README quick start, disclaimer link; Rust reference lockfiles
- verify-references --expansion overlays expansion/solution on each reference and runs the
  cumulative tests plus the drop test; refuses a solution that touches src/engine/
- CI job verify-expansions
- README: workspace-template + git init step, tool list, repo disclaimer link
- Cargo.lock for every Rust reference (staged with the reference, pins serde for rustc 1.85.1)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 19:13:11 +01:00

53 lines
2.7 KiB
Markdown

# Systemic Design Course
A free, hands-on course on **systemic game design**. You learn by rebuilding the rules machinery of two games, then extending it:
- **Part I: Hearthstone** (cards, zones, triggers, death phases, auras, text assembly)
- **Part II: Baba Is You** (rules as pushable text, parsing, movement, win/lose)
- **Part III: SpellGrid**, a small original game that combines both systems
Every module follows the same beats: Observe, Predict, Spec, Build, Name it, Expansion Drop, Further reading. The Expansion Drop is the test of your design: you add new content without touching the engine.
## Two paths
- **Designer path**: read the lessons and scenarios, predict outcomes, and reason about the design.
- **Builder path**: also make the tests pass in your own engine.
## Mentor path
Prefer a Socratic partner? Install the [mentor skill](mentor/README.md) and let your AI agent guide you without writing your code.
## Two tracks
Builder path exercises exist in **Rust** and **TypeScript**. Both tracks have identical test names, matching the scenarios in each module's `scenarios.md`.
## Quick start
From the course repository:
```sh
node --version # Node 22 or later for the course tooling (CI uses 24)
npm run test:tools # tooling tests
npm run check # test names agree across Rust, TS and scenarios
```
Create your workspace from the template for your track (Module 00, "Before Module 1: choose your track", has the details). Copy the whole directory with `cp -r` so the hidden `.course.json` comes along:
```sh
cp -r workspace-template/rust ~/my-engine # or workspace-template/ts
cd ~/my-engine && git init && git add -A && git commit -m "start from template" && cd -
node tools/start-module.mjs 01 ~/my-engine
```
`start-module` copies a module's tests for your track (from your workspace's `.course.json`) and refuses to start a module if you have not yet taken the previous one. Module 00 uses the `naive-engine/` project and is not started this way.
Other tools: `tools/coupling-audit.mjs <workspace>` (engine code must not name specific cards or nouns), `tools/expansion-check.mjs <workspace> <baseRef>` (an Expansion Drop must change content only), `tools/verify-references.mjs [NN]` (reference solutions pass the tests; `--expansion` also checks every Expansion Drop solution), `tools/play-spellgrid.mjs <rust|ts> [l1|l2|l3]` (play the Module 10 capstone, SpellGrid, on the command line with the reference engine).
## Licence
MIT, for both prose and code. See [LICENSE](LICENSE). The course is and stays free.
## Disclaimer
Not affiliated with Blizzard or Hempuli. See the [disclaimer](site/src/content/docs/disclaimer.md) (also the Disclaimer page of the course website).