hayao 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/design/00-process/README.md +49 -0
  2. package/design/00-process/composition.md +148 -0
  3. package/design/00-process/core-loop.md +146 -0
  4. package/design/00-process/intent-to-brief.md +128 -0
  5. package/design/00-process/pillars.md +139 -0
  6. package/design/00-process/refine-and-handoff.md +156 -0
  7. package/design/00-process/the-twist.md +108 -0
  8. package/design/10-anchors/README.md +99 -0
  9. package/design/10-anchors/age-of-empires.md +103 -0
  10. package/design/10-anchors/baba-is-you.md +127 -0
  11. package/design/10-anchors/balatro.md +132 -0
  12. package/design/10-anchors/celeste.md +136 -0
  13. package/design/10-anchors/civilization.md +101 -0
  14. package/design/10-anchors/dead-cells.md +125 -0
  15. package/design/10-anchors/factorio.md +100 -0
  16. package/design/10-anchors/hades.md +127 -0
  17. package/design/10-anchors/into-the-breach.md +125 -0
  18. package/design/10-anchors/it-takes-two.md +104 -0
  19. package/design/10-anchors/loop-hero.md +131 -0
  20. package/design/10-anchors/nuclear-throne.md +130 -0
  21. package/design/10-anchors/outer-wilds.md +107 -0
  22. package/design/10-anchors/overcooked.md +102 -0
  23. package/design/10-anchors/peggle.md +133 -0
  24. package/design/10-anchors/reigns.md +99 -0
  25. package/design/10-anchors/return-of-the-obra-dinn.md +108 -0
  26. package/design/10-anchors/rimworld.md +101 -0
  27. package/design/10-anchors/shadow-of-mordor.md +106 -0
  28. package/design/10-anchors/slay-the-spire.md +127 -0
  29. package/design/10-anchors/starcraft.md +98 -0
  30. package/design/10-anchors/stardew-valley.md +103 -0
  31. package/design/10-anchors/tetris.md +122 -0
  32. package/design/10-anchors/vampire-survivors.md +122 -0
  33. package/design/20-genres/README.md +62 -0
  34. package/design/20-genres/action-adventure.md +126 -0
  35. package/design/20-genres/auto-battler.md +121 -0
  36. package/design/20-genres/bullet-hell.md +123 -0
  37. package/design/20-genres/city-builder.md +124 -0
  38. package/design/20-genres/coop-chaos.md +124 -0
  39. package/design/20-genres/deckbuilder.md +122 -0
  40. package/design/20-genres/exploration.md +131 -0
  41. package/design/20-genres/farming-sim.md +122 -0
  42. package/design/20-genres/grid-puzzle.md +126 -0
  43. package/design/20-genres/horde-survival.md +128 -0
  44. package/design/20-genres/incremental.md +120 -0
  45. package/design/20-genres/match3.md +120 -0
  46. package/design/20-genres/metroidvania.md +132 -0
  47. package/design/20-genres/narrative-decisions.md +122 -0
  48. package/design/20-genres/physics-arcade.md +124 -0
  49. package/design/20-genres/precision-platformer.md +127 -0
  50. package/design/20-genres/racing.md +126 -0
  51. package/design/20-genres/rhythm.md +125 -0
  52. package/design/20-genres/roguelike.md +122 -0
  53. package/design/20-genres/rts.md +169 -0
  54. package/design/20-genres/stealth.md +125 -0
  55. package/design/20-genres/survival-horror.md +124 -0
  56. package/design/20-genres/tactics.md +123 -0
  57. package/design/20-genres/tower-defense.md +120 -0
  58. package/design/30-systems/README.md +69 -0
  59. package/design/30-systems/accessibility.md +110 -0
  60. package/design/30-systems/boss-design.md +126 -0
  61. package/design/30-systems/build-diversity.md +120 -0
  62. package/design/30-systems/collectibles.md +108 -0
  63. package/design/30-systems/combat-model.md +113 -0
  64. package/design/30-systems/coop-and-competition.md +118 -0
  65. package/design/30-systems/counter-systems.md +115 -0
  66. package/design/30-systems/crafting.md +115 -0
  67. package/design/30-systems/difficulty-and-dda.md +114 -0
  68. package/design/30-systems/economy.md +117 -0
  69. package/design/30-systems/emergent-systems.md +114 -0
  70. package/design/30-systems/encounter-design.md +107 -0
  71. package/design/30-systems/enemy-ai.md +121 -0
  72. package/design/30-systems/enemy-archetypes.md +117 -0
  73. package/design/30-systems/faction-asymmetry.md +144 -0
  74. package/design/30-systems/grace.md +124 -0
  75. package/design/30-systems/mastery-curve.md +116 -0
  76. package/design/30-systems/meta-progression.md +114 -0
  77. package/design/30-systems/onboarding.md +115 -0
  78. package/design/30-systems/procgen-design.md +118 -0
  79. package/design/30-systems/progression.md +120 -0
  80. package/design/30-systems/resource-loops.md +112 -0
  81. package/design/30-systems/reward-schedules.md +124 -0
  82. package/design/30-systems/save-and-checkpoint.md +113 -0
  83. package/design/30-systems/session-structure.md +113 -0
  84. package/design/30-systems/skill-trees.md +111 -0
  85. package/design/30-systems/status-effects.md +111 -0
  86. package/design/30-systems/tech-tree.md +112 -0
  87. package/design/30-systems/telegraphs.md +106 -0
  88. package/design/30-systems/unit-rosters.md +123 -0
  89. package/design/40-worldbuilding/README.md +49 -0
  90. package/design/40-worldbuilding/aesthetic-direction.md +155 -0
  91. package/design/40-worldbuilding/faction-identity.md +136 -0
  92. package/design/40-worldbuilding/naming-and-tone.md +130 -0
  93. package/design/40-worldbuilding/narrative-delivery.md +129 -0
  94. package/design/40-worldbuilding/theme-vectors.md +134 -0
  95. package/design/40-worldbuilding/worldbuilding-scaffold.md +132 -0
  96. package/design/50-patterns/README.md +54 -0
  97. package/design/50-patterns/anti-frustration.md +121 -0
  98. package/design/50-patterns/emergence.md +121 -0
  99. package/design/50-patterns/feedback-loops.md +121 -0
  100. package/design/50-patterns/juice-choreography.md +124 -0
  101. package/design/50-patterns/mastery-and-flow.md +121 -0
  102. package/design/50-patterns/pacing-and-tension.md +120 -0
  103. package/design/50-patterns/readability.md +121 -0
  104. package/design/50-patterns/risk-reward.md +120 -0
  105. package/design/CONTRIBUTING.md +183 -0
  106. package/design/INDEX.md +133 -0
  107. package/design/README.md +86 -0
  108. package/design/_TEMPLATE.md +69 -0
  109. package/design/index.json +2720 -0
  110. package/package.json +2 -1
