hayao 0.4.0 → 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.
- package/design/00-process/README.md +49 -0
- package/design/00-process/composition.md +148 -0
- package/design/00-process/core-loop.md +146 -0
- package/design/00-process/intent-to-brief.md +128 -0
- package/design/00-process/pillars.md +139 -0
- package/design/00-process/refine-and-handoff.md +156 -0
- package/design/00-process/the-twist.md +108 -0
- package/design/10-anchors/README.md +99 -0
- package/design/10-anchors/age-of-empires.md +103 -0
- package/design/10-anchors/baba-is-you.md +127 -0
- package/design/10-anchors/balatro.md +132 -0
- package/design/10-anchors/celeste.md +136 -0
- package/design/10-anchors/civilization.md +101 -0
- package/design/10-anchors/dead-cells.md +125 -0
- package/design/10-anchors/factorio.md +100 -0
- package/design/10-anchors/hades.md +127 -0
- package/design/10-anchors/into-the-breach.md +125 -0
- package/design/10-anchors/it-takes-two.md +104 -0
- package/design/10-anchors/loop-hero.md +131 -0
- package/design/10-anchors/nuclear-throne.md +130 -0
- package/design/10-anchors/outer-wilds.md +107 -0
- package/design/10-anchors/overcooked.md +102 -0
- package/design/10-anchors/peggle.md +133 -0
- package/design/10-anchors/reigns.md +99 -0
- package/design/10-anchors/return-of-the-obra-dinn.md +108 -0
- package/design/10-anchors/rimworld.md +101 -0
- package/design/10-anchors/shadow-of-mordor.md +106 -0
- package/design/10-anchors/slay-the-spire.md +127 -0
- package/design/10-anchors/starcraft.md +98 -0
- package/design/10-anchors/stardew-valley.md +103 -0
- package/design/10-anchors/tetris.md +122 -0
- package/design/10-anchors/vampire-survivors.md +122 -0
- package/design/20-genres/README.md +62 -0
- package/design/20-genres/action-adventure.md +126 -0
- package/design/20-genres/auto-battler.md +121 -0
- package/design/20-genres/bullet-hell.md +123 -0
- package/design/20-genres/city-builder.md +124 -0
- package/design/20-genres/coop-chaos.md +124 -0
- package/design/20-genres/deckbuilder.md +122 -0
- package/design/20-genres/exploration.md +131 -0
- package/design/20-genres/farming-sim.md +122 -0
- package/design/20-genres/grid-puzzle.md +126 -0
- package/design/20-genres/horde-survival.md +128 -0
- package/design/20-genres/incremental.md +120 -0
- package/design/20-genres/match3.md +120 -0
- package/design/20-genres/metroidvania.md +132 -0
- package/design/20-genres/narrative-decisions.md +122 -0
- package/design/20-genres/physics-arcade.md +124 -0
- package/design/20-genres/precision-platformer.md +127 -0
- package/design/20-genres/racing.md +126 -0
- package/design/20-genres/rhythm.md +125 -0
- package/design/20-genres/roguelike.md +122 -0
- package/design/20-genres/rts.md +169 -0
- package/design/20-genres/stealth.md +125 -0
- package/design/20-genres/survival-horror.md +124 -0
- package/design/20-genres/tactics.md +123 -0
- package/design/20-genres/tower-defense.md +120 -0
- package/design/30-systems/README.md +69 -0
- package/design/30-systems/accessibility.md +110 -0
- package/design/30-systems/boss-design.md +126 -0
- package/design/30-systems/build-diversity.md +120 -0
- package/design/30-systems/collectibles.md +108 -0
- package/design/30-systems/combat-model.md +113 -0
- package/design/30-systems/coop-and-competition.md +118 -0
- package/design/30-systems/counter-systems.md +115 -0
- package/design/30-systems/crafting.md +115 -0
- package/design/30-systems/difficulty-and-dda.md +114 -0
- package/design/30-systems/economy.md +117 -0
- package/design/30-systems/emergent-systems.md +114 -0
- package/design/30-systems/encounter-design.md +107 -0
- package/design/30-systems/enemy-ai.md +121 -0
- package/design/30-systems/enemy-archetypes.md +117 -0
- package/design/30-systems/faction-asymmetry.md +144 -0
- package/design/30-systems/grace.md +124 -0
- package/design/30-systems/mastery-curve.md +116 -0
- package/design/30-systems/meta-progression.md +114 -0
- package/design/30-systems/onboarding.md +115 -0
- package/design/30-systems/procgen-design.md +118 -0
- package/design/30-systems/progression.md +120 -0
- package/design/30-systems/resource-loops.md +112 -0
- package/design/30-systems/reward-schedules.md +124 -0
- package/design/30-systems/save-and-checkpoint.md +113 -0
- package/design/30-systems/session-structure.md +113 -0
- package/design/30-systems/skill-trees.md +111 -0
- package/design/30-systems/status-effects.md +111 -0
- package/design/30-systems/tech-tree.md +112 -0
- package/design/30-systems/telegraphs.md +106 -0
- package/design/30-systems/unit-rosters.md +123 -0
- package/design/40-worldbuilding/README.md +49 -0
- package/design/40-worldbuilding/aesthetic-direction.md +155 -0
- package/design/40-worldbuilding/faction-identity.md +136 -0
- package/design/40-worldbuilding/naming-and-tone.md +130 -0
- package/design/40-worldbuilding/narrative-delivery.md +129 -0
- package/design/40-worldbuilding/theme-vectors.md +134 -0
- package/design/40-worldbuilding/worldbuilding-scaffold.md +132 -0
- package/design/50-patterns/README.md +54 -0
- package/design/50-patterns/anti-frustration.md +121 -0
- package/design/50-patterns/emergence.md +121 -0
- package/design/50-patterns/feedback-loops.md +121 -0
- package/design/50-patterns/juice-choreography.md +124 -0
- package/design/50-patterns/mastery-and-flow.md +121 -0
- package/design/50-patterns/pacing-and-tension.md +120 -0
- package/design/50-patterns/readability.md +121 -0
- package/design/50-patterns/risk-reward.md +120 -0
- package/design/CONTRIBUTING.md +183 -0
- package/design/INDEX.md +133 -0
- package/design/README.md +86 -0
- package/design/_TEMPLATE.md +69 -0
- package/design/index.json +2720 -0
- package/dist/anim/blend.d.ts +68 -0
- package/dist/anim/clip.d.ts +87 -0
- package/dist/anim/ik.d.ts +40 -0
- package/dist/anim/skeleton.d.ts +64 -0
- package/dist/hayao.global.js +12 -12
- package/dist/index.d.ts +11 -1
- package/dist/index.js +1683 -516
- package/dist/index.js.map +4 -4
- package/dist/index.min.js +12 -12
- package/dist/render/canvas2d-core.d.ts +4 -0
- package/dist/render/commands.d.ts +19 -0
- package/dist/render/lightRun.d.ts +35 -0
- package/dist/render/svgString.d.ts +8 -3
- package/dist/scene/clipPlayer.d.ts +58 -0
- package/dist/scene/ikTarget.d.ts +25 -0
- package/dist/scene/light.d.ts +80 -0
- package/dist/scene/shadow2d.d.ts +25 -0
- package/dist/scene/skeletonDebug.d.ts +28 -0
- package/dist/verify/gates.d.ts +25 -0
- package/docs/API.md +66 -8
- package/docs/CONVENTIONS.md +56 -0
- 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.
|