clone

a browser grid puzzle game where you push words around to rewrite the rules of each level

main
miau-is-true / docs / level-pack-curriculum.md
level-pack-curriculum.md 6.6K rendered
1# Basic level-pack curriculum23This is a proposed teaching pack for the current MVP vocabulary. It extends4the three shipped puzzles without assuming `NOT`, spatial conditions, `OPEN`,5`HOT`, `TEXT`, or meta-level rules. Each level should isolate one question,6then give the player a reason to reuse the answer.78The sequence follows the design-backbone recommendation to teach one word or9property at low pressure, reuse it in a second context, and keep difficult10levels optional. It also follows Teikari's account of organizing areas around11new words and moving unusually hard stages into an “Extra” category12([creator interview](https://www.gamedeveloper.com/design/designing-i-baba-is-you-i-s-delightfully-innovative-rule-writing-system)).1314## Proposed basic pack1516| Order | Level | Player should learn | Authoring constraint |17| --- | --- | --- | --- |18| 0 | **Read the board** | Words are physical tiles; `MIAU IS YOU` gives control; `FLAG IS WIN` is a goal; walking is one turn at a time. | Open room, no push required, no rule-breaking. Put the goal in direct sight. |19| 1 | **Break the rule** *(shipped)* | Breaking a sentence immediately removes its property. `ROCK IS STOP` can be dismantled by pushing `STOP`. | The intended solution must use the rule change; do not leave a walk-around route. |20| 2 | **Make room to push** *(shipped)* | `PUSH` changes a legal push chain; `STOP` affects where the player and rock can travel. | Teach one box-like object and one narrow corridor. Keep the wall rule inaccessible until wall behavior is understood. |21| 3 | **Two things can win** *(shipped)* | `AND` creates multiple subjects for one property; either `ROCK` or `FLAG` can satisfy `WIN`. | Place the two candidate winners visibly and make only one reachable before the player reads `AND`. |22| 4 | **Change what you are** | A noun-to-noun rule such as `MIAU IS ROCK` transforms an object; a transformed object can gain a second rule such as `ROCK IS PUSH`. | Use one transformation only. The before and after nouns need distinct glyphs and the transformed route must be necessary. |23| 5 | **A thing can disappear** | `SINK` consumes every occupant in a contact cell, including the controlled object. Undo restores the complete stack. | Make the first sink interaction safe to observe, then require a controlled sink on the second attempt. Avoid pairing `SINK` with `WIN` in this lesson. |24| 6 | **A dangerous thing** | `DEFEAT` removes a controlled object on contact; losing control is recoverable with undo or restart. | Show the hazard and a safe detour first. A defeat must teach a fact needed for the solution, not be a surprise penalty. |25| 7 | **Rules are cargo** | Words are pushable like objects and may share a cell with objects or other words. Moving one rule tile can open a route while preserving another rule. | Use two short sentences with one shared word or a deliberate word stack. The intended state should be readable in the ledger and on the board. |26| 8 | **Mixed properties** | One subject can have `YOU AND PUSH` or `PUSH AND STOP`; the player must reason about the combined capabilities and their precedence. | Introduce the combination in a small room, then make the challenge optional. Do not introduce a new noun here. |2728Levels 0–3 are required onboarding. Levels 4–6 are the core property tour.29Levels 7–8 are `challenge` levels until the engine's stacked-word and30multi-property presentation is proven in playtests. A garden can replace the31names and glyphs while preserving the learning objective.3233## Author checklist for each stage3435Each level record should carry:3637```js38{39 id: 'read-the-board',40 title: 'Read the board',41 hint: 'Walk to the flag.',42 category: 'required', // required | optional | challenge43 introduces: ['YOU', 'WIN'],44 reuses: [],45 objective: 'Teach direct control and contact with a winning noun',46 objects: []47}48```4950The author should be able to answer these questions before shipping:51521. What new word, interaction, or state fact is this level teaching?532. What earlier fact does it deliberately reuse?543. Which visible board element tells the player where to experiment?554. What is the intended first useful action, and can a player undo it?565. Is there a plausible shortcut that bypasses the lesson?576. Does the hint name an observation or action rather than reveal the whole58 move sequence?5960For the current engine, level validation should also report whether the initial61state contains a `YOU` entity, whether the goal is reachable by at least one62replay, and whether an intended rule is initially active. A level may be63deliberately unsolved by the static checker only when its metadata says it is64an editor or sandbox level.6566## Pack identity and credits6768The CommonJS manifest should present the pack as a small authored work. Add69these optional fields to the existing manifest contract, with `name` and `id`70remaining the stable machine and display identifiers:7172```js73manifest: {74 id: 'garden-basics',75 name: 'Garden Basics',76 version: '1.0.0',77 author: 'A. Designer',78 description: 'Eight introductory sentence-pushing puzzles.',79 license: 'CC BY 4.0',80 source: 'https://example.com/garden-basics',81 credits: [82 { role: 'design', name: 'A. Designer' },83 { role: 'art', name: 'B. Artist' }84 ]85}86```8788Identity rules:8990* `id`, semantic `version`, and `name` are required. The loader uses `id` plus91 version for saves and replay provenance; changing either should create a new92 published pack identity.93* `author` and `credits` are display metadata, not executable code. Preserve94 the declared order, and show them in the pack drawer and post-win credits.95* `license` and `source` are optional but should be shown when supplied. A96 missing license means “all rights reserved” in the UI rather than an97 inferred open license.98* A level can add `author`, `source`, or `credits` only when it differs from99 the pack defaults. The host should merge display metadata without changing100 simulation state.101* Replay records should include pack `id`, version, level `id`, and engine102 version so a shared solution can be attributed and diagnosed later.103104These fields support attribution and reproducibility without allowing a mod to105change the host's simulation or presentation policy.106107## Deferred lessons108109Do not add `NOT`, `ON`, `NEAR`, `LONELY`, `OPEN`/`SHUT`, `HOT`/`MELT`, `ALL`,110`EMPTY`, `TEXT`, or level-map transformations to this basic pack. Each should111get a separate garden with an introduction, a reuse level, a challenge level,112and an explicit conflict example. The design-backbone research records that113the reference game's conditional and meta words created major parser and114complexity costs, so these belong after the basic turn contract is stable.115