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.
Files changed (131) 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/dist/anim/blend.d.ts +68 -0
  111. package/dist/anim/clip.d.ts +87 -0
  112. package/dist/anim/ik.d.ts +40 -0
  113. package/dist/anim/skeleton.d.ts +64 -0
  114. package/dist/hayao.global.js +12 -12
  115. package/dist/index.d.ts +11 -1
  116. package/dist/index.js +1683 -516
  117. package/dist/index.js.map +4 -4
  118. package/dist/index.min.js +12 -12
  119. package/dist/render/canvas2d-core.d.ts +4 -0
  120. package/dist/render/commands.d.ts +19 -0
  121. package/dist/render/lightRun.d.ts +35 -0
  122. package/dist/render/svgString.d.ts +8 -3
  123. package/dist/scene/clipPlayer.d.ts +58 -0
  124. package/dist/scene/ikTarget.d.ts +25 -0
  125. package/dist/scene/light.d.ts +80 -0
  126. package/dist/scene/shadow2d.d.ts +25 -0
  127. package/dist/scene/skeletonDebug.d.ts +28 -0
  128. package/dist/verify/gates.d.ts +25 -0
  129. package/docs/API.md +66 -8
  130. package/docs/CONVENTIONS.md +56 -0
  131. package/package.json +2 -1
