clone

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

docs: clarify mod roadmap and verification progress

Dami committed 2c90f31
commit
2c90f31cafe4a97b3fda0167a7a8eb4a4887261c
parent
98b4918bde6f9d9169fe68d8ce889549b875b28a
author
Dami <dami.etoile@gmail.com>
2 files changed, +10 -5
Mdocs/design-backbone.md11+++++++----
Mprogress.md4+++-
M docs/design-backbone.md +7 -4
@@ -43,7 +43,8 @@ API.
4343 | --- | --- | --- |4444 | `cell` | One integer grid coordinate | A cell can hold zero or more entities and terrain layers. |4545 | `entity` | A runtime instance with identity and position | Identity survives movement; two entities may share a cell. |46-| `kind` | Entity type, such as `baba`, `wall`, `rock`, or `text_baba` | Rules target kinds, not individual IDs, unless a mod opts into IDs. |46+| `kind` | Whether an entity is a physical `object` or pushable `word` | Rule matching uses an object's noun or a word's text, never an instance ID. |47+| `noun` | Semantic type of a physical object, such as `MIAU`, `WALL`, or `ROCK` | Rules target nouns, so every object of the same noun gains the same derived properties. |4748 | `layer` | Terrain, actor, item, text, or effect ordering | Rendering order must not silently change collision order. |4849 | `direction` | Facing or movement vector | Cardinal movement is the baseline; diagonal support is an explicit extension. |4950 | `occupancy` | Entities currently in a cell | Never encode occupancy as a single sprite slot: stacked words and objects are valid. |
@@ -196,11 +197,14 @@ claims are optional metadata, not a requirement for a fun level.
196197 197198 ## CommonJS mod boundary198199 199-Mods should export data and pure hooks through a narrow CommonJS contract:200+The first playable release accepts trusted local CommonJS modules containing a201+manifest, levels, noun vocabulary, and an emoji palette. Its concrete shape and202+limits are in the [modding guide](modding.md). A later engine milestone should203+add pure hooks through a narrow, versioned contract such as:200204 201205 ```js202206 module.exports = {203- id: 'garden-01',207+ manifest: { id: 'garden-01', name: 'Garden', version: '2.0.0' },204208 vocabulary: { nouns: [], verbs: [], properties: [] },205209 levels: [{ id: 'intro', width: 9, height: 7, cells: [] }],206210 systems: {
@@ -244,4 +248,3 @@ and limited player access to the worst cases, while treating `IF` as not worth
244248 the implementation pain at that stage ([GDC talk PDF](https://media.gdcvault.com/gdc2020/presentations/Reading%20the%20rules_Teikari_Arvi.pdf), pp. 19–21).245249 That is a useful product constraint: keep the grammar deliberately small and246250 make quirky extensions opt-in and testable.247-
M progress.md +3 -1