@@ -0,0 +1,124 @@
1
+ ---
2
+ id: genre-city-builder
3
+ title: City / Colony Builder
4
+ kind: genre
5
+ tags: [city-builder, colony, placement, adjacency, synergy, score, zoning, optimization]
6
+ summary: Placement-optimization builder where the exposed live score under the cursor IS the UI, and negative synergies make the only real decisions.
7
+ use-when: Designing a city/colony builder where the fun is placing tiles for adjacency payoff, guided by a live score and real tradeoffs.
8
+ composes-with: [system-economy, system-resource-loops, pattern-feedback-loops, system-procgen-design]
9
+ anchors: [anchor-factorio, anchor-rimworld]
10
+ verify-with: docs/FUN.md#17--citycolony-builder
11
+ ---
12
+
13
+ # City / Colony Builder
14
+
15
+ **What it is.** A grid or map you fill with buildings whose value depends on what
16
+ sits next to them. Placement is the whole verb: each tile scores from its neighbours,
17
+ and a live **"+N" under the cursor** tells you exactly what a spot is worth before you
18
+ commit. You optimize a growing layout against its own synergies.
19
+
20
+ **Player fantasy / why it's fun.** *"That corner is worth +7 — but it'd waste the river
21
+ tile."* The pull is a legible optimization space where good placement is visibly
22
+ rewarded and greed has a cost. Fun is **the exposed score**: the decision is on screen,
23
+ quantified, and yours.
24
+
25
+ ## Pillars
26
+
27
+ 1. **The exposed score is the UI.** One pure `placementScore` serves the sim, the bot,
28
+ the tests, *and* the "+N" label under the cursor. The live number is not decoration —
29
+ it's the entire interface between intent and system.
30
+ 2. **Negative synergies create the only real decisions.** If every placement is
31
+ strictly additive, the greedy move is always right and there's no game. Tradeoffs —
32
+ this bonus costs that one — are what make a layout a puzzle.
33
+ 3. **The layout is a standing feedback loop.** Each building reshapes the value of its
34
+ neighbours, so the map's optimum drifts as it grows. You're steering a system, not
35
+ filling a form.
36
+
37
+ ## The loop stack
38
+
39
+ | Layer | The beat |
40
+ |---|---|
41
+ | **Moment** | Hover a tile → read the "+N" → place for the payoff (or the tradeoff). |
42
+ | **Encounter** | A wave/queue of buildings to place well before space or budget runs out. |
43
+ | **Session** | A map/island: raise the total score against its synergy constraints. |
44
+ | **Meta** | Unlocks, larger/varied maps, new building types with new adjacency rules. |
45
+
46
+ ## Essential systems
47
+
48
+ | System | Why this genre needs it |
49
+ |---|---|
50
+ | [[system-economy]] | Resources produced and consumed by buildings; the sinks that stop pure additive sprawl. |
51
+ | [[system-resource-loops]] | Extract→process→consume chains give buildings reasons to cluster and compete for space. |
52
+ | [[pattern-feedback-loops]] | Adjacency synergies are the loop; negative synergies are the damping that keeps it a decision. |
53
+ | [[system-procgen-design]] | Varied maps/queues as content; seeds give replay and a fairness sweep (queue always fits). |
54
+ | [[system-onboarding]] | Teach one adjacency rule at a time; the "+N" label is itself the tutorial. |
55
+ | [[system-collectibles]] | Milestones, cosmetics, layout goals — optional pull past hitting the target. |
56
+
57
+ ## Content & difficulty model
58
+
59
+ - **One pure scorer, four consumers.** `placementScore` must be the *single* source of
60
+ truth for sim, bot, tests, and the on-screen "+N". A score the label computes
61
+ differently from the sim is a lie the audit must catch (score-honesty audit).
62
+ - **Prove the greedy bot faces tradeoffs.** Assert **greedy ≈ 2× random** — skill
63
+ separates from luck. If greedy never faces a negative synergy, neither does the
64
+ player; the tradeoffs aren't real.
65
+ - **Queue-always-fits sweep.** Over N maps/seeds, assert the placement queue can always
66
+ be legally placed — the builder's connectivity/fairness proof (a solvability guarantee
67
+ like the match-3 board's).
68
+ - **Difficulty = tighter space / sharper tradeoffs.** Harder maps give less room or
69
+ stronger negative synergies, not just bigger targets. The optimization gets meaner,
70
+ the score honest.
71
+ - **Content is building vocabulary.** Each new building type should add an adjacency
72
+ *relationship* (a new synergy or anti-synergy), not just a new sprite.
73
+
74
+ ## Signature-mechanic seeds
75
+
76
+ - **City builder but it's a colony of people with needs and moods** — placement serves a
77
+ simulated populace and an AI director authors drama around it (mechanic-swap +
78
+ structure toward [[anchor-rimworld]]; the score becomes lives).
79
+ - **City builder but the layout is a factory graph** — buildings are machines, adjacency
80
+ is throughput, the bottleneck is the puzzle (mechanic-swap toward [[anchor-factorio]]).
81
+ - **City builder but you place from a drafted hand** — each turn deals building options;
82
+ the bend fuses [[genre-deckbuilder]] draft-of-N onto placement (structure).
83
+ - **City builder but every tile is one screen and permanent** — a hard spatial + no-undo
84
+ constraint makes each "+N" a commitment (constraint).
85
+ - **City builder but it's a garden, not a metropolis** — tonal bend toward
86
+ [[genre-farming-sim]] calm; adjacency is companion planting, growth is the score.
87
+
88
+ ## Common pitfalls
89
+
90
+ - **Two scores.** A label that computes value differently from the sim breaks trust
91
+ invisibly; enforce one pure `placementScore`.
92
+ - **All-additive synergies.** With no tradeoffs the greedy move always wins and the game
93
+ is a formality. Negative synergies are non-optional.
94
+ - **A queue that can't fit.** An unplaceable building is an unfair softlock; the
95
+ queue-fits sweep exists to forbid it.
96
+ - **Score with no meaning.** A number that doesn't gate anything is wallpaper; tie it to
97
+ progression or a target the player is chasing.
98
+ - **Building bloat.** New types that don't add a relationship dilute the read; every one
99
+ should change an adjacency decision.
100
+
101
+ ## Anchors
102
+
103
+ - [[anchor-factorio]] — adjacency-as-throughput, the layout as the toy, complexity
104
+ scaling with the build; the factory-graph seed's reference.
105
+ - [[anchor-rimworld]] — the colony sim as a story generator, an AI director over the
106
+ placement; the reference for the people-with-needs bend.
107
+
108
+ ## Verify
109
+
110
+ N-island queue-always-fits sweep; greedy ≈ 2× random skill delta; scoring-honesty
111
+ audit; golden → **[docs/FUN.md §17 · City/colony builder](../../docs/FUN.md#17--citycolony-builder)**.
112
+ Design the synergy space and the exposed score here; prove the delta and the audit there.
113
+
114
+ ## Composes with
115
+
116
+ - [[system-economy]] — the sinks and resources that keep placement from pure sprawl.
117
+ - [[system-resource-loops]] — the extract→process→consume chains that make buildings compete for space.
118
+ - [[pattern-feedback-loops]] — the adjacency loop and the negative-synergy damping.
119
+
120
+ ## See also
121
+
122
+ - [docs/FUN.md §17](../../docs/FUN.md#17--citycolony-builder) — mechanical truth + verify recipe.
123
+ - [`sandboxes/`](../../sandboxes/) — the procgen/economy lab to prototype a scorer and a
124
+ queue-fits sweep before authoring buildings.
@@ -0,0 +1,124 @@
1
+ ---
2
+ id: genre-coop-chaos
3
+ title: Coop Chaos
4
+ kind: genre
5
+ tags: [coop, couch-coop, party, overcooked, communication, chaos, shared-task, local-multiplayer]
6
+ summary: Couch-coop chaos — escalating shared tasks that force communication under time pressure; the friction between players IS the fun.
7
+ use-when: The design is a local/party coop game where players juggle interdependent tasks against a clock and must talk to survive.
8
+ composes-with: [system-coop-and-competition, system-difficulty-and-dda, system-encounter-design, pattern-pacing-and-tension, genre-narrative-decisions]
9
+ anchors: [anchor-overcooked, anchor-it-takes-two]
10
+ verify-with: docs/FUN.md#8-·-tower-defense
11
+ ---
12
+
13
+ # Coop Chaos
14
+
15
+ **What it is.** Two-to-four players share one escalating task — a kitchen, a ship, a
16
+ factory — where the work outpaces any single pair of hands. Success needs division
17
+ of labour, hand-offs, and constant talk; the *joyful friction* between players is
18
+ the product. **Extension** beyond FUN.md's 21 genres.
19
+
20
+ **Player fantasy.** *"We did that — barely."* The shared adrenaline of a near-miss
21
+ pulled off by shouting the right thing at the right second; a story you tell
22
+ afterward, together.
23
+
24
+ ## Pillars
25
+
26
+ 1. **Communication forced by design.** The layout, not the rules, makes players
27
+ talk — split resources, blind hand-offs, a task no one can finish alone. If
28
+ silence works, it isn't coop chaos.
29
+ 2. **Escalating shared load.** Difficulty is *throughput* the table demands vs the
30
+ throughput the players can coordinate. The clock and the order queue ramp; the
31
+ kitchen literally shifts under them.
32
+ 3. **Legible chaos.** However frantic, every station, order, and hazard reads at a
33
+ glance. Chaos you can't parse is noise; chaos you can *just barely* parse is fun.
34
+
35
+ ## The loop stack
36
+
37
+ | Scale | The beat |
38
+ |---|---|
39
+ | **Moment** | Grab → carry → hand off → place; one micro-task, contested by space and time. |
40
+ | **Encounter** | A level/round: fulfil an order queue before the timer, as a layout fights you. |
41
+ | **Session** | A run of levels; escalating kitchens; star thresholds gating the next. |
42
+ | **Meta** | Unlocked levels/tools/modifiers; co-op star totals; the campaign map. |
43
+
44
+ ## Essential systems
45
+
46
+ | System | Why it's load-bearing |
47
+ |---|---|
48
+ | [[system-coop-and-competition]] | Interdependence is the core — design tasks no one player can solo. |
49
+ | [[system-difficulty-and-dda]] | The order-rate ramp and the layout-shift are the difficulty; scale to player count. |
50
+ | [[system-encounter-design]] | A level is composed pressure + pockets; the moving hazard IS the encounter. |
51
+ | [[pattern-pacing-and-tension]] | Deliberate breather beats between order surges; the finale is the peak. |
52
+ | [[system-session-structure]] | Short, replayable rounds; the run shape that suits couch play. |
53
+
54
+ ## Content & difficulty model
55
+
56
+ - **Difficulty = required throughput vs coordinatable throughput.** State it as an
57
+ inequality (orders/min the queue demands ≤ what N coordinated players can serve)
58
+ and tune the queue against it (FUN.md law 3).
59
+ - **The layout is the level.** Author kitchens/ships/rooms, not enemy stats. A
60
+ moving hazard (a splitting kitchen, a rising tide) is a *pacing* device — treat
61
+ its rhythm like a tower-defense wave curve: surges with breathers, finale peaks.
62
+ - **Scale to player count deterministically.** Task volume and station count key
63
+ off N; the same seed with 2 vs 4 players must both be winnable and both replay.
64
+ - **Null-coordination loses.** The scripted "everyone works solo, no hand-offs" run
65
+ must fail the level — that's the proof the design actually forces coop.
66
+
67
+ ## Signature-mechanic seeds
68
+
69
+ - **Overcooked *but* the recipe is hidden and only one player can read it** — the
70
+ forced channel is *information*, not just hands (constraint; composes
71
+ [[genre-narrative-decisions]] for the reader's dilemma).
72
+ - **Overcooked *but* on a train you build ahead of yourselves** — the workspace is
73
+ also a shared build task (mechanic-swap; the Unrailed bend).
74
+ - **It Takes Two *but* the two mechanics can jam each other** — interdependence
75
+ sharpened to interference (mechanic-swap; composes [[system-counter-systems]]).
76
+ - **Overcooked *but* asymmetric roles: one cooks, one defends the kitchen** —
77
+ a coop-chaos/tower-defense blend (structure; composes [[genre-tower-defense]]).
78
+ - **Coop chaos *but* the tasks are secretly competitive — shared kitchen, private
79
+ scores** (tonal; composes [[system-coop-and-competition]]'s rivalry hooks).
80
+
81
+ ## Common pitfalls
82
+
83
+ - **Silence wins.** If a good solo player can carry, the coop is decorative. Force
84
+ hand-offs and split resources so talking is mandatory.
85
+ - **Illegible frenzy.** Too many simultaneous hazards and the chaos stops reading;
86
+ players fail without understanding why. Cap concurrent threats; keep salience.
87
+ - **Punishing the weaker player.** Chaos that scapegoats one player kills the couch.
88
+ Design shared blame — failure should feel like *our* miss.
89
+ - **Wall-clock timing.** Order timers and layout shifts must run on sim time, not
90
+ `Date.now`, or replays and goldens lie (FUN.md law 6).
91
+
92
+ ## Anchors
93
+
94
+ - [[anchor-overcooked]] — communication-forced-by-design; escalating kitchens; the
95
+ canonical coop-chaos loop.
96
+ - [[anchor-it-takes-two]] — asymmetric coop set-pieces; a new interdependent
97
+ mechanic per chapter.
98
+
99
+ ## Verify — extension note
100
+
101
+ Coop chaos is an **extension**; it has no dedicated FUN.md section, so it *composes
102
+ the verify patterns of its parents*:
103
+
104
+ - **Wave/pressure pacing** → [FUN.md §8 — Tower defense](../../docs/FUN.md#8-·-tower-defense):
105
+ gate the order-queue/hazard curve on "each surge breathes, finale peaks," not
106
+ monotonicity. **This is the primary proof.**
107
+ - **Encounter containment** → [FUN.md §4 — Action-adventure](../../docs/FUN.md#4-·-top-down-action-adventure-zelda-like):
108
+ keep hand-off lanes / exit rows clear; assert no station softlocks.
109
+ - **Skill-delta** → [FUN.md law 2](../../docs/FUN.md#part-1--universal-laws):
110
+ a coordinated bot script clears; the null-coordination script fails. Determinism
111
+ and cosmetic-view rules apply unchanged (laws 6–7).
112
+
113
+ ## Composes with
114
+
115
+ - [[system-coop-and-competition]] — the interdependence toolkit; this genre is its
116
+ loudest expression.
117
+ - [[system-difficulty-and-dda]] — scale pressure to player count and skill.
118
+ - [[pattern-pacing-and-tension]] — the surge/breather rhythm that keeps chaos joyful.
119
+
120
+ ## See also
121
+
122
+ - [`docs/FUN.md`](../../docs/FUN.md) §8 — the wave-curve pattern to borrow for order
123
+ surges.
124
+ - [[genre-tower-defense]] — the parent whose pressure-curve verify this genre reuses.
@@ -0,0 +1,122 @@
1
+ ---
2
+ id: genre-deckbuilder
3
+ title: Roguelike Deckbuilder
4
+ kind: genre
5
+ tags: [deckbuilder, cards, draft, synergy, roguelike, build, win-rate]
6
+ summary: Drafts with teeth — a deck that evolves run-to-run, where the draft delta is provable and every spike is blockable in principle.
7
+ use-when: You want a run-based card game where the deck is the strategy and picking cards well is the whole skill.
8
+ composes-with: [system-build-diversity, system-reward-schedules, system-meta-progression, system-procgen-design, system-status-effects, system-telegraphs]
9
+ anchors: [anchor-slay-the-spire, anchor-balatro]
10
+ verify-with: docs/FUN.md#11--roguelike-deckbuilder
11
+ ---
12
+
13
+ # Roguelike Deckbuilder
14
+
15
+ **What it is.** A run-based game where your **deck is your build**. You start
16
+ with a weak pile, and after each fight you **draft** a card (usually 1 of 3, with
17
+ a skip) — so the deck *becomes* a strategy over the run. Fights are the pressure
18
+ test; the draft is the decision.
19
+
20
+ **Player fantasy / why it's fun.** *"I built this engine one card at a time and
21
+ watched it come online."* The pull is the draft with teeth: each pick is a
22
+ commitment, synergies compound, and a deck clicking into a combo is the payoff.
23
+
24
+ ## Pillars
25
+
26
+ 1. **Drafts with teeth.** The reward-of-3-with-a-skip is the core decision.
27
+ Picks must matter — the same pilot drafting *off* must lose far more (the
28
+ 17→9 delta). If any card is fine, drafting isn't a skill.
29
+ 2. **Spikes are blockable in principle.** Incoming damage must be answerable —
30
+ spike dmg ≤ block ceiling + heal — or a fight is a coin flip, not a puzzle.
31
+ Perfect telegraph honesty: what's shown is exactly what resolves.
32
+ 3. **Balance is a win-rate window.** The health instrument is a *range* (e.g.
33
+ 11–19 of 20), not a target. Both edges break: too-easy AND too-hard are bugs.
34
+
35
+ ## The loop stack
36
+
37
+ | Scale | The beat |
38
+ |---|---|
39
+ | **Moment** | Play a card from hand: read the telegraph, spend energy, resolve — the choreography returns. |
40
+ | **Encounter** | A fight: your deck's engine vs an enemy's telegraphed intents; block/attack/status math. |
41
+ | **Session** | A run: map choice → fights → draft rewards → shape the deck → boss. Thin vs wide is the arc. |
42
+ | **Meta** | Unlock cards/characters, add to the pool; carry archetype knowledge between runs. |
43
+
44
+ ## Essential systems
45
+
46
+ | System | Why it's load-bearing |
47
+ |---|---|
48
+ | [[system-build-diversity]] | Multiple viable deck archetypes; the reason to re-run. Making many strategies work. |
49
+ | [[system-reward-schedules]] | The card-reward-of-3, relics, shop, rare drops — the draft cadence and its pull. |
50
+ | [[system-status-effects]] | Poison/block/vulnerable/strength — the stacking rules that create combos. |
51
+ | [[system-telegraphs]] | Enemy intents shown ahead; the honesty that makes fights plannable, not luck. |
52
+ | [[system-procgen-design]] | Seeded map, reward, and enemy variance — each run a fresh hand of choices. |
53
+
54
+ ## Content & difficulty model
55
+
56
+ - **Content is the card pool + relics + enemy intents.** Depth is *interactions*
57
+ (synergy engines), not raw card count. A small pool with deep combos beats a
58
+ big pile of vanilla cards.
59
+ - **Tune the goal to the measured win-rate**, not mechanics to a fixed goal — run
60
+ a greedy pilot, place the window, adjust rewards/enemy math to land inside it.
61
+ - **Draft delta is the proof.** Same pilot, drafting on vs skipping, must show a
62
+ large gap (17/20 vs 9/20). If null drafting competes, the draft is
63
+ decorative.
64
+ - **Intent honesty is a one-line audit.** Resolve each telegraph, compare to the
65
+ shown number — they must match exactly (law 6 / perfect-info honesty).
66
+ - **Meta adds cards, not power.** Unlocks widen the pool; guard against the deck
67
+ being decided at the menu. See [[system-meta-progression]].
68
+
69
+ ## Signature-mechanic seeds
70
+
71
+ - **Deckbuilder but hands score like poker** *(mechanic-swap)* — Balatro's
72
+ bend: the multiplier engine, not the fight, is the number-go-up. Pairs
73
+ [[anchor-balatro]].
74
+ - **Deckbuilder but the enemy drafts from your discards** *(structure)* — your
75
+ cast cards arm the boss; deck-thinning becomes a defensive art.
76
+ - **Deckbuilder but one card, played, is gone forever** *(constraint)* — a
77
+ scarcity deckbuilder; every play is a spend, hoarding stalls you.
78
+ - **Deckbuilder but cards are inked and fade** *(theme + tonal)* — Kentō
79
+ woodblock cards that wear with use; the deck is a weathering artifact.
80
+ - **Deckbuilder but two players share one deck** *(perspective + coop)* —
81
+ alternating draws, one strategy; drafting is negotiation. Pairs
82
+ [[system-coop-and-competition]].
83
+
84
+ ## Common pitfalls
85
+
86
+ - **Every card is fine.** With no bad picks, drafting has no teeth. Some cards
87
+ must be traps in the wrong deck.
88
+ - **Unblockable spikes.** Damage past the block ceiling turns fights into coin
89
+ flips. Keep spikes answerable in principle.
90
+ - **Single dominant archetype.** If one build always wins,
91
+ [[system-build-diversity]] failed and replay dies.
92
+ - **Dishonest intents.** A telegraph that resolves to a different number breaks
93
+ the plannability the whole genre rests on.
94
+ - **Balancing to one edge.** Tuning only against "too hard" ships a too-easy
95
+ game; the window has two walls.
96
+
97
+ ## Anchors
98
+
99
+ - [[anchor-slay-the-spire]] — the reference: draft-of-3, map choice, deck-as-
100
+ evolving-strategy. Steal the whole spine.
101
+ - [[anchor-balatro]] — the score-multiplier variant; steal the joker-synergy
102
+ "number goes up" juice for a scoring-first bend.
103
+
104
+ ## Verify
105
+
106
+ Prove it in **[FUN.md §11 · Roguelike
107
+ deckbuilder](../../docs/FUN.md#11--roguelike-deckbuilder)**: a greedy pilot lands
108
+ in the win-rate window, a never-draft pilot falls below it, the intent audit
109
+ matches, and a golden climb hash replays.
110
+
111
+ ## Composes with
112
+
113
+ - [[system-build-diversity]] — the multiple viable archetypes that carry replay.
114
+ - [[system-reward-schedules]] — the draft cadence and its ethical pull.
115
+ - [[system-status-effects]] — the stacking rules that make synergy engines.
116
+
117
+ ## See also
118
+
119
+ - [`sandboxes/procgen-lab`](../../sandboxes/procgen-lab) — seeded map/reward
120
+ variance wiring.
121
+ - [`examples/sokoban`](../../examples/sokoban) — pure-state resolution + returned
122
+ choreography; a card fight is the same pattern (law 6, 7).
@@ -0,0 +1,131 @@
1
+ ---
2
+ id: genre-exploration
3
+ title: Exploration
4
+ kind: genre
5
+ tags: [exploration, discovery, immersive-sim, outer-wilds, obra-dinn, curiosity, knowledge, deduction]
6
+ summary: Discovery as the reward — knowledge is the only progression; curiosity gates the world and understanding is the win.
7
+ use-when: The design gates progress on player knowledge/deduction rather than stats or items (Outer Wilds / Obra Dinn-like).
8
+ composes-with: [system-emergent-systems, system-onboarding, pattern-emergence, genre-narrative-decisions, genre-metroidvania]
9
+ anchors: [anchor-outer-wilds, anchor-return-of-the-obra-dinn]
10
+ verify-with: docs/FUN.md#10-·-traditional-roguelike
11
+ ---
12
+
13
+ # Exploration
14
+
15
+ **What it is.** The world is a knowledge-locked space: nothing bars you but
16
+ *understanding*. You wander, notice, connect clues, and the "unlock" is a
17
+ realisation in your head, not an item in a bag. **Extension** beyond FUN.md's 21
18
+ genres — discovery / immersive-sim-lite, where curiosity is the whole engine.
19
+
20
+ **Player fantasy.** *"I figured it out."* The rare, clean high of deduction — the
21
+ world trusted you to reason, and you did. Progress you can't buy, only earn by
22
+ paying attention.
23
+
24
+ ## Pillars
25
+
26
+ 1. **Knowledge is the only progression.** No stat gates, no keys — what you *know*
27
+ is what lets you proceed. The player, not the avatar, levels up. A gate opens
28
+ the moment you understand it (Outer Wilds); it never opens by grinding.
29
+ 2. **Curiosity is the pull.** Every vista, anomaly, and half-answer plants a
30
+ question. The design's job is a horizon of "what's *that*?" that keeps refilling.
31
+ 3. **The world is internally honest.** It rewards reasoning only if it obeys its own
32
+ rules perfectly. What you observe must always mean what it seems to — deduction
33
+ dies on a single lie (Obra Dinn's fates are ground truth).
34
+
35
+ ## The loop stack
36
+
37
+ | Scale | The beat |
38
+ |---|---|
39
+ | **Moment** | Notice → question → probe; a single observation logged. |
40
+ | **Encounter** | A site/puzzle: gather clues, form a hypothesis, test it. |
41
+ | **Session** | A thread pulled to a realisation that reframes the map. |
42
+ | **Meta** | The web of understanding; the endgame that only *knowledge* unlocks. |
43
+
44
+ ## Essential systems
45
+
46
+ | System | Why it's load-bearing |
47
+ |---|---|
48
+ | [[system-emergent-systems]] | A world that remembers and interlocks turns wandering into a personal investigation. |
49
+ | [[world-narrative-delivery]] | Story lives in the environment/artefacts/systems — embedded, not narrated at you. |
50
+ | [[system-onboarding]] | Teaching *how to notice* without hand-holding is the hardest first-ten-minutes problem. |
51
+ | [[pattern-emergence]] | Interlocking rules let players deduce consequences you didn't script. |
52
+ | [[system-save-and-checkpoint]] | A knowledge journal / clue log is the save state that respects the player's reasoning. |
53
+
54
+ ## Content & difficulty model
55
+
56
+ - **Gate on understanding, not stats.** For each gate, name the *piece of knowledge*
57
+ that opens it and prove the world teaches it somewhere reachable. This is a
58
+ connectivity problem: is every required clue reachable before the gate that needs
59
+ it? (Borrow the roguelike connectivity sweep — see Verify.)
60
+ - **A clue log is the progression track.** Surface what the player has deduced (Obra
61
+ Dinn's confirmed-in-threes). The journal is player-critical knowledge, exposed —
62
+ the same discipline as showing "nights left" in a farming sim.
63
+ - **Difficulty is inference distance**, not enemy stats — how many clues must chain,
64
+ how obliquely. Ramp by lengthening the chain, never by hiding a required clue.
65
+ - **Non-linearity is the point.** Multiple threads open at once; author a *web*, not
66
+ a corridor, and prove several valid orders of discovery reach the end.
67
+
68
+ ## Signature-mechanic seeds
69
+
70
+ - **Outer Wilds *but* the loop is a single tide, not a supernova — the world resets
71
+ on a rhythm you must learn** (mechanic-swap; composes [[genre-rhythm]] for the
72
+ clock).
73
+ - **Obra Dinn *but* the deductions are social — who lied, not who died** (theme;
74
+ composes [[genre-narrative-decisions]] for the trust meters).
75
+ - **Exploration *but* every ability you'd expect to *find* is instead something you
76
+ *realise you could always do*** — knowledge as the "power-up" (mechanic-swap;
77
+ composes [[genre-metroidvania]]).
78
+ - **Exploration *but* co-op: two investigators with different senses must share
79
+ what only they can perceive** (structure; composes [[genre-coop-chaos]]).
80
+ - **Exploration *but* the map is procedural yet its *rules* are fixed — you learn a
81
+ grammar, not a layout** (structure; composes [[system-procgen-design]]).
82
+
83
+ ## Common pitfalls
84
+
85
+ - **A single lie.** If one observed thing doesn't mean what it shows, deduction
86
+ becomes guessing and trust collapses. The world must be honest to the frame
87
+ (the Obra Dinn / tactics perfect-information discipline).
88
+ - **Fake curiosity (fetch quests).** Markers and checklists replace wonder with
89
+ chores. Let the *question* pull, not a waypoint.
90
+ - **Unreachable required knowledge.** A gate whose clue spawns behind that same gate
91
+ is a softlock. Run the connectivity sweep on *knowledge*, not just geometry.
92
+ - **Over-narration.** Cutscenes that hand you the answer steal the deduction. Deliver
93
+ through the world; let the player assemble it (see [[world-narrative-delivery]]).
94
+
95
+ ## Anchors
96
+
97
+ - [[anchor-outer-wilds]] — knowledge as the only progression; a curiosity-gated open
98
+ world that never gates on items.
99
+ - [[anchor-return-of-the-obra-dinn]] — deduction as the core loop; the game trusts
100
+ your reasoning and confirms it honestly.
101
+
102
+ ## Verify — extension note
103
+
104
+ Exploration is an **extension**; with no dedicated FUN.md section it *composes its
105
+ parents' verify patterns*:
106
+
107
+ - **Reachability/connectivity of required knowledge** → [FUN.md §10 — Roguelike](../../docs/FUN.md#10-·-traditional-roguelike):
108
+ assert every required clue/gate is reachable across seeds/orders BEFORE tuning
109
+ difficulty. Full-knowledge bots prove a *line exists*, not player experience —
110
+ exactly the right claim here. **This is the primary proof.**
111
+ - **Content honesty/lint** → [FUN.md §21 — Narrative decisions](../../docs/FUN.md#21-·-narrative-decisions-reigns-like):
112
+ clues are data — lint for unique ids, every gate's needs-flag settable, no
113
+ dangling/contradictory clues, no unreachable content.
114
+ - **Perfect-information honesty** → [FUN.md §12 — Tactics](../../docs/FUN.md#12-·-turn-based-tactics):
115
+ what's shown resolves exactly as shown; deduction demands it.
116
+ - Determinism + pure-data state (laws 6–7) make the clue web replayable and
117
+ clone-and-score deducible.
118
+
119
+ ## Composes with
120
+
121
+ - [[system-emergent-systems]] — interlocking, remembering systems are what make a
122
+ world worth investigating.
123
+ - [[world-narrative-delivery]] — the delivery half; exploration is its most demanding
124
+ client.
125
+ - [[genre-metroidvania]] — swap its ability-gates for knowledge-gates and you're here.
126
+
127
+ ## See also
128
+
129
+ - [`docs/FUN.md`](../../docs/FUN.md) §10 — the connectivity sweep, repurposed for
130
+ knowledge reachability.
131
+ - [[genre-narrative-decisions]] — shares the content-lint discipline for clue data.
@@ -0,0 +1,122 @@
1
+ ---
2
+ id: genre-farming-sim
3
+ title: Farming / Life Sim
4
+ kind: genre
5
+ tags: [farming, life-sim, calendar, crops, seasons, cozy, solvency, routine]
6
+ summary: Calm calendar-driven life sim where the fun is gentle solvency — plans made on a season that can actually come true.
7
+ use-when: Designing a cozy farming/life sim whose pull is a routine of small plans paying off within an honest calendar.
8
+ composes-with: [system-resource-loops, system-session-structure, system-economy, pattern-pacing-and-tension]
9
+ anchors: [anchor-stardew-valley]
10
+ verify-with: docs/FUN.md#15--farminglife-sim
11
+ ---
12
+
13
+ # Farming / Life Sim
14
+
15
+ **What it is.** A calendar and a plot of land. You plant, water, wait, harvest,
16
+ sell, and reinvest across seasons — a routine of small chores whose payoff arrives
17
+ on a schedule you can read. Optional threads (relationships, foraging, upgrades)
18
+ braid around the core crop loop.
19
+
20
+ **Player fantasy / why it's fun.** *"I made a plan on Monday and by harvest it came
21
+ true."* The pull is **gentle solvency**: no fail-screen looming, just plans that
22
+ resolve. Calm isn't the absence of goals — it's goals that are *reachable*, a to-do
23
+ list that closes itself one satisfying day at a time.
24
+
25
+ ## Pillars
26
+
27
+ 1. **Plans that can come true.** The calendar is a hard inequality, not a vibe:
28
+ **season length ≥ longest growDays + harvest slack**. Every crop the game sells
29
+ must fit the season it's sold in.
30
+ 2. **The player knows what the bot knew.** Surface the critical numbers — *nights
31
+ left in the season*, days to ripen — on screen. Knowledge the diligent bot needs
32
+ to win is knowledge the player needs to plan.
33
+ 3. **One predicate sets the whole mood.** *"Ripe crops survive the season turn"* (or
34
+ don't) is a single rule that defines the genre's entire emotional register —
35
+ forgiving vs. punishing. Choose it deliberately.
36
+
37
+ ## The loop stack
38
+
39
+ | Layer | The beat |
40
+ |---|---|
41
+ | **Moment** | A chore: plant / water / harvest / feed. Small, tactile, done. |
42
+ | **Encounter** | A day: spend energy/time on the plan, watch it advance a step. |
43
+ | **Session** | A season: the plan matures; you reinvest the yield. |
44
+ | **Meta** | The year and beyond: upgrades, relationships, land, mastery. |
45
+
46
+ ## Essential systems
47
+
48
+ | System | Why this genre needs it |
49
+ |---|---|
50
+ | [[system-resource-loops]] | Gather→convert→spend (seed→crop→cash→seed) is the beating core; bottlenecks (energy, water, space) are the pacing. |
51
+ | [[system-session-structure]] | Day / season / year nesting sets session length and the calendar arithmetic every plan is checked against. |
52
+ | [[system-economy]] | Faucets (harvest) and sinks (seeds, upgrades) must keep reinvestment strictly better than hoarding. |
53
+ | [[pattern-pacing-and-tension]] | Peaks (harvest day, festival) and valleys (the mid-season wait); the calm needs a rhythm, not a flatline. |
54
+ | [[system-collectibles]] | Recipes, shipped items, friendships — the open-ended goals that pull without pressure. |
55
+ | [[system-onboarding]] | The first day must teach plant→water→wait→harvest by doing, on one short crop. |
56
+
57
+ ## Content & difficulty model
58
+
59
+ - **The calendar is a proof, not a setting.** Assert `seasonLength ≥ max(growDays) +
60
+ harvestSlack` against the actual crop table. A crop that can't finish its season is
61
+ a broken promise; a lint should refuse it.
62
+ - **Difficulty is solvency margin.** A "hard" year is a *tighter* budget, not a
63
+ meaner world. Prove a diligent bot reaches the target by day N; prove no-water →
64
+ no-growth; prove wither is honest (a crop dies visibly, on a rule).
65
+ - **Reinvest must beat hoard.** Assert the delta — a reinvesting bot out-earns a
66
+ hoarding one (FUN.md measures 740 vs 236). If hoarding competes, the economy has no
67
+ loop.
68
+ - **Expose the countdown.** *Nights left in season* is the single most load-bearing
69
+ number; it turns anxiety into planning.
70
+ - **Content grows sideways.** More crops, animals, tools, and social threads — *width*
71
+ the player chooses, not a difficulty wall. Solvency stays gentle; ambition scales.
72
+
73
+ ## Signature-mechanic seeds
74
+
75
+ - **Farming sim but you tend a garden of grief** — each crop is a memory; the season
76
+ ends when you're ready to release it (tonal + mechanic-swap; the [[process-the-twist]]
77
+ worked example — calm becomes coming-to-terms).
78
+ - **Farming sim but the plot is one screen, no expansion** — a hard spatial constraint
79
+ turns every tile into a decision (constraint; solvency gets tight and tactical).
80
+ - **Farming sim but crops are tiles you match** — harvest is a board clear; a bend
81
+ toward [[genre-match3]] where planting sets up cascades (mechanic-swap).
82
+ - **Farming sim but nights are survival** — day tends, night defends the harvest with a
83
+ fuel-budgeted lamp (structure + tonal; splices [[genre-survival-horror]]'s dread you
84
+ can budget onto a cozy day).
85
+ - **Farming sim but the whole game is one exposed rule** — connect farms to yurts, and
86
+ that single legible predicate is the content (structure; the Tiny Yurts read).
87
+
88
+ ## Common pitfalls
89
+
90
+ - **Calendar that lies.** Crops that can't ripen in their season, or a season that ends
91
+ mid-growth without warning — the fastest way to break the "plans come true" promise.
92
+ - **Hidden critical numbers.** If the player can't see nights-left or grow-time, they
93
+ can't plan, and planning is the fun.
94
+ - **Hoarding beats reinvesting.** Kills the loop; the economy must reward putting the
95
+ yield back in.
96
+ - **Fake calm.** No peaks, no valleys, just undifferentiated chores → boredom.
97
+ [[pattern-pacing-and-tension]] gives the calm its rhythm.
98
+ - **Width as busywork.** New crops that don't change a decision are clutter; each
99
+ should open a plan the player couldn't make before.
100
+
101
+ ## Anchors
102
+
103
+ - [[anchor-stardew-valley]] — the calm compulsion loop, open-ended goals, and the
104
+ day/season/year nesting; the definitive DNA for this genre.
105
+
106
+ ## Verify
107
+
108
+ Diligent bot wins by day N; no-water-no-growth; wither honesty; reinvest-vs-hoard
109
+ delta; golden year → **[docs/FUN.md §15 · Farming/life sim](../../docs/FUN.md#15--farminglife-sim)**.
110
+ Design the calendar and loop here; prove the inequality there.
111
+
112
+ ## Composes with
113
+
114
+ - [[system-resource-loops]] — the seed→crop→cash→seed cycle at the genre's heart.
115
+ - [[system-session-structure]] — the day/season/year calendar the plans are checked against.
116
+ - [[anchor-stardew-valley]] — the touchstone whose loop you import pre-solved.
117
+
118
+ ## See also
119
+
120
+ - [docs/FUN.md §15](../../docs/FUN.md#15--farminglife-sim) — mechanical truth + verify recipe.
121
+ - [`sandboxes/`](../../sandboxes/) — the economy/procgen lab to headless-sim a season's
122
+ solvency before authoring a crop table.