@@ -0,0 +1,127 @@
1
+ ---
2
+ id: anchor-hades
3
+ title: Hades
4
+ kind: anchor
5
+ tags: [roguelite, meta-progression, narrative, death, build-diversity, boons, run-based]
6
+ summary: Action roguelite where dying is the delivery mechanism for story and power — meta-progression is narrative, so losing is content, not punishment.
7
+ use-when: Designing a run-based game where you want death to advance the fiction and the meta-loop to carry players through failure.
8
+ composes-with: [genre-roguelike, system-meta-progression, system-build-diversity, system-emergent-systems]
9
+ anchors: [anchor-hades]
10
+ verify-with: docs/FUN.md#10-·-traditional-roguelike
11
+ ---
12
+
13
+ # Hades
14
+
15
+ **What it is.** A fast isometric action roguelite where every death returns
16
+ you *home* — and home is where the story, the relationships, and the permanent
17
+ upgrades all live. You lose, you learn something, you get a little stronger
18
+ and a lot more attached.
19
+
20
+ **Player fantasy / why it's fun.** *Failure is progress.* Most roguelites ask
21
+ you to endure the grind between runs; Hades makes the grind the *best part*.
22
+ The pull is a double hook: the tight combat run, and the soap-opera of NPCs
23
+ who react to your last death by name.
24
+
25
+ ## Design DNA
26
+
27
+ Take the roguelike's **fair-discovery run** and solve its oldest problem — the
28
+ demoralising reset — by routing **death straight into content**. Every failed
29
+ run spends its currency on: a permanent power sliver, a new line of dialogue,
30
+ a nudged relationship. The meta-layer isn't a stat screen; it's a *story that
31
+ only advances when you die*. Combat gives you the moment-to-moment; the
32
+ between-runs layer gives you the reason to start the next one.
33
+
34
+ The structural inversion is worth naming: in most roguelites the run is the
35
+ reward and the reset is the tax. Hades makes **the reset the reward** — you
36
+ *want* to come home, because home is where the writing, the gifts, and the
37
+ mirror upgrades live. A player who bounces off the combat still gets a full
38
+ game out of the hub. That doubles the audience the design can hold, and it's
39
+ why "just one more run" survives even a losing streak.
40
+
41
+ The second pillar is **build-from-a-draft**: boons offered on the way down
42
+ compose into a run identity, so no two descents play alike. The draft and the
43
+ meta-layer reinforce each other — the mirror talents you unlocked by *dying*
44
+ widen the space of viable builds, so failure literally expands the strategy
45
+ tree.
46
+
47
+ ## Load-bearing structures
48
+
49
+ | Structure | Why it works |
50
+ |---|---|
51
+ | **Death → home → story** | The reset isn't a punishment screen; it's the narrative delivery vehicle. Losing *is* the content. [[system-meta-progression]] + [[world-narrative-delivery]]. |
52
+ | **Two currencies, two horizons** | Ephemeral in-run resources (build the run) vs persistent meta-currency (build the *account*). Splits "this run" from "forever." [[system-economy]]. |
53
+ | **Boon draft = run identity** | Choose-1-of-N god blessings compound into a build; synergies (duo boons) reward committing. [[system-build-diversity]] / [[pattern-risk-reward]]. |
54
+ | **NPCs with memory** | Characters react to your deaths, gifts, progress — a light [[system-emergent-systems]] that makes the hub feel alive and rewards *returning*. |
55
+ | **Escalating-but-optional heat** | A self-imposed difficulty stack (Pact of Punishment) lets mastered players re-earn tension. [[system-difficulty-and-dda]]. |
56
+ | **Generous permanent floor** | Meta-upgrades (death defiance, mirror talents) make each run start stronger — the curve pulls weak players forward without trivialising skill. |
57
+ | **Short, legible runs** | ~30-min descents keep the death-story loop tight; you're never far from the next beat. [[system-session-structure]]. |
58
+
59
+ ## What to steal
60
+
61
+ - **Route failure into content.** The single most portable idea: every loss
62
+ should hand the player *something* — a line, an unlock, a relationship tick.
63
+ Kills the "wasted run" feeling and turns a losing streak into a story arc.
64
+ - **Split ephemeral vs persistent currency.** One builds the run, one builds
65
+ the save. Keep the horizons distinct so both decisions matter — in-run
66
+ resources are spent recklessly, meta-currency is hoarded and planned.
67
+ - **Draft-of-N boons that compound into an identity**, with rare high-synergy
68
+ payoffs (duo boons) that reward committing early to an archetype rather than
69
+ grabbing the best single card.
70
+ - **A hub of NPCs that remember.** Even shallow memory — a flag per death, a
71
+ gift counter, a "last boss killed" string — makes the meta-loop feel like a
72
+ place you return to, not a menu you tab through. See
73
+ [[system-emergent-systems]].
74
+ - **A permanent floor generous enough to carry a struggling player**, paired
75
+ with an *opt-in* difficulty stack for the mastered one (Heat / Pact). One
76
+ curve, two audiences: the floor pulls weak players up, the opt-in ceiling
77
+ re-earns tension for strong ones.
78
+ - **Make the meta-tree widen builds, not just raise stats.** Unlocks that add
79
+ *options* (new weapons, mirror branches) keep death interesting far longer
80
+ than unlocks that only add power.
81
+
82
+ ## What's just theme (drop it)
83
+
84
+ - **Greek mythology.** Fully cosmetic — the boon-givers could be corporate
85
+ sponsors or rival chefs. The *draft-from-named-benefactors* structure is
86
+ what matters.
87
+ - **The specific family drama.** The *structure* (NPCs react to deaths) is
88
+ stealable; the exact cast is flavour — see [[world-narrative-delivery]].
89
+ - **Isometric hack-and-slash combat.** The meta/death loop is genre-agnostic;
90
+ bolt it onto a deckbuilder, a shmup, a racer.
91
+ - **Voice-acted dialogue at scale.** The reactive-NPC *hook* works with one
92
+ line of text per event.
93
+
94
+ ## Composes into
95
+
96
+ - [[genre-roguelike]] — supplies the fair-discovery run this wraps.
97
+ - [[system-meta-progression]] — Hades is the reference for meta-as-narrative.
98
+ - [[system-build-diversity]] — the boon draft is the exemplar.
99
+ - [[system-emergent-systems]] — the remembering hub.
100
+ - [[world-narrative-delivery]] — story told through system events, not
101
+ cutscenes.
102
+
103
+ ## Twist seams
104
+
105
+ - **Hades but you play the ones left behind** *(perspective)* — you're a hub
106
+ NPC managing the runners; death sends *them* home to you, and you spend
107
+ their currency. Inverts who owns the meta-loop.
108
+ - **Hades but the story only advances on a *win*** *(structure)* — flips the
109
+ emotional register: now every run is a fragile hope, and the meta-tree is a
110
+ reward for survival, not consolation. Bends [[system-meta-progression]].
111
+ - **Hades but cozy — death is a dinner party** *(tonal)* — no combat; each
112
+ "run" is a social escapade, and returning home unlocks recipes and
113
+ relationships. Keeps the death→home→story spine, drops the violence. Pairs
114
+ with [[genre-narrative-decisions]].
115
+ - **Hades but the hub is the game and the runs are backstory** *(perspective)*
116
+ — invert the weighting: you *manage* the house between other characters'
117
+ descents, and their deaths deliver content to *you*. The action loop becomes
118
+ ambient; the relationship sim becomes central. Feeds
119
+ [[system-emergent-systems]].
120
+
121
+ ## See also
122
+
123
+ - [[genre-roguelike]] · [[system-meta-progression]] ·
124
+ [[system-build-diversity]] · [[world-narrative-delivery]]
125
+ - `docs/FUN.md#10-·-traditional-roguelike` — connectivity + winnability
126
+ verify.
127
+ - `sandboxes/procgen-lab/` — seeded run generation with `Rng` / `pickEntry`.
@@ -0,0 +1,125 @@
1
+ ---
2
+ id: anchor-into-the-breach
3
+ title: Into the Breach
4
+ kind: anchor
5
+ tags: [tactics, perfect-information, telegraph, turn-based, puzzle, positioning, grid]
6
+ summary: Perfect-information tactics — every enemy move is shown before it happens, and the game is the puzzle of rewriting that telegraphed future in one turn.
7
+ use-when: Designing a turn-based tactics game where fairness comes from total honesty and the fun is manipulating a known future, not guessing an unknown one.
8
+ composes-with: [genre-tactics, system-telegraphs, system-combat-model, system-counter-systems]
9
+ anchors: [anchor-into-the-breach]
10
+ verify-with: docs/FUN.md#12-·-turn-based-tactics-into-the-breach-like
11
+ ---
12
+
13
+ # Into the Breach
14
+
15
+ **What it is.** A compact turn-based tactics game on an 8×8 grid. Enemies
16
+ telegraph exactly what they'll do next turn; you have three mechs and a
17
+ fistful of moves to shove, block, and reposition so the incoming attacks land
18
+ on *nothing* — or on each other.
19
+
20
+ **Player fantasy / why it's fun.** *I am a puzzle-solver defusing the future.*
21
+ The pull is **perfect information**: nothing is hidden, nothing is
22
+ random-to-your-face, so every loss is *your* miscalculation and every clean
23
+ turn feels like a proof you found. It's chess where the opponent shows their
24
+ move and dares you to invalidate it.
25
+
26
+ ## Design DNA
27
+
28
+ Invert the fog. Where most tactics hide enemy intent behind hit-chances and
29
+ initiative, Into the Breach **shows everything** — targets, damage, order —
30
+ and makes the game about *editing* that plan. Your verbs aren't mostly damage;
31
+ they're **displacement**: push an enemy off its target, into another enemy,
32
+ into a hazard. The threat is real, the answer is spatial, and the board is
33
+ small enough to solve fully in your head.
34
+
35
+ Perfect information changes what "skill" means. In a hidden-info tactics game,
36
+ skill is partly *managing variance* — hedging against the roll. Here there is
37
+ no roll to hedge; skill is *pure spatial reasoning*, and a loss is
38
+ unambiguously a puzzle you solved wrong. That honesty is a design constraint
39
+ with teeth: every telegraph you show must resolve *exactly* as shown, or the
40
+ whole contract collapses. The reward is that hard turns feel *solvable* rather
41
+ than *unlucky* — the player always believes a perfect answer exists, and
42
+ usually it does.
43
+
44
+ Constraint is the engine: tiny grid, few units, few moves, one objective —
45
+ protect the buildings. Depth comes from interactions, not scale. Because you
46
+ win by *prevention* rather than *elimination*, the state space stays small
47
+ enough to reason about exhaustively, which is exactly why the puzzle lands.
48
+
49
+ ## Load-bearing structures
50
+
51
+ | Structure | Why it works |
52
+ |---|---|
53
+ | **Telegraphs as directions, not target tiles** | Store "this bug attacks *this way*," so pushing it *rewrites the outcome*. This is the single most important implementation choice. FUN.md truth. [[system-telegraphs]]. |
54
+ | **Perfect information, perfect honesty** | What's shown is exactly what resolves — no hidden rolls. Fairness is structural, so hard turns feel solvable. |
55
+ | **Displacement as the primary verb** | Push/pull/block beats raw damage — you win by redirecting threats onto each other or into hazards. [[system-combat-model]] / [[system-counter-systems]]. |
56
+ | **Tiny bounded board** | 8×8 keeps the state space small enough to *fully reason about* — the puzzle is tractable by design. |
57
+ | **Protect-the-objective win condition** | You don't need to kill everything; you need the buildings to survive. Reframes "win" as damage-*prevention*. [[system-encounter-design]]. |
58
+ | **Both proofs per scenario** | A winning line AND a losing do-nothing must exist — a threat a null turn survives isn't a threat. FUN.md law 4. |
59
+ | **Run structure with persistent pilots** | Light meta (pilot XP, mech unlocks) wraps the tactical puzzles into a campaign. [[system-meta-progression]]. |
60
+
61
+ ## What to steal
62
+
63
+ - **Show the enemy's move, then make the game about editing it.** The whole
64
+ design flips from prediction to manipulation. This is the reusable core.
65
+ - **Store telegraphs as directions on units, not fixed target tiles** — so a
66
+ push *changes* the outcome. (FUN.md §12; this is the load-bearing data
67
+ choice.)
68
+ - **Make displacement a first-class verb.** Redirecting a threat is more
69
+ interesting than out-damaging it, and it turns enemies into weapons.
70
+ - **Keep the board tiny and the objective defensive.** Solvability comes from
71
+ bounded scale + "protect," not "eliminate."
72
+ - **Ship both proofs per encounter:** a winning line and a losing null (FUN.md
73
+ law 4); prove each mechanic — push, bump, redirect — in isolation. A 1-ply
74
+ greedy bot over `structuredClone`d state is a real baseline defender and a
75
+ completability check in one.
76
+ - **Reframe the win condition as *prevention*.** "Protect the objective"
77
+ instead of "kill everything" keeps the board small, makes displacement
78
+ matter more than damage, and turns every enemy into a tool rather than just
79
+ a target.
80
+
81
+ ## What's just theme (drop it)
82
+
83
+ - **Kaiju / mech / time-travel fiction.** Cosmetic; the puzzle is theme-blind.
84
+ - **The specific squads.** *Squad = a coherent verb-set with an identity* is
85
+ structural; "Rift Walkers vs Rusting Hulks" is flavour —
86
+ [[system-faction-asymmetry]].
87
+ - **The grid being 8×8.** *Small enough to fully reason about* is the rule;
88
+ the exact number is tuning.
89
+ - **Sci-fi VFX.** The threat only needs to *read* its direction and damage
90
+ clearly — [[pattern-readability]].
91
+
92
+ ## Composes into
93
+
94
+ - [[genre-tactics]] — its canonical anchor; the rewrite-the-future loop lives
95
+ there.
96
+ - [[system-telegraphs]] — the exemplar of intent-as-direction.
97
+ - [[system-combat-model]] — displacement-first resolution.
98
+ - [[system-counter-systems]] — turning threats against each other.
99
+ - [[system-encounter-design]] — protect-the-objective scenario design.
100
+
101
+ ## Twist seams
102
+
103
+ - **Into the Breach but you play the swarm** *(perspective)* — you set the
104
+ telegraphs; a defender edits them; asymmetric two-side design. Feeds
105
+ [[system-coop-and-competition]] / [[system-faction-asymmetry]].
106
+ - **Into the Breach but real-time with a freeze verb** *(mechanic-swap)* — the
107
+ "shown future" becomes a pausable prediction line you scrub and rewrite.
108
+ Bends the turn structure while keeping perfect information.
109
+ - **Into the Breach but the objective is to *cause* the chain reaction**
110
+ *(constraint)* — Rube-Goldberg tactics: you can't attack directly, only
111
+ nudge, so every kill is a redirect. Sharpens displacement into the *only*
112
+ verb.
113
+ - **Into the Breach but tonal — you're a crossing guard, not a soldier**
114
+ *(tonal)* — the telegraphed threats become traffic, weather, or a panicking
115
+ crowd; you displace *hazards away from people* rather than bugs off
116
+ buildings. Same perfect-information displacement puzzle, cozy register.
117
+ Pairs with [[pattern-readability]].
118
+
119
+ ## See also
120
+
121
+ - [[genre-tactics]] · [[system-telegraphs]] · [[system-counter-systems]]
122
+ - `docs/FUN.md#12-·-turn-based-tactics-into-the-breach-like` — greedy-clear +
123
+ do-nothing-loses + per-mechanic proofs.
124
+ - `sandboxes/pathfinding-demo/` — grid movement / `astar` for reachable-tile
125
+ UI.
@@ -0,0 +1,104 @@
1
+ ---
2
+ id: anchor-it-takes-two
3
+ title: It Takes Two
4
+ kind: anchor
5
+ tags: [coop, asymmetric, set-piece, interdependence, mechanic-per-chapter, two-player]
6
+ summary: Asymmetric two-player coop as a parade of set-pieces — a fresh interlocking mechanic every chapter, each requiring both players' different verbs at once.
7
+ use-when: The design is a curated (non-random) two-player coop where each level introduces a new paired mechanic and players are mechanically interdependent.
8
+ composes-with: [genre-coop-chaos, system-coop-and-competition, system-onboarding, system-mastery-curve, system-encounter-design]
9
+ anchors: []
10
+ verify-with: docs/FUN.md#3-metroidvania
11
+ ---
12
+
13
+ # It Takes Two
14
+
15
+ **What it is.** A two-player coop adventure structured as a **parade of set-pieces**.
16
+ It is relentlessly novel: nearly every chapter hands the two players a **new pair
17
+ of interlocking abilities** — one controls time, the other space; one is the
18
+ anchor, the other swings — and builds a self-contained world around *that*
19
+ mechanic before discarding it for the next. The players' verbs are **different and
20
+ complementary**, so neither can progress alone.
21
+
22
+ **Player fantasy.** Two minds, one machine. The joy is the constant "oh, *that's*
23
+ how this works" of a fresh mechanic, plus the intimacy of a challenge only
24
+ solvable *together* — your ability is useless without your partner's, and theirs
25
+ without yours. It never gets stale because it never stays the same.
26
+
27
+ ## Design DNA
28
+
29
+ The engine is **asymmetric interdependence, refreshed constantly**. Two ideas
30
+ carry it. First, **complementary verbs**: the two players hold *different*
31
+ abilities that only combine into a solution — mechanical interdependence, not two
32
+ copies of one character ([[system-coop-and-competition]]). Second, **novelty
33
+ pacing**: each chapter is a mini-game with its own mechanic, taught, mastered, and
34
+ retired within one level ([[system-onboarding]], [[pattern-pacing-and-tension]]).
35
+ The design trades *depth-per-mechanic* for *breadth-of-mechanics* — a
36
+ curated, authored sequence, the opposite of a procedural or endless loop.
37
+
38
+ ## Load-bearing structures
39
+
40
+ | Structure | Why it works |
41
+ |---|---|
42
+ | **Complementary asymmetric verbs** | Each player's ability is incomplete alone; solutions require *combining* them — interdependence is mechanical, not social. → [[system-coop-and-competition]]. |
43
+ | **A new mechanic per chapter** | Constant novelty; boredom never sets in because nothing outstays its welcome. → [[pattern-pacing-and-tension]]. |
44
+ | **Teach→master→retire arc** | Each mechanic gets a full onboarding, a peak challenge, then exits — a complete little curve per chapter. → [[system-onboarding]], [[system-mastery-curve]]. |
45
+ | **Authored set-pieces** | Hand-crafted, non-random encounters tuned to *this* mechanic — spectacle and precision over replay variance. → [[system-encounter-design]]. |
46
+ | **Two-player-locked design** | Built for exactly two; no solo or scaling path — the interdependence is total. |
47
+ | **Spectacle as reward** | Big, legible, choreographed pay-offs punctuate each chapter. → [[pattern-juice-choreography]]. |
48
+
49
+ ## What to steal
50
+
51
+ - **Complementary verbs, not duplicated ones**: give coop players *different*
52
+ abilities that only solve problems together. This is the antidote to "coop =
53
+ two of the same guy." → [[system-coop-and-competition]].
54
+ - **One mechanic per chapter, fully arced**: teach it, peak it, retire it. Breadth
55
+ as a pacing strategy keeps a long game fresh. → [[pattern-pacing-and-tension]].
56
+ - **Authored over procedural** when the fun is *novelty and spectacle*: curated
57
+ set-pieces beat random generation for a "wow, what's next" game.
58
+ - **Interdependence as the emotional hook**: needing your partner is what makes the
59
+ win *shared*. Design the reliance in, don't hope for it.
60
+
61
+ ## What's just theme (drop it)
62
+
63
+ - The **relationship/toy-doll narrative** — flavour that motivates the coop, not
64
+ the loop. Any two-hander premise (heist duo, ghost + medium, pilot + gunner)
65
+ works. → [[world-theme-vectors]].
66
+ - **The specific chapter mechanics** — time control, magnetism, etc. are *content*;
67
+ the transferable part is "a fresh complementary pair each chapter."
68
+ - **AAA production / 3D platforming** — the DNA is asymmetric interdependence +
69
+ novelty pacing, which works in 2D, top-down, or puzzle form.
70
+ - **Exactly two players** — two is the purest form, but the "complementary verbs +
71
+ per-chapter mechanic" idea extends to 3–4 asymmetric roles.
72
+
73
+ ## Composes into
74
+
75
+ - [[genre-coop-chaos]] — the coop parent, but its *authored/asymmetric* wing rather
76
+ than the frantic-party wing.
77
+ - [[system-coop-and-competition]] — complementary abilities and interdependence are
78
+ its home.
79
+ - [[system-onboarding]] — each chapter is a full teach-by-doing loop.
80
+ - [[system-mastery-curve]] — many small curves rather than one long one.
81
+ - [[system-encounter-design]] — authored set-pieces tuned per mechanic.
82
+
83
+ ## Twist seams
84
+
85
+ - **It Takes Two but roguelite** *(structure)* — draw a random *pair* of
86
+ complementary abilities each run; the interdependence stays, the sequence
87
+ randomises. Pairs with [[system-meta-progression]].
88
+ - **It Takes Two but same screen, frantic** *(tonal)* — swap the authored calm for
89
+ a shared clock and chaos; complementary verbs under time pressure. Pairs with
90
+ [[anchor-overcooked]].
91
+ - **It Takes Two but solo with a swappable second body** *(perspective /
92
+ constraint)* — one player controls both complementary characters, toggling; the
93
+ interdependence becomes a puzzle of self-coordination.
94
+ - **It Takes Two but the partner is the level** *(mechanic-swap)* — one player
95
+ plays a character, the other *edits the world* (spawns platforms, moves hazards);
96
+ asymmetry becomes player-vs-designer coop.
97
+
98
+ ## See also
99
+
100
+ - [`docs/FUN.md#3-metroidvania`](../../docs/FUN.md) — ability-gated progression and
101
+ negative gate proofs; the closest verify pattern for "new ability opens the
102
+ path" design (here two abilities gate together).
103
+ - [[genre-coop-chaos]] · [[anchor-overcooked]] (the party/chaos wing) ·
104
+ [[system-coop-and-competition]].
@@ -0,0 +1,131 @@
1
+ ---
2
+ id: anchor-loop-hero
3
+ title: Loop Hero
4
+ kind: anchor
5
+ tags: [genre-fusion, placement, auto-combat, deckbuilder, roguelite, novel-loop, indirect-control]
6
+ summary: Three genres fused into one loop — you place tiles from a deck around a fixed track, an auto-battling hero walks it, and the terrain you build both feeds and threatens you.
7
+ use-when: Designing a novel loop by fusing genres, or an indirect-control game where the player shapes the world and watches consequences unfold.
8
+ composes-with: [genre-auto-battler, genre-deckbuilder, system-resource-loops, pattern-risk-reward]
9
+ anchors: [anchor-loop-hero]
10
+ verify-with: docs/FUN.md#11-·-roguelike-deckbuilder
11
+ ---
12
+
13
+ # Loop Hero
14
+
15
+ **What it is.** Your hero auto-walks a looping track and auto-fights
16
+ whatever's on it. You don't control the hero — you place **terrain cards**
17
+ (meadows, rocks, vampire mansions) around the loop from a hand you drew, each
18
+ of which spawns loot, resources, *and* stronger enemies. Build up, cash out at
19
+ camp, go again.
20
+
21
+ **Player fantasy / why it's fun.** *I author the world; the hero lives in it.*
22
+ The pull is a **genuinely novel loop** stitched from three familiar genres —
23
+ placement, auto-battler, and deckbuilder — where your only lever is *the map
24
+ itself*, and every tile is a double-edged bet: more reward always means more
25
+ danger.
26
+
27
+ ## Design DNA
28
+
29
+ Fuse three solved cores into one: the **auto-battler's** watch-don't-touch
30
+ combat, the **deckbuilder's** draft-and-play hand, and a **placement** puzzle
31
+ where the board is a fixed loop. Then bind them with one rule — **everything
32
+ you build both helps and threatens you.** A rock gives HP but a mountain
33
+ spawns harpies; a road-side spider farm is loot *and* a death trap. The
34
+ player's whole agency is *indirect*: you don't fight, you *cultivate the
35
+ conditions* of the fight, then decide when to flee to camp with your spoils.
36
+
37
+ The lesson Loop Hero teaches about *composition* is the most valuable thing to
38
+ extract: **fusing genres is not stapling them together — it's finding the one
39
+ rule that makes them the same game.** Three loops that would each be complete
40
+ on their own are welded by the single principle that every placement raises
41
+ reward and danger *together*. That binding rule is what stops the fusion from
42
+ feeling like three minigames in a trench coat; it makes the deckbuilder's
43
+ draft, the placement puzzle, and the auto-battle all *about the same
44
+ decision*. When you fuse genres (see [[process-composition]]), your real
45
+ design work is discovering that rule.
46
+
47
+ The novelty isn't a new verb — it's the *combination*, and the discipline of
48
+ satisfying all three parent genres at once. Indirect control is the delivery
49
+ vehicle: because you shape conditions rather than act, the placement, the
50
+ draft, and the fight are naturally one continuous authored consequence.
51
+
52
+ ## Load-bearing structures
53
+
54
+ | Structure | Why it works |
55
+ |---|---|
56
+ | **Indirect control** | You never move the hero; you shape the world and watch. Agency lives in placement + when-to-retreat, not in reflexes. [[system-emergent-systems]]. |
57
+ | **Every tile is double-edged** | Each card raises reward *and* danger together — pure [[pattern-risk-reward]] baked into placement; there are no free builds. |
58
+ | **Fixed loop as the board** | The track never changes shape, so the puzzle is *what you add to it* — a bounded, legible placement space. |
59
+ | **Deck-drawn placement hand** | You play from a drawn hand of tiles, so runs vary and building is a draft. [[genre-deckbuilder]] / [[system-build-diversity]]. |
60
+ | **Auto-combat resolves the bets** | Watch-don't-touch fights turn your placement decisions into visible outcomes — the auto-battler's prep-then-watch. [[genre-auto-battler]]. |
61
+ | **Push-your-luck retreat** | Leave the loop to *keep* resources; die and you lose most of them — the tension of when to cash out. [[pattern-risk-reward]] / [[system-session-structure]]. |
62
+ | **Two economies (run vs base)** | Run resources feed a persistent base that unlocks new cards — meta-progression across loops. [[system-meta-progression]] / [[system-resource-loops]]. |
63
+
64
+ ## What to steal
65
+
66
+ - **Fuse genres by binding them with one rule.** The parts (place / draft /
67
+ auto-fight) are borrowed; the invention is "everything you build both helps
68
+ and threatens you." A single binding rule turns three genres into one game.
69
+ See [[process-composition]].
70
+ - **Indirect control.** Let the player author *conditions* and watch
71
+ consequences — agency through the world, not the avatar. Distinct,
72
+ low-input, deeply strategic.
73
+ - **Double-edged placement.** Make every build-choice raise risk and reward
74
+ together, so there are no dominant plays — only bets.
75
+ [[pattern-risk-reward]].
76
+ - **Push-your-luck cash-out.** A "retreat to keep your spoils vs push for
77
+ more" decision gives every run a self-authored climax.
78
+ - **Two economies (run/base)** so loops feed a persistent unlock tree —
79
+ [[system-meta-progression]]. Run resources are volatile (lost on death
80
+ unless you retreat); base resources are permanent — the same
81
+ ephemeral/persistent split [[anchor-hades]] uses, here gating the card pool
82
+ itself.
83
+ - **Bound the board so placement is legible.** A fixed loop (rather than an
84
+ open map) keeps the placement space small enough that every tile's effect is
85
+ readable and every bet is comprehensible — the constraint is what makes
86
+ indirect control *strategic* rather than fiddly.
87
+
88
+ ## What's just theme (drop it)
89
+
90
+ - **The pixel-fantasy / "the world was erased" fiction.** Cosmetic framing.
91
+ - **The specific tiles.** *Terrain cards that spawn paired reward+threat* is
92
+ structural; "vampire mansion vs oblivion" is flavour —
93
+ [[system-build-diversity]].
94
+ - **The hero classes.** Loadout variants; the loop is class-agnostic.
95
+ - **The retro aesthetic.** Aesthetic, not structure.
96
+
97
+ ## Composes into
98
+
99
+ - [[genre-auto-battler]] — supplies the prep-then-watch combat.
100
+ - [[genre-deckbuilder]] — supplies the draft-and-play hand.
101
+ - [[system-resource-loops]] — the gather-during-loop, spend-at-base cycle.
102
+ - [[pattern-risk-reward]] — double-edged tiles + retreat timing.
103
+ - [[process-composition]] — Loop Hero is the exemplar of
104
+ genre-fusion-with-a-binding-rule.
105
+
106
+ ## Twist seams
107
+
108
+ - **Loop Hero but the loop is a real map you traverse** *(structure)* — swap
109
+ the fixed track for an open path; placement becomes route-authoring. Moves
110
+ toward [[genre-exploration]].
111
+ - **Loop Hero but two players share one loop — one places, one fights**
112
+ *(perspective)* — split indirect and direct control across a coop pair; the
113
+ placer's bets are the fighter's problem. Feeds
114
+ [[system-coop-and-competition]].
115
+ - **Loop Hero but tonal — you're gardening, not adventuring** *(tonal)* — the
116
+ double-edged tiles become plants that yield harvest *and* pests; auto-combat
117
+ becomes an auto-tending sim. Pairs with [[genre-farming-sim]].
118
+ - **Loop Hero but the binding rule is scarcity, not danger** *(constraint)* —
119
+ every tile you place *consumes* a shared budget that also powers the hero,
120
+ so building up literally starves your walker; the double-edge becomes
121
+ economic rather than combat. Sharpens the "everything helps and threatens"
122
+ rule along a new axis. Pairs with [[system-resource-loops]].
123
+
124
+ ## See also
125
+
126
+ - [[genre-auto-battler]] · [[genre-deckbuilder]] · [[process-composition]] ·
127
+ [[pattern-risk-reward]]
128
+ - `docs/FUN.md#11-·-roguelike-deckbuilder` — draft delta + win-rate window
129
+ (the deck parent).
130
+ - `sandboxes/procgen-lab/` — `Rng`/`pickEntry` for weighted tile-hand draws.
131
+ - `sandboxes/pathfinding-demo/` — loop/route traversal reference.
@@ -0,0 +1,130 @@
1
+ ---
2
+ id: anchor-nuclear-throne
3
+ title: Nuclear Throne
4
+ kind: anchor
5
+ tags: [twin-stick, roguelite, arcade, tight-loop, permadeath, mutation, execution]
6
+ summary: Twin-stick arcade roguelite built for the tight loop — fast lethal runs, mutation drafts on level-up, and a skill ceiling that lives in your hands.
7
+ use-when: Designing a fast, lethal, execution-first run-based shooter where the core minute is so tight that "just one more run" carries the whole game.
8
+ composes-with: [genre-horde-survival, genre-roguelike, system-build-diversity, system-mastery-curve]
9
+ anchors: [anchor-nuclear-throne]
10
+ verify-with: docs/FUN.md#6-·-twin-stick-horde-survival-vampire-survivors-like
11
+ ---
12
+
13
+ # Nuclear Throne
14
+
15
+ **What it is.** A brutal twin-stick shooter roguelite: aim and fire freely,
16
+ clear a room of enemies, take the level-up mutation, and push deeper. Runs are
17
+ short and lethal, death is permanent, and the whole game is the *feel* of the
18
+ shooting.
19
+
20
+ **Player fantasy / why it's fun.** *My hands are the build.* Where
21
+ [[anchor-vampire-survivors]] auto-fires, Nuclear Throne puts the trigger in
22
+ your grip — the pull is **execution mastery in a tight arcade loop**: reading
23
+ a room, dodging, aiming, and choosing mutations on the fly, all fast enough
24
+ that a full run is minutes and a death costs you nothing but the impulse to
25
+ hit "again."
26
+
27
+ ## Design DNA
28
+
29
+ Perfect the **core minute** — movement, aim, weapon feel, enemy reads — until
30
+ the second-to-second is so satisfying that repetition is the reward, then wrap
31
+ it in a **roguelite run** so every attempt is fresh and permadeath keeps the
32
+ stakes taut. The build layer (mutations, weapon pickups) is light and
33
+ *reactive*: you draft from what the run gives you, not from a plan. Depth is
34
+ 80% in your hands, 20% in the draft — the inverse of Vampire Survivors, and
35
+ the reason the same horde substrate feels like a different genre.
36
+
37
+ The dial worth internalising: **the same survive-the-room substrate spans an
38
+ entire genre axis, and the position on it is set by one choice — who pulls the
39
+ trigger.** Automate the firing and shift weight to the build, and you get
40
+ [[anchor-vampire-survivors]]: a low-input, build-forward power fantasy. Put
41
+ the trigger back in the player's hands and shift weight to execution, and you
42
+ get Nuclear Throne: a high-input, skill-forward arcade run. Neither is "more
43
+ roguelite"; they're the same loop tuned to opposite skill sources. Knowing
44
+ this lets you *place* a design on that axis deliberately instead of by
45
+ accident.
46
+
47
+ Lethality is the point: enemies hit hard, so *reading and reacting* — not
48
+ tanking — is the skill. That only stays fair if attacks telegraph; a lethal
49
+ enemy with no tell is a coin flip, a lethal enemy with a clear windup is a
50
+ test you can pass.
51
+
52
+ ## Load-bearing structures
53
+
54
+ | Structure | Why it works |
55
+ |---|---|
56
+ | **The core minute, over-tuned** | Aim, dash, weapon recoil, enemy tells — the moment-to-moment is the product. Feel is the design budget. [[system-combat-model]] / [[system-mastery-curve]]. |
57
+ | **Active aim + free fire** | You control the trigger, so execution (not just positioning) is the skill — the twin-stick counterweight to auto-attack. [[system-combat-model]]. |
58
+ | **Level-up mutation draft** | Choose-1-of-N run-scoped upgrades on each level clear — a light build layer that reacts to the run. [[system-build-diversity]] / [[system-reward-schedules]]. |
59
+ | **Short, lethal, permadeath runs** | Minutes-long attempts + real lethality = high stakes with a cheap reset. The "one more run" engine. [[system-session-structure]]. |
60
+ | **Reactive, not planned, builds** | You draft from weapon drops + offered mutations; adaptability beats a fixed plan. [[pattern-emergence]]. |
61
+ | **Readable enemy tells** | Lethal only works if attacks telegraph; reaction windows keep death fair, not cheap. [[system-telegraphs]]. |
62
+ | **Character-as-starting-verb** | Each unlockable character has a distinct active power — light asymmetry that reshapes the run. [[system-faction-asymmetry]] (unit-scale). |
63
+
64
+ ## What to steal
65
+
66
+ - **Over-tune the core minute first.** Before content, before meta, make the
67
+ second-to-second *feel* undeniable. In a tight-loop game, the minute IS the
68
+ game.
69
+ - **Put execution back in the player's hands** (active aim/fire) when you want
70
+ a *skill* game rather than a *build* game — the dial between Nuclear Throne
71
+ and Vampire Survivors is exactly this.
72
+ - **Keep the build layer light and reactive.** Draft-1-of-N mutations from
73
+ what the run offers; don't force a plan. Adaptability is the fun.
74
+ - **Short + lethal + permadeath + instant restart.** The four together create
75
+ "one more run." Wire instant retry via [[system-grace]] /
76
+ [[system-save-and-checkpoint]].
77
+ - **Telegraph lethal attacks** so death reads as your misplay, and inherit the
78
+ horde verify (orbit/dodge bot survives; assert peak-alive; ms/step budget —
79
+ FUN.md §6).
80
+ - **Give each character one starting verb, not a stat block.** Light asymmetry
81
+ — a distinct active power per unlockable character — reshapes the whole run
82
+ without a class tree, and gives the meta a reason to keep unlocking. See
83
+ [[system-faction-asymmetry]] at unit scale.
84
+
85
+ ## What's just theme (drop it)
86
+
87
+ - **Post-apocalyptic mutants.** Cosmetic.
88
+ - **The specific weapons/mutations.** *Weapon archetypes* and *mutation
89
+ categories* are structural; the roster is content —
90
+ [[system-build-diversity]].
91
+ - **The pixel gore.** Aesthetic; the *impact feedback* is structural juice —
92
+ [[pattern-juice-choreography]].
93
+ - **The "Nuclear Throne" endgame framing.** A win condition wrapper; the loop
94
+ is fun from level one.
95
+
96
+ ## Composes into
97
+
98
+ - [[genre-horde-survival]] — shares the survive-the-room substrate
99
+ (execution-first variant).
100
+ - [[genre-roguelike]] — supplies the fresh, lethal run.
101
+ - [[system-mastery-curve]] — hands-on execution as the skill ceiling.
102
+ - [[system-build-diversity]] — reactive mutation drafts.
103
+ - [[system-combat-model]] — active-aim twin-stick feel.
104
+
105
+ ## Twist seams
106
+
107
+ - **Nuclear Throne but auto-fire** *(mechanic-swap)* — slide the dial the
108
+ other way and it becomes Vampire Survivors; useful to know the *same
109
+ substrate* spans both by moving one verb from hands to automation.
110
+ - **Nuclear Throne but the ammo is a shared coop pool** *(perspective)* — two
111
+ players draw fire from one reserve; execution becomes negotiated. Feeds
112
+ [[system-coop-and-competition]].
113
+ - **Nuclear Throne but one life, one weapon, no drops** *(constraint)* — strip
114
+ the roguelite draft entirely; pure arcade execution on a fixed loadout.
115
+ Bends it back toward a classic score-attack shooter.
116
+ - **Nuclear Throne but tonal — the "shooting" is cleaning/tidying under time
117
+ pressure** *(tonal)* — keep the over-tuned core minute and the reactive
118
+ draft, recolor the verb from violence to frantic housework; the swarm
119
+ becomes mess, the weapons become tools. Same execution loop, cozy-chaotic
120
+ register.
121
+
122
+ ## See also
123
+
124
+ - [[genre-horde-survival]] · [[anchor-vampire-survivors]] ·
125
+ [[system-combat-model]] · [[system-mastery-curve]]
126
+ - `docs/FUN.md#6-·-twin-stick-horde-survival-vampire-survivors-like` —
127
+ orbit/dodge-bot + peak-alive verify.
128
+ - `sandboxes/juice-lab/` — hit-impact, muzzle, screenshake choreography.
129
+ - `sandboxes/particle-studio/` — pooled cosmetic effects (deletable per law
130
+ 6).