schema: 1 id: systemic-design title: Systemic Design pitch: Learn to build a rule-driven game engine by writing the systems that make its rules compose. visibility: public gating: sequential root: /home/user/systemic-design-course tracks: - { id: rust, label: Rust } - { id: ts, label: TypeScript } mentor: mentor/SKILL.md source: { kind: authored } modules: - id: m00 title: "The Rewrite Trap" lessons: - id: m00-lesson title: "The Rewrite Trap" type: text file: "course/00-rewrite-trap/lesson.md" - id: m01 title: "Handles and order of play" lessons: - id: m01-lesson title: "Handles and order of play" type: text file: "course/01-handles/lesson.md" localCommand: "node tools/start-module.mjs 01 " - { id: m01-scenarios, title: Scenarios, type: text, file: "course/01-handles/scenarios.md" } - id: m02 title: "The action queue, depth-first" lessons: - id: m02-lesson title: "The action queue, depth-first" type: text file: "course/02-action-queue/lesson.md" localCommand: "node tools/start-module.mjs 02 " - { id: m02-scenarios, title: Scenarios, type: text, file: "course/02-action-queue/scenarios.md" } - id: m03 title: "Deferred death" lessons: - id: m03-lesson title: "Deferred death" type: text file: "course/03-death-step/lesson.md" localCommand: "node tools/start-module.mjs 03 " - { id: m03-scenarios, title: Scenarios, type: text, file: "course/03-death-step/scenarios.md" } - id: m04 title: "Interceptors and \"trigger twice\"" lessons: - id: m04-lesson title: "Interceptors and \"trigger twice\"" type: text file: "course/04-interceptors/lesson.md" localCommand: "node tools/start-module.mjs 04 " - { id: m04-scenarios, title: Scenarios, type: text, file: "course/04-interceptors/scenarios.md" } - id: m05 title: "Behavior as data and Assemble" lessons: - id: m05-lesson title: "Behavior as data and Assemble" type: text file: "course/05-assemble/lesson.md" localCommand: "node tools/start-module.mjs 05 " - { id: m05-scenarios, title: Scenarios, type: text, file: "course/05-assemble/scenarios.md" } - id: m06 title: "Grid, lexer and parser" lessons: - id: m06-lesson title: "Grid, lexer and parser" type: text file: "course/06-parser/lesson.md" localCommand: "node tools/start-module.mjs 06 " - { id: m06-scenarios, title: Scenarios, type: text, file: "course/06-parser/scenarios.md" } - id: m07 title: "Resolving rules: NOT, identity, meta-nouns" lessons: - id: m07-lesson title: "Resolving rules: NOT, identity, meta-nouns" type: text file: "course/07-rule-resolution/lesson.md" localCommand: "node tools/start-module.mjs 07 " - { id: m07-scenarios, title: Scenarios, type: text, file: "course/07-rule-resolution/scenarios.md" } - id: m08 title: "Push chains: validate, then commit" lessons: - id: m08-lesson title: "Push chains: validate, then commit" type: text file: "course/08-push-chains/lesson.md" localCommand: "node tools/start-module.mjs 08 " - { id: m08-scenarios, title: Scenarios, type: text, file: "course/08-push-chains/scenarios.md" } - id: m09 title: "The turn pipeline" lessons: - id: m09-lesson title: "The turn pipeline" type: text file: "course/09-turn-pipeline/lesson.md" localCommand: "node tools/start-module.mjs 09 " - { id: m09-scenarios, title: Scenarios, type: text, file: "course/09-turn-pipeline/scenarios.md" } - id: m10 title: "SpellGrid" lessons: - id: m10-lesson title: "SpellGrid" type: text file: "course/10-spellgrid/lesson.md" localCommand: "node tools/start-module.mjs 10 " - { id: m10-scenarios, title: Scenarios, type: text, file: "course/10-spellgrid/scenarios.md" }