@zigrivers/scaffold 3.4.1 → 3.5.0

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 (194) hide show
  1. package/README.md +91 -0
  2. package/content/knowledge/game/game-accessibility.md +328 -0
  3. package/content/knowledge/game/game-ai-patterns.md +542 -0
  4. package/content/knowledge/game/game-asset-pipeline.md +359 -0
  5. package/content/knowledge/game/game-audio-design.md +342 -0
  6. package/content/knowledge/game/game-binary-vcs-strategy.md +396 -0
  7. package/content/knowledge/game/game-design-document.md +260 -0
  8. package/content/knowledge/game/game-domain-patterns.md +297 -0
  9. package/content/knowledge/game/game-economy-design.md +355 -0
  10. package/content/knowledge/game/game-engine-selection.md +242 -0
  11. package/content/knowledge/game/game-input-systems.md +357 -0
  12. package/content/knowledge/game/game-level-content-design.md +455 -0
  13. package/content/knowledge/game/game-liveops-analytics.md +280 -0
  14. package/content/knowledge/game/game-localization.md +323 -0
  15. package/content/knowledge/game/game-milestone-definitions.md +337 -0
  16. package/content/knowledge/game/game-modding-ugc.md +390 -0
  17. package/content/knowledge/game/game-narrative-design.md +404 -0
  18. package/content/knowledge/game/game-networking.md +391 -0
  19. package/content/knowledge/game/game-performance-budgeting.md +378 -0
  20. package/content/knowledge/game/game-platform-certification.md +417 -0
  21. package/content/knowledge/game/game-project-structure.md +360 -0
  22. package/content/knowledge/game/game-save-systems.md +452 -0
  23. package/content/knowledge/game/game-testing-strategy.md +470 -0
  24. package/content/knowledge/game/game-ui-patterns.md +475 -0
  25. package/content/knowledge/game/game-vr-ar-design.md +313 -0
  26. package/content/knowledge/review/review-art-bible.md +305 -0
  27. package/content/knowledge/review/review-game-design.md +303 -0
  28. package/content/knowledge/review/review-game-economy.md +272 -0
  29. package/content/knowledge/review/review-netcode.md +280 -0
  30. package/content/knowledge/review/review-platform-cert.md +341 -0
  31. package/content/methodology/custom-defaults.yml +25 -0
  32. package/content/methodology/deep.yml +25 -0
  33. package/content/methodology/game-overlay.yml +145 -0
  34. package/content/methodology/mvp.yml +25 -0
  35. package/content/pipeline/architecture/ai-behavior-design.md +87 -0
  36. package/content/pipeline/architecture/netcode-spec.md +86 -0
  37. package/content/pipeline/architecture/review-netcode.md +78 -0
  38. package/content/pipeline/foundation/performance-budgets.md +91 -0
  39. package/content/pipeline/modeling/narrative-bible.md +84 -0
  40. package/content/pipeline/pre/game-design-document.md +89 -0
  41. package/content/pipeline/pre/review-gdd.md +74 -0
  42. package/content/pipeline/quality/analytics-telemetry.md +98 -0
  43. package/content/pipeline/quality/live-ops-plan.md +99 -0
  44. package/content/pipeline/quality/platform-cert-prep.md +129 -0
  45. package/content/pipeline/quality/playtest-plan.md +83 -0
  46. package/content/pipeline/specification/art-bible.md +87 -0
  47. package/content/pipeline/specification/audio-design.md +96 -0
  48. package/content/pipeline/specification/content-structure-design.md +141 -0
  49. package/content/pipeline/specification/economy-design.md +104 -0
  50. package/content/pipeline/specification/game-accessibility.md +82 -0
  51. package/content/pipeline/specification/game-ui-spec.md +97 -0
  52. package/content/pipeline/specification/input-controls-spec.md +81 -0
  53. package/content/pipeline/specification/localization-plan.md +113 -0
  54. package/content/pipeline/specification/modding-ugc-spec.md +116 -0
  55. package/content/pipeline/specification/online-services-spec.md +104 -0
  56. package/content/pipeline/specification/review-economy.md +87 -0
  57. package/content/pipeline/specification/review-game-ui.md +73 -0
  58. package/content/pipeline/specification/save-system-spec.md +116 -0
  59. package/dist/cli/commands/adopt.d.ts.map +1 -1
  60. package/dist/cli/commands/adopt.js +25 -0
  61. package/dist/cli/commands/adopt.js.map +1 -1
  62. package/dist/cli/commands/adopt.test.js +28 -1
  63. package/dist/cli/commands/adopt.test.js.map +1 -1
  64. package/dist/cli/commands/build.test.js +3 -0
  65. package/dist/cli/commands/build.test.js.map +1 -1
  66. package/dist/cli/commands/init.d.ts +1 -0
  67. package/dist/cli/commands/init.d.ts.map +1 -1
  68. package/dist/cli/commands/init.js +6 -0
  69. package/dist/cli/commands/init.js.map +1 -1
  70. package/dist/cli/commands/init.test.js +12 -1
  71. package/dist/cli/commands/init.test.js.map +1 -1
  72. package/dist/cli/commands/knowledge.test.js +8 -0
  73. package/dist/cli/commands/knowledge.test.js.map +1 -1
  74. package/dist/cli/commands/next.d.ts.map +1 -1
  75. package/dist/cli/commands/next.js +19 -5
  76. package/dist/cli/commands/next.js.map +1 -1
  77. package/dist/cli/commands/next.test.js +56 -0
  78. package/dist/cli/commands/next.test.js.map +1 -1
  79. package/dist/cli/commands/rework.d.ts.map +1 -1
  80. package/dist/cli/commands/rework.js +11 -2
  81. package/dist/cli/commands/rework.js.map +1 -1
  82. package/dist/cli/commands/rework.test.js +5 -0
  83. package/dist/cli/commands/rework.test.js.map +1 -1
  84. package/dist/cli/commands/run.d.ts.map +1 -1
  85. package/dist/cli/commands/run.js +54 -4
  86. package/dist/cli/commands/run.js.map +1 -1
  87. package/dist/cli/commands/run.test.js +384 -0
  88. package/dist/cli/commands/run.test.js.map +1 -1
  89. package/dist/cli/commands/skip.test.js +3 -0
  90. package/dist/cli/commands/skip.test.js.map +1 -1
  91. package/dist/cli/commands/status.d.ts.map +1 -1
  92. package/dist/cli/commands/status.js +16 -3
  93. package/dist/cli/commands/status.js.map +1 -1
  94. package/dist/cli/commands/status.test.js +55 -0
  95. package/dist/cli/commands/status.test.js.map +1 -1
  96. package/dist/cli/output/auto.d.ts +3 -0
  97. package/dist/cli/output/auto.d.ts.map +1 -1
  98. package/dist/cli/output/auto.js +9 -0
  99. package/dist/cli/output/auto.js.map +1 -1
  100. package/dist/cli/output/context.d.ts +6 -0
  101. package/dist/cli/output/context.d.ts.map +1 -1
  102. package/dist/cli/output/context.js.map +1 -1
  103. package/dist/cli/output/context.test.js +87 -0
  104. package/dist/cli/output/context.test.js.map +1 -1
  105. package/dist/cli/output/error-display.test.js +3 -0
  106. package/dist/cli/output/error-display.test.js.map +1 -1
  107. package/dist/cli/output/interactive.d.ts +3 -0
  108. package/dist/cli/output/interactive.d.ts.map +1 -1
  109. package/dist/cli/output/interactive.js +76 -0
  110. package/dist/cli/output/interactive.js.map +1 -1
  111. package/dist/cli/output/json.d.ts +3 -0
  112. package/dist/cli/output/json.d.ts.map +1 -1
  113. package/dist/cli/output/json.js +9 -0
  114. package/dist/cli/output/json.js.map +1 -1
  115. package/dist/config/loader.d.ts.map +1 -1
  116. package/dist/config/loader.js +3 -2
  117. package/dist/config/loader.js.map +1 -1
  118. package/dist/config/schema.d.ts +641 -15
  119. package/dist/config/schema.d.ts.map +1 -1
  120. package/dist/config/schema.js +26 -1
  121. package/dist/config/schema.js.map +1 -1
  122. package/dist/config/schema.test.js +192 -1
  123. package/dist/config/schema.test.js.map +1 -1
  124. package/dist/core/assembly/overlay-loader.d.ts +24 -0
  125. package/dist/core/assembly/overlay-loader.d.ts.map +1 -0
  126. package/dist/core/assembly/overlay-loader.js +190 -0
  127. package/dist/core/assembly/overlay-loader.js.map +1 -0
  128. package/dist/core/assembly/overlay-loader.test.d.ts +2 -0
  129. package/dist/core/assembly/overlay-loader.test.d.ts.map +1 -0
  130. package/dist/core/assembly/overlay-loader.test.js +106 -0
  131. package/dist/core/assembly/overlay-loader.test.js.map +1 -0
  132. package/dist/core/assembly/overlay-resolver.d.ts +15 -0
  133. package/dist/core/assembly/overlay-resolver.d.ts.map +1 -0
  134. package/dist/core/assembly/overlay-resolver.js +58 -0
  135. package/dist/core/assembly/overlay-resolver.js.map +1 -0
  136. package/dist/core/assembly/overlay-resolver.test.d.ts +2 -0
  137. package/dist/core/assembly/overlay-resolver.test.d.ts.map +1 -0
  138. package/dist/core/assembly/overlay-resolver.test.js +246 -0
  139. package/dist/core/assembly/overlay-resolver.test.js.map +1 -0
  140. package/dist/core/assembly/overlay-state-resolver.d.ts +26 -0
  141. package/dist/core/assembly/overlay-state-resolver.d.ts.map +1 -0
  142. package/dist/core/assembly/overlay-state-resolver.js +63 -0
  143. package/dist/core/assembly/overlay-state-resolver.js.map +1 -0
  144. package/dist/core/assembly/overlay-state-resolver.test.d.ts +2 -0
  145. package/dist/core/assembly/overlay-state-resolver.test.d.ts.map +1 -0
  146. package/dist/core/assembly/overlay-state-resolver.test.js +256 -0
  147. package/dist/core/assembly/overlay-state-resolver.test.js.map +1 -0
  148. package/dist/core/assembly/preset-loader.d.ts +1 -0
  149. package/dist/core/assembly/preset-loader.d.ts.map +1 -1
  150. package/dist/core/assembly/preset-loader.js +2 -0
  151. package/dist/core/assembly/preset-loader.js.map +1 -1
  152. package/dist/core/dependency/eligibility.test.js +3 -0
  153. package/dist/core/dependency/eligibility.test.js.map +1 -1
  154. package/dist/e2e/game-pipeline.test.d.ts +10 -0
  155. package/dist/e2e/game-pipeline.test.d.ts.map +1 -0
  156. package/dist/e2e/game-pipeline.test.js +298 -0
  157. package/dist/e2e/game-pipeline.test.js.map +1 -0
  158. package/dist/e2e/init.test.js +3 -0
  159. package/dist/e2e/init.test.js.map +1 -1
  160. package/dist/project/adopt.d.ts +3 -1
  161. package/dist/project/adopt.d.ts.map +1 -1
  162. package/dist/project/adopt.js +29 -1
  163. package/dist/project/adopt.js.map +1 -1
  164. package/dist/project/adopt.test.js +51 -1
  165. package/dist/project/adopt.test.js.map +1 -1
  166. package/dist/types/config.d.ts +50 -4
  167. package/dist/types/config.d.ts.map +1 -1
  168. package/dist/types/config.test.d.ts +2 -0
  169. package/dist/types/config.test.d.ts.map +1 -0
  170. package/dist/types/config.test.js +97 -0
  171. package/dist/types/config.test.js.map +1 -0
  172. package/dist/utils/eligible.d.ts +3 -2
  173. package/dist/utils/eligible.d.ts.map +1 -1
  174. package/dist/utils/eligible.js +18 -4
  175. package/dist/utils/eligible.js.map +1 -1
  176. package/dist/utils/errors.d.ts +4 -0
  177. package/dist/utils/errors.d.ts.map +1 -1
  178. package/dist/utils/errors.js +31 -0
  179. package/dist/utils/errors.js.map +1 -1
  180. package/dist/utils/errors.test.js +4 -1
  181. package/dist/utils/errors.test.js.map +1 -1
  182. package/dist/wizard/questions.d.ts +4 -0
  183. package/dist/wizard/questions.d.ts.map +1 -1
  184. package/dist/wizard/questions.js +59 -1
  185. package/dist/wizard/questions.js.map +1 -1
  186. package/dist/wizard/questions.test.js +178 -4
  187. package/dist/wizard/questions.test.js.map +1 -1
  188. package/dist/wizard/wizard.d.ts +1 -0
  189. package/dist/wizard/wizard.d.ts.map +1 -1
  190. package/dist/wizard/wizard.js +4 -1
  191. package/dist/wizard/wizard.js.map +1 -1
  192. package/dist/wizard/wizard.test.js +102 -4
  193. package/dist/wizard/wizard.test.js.map +1 -1
  194. package/package.json +1 -1
@@ -0,0 +1,303 @@
1
+ ---
2
+ name: review-game-design
3
+ description: Failure modes and review passes specific to Game Design Documents — pillar coherence, core loop closure, mechanic clarity, and scope feasibility
4
+ topics: [game-dev, review, gdd, pillars, mechanics, scope]
5
+ ---
6
+
7
+ # Review: Game Design Document
8
+
9
+ A Game Design Document must translate creative vision into implementable specifications. It must be coherent (design pillars actually constrain decisions), complete (core loops close without gaps), unambiguous (an engineer can implement without guessing), and feasible (scope matches team size and timeline). This review uses 7 passes targeting the specific ways GDDs fail.
10
+
11
+ Follows the review process defined in `review-methodology.md`.
12
+
13
+ ## Summary
14
+
15
+ - **Pass 1 — Pillar Coherence**: Design pillars actually constrain decisions; every mechanic traces to a pillar; no pillar is decorative.
16
+ - **Pass 2 — Core Loop Closure**: The moment-to-moment, session, and meta loops all close; no dead ends where the player has nothing meaningful to do next.
17
+ - **Pass 3 — Mechanic Ambiguity Detection**: Every mechanic is specified precisely enough for an engineer to implement without guessing; numeric ranges, state transitions, and edge cases are defined.
18
+ - **Pass 4 — Progression Curve Feasibility**: Power curves, unlock pacing, and difficulty ramps are mathematically grounded; no implicit assumptions about player behavior.
19
+ - **Pass 5 — Scope vs Reality Check**: Feature count, mechanic complexity, and content volume are achievable within the stated team size, timeline, and budget.
20
+ - **Pass 6 — Competitive Differentiation**: The design articulates what makes this game worth playing over alternatives; differentiation is structural, not cosmetic.
21
+ - **Pass 7 — Systems Interaction Audit**: Mechanics that interact are identified and their interactions are specified; emergent behavior is anticipated rather than accidental.
22
+
23
+ ## Deep Guidance
24
+
25
+ ---
26
+
27
+ ## Pass 1: Pillar Coherence
28
+
29
+ ### What to Check
30
+
31
+ Design pillars actually function as decision-making constraints. Every significant mechanic traces back to at least one pillar. No pillar is purely aspirational ("fun" is not a pillar). When a mechanic conflicts with a pillar, the GDD acknowledges the tension and explains why the trade-off is acceptable.
32
+
33
+ ### Why This Matters
34
+
35
+ Pillars that do not constrain decisions are decorative — they describe the desired feeling but do not help an engineer or designer decide between two implementation approaches. When pillars are vague ("accessible yet deep"), every mechanic can claim alignment and the pillars provide zero filtering power. The result is scope creep because nothing is cut — everything "aligns with the pillars."
36
+
37
+ ### How to Check
38
+
39
+ 1. List each design pillar and its definition
40
+ 2. For each pillar, find at least one mechanic that was **excluded** because of that pillar — if nothing was cut, the pillar is not constraining
41
+ 3. For each major mechanic, trace it to at least one pillar — orphan mechanics indicate scope creep or missing pillars
42
+ 4. Check for contradictory pillars: "fast-paced action" and "deep tactical planning" require explicit prioritization
43
+ 5. Verify pillars are falsifiable — could a mechanic violate this pillar? If every possible mechanic aligns, the pillar is too vague
44
+ 6. Cross-reference pillars with the vision document — do they support or contradict the stated player experience?
45
+
46
+ ### What a Finding Looks Like
47
+
48
+ - P0: "Pillar 'Meaningful Choices' is stated but no mechanic in the GDD has branching outcomes. The pillar exists as aspiration with zero implementation."
49
+ - P1: "Crafting system has no pillar trace. It adds 40+ hours of content but does not connect to any of the three stated pillars."
50
+ - P2: "Pillars 'Accessible' and 'Deep Mastery Curve' are both listed without prioritization. When they conflict (e.g., tutorial length), which wins?"
51
+
52
+ ---
53
+
54
+ ## Pass 2: Core Loop Closure
55
+
56
+ ### What to Check
57
+
58
+ Every gameplay loop — moment-to-moment, session-level, and metagame — closes without dead ends. The player always has a clear, motivated next action. Resources earned in one loop feed into the next. No loop requires content that does not exist.
59
+
60
+ ### Why This Matters
61
+
62
+ An open loop means the player reaches a state where there is nothing meaningful to do next. In a session loop, this manifests as "I finished the quest but there is nothing to spend the reward on." In the metagame loop, it manifests as endgame content drought. Open loops are the primary cause of player churn — the game literally runs out of things to offer.
63
+
64
+ ### How to Check
65
+
66
+ 1. Map each loop: what is the trigger, what are the actions, what is the reward, what does the reward feed into?
67
+ 2. For the moment-to-moment loop: does combat/interaction resolve in a clear outcome that motivates the next action?
68
+ 3. For the session loop: does completing a session-level goal (quest, match, level) provide resources that unlock new session-level content?
69
+ 4. For the metagame loop: what keeps the player engaged after 100 hours? Is there a clear answer or does the GDD go silent?
70
+ 5. Check resource flow: every resource produced by one loop must be consumed by another; orphan resources indicate a broken connection
71
+ 6. Verify that loops do not require systems described as "future content" — if the endgame loop depends on a feature marked TBD, the loop is open
72
+
73
+ ### What a Finding Looks Like
74
+
75
+ - P0: "The session loop produces gold from quests, but nothing in the GDD specifies what gold purchases. The economy section is marked 'TBD.' The session loop does not close."
76
+ - P1: "The metagame loop relies on seasonal content, but no seasonal content cadence is specified. After the main campaign, the metagame loop is undefined."
77
+ - P2: "Moment-to-moment combat resolves in XP gains, but the XP-to-level curve is not documented. It is unclear how many combat encounters are needed per level."
78
+
79
+ ---
80
+
81
+ ## Pass 3: Mechanic Ambiguity Detection
82
+
83
+ ### What to Check
84
+
85
+ Every mechanic is specified precisely enough that an engineer can implement it without making design decisions. Numeric values have ranges or exact targets. State machines have all states and transitions defined. Edge cases (what happens when the player does X during Y?) are addressed.
86
+
87
+ ### Why This Matters
88
+
89
+ Ambiguous mechanics force engineers to become designers. When the GDD says "enemies get harder as the player progresses" without defining the scaling formula, the engineer must invent one. Their invention may not match the designer's intent, leading to rework. At scale, hundreds of micro-decisions by engineers accumulate into a game that feels different from what was designed.
90
+
91
+ ### How to Check
92
+
93
+ 1. For each mechanic, attempt to write pseudocode from the GDD description alone — where you get stuck is where the ambiguity is
94
+ 2. Check for numeric specifications: damage ranges, cooldown timers, resource costs, probability distributions
95
+ 3. Verify state machines are complete: for any entity with states (alive/dead, idle/attacking/stunned), are all transitions and conditions defined?
96
+ 4. Look for weasel words: "appropriate," "reasonable," "balanced," "fun amount of" — these are not specifications
97
+ 5. Check edge cases: what happens at zero resources? What happens when two effects trigger simultaneously? What happens when the player disconnects mid-action?
98
+ 6. Verify that difficulty scaling has a formula or at minimum a reference curve, not just "enemies get harder"
99
+
100
+ ### What a Finding Looks Like
101
+
102
+ - P0: "Combat damage formula is described as 'based on weapon power and enemy armor' with no formula. An engineer cannot implement this without inventing the math."
103
+ - P0: "The stealth system says 'enemies detect the player based on proximity and noise' but defines no detection radius, no noise levels, and no line-of-sight rules."
104
+ - P1: "Respawn timer is 'a few seconds' — specify the exact value or a range (3-5 seconds) so engineers and QA have a target."
105
+ - P2: "Item rarity tiers are named (Common, Rare, Epic, Legendary) but drop probability per tier is not specified."
106
+
107
+ ---
108
+
109
+ ## Pass 4: Progression Curve Feasibility
110
+
111
+ ### What to Check
112
+
113
+ Leveling curves, power scaling, unlock pacing, and difficulty ramps are backed by math. Implicit assumptions about player behavior (session length, skill level, content consumption rate) are stated explicitly. The progression does not break at extremes (level 1, max level, 1000 hours played).
114
+
115
+ ### Why This Matters
116
+
117
+ Progression curves that feel right on paper often break in implementation because implicit assumptions are wrong. "Players will reach level 10 after about 5 hours" assumes a session length, a combat encounter rate, and a success rate that may not match reality. When the curve breaks, it manifests as either a brick wall (players stuck at a difficulty spike) or a trivial coast (players over-leveled because the curve was too generous). Both kill retention.
118
+
119
+ ### How to Check
120
+
121
+ 1. Find the XP/level curve (or equivalent progression system) — is there a formula or table?
122
+ 2. Calculate expected time-to-max-level given stated assumptions — is it achievable and desirable?
123
+ 3. Check power scaling: does the player's power growth outpace enemy difficulty growth? (Power fantasy vs. challenge maintenance)
124
+ 4. Verify unlock pacing: are new mechanics introduced at a rate the player can absorb? (Cognitive load)
125
+ 5. Check for dead zones: level ranges with no new unlocks, abilities, or content
126
+ 6. Test extremes: what does the game look like at level 1? At max level? After 1000 hours? After 10 minutes? Does the GDD address each?
127
+ 7. If there is a skill-based component, verify that player skill growth is modeled (not just character power growth)
128
+
129
+ ### What a Finding Looks Like
130
+
131
+ - P0: "XP curve is exponential but reward XP is flat. By level 30, a player needs 47 hours of grinding per level with no new content. The curve is not sustainable."
132
+ - P1: "Levels 15-25 introduce zero new abilities or mechanics. This 10-level dead zone will feel like a content drought."
133
+ - P2: "Session length assumption is not stated. The 5-hour-to-level-10 estimate could be 5 one-hour sessions or 1 five-hour session — the pacing implications differ significantly."
134
+
135
+ ---
136
+
137
+ ## Pass 5: Scope vs Reality Check
138
+
139
+ ### What to Check
140
+
141
+ The total feature set, content volume, and mechanical complexity are achievable within the stated team size, timeline, and budget. Priorities are explicit — if scope must be cut, the GDD identifies what goes first.
142
+
143
+ ### Why This Matters
144
+
145
+ Scope is the most common GDD failure mode. A document that describes 200 hours of content for a team of 5 with a 12-month timeline is fiction. When scope exceeds capacity, the result is either crunch (unsustainable), cut features (unplanned, reactive), or a delayed launch (budget overrun). Honest scope assessment at GDD stage prevents all three.
146
+
147
+ ### How to Check
148
+
149
+ 1. Count distinct mechanics, systems, and content types — each requires engineering, art, design, and QA time
150
+ 2. Estimate content volume: how many levels, quests, items, enemies, abilities? Multiply by production time per unit
151
+ 3. Compare total estimated effort against team size × timeline — is there a 2x+ gap?
152
+ 4. Check for priority tiers (must-have, should-have, nice-to-have) — are they defined?
153
+ 5. Identify the minimum viable game: what is the smallest set of features that delivers the core experience?
154
+ 6. Look for scope traps: procedural generation promises (still requires content authoring tools), multiplayer (2-5x complexity multiplier), user-generated content (requires moderation tools)
155
+ 7. Check for hidden dependencies: feature A requires feature B which requires feature C — the actual scope is triple the apparent scope
156
+
157
+ ### What a Finding Looks Like
158
+
159
+ - P0: "GDD describes 12 biomes, 200 enemy types, 500 items, and a 40-hour campaign for a team of 4 in 18 months. Conservative estimates suggest this is 4-6x the available capacity."
160
+ - P1: "No priority tiers exist. If scope must be cut, there is no guidance on what goes first."
161
+ - P1: "Multiplayer is listed as a core feature but the scope estimate does not account for netcode, matchmaking, anti-cheat, or server infrastructure."
162
+ - P2: "Procedural level generation is described as 'reducing content creation costs' but the tool to author generation rules is not scoped."
163
+
164
+ ---
165
+
166
+ ## Pass 6: Competitive Differentiation
167
+
168
+ ### What to Check
169
+
170
+ The GDD articulates what makes this game worth playing over existing alternatives. The differentiation is structural (different mechanics, novel combinations, underserved audience) rather than cosmetic (better art, more polish). Competitive analysis references specific titles and explains the positioning.
171
+
172
+ ### Why This Matters
173
+
174
+ A game that is "like X but better" needs to be dramatically better to overcome X's existing audience, content library, and network effects. Structural differentiation — doing something competitors cannot easily copy — is the only sustainable advantage. If the GDD cannot articulate the differentiation clearly, the game will struggle to find its audience.
175
+
176
+ ### How to Check
177
+
178
+ 1. Find the competitive analysis or positioning section — does it exist?
179
+ 2. Check that specific competitor titles are named (not "other games in the genre")
180
+ 3. For each competitor, verify the GDD explains: what they do well, what they do poorly, and how this game occupies a different position
181
+ 4. Verify the differentiation is mechanical or systemic, not just "better graphics" or "more content"
182
+ 5. Check for audience definition: who is this game for that existing games are not serving?
183
+ 6. Assess whether the differentiation survives competitor response — if a competitor can add this feature in a patch, it is not structural
184
+
185
+ ### What a Finding Looks Like
186
+
187
+ - P0: "No competitive analysis section exists. The GDD does not explain why a player would choose this over the 5 existing games in the genre."
188
+ - P1: "Differentiation is described as 'better combat feel' — this is subjective and non-structural. Competitors can improve their combat feel in patches."
189
+ - P2: "Competitive analysis names genres but not specific titles. 'Unlike other roguelikes' should name Hades, Dead Cells, Slay the Spire and explain the specific positioning."
190
+
191
+ ---
192
+
193
+ ## Pass 7: Systems Interaction Audit
194
+
195
+ ### What to Check
196
+
197
+ Mechanics that interact are identified. Their interactions are specified — not just "these systems connect" but exactly how changes in one propagate to another. Emergent behavior from system combinations is anticipated and either encouraged or constrained.
198
+
199
+ ### Why This Matters
200
+
201
+ Unspecified system interactions are where exploits, balance-breaking combos, and undefined behavior live. When the combat system and the crafting system both modify the same stats without knowing about each other, the result is a 10,000-damage weapon that trivializes all content. Emergent behavior is desirable when designed for — and catastrophic when accidental.
202
+
203
+ ### How to Check
204
+
205
+ 1. Build an interaction matrix: list all systems on both axes, mark cells where they share state (health, currency, stats, items)
206
+ 2. For each interaction, verify the GDD specifies: which system has priority? How do stacking effects resolve? Are there caps?
207
+ 3. Check for buff/debuff stacking rules — what happens when 5 damage buffs are active simultaneously?
208
+ 4. Look for economy interactions: can the player convert between resource types? Is there an arbitrage loop?
209
+ 5. Check for state conflicts: what if the player is simultaneously stunned and invulnerable? Which takes precedence?
210
+ 6. Verify that AI systems interact correctly with player systems — enemies should respect the same rules
211
+
212
+ ### What a Finding Looks Like
213
+
214
+ - P0: "Crafting and combat both modify weapon damage but the GDD does not specify how crafted bonuses and combat buffs stack. Additive vs. multiplicative stacking produces wildly different outcomes."
215
+ - P1: "Five buff sources exist (gear, skills, consumables, environment, party auras) but no stacking cap is defined. Theoretical max damage is 50x base, which would one-shot any boss."
216
+ - P2: "The AI section does not specify whether enemies are subject to the same status effect rules as players. If enemies can be stunlocked, encounter design breaks."
217
+
218
+ ---
219
+
220
+ ## Finding Template
221
+
222
+ Use this template for all GDD review findings:
223
+
224
+ ```markdown
225
+ ### Finding: [Short description of the issue]
226
+
227
+ **Pass:** [Pass number] — [Pass name]
228
+ **Priority:** P0 | P1 | P2
229
+ **Location:** [GDD section and subsection]
230
+
231
+ **Issue:** [Specific description of what is wrong, with references to the GDD text.
232
+ Avoid subjective language — state the structural problem.]
233
+
234
+ **Evidence:** [Quote or reference the specific GDD content that demonstrates the issue.
235
+ For ambiguity findings, show what an engineer would need to know vs. what the GDD provides.
236
+ For scope findings, show the math.]
237
+
238
+ **Impact:** [What goes wrong during implementation if this is not fixed.
239
+ Be specific: "engineers will guess" or "the loop does not close" or "scope exceeds capacity by 3x."]
240
+
241
+ **Recommendation:** [Concrete action to resolve the finding. Not "add more detail" but
242
+ "specify the damage formula as: base_damage * weapon_multiplier * (1 - armor_reduction),
243
+ where armor_reduction = armor / (armor + 100)."]
244
+
245
+ **Trace:** [Which downstream artifacts or systems are affected by this finding]
246
+ ```
247
+
248
+ ### Example Finding
249
+
250
+ ```markdown
251
+ ### Finding: Combat damage formula is unspecified — engineers must invent the math
252
+
253
+ **Pass:** 3 — Mechanic Ambiguity Detection
254
+ **Priority:** P0
255
+ **Location:** GDD Section 4.2 "Combat Mechanics"
256
+
257
+ **Issue:** The combat section describes damage as "based on the weapon's power stat and
258
+ the enemy's armor stat" but provides no formula. Three different interpretations are
259
+ possible: subtractive (power - armor), multiplicative reduction (power * (1 - armor%)),
260
+ or threshold-based (power must exceed armor to deal damage). Each produces a
261
+ fundamentally different combat feel and balance curve.
262
+
263
+ **Evidence:** GDD Section 4.2: "When a player attacks, damage is calculated based on
264
+ the weapon's power and the target's armor. Critical hits deal bonus damage."
265
+ No formula, no numeric ranges for power/armor values, no critical hit multiplier.
266
+
267
+ **Impact:** The implementing engineer must choose a damage formula, which determines
268
+ the entire balance curve. If they choose subtractive, armor becomes a hard counter
269
+ at high values. If they choose multiplicative, armor provides diminishing returns.
270
+ This decision cascades into enemy design, item balance, and progression pacing.
271
+
272
+ **Recommendation:** Specify the formula explicitly:
273
+ damage = (base_power * weapon_multiplier) * (100 / (100 + target_armor))
274
+ critical_damage = damage * 1.5
275
+ min_damage = 1 (attacks always deal at least 1 damage)
276
+ Provide reference values: starter weapon power ~10, endgame weapon power ~500,
277
+ starter enemy armor ~5, endgame enemy armor ~200.
278
+
279
+ **Trace:** GDD 4.2 → blocks enemy-design.md stat tables, items.md weapon balance,
280
+ progression.md difficulty curve
281
+ ```
282
+
283
+ ---
284
+
285
+ ## Common Review Anti-Patterns
286
+
287
+ ### 1. Pillar-Washing
288
+
289
+ Every mechanic claims pillar alignment by reinterpreting the pillar broadly enough to cover anything. "Strategic Depth" is claimed by the inventory sort button because "organizing items requires strategy." When every mechanic aligns, the pillars constrain nothing.
290
+
291
+ **How to spot it:** Ask "what mechanic was cut because of this pillar?" If the answer is "nothing," the pillar is not functioning as a constraint.
292
+
293
+ ### 2. Describing Feelings Instead of Mechanics
294
+
295
+ The GDD spends paragraphs on how combat "should feel" (visceral, impactful, responsive) without specifying what the game actually does (hit-stop frames, screen shake intensity, input buffer window). Feelings are outcomes of mechanics, not specifications.
296
+
297
+ **How to spot it:** Highlight every adjective in the mechanic description. If removing the adjectives leaves no implementable detail, the section is aspirational, not specifying.
298
+
299
+ ### 3. Assuming the Reader Shares Context
300
+
301
+ The GDD references "standard roguelike progression" or "Soulslike difficulty" without defining what those terms mean for this specific game. Genre conventions vary — one designer's "roguelike" includes permadeath while another's does not.
302
+
303
+ **How to spot it:** Look for genre labels used as specifications. Each genre reference should be expanded into specific mechanic decisions for this game.
@@ -0,0 +1,272 @@
1
+ ---
2
+ name: review-game-economy
3
+ description: Failure modes and review passes specific to game economy design — inflation trajectories, exploit vectors, monetization ethics, and legal compliance
4
+ topics: [game-dev, review, economy, balance, monetization, legal]
5
+ ---
6
+
7
+ # Review: Game Economy
8
+
9
+ A game economy document must define sustainable resource flows, prevent exploitable states, maintain fair monetization, and comply with legal requirements per target market. It must be mathematically grounded — not "we will balance in testing" — because economy bugs discovered in live service cost orders of magnitude more to fix than those caught at design time. This review uses 7 passes targeting the specific ways game economies fail.
10
+
11
+ Follows the review process defined in `review-methodology.md`.
12
+
13
+ ## Summary
14
+
15
+ - **Pass 1 — Inflation/Deflation Trajectory**: Currency generation and removal rates are modeled over time; the economy has a steady-state or managed inflation plan, not unchecked growth.
16
+ - **Pass 2 — Exploit Vector Identification**: Duplication, overflow, timing, and conversion exploits are identified and mitigated at design level; no reliance on "we will detect it in production."
17
+ - **Pass 3 — Ethical Monetization Compliance**: Real-money transactions are transparent, non-predatory, and do not create pay-to-win advantages; vulnerable player protections exist.
18
+ - **Pass 4 — Pay-to-Win Detection**: Purchased items/boosts are analyzed for competitive impact; no real-money path provides an advantage unobtainable through gameplay within reasonable time.
19
+ - **Pass 5 — Legal Compliance Per Market**: Probability disclosure, age-gating, spending limits, and loot box regulations are addressed for every target market.
20
+ - **Pass 6 — Earn Rate vs Engagement Projection**: Time-to-earn for desirable items is modeled against target session length and retention curves; no "1000-hour grind wall" that kills retention.
21
+ - **Pass 7 — Sink Effectiveness Analysis**: Currency and item sinks are sufficient, desirable, and do not feel punitive; the economy does not rely on a single fragile sink.
22
+
23
+ ## Deep Guidance
24
+
25
+ ---
26
+
27
+ ## Pass 1: Inflation/Deflation Trajectory
28
+
29
+ ### What to Check
30
+
31
+ The economy document models currency generation (faucets) and removal (sinks) over the player lifecycle. Faucet rates, sink rates, and the resulting currency stock trajectory are quantified. The economy has either a designed steady-state or a managed inflation plan with explicit milestones.
32
+
33
+ ### Why This Matters
34
+
35
+ Unchecked inflation makes all rewards feel worthless — when every player has millions of gold, a 10,000 gold quest reward means nothing. Unchecked deflation makes the game feel stingy — players cannot afford the items they need to progress. Both kill engagement. The economy document must model the trajectory over months (not just the first 10 hours) because inflation is a cumulative problem that compounds over time.
36
+
37
+ ### How to Check
38
+
39
+ 1. Identify all faucets (sources of currency/resources): quest rewards, enemy drops, daily login bonuses, achievement rewards, trading income
40
+ 2. Identify all sinks (removals of currency/resources): item purchases, upgrade costs, repair costs, consumables, trading fees, taxes
41
+ 3. Calculate net flow: total faucet rate minus total sink rate per unit time (per hour, per day, per week)
42
+ 4. Model the trajectory over 30 days, 90 days, 365 days — does the currency stock grow unboundedly?
43
+ 5. Check for endgame faucets: do high-level players continue earning at the same rate without corresponding endgame sinks?
44
+ 6. Verify that the document explicitly addresses inflation management: progressive sink costs, currency resets (seasons), or deflationary mechanisms
45
+ 7. Check for multi-currency interactions: if soft currency converts to hard currency, inflation in one propagates to both
46
+
47
+ ### What a Finding Looks Like
48
+
49
+ - P0: "Daily quest rewards generate 5,000 gold/day at endgame. The most expensive sink is a 50,000 gold weapon upgrade. After 10 days, a player has purchased every sink and gold accumulates without bound."
50
+ - P1: "Currency generation rates are defined but no sink costs are documented. Without sinks, the economy inflates from day one."
51
+ - P1: "Seasonal resets are mentioned as an inflation control but no reset mechanism is specified. Does the player lose currency? Items? Both?"
52
+ - P2: "Free-to-play currency and premium currency are separately modeled but their exchange rate is not analyzed for inflation propagation."
53
+
54
+ ---
55
+
56
+ ## Pass 2: Exploit Vector Identification
57
+
58
+ ### What to Check
59
+
60
+ The economy design is analyzed for exploit vectors: duplication bugs, integer overflow, timing exploits (race conditions in trades), conversion loops (buy item A with currency X, sell for currency Y at a profit), and edge case abuse (zero-cost transactions, negative quantities). Mitigations are designed into the system, not added post-launch.
61
+
62
+ ### Why This Matters
63
+
64
+ Economy exploits in live games cause catastrophic damage. A duplication bug can flood the economy with items in hours, destroying the value of every legitimate player's inventory. Unlike gameplay bugs (which affect one player at a time), economy exploits have network effects — one exploiter damages every player's experience. Design-level mitigations (server-authoritative transactions, atomic operations, rate limits) are dramatically cheaper than post-launch remediation.
65
+
66
+ ### How to Check
67
+
68
+ 1. For every transaction type, verify it is server-authoritative (client cannot dictate transaction outcome)
69
+ 2. Check for duplication vectors: can an item exist in two locations simultaneously during a trade? Can a disconnect during a transaction leave both parties with the item?
70
+ 3. Verify integer bounds: what happens when currency reaches MAX_INT? When quantity is set to -1? When price is 0?
71
+ 4. Check for timing exploits: can two transactions on the same resource execute simultaneously (double-spend)?
72
+ 5. Identify conversion loops: map every A→B currency/item conversion and check for profitable cycles (A→B→C→A where the player ends with more A than they started)
73
+ 6. Check for refund exploits: can a player buy, use, and then refund for full value?
74
+ 7. Verify rate limits on: trades per hour, purchases per day, gifts per account, currency generation per session
75
+
76
+ ```markdown
77
+ ## Exploit Vector Audit Template
78
+
79
+ ### Transaction: [Name of transaction type]
80
+
81
+ **Flow:** [Step-by-step transaction sequence]
82
+
83
+ | Vector | Risk | Mitigation in Design | Status |
84
+ |---------------------|--------|----------------------|-----------|
85
+ | Duplication | High | [Mitigation or NONE] | ✅ / ❌ |
86
+ | Integer overflow | Medium | [Mitigation or NONE] | ✅ / ❌ |
87
+ | Race condition | High | [Mitigation or NONE] | ✅ / ❌ |
88
+ | Conversion loop | Medium | [Mitigation or NONE] | ✅ / ❌ |
89
+ | Negative quantity | Low | [Mitigation or NONE] | ✅ / ❌ |
90
+ | Refund abuse | Medium | [Mitigation or NONE] | ✅ / ❌ |
91
+ | Rate limit bypass | Medium | [Mitigation or NONE] | ✅ / ❌ |
92
+
93
+ **Unmitigated vectors:** [List any ❌ items]
94
+ **Residual risk:** [Assessment]
95
+ ```
96
+
97
+ ### What a Finding Looks Like
98
+
99
+ - P0: "Player-to-player trading is described but no atomicity guarantee is specified. If one player disconnects mid-trade, both players could retain their original items AND receive the traded items — classic duplication bug."
100
+ - P0: "Currency is stored as a 32-bit integer with no overflow check. A player accumulating 2,147,483,647 gold who earns 1 more gold wraps to -2,147,483,648, losing their entire balance."
101
+ - P1: "Items can be listed on the marketplace and simultaneously equipped. No lock prevents the item from being in two states, enabling sell-then-use exploits."
102
+ - P2: "Gift system has no rate limit. An automated account could gift currency to a main account at 1000 transactions per second."
103
+
104
+ ---
105
+
106
+ ## Pass 3: Ethical Monetization Compliance
107
+
108
+ ### What to Check
109
+
110
+ Real-money transactions are transparent in their outcomes, do not exploit psychological vulnerabilities, do not create compulsive spending patterns, and include protections for vulnerable players (minors, players with gambling disorders). Monetization design follows industry ethical guidelines and avoids dark patterns.
111
+
112
+ ### Why This Matters
113
+
114
+ Predatory monetization damages players and invites regulatory action. Games targeting minors with loot boxes face legislation in Belgium, Netherlands, and increasingly worldwide. Even in unregulated markets, predatory monetization erodes player trust, generates negative press, and reduces lifetime value as players leave or refund. Ethical monetization is both the right thing to do and the commercially sustainable approach.
115
+
116
+ ### How to Check
117
+
118
+ 1. For every real-money purchase, verify the player knows exactly what they get before buying (no surprise mechanics)
119
+ 2. Check for dark patterns: artificial urgency (limited-time offers with countdown timers), artificial scarcity ("only 3 left!"), sunk cost exploitation ("you have already spent $50, spend $10 more to complete the set")
120
+ 3. Verify that spending limits exist: daily, weekly, or monthly caps with opt-in override
121
+ 4. Check for minor protections: parental controls, age-gating on purchases, spending limits for minor accounts
122
+ 5. Verify that randomized purchases (loot boxes, gacha) disclose exact probabilities
123
+ 6. Check for "whale" mechanics: purchases that provide escalating value to high spenders without bounds (spend $10,000 to be the strongest player)
124
+ 7. Verify that the game is fully playable without spending money — monetization enhances but does not gate core content
125
+
126
+ ### What a Finding Looks Like
127
+
128
+ - P0: "Loot boxes exist with no probability disclosure. Players spend real money without knowing the odds of receiving desired items."
129
+ - P0: "No spending limit mechanism exists. A player (potentially a minor) can spend unlimited money in a single session."
130
+ - P1: "Battle pass includes a 'buy levels' option with no cap. A player could spend $500 to skip the entire pass on launch day."
131
+ - P2: "Limited-time offers use countdown timers and 'last chance' language — these are artificial urgency dark patterns."
132
+
133
+ ---
134
+
135
+ ## Pass 4: Pay-to-Win Detection
136
+
137
+ ### What to Check
138
+
139
+ Every item, boost, or advantage available for real money is analyzed for its competitive impact. No purchase provides a meaningful advantage in PvP or competitive contexts that cannot be earned through gameplay within a reasonable timeframe.
140
+
141
+ ### Why This Matters
142
+
143
+ Pay-to-win destroys competitive integrity and drives away non-paying players. When a $20 weapon is 50% stronger than the best farmable weapon, competitive outcomes are determined by spending, not skill. Non-paying players leave, paying players have no one to compete against, and the game enters a death spiral. Even in PvE games, excessive pay-to-win erodes the sense of accomplishment.
144
+
145
+ ### How to Check
146
+
147
+ 1. List every item/boost purchasable with real money (directly or via premium currency)
148
+ 2. For each, find its closest free-to-play equivalent — what is the stat difference?
149
+ 3. If the purchased item has no free equivalent, flag as pay-to-win
150
+ 4. For items with free equivalents, calculate the time-to-earn — if it exceeds 100 hours for a single item, the free path is effectively gated
151
+ 5. Check for PvP impact: do purchased items appear in PvP contexts? If yes, is matchmaking separated by gear score/spending level?
152
+ 6. Check for "soft pay-to-win": items that provide convenience advantages (faster travel, inventory expansion, energy refills) that compound into meaningful competitive edges
153
+ 7. Verify that seasonal/competitive rankings are not influenced by purchased advantages
154
+
155
+ ### What a Finding Looks Like
156
+
157
+ - P0: "Premium weapon deals 2x damage of the best farmable weapon and is usable in PvP. Competitive outcomes are determined by spending."
158
+ - P1: "XP boost purchasable for $5 provides 2x XP for 24 hours. In competitive PvP with level-based matchmaking, paying players reach maximum level weeks earlier and dominate lower-level lobbies."
159
+ - P1: "Energy system gates gameplay to 30 minutes per session unless the player purchases energy refills. Competitive events require hours of play, making refills effectively mandatory."
160
+ - P2: "Inventory expansion is purchasable. Players with more inventory can carry more consumables into competitive modes — investigate if this creates a meaningful advantage."
161
+
162
+ ---
163
+
164
+ ## Pass 5: Legal Compliance Per Market
165
+
166
+ ### What to Check
167
+
168
+ The economy design complies with legal requirements in every target market. Probability disclosure for randomized purchases, age-gating, spending limits for minors, refund policies, and specific national regulations (Belgium loot box ban, China probability disclosure, Japan kompu gacha ban) are addressed.
169
+
170
+ ### Why This Matters
171
+
172
+ Non-compliance with gambling and consumer protection laws results in platform delisting (Apple/Google removing the game), regulatory fines (up to millions of dollars), and forced game modifications that may require redesigning the economy mid-live-service. Legal compliance must be designed in, not patched in — an economy built around loot boxes that is later forced to disclose probabilities or ban them entirely requires a fundamental redesign.
173
+
174
+ ### How to Check
175
+
176
+ 1. List all target markets from the publishing plan
177
+ 2. For each market, verify relevant regulations are addressed:
178
+ - **EU/Belgium/Netherlands**: Loot boxes may be classified as gambling; paid randomized mechanics may be banned outright
179
+ - **China**: Probability disclosure mandatory for all randomized purchases; real-name authentication required; minor playtime limits
180
+ - **Japan**: Kompu gacha (complete gacha) banned; individual gacha requires probability disclosure
181
+ - **South Korea**: Probability disclosure mandatory; refund requirements for minors
182
+ - **US (state-level)**: Evolving legislation on loot boxes; FTC scrutiny on deceptive monetization
183
+ - **Australia**: Loot boxes under gambling law scrutiny; ACCC consumer protection applies
184
+ 3. Verify that probability disclosure is present for ALL randomized purchases, regardless of current market requirements (defensive compliance)
185
+ 4. Check minor protections per market: age verification, parental consent, spending caps
186
+ 5. Verify that the economy can function if loot boxes are removed entirely (contingency for regulatory changes)
187
+ 6. Check content rating alignment: monetization mechanics that trigger higher age ratings (simulated gambling)
188
+
189
+ ### What a Finding Looks Like
190
+
191
+ - P0: "Game targets Belgium but includes paid loot boxes. Belgium classifies these as gambling — the game cannot ship in this market without redesign or market exclusion."
192
+ - P0: "China is a target market but no probability disclosure exists for gacha mechanics. This is a legal requirement, not optional."
193
+ - P1: "Game targets South Korea but no minor refund mechanism is documented. Korean law requires refunds for minors' purchases under certain conditions."
194
+ - P2: "Probability disclosure exists for character gacha but not for cosmetic gacha. All randomized purchases need disclosure, not just the primary system."
195
+
196
+ ---
197
+
198
+ ## Pass 6: Earn Rate vs Engagement Projection
199
+
200
+ ### What to Check
201
+
202
+ Time-to-earn for desirable items/upgrades is modeled against target session length and expected retention curves. The earn rate creates a satisfying progression pace — not so fast that content is exhausted, not so slow that players hit a "grind wall" and quit.
203
+
204
+ ### Why This Matters
205
+
206
+ Earn rate is the primary lever for player retention. Too generous and players exhaust content in a week, reducing long-term engagement. Too stingy and players feel the game respects their time less than competitors. The sweet spot depends on session length (mobile: 5-15 min, PC/console: 30-120 min) and competitive earn rates in the genre. An earn rate designed without engagement modeling is a guess.
207
+
208
+ ### How to Check
209
+
210
+ 1. For the top 10 most desirable items/upgrades, calculate time-to-earn assuming average gameplay
211
+ 2. Map time-to-earn against target session length: how many sessions to earn each item?
212
+ 3. Verify that earn rate creates regular "reward moments" — at least one meaningful reward per session
213
+ 4. Check for grind walls: points where time-to-earn spikes dramatically without new content to sustain engagement
214
+ 5. Compare earn rates to genre competitors: is this game more or less generous? Is the delta intentional and justified?
215
+ 6. Verify that earn rates are modeled for different player segments: casual (1 session/day), regular (3 sessions/day), hardcore (8+ hours/day)
216
+ 7. Check that endgame earn rates do not crater — reaching max level should not make earning feel pointless
217
+
218
+ ### What a Finding Looks Like
219
+
220
+ - P0: "The legendary weapon requires 200 hours of farming a single activity. Average session length is 45 minutes. This is 267 sessions — nearly a year of daily play for one item."
221
+ - P1: "Earn rate for the first 20 hours is generous (new item every 30 minutes) but drops to one item per 10 hours at midgame. The cliff will cause a retention drop."
222
+ - P2: "Earn rate modeling assumes 2-hour sessions but the target audience is mobile with 15-minute sessions. Per-session reward frequency needs recalculation."
223
+
224
+ ---
225
+
226
+ ## Pass 7: Sink Effectiveness Analysis
227
+
228
+ ### What to Check
229
+
230
+ Currency and item sinks are sufficient to control inflation, desirable enough that players use them voluntarily, and distributed so the economy does not depend on a single fragile sink. Sinks that feel punitive (arbitrary taxes, forced item degradation) are identified and reconsidered.
231
+
232
+ ### Why This Matters
233
+
234
+ Sinks that players avoid are not sinks — they are design fiction. If the primary gold sink is a 10% auction house tax that players circumvent by trading directly, the sink does not function and inflation continues unchecked. Effective sinks provide value to the player (upgrades, cosmetics, convenience) so that spending currency feels like a reward, not a penalty. The economy should never depend on a single sink — if that sink fails (players stop using it), the entire economy inflates.
235
+
236
+ ### How to Check
237
+
238
+ 1. List all sinks: upgrade costs, repair costs, consumables, cosmetic purchases, trading fees, respec costs, housing/customization, event entries
239
+ 2. For each sink, estimate the percentage of generated currency it absorbs — does the total absorption match generation?
240
+ 3. Check for sink desirability: does the player want to spend, or are they forced to? Forced sinks create resentment
241
+ 4. Verify sink diversity: no single sink should absorb more than 40% of total currency generation
242
+ 5. Check for sink bypass: can players avoid the sink without meaningful cost? (Direct trading to avoid auction house fees)
243
+ 6. Verify that sinks scale with progression — early-game sinks that become trivially cheap at endgame do not control endgame inflation
244
+ 7. Check for "feels bad" sinks: durability loss, death penalties, random item destruction — these need careful justification
245
+
246
+ ### What a Finding Looks Like
247
+
248
+ - P0: "The only meaningful sink is equipment repair (70% of all gold removal). If players find a way to avoid repair (or if repair costs are reduced in a balance patch), the economy inflates immediately."
249
+ - P1: "Cosmetic shop is listed as a gold sink but prices are not specified. Without prices, it is impossible to model whether this sink absorbs meaningful currency."
250
+ - P2: "Item destruction on failed upgrade is listed as a sink. While effective for inflation control, this is a 'feels bad' mechanic that needs a player sentiment assessment."
251
+
252
+ ---
253
+
254
+ ## Common Review Anti-Patterns
255
+
256
+ ### 1. Spreadsheet Economy Without Player Psychology
257
+
258
+ The economy document presents a mathematically balanced spreadsheet — faucets equal sinks, inflation is zero — but ignores player behavior. Players do not behave like rational economic agents. They hoard currency "just in case," avoid sinks they perceive as unfair, and exploit any conversion path that is even slightly profitable. An economy that balances on paper but ignores behavioral economics will fail in practice.
259
+
260
+ **How to spot it:** The economy document has extensive math but no references to player psychology, hoarding behavior, loss aversion, or behavioral economics. The model assumes players spend currency as fast as they earn it.
261
+
262
+ ### 2. Monetization Section Separate from Economy Section
263
+
264
+ The economy document models the free-to-play economy in isolation, and the monetization plan exists in a separate document. The interaction between purchased currency injection and the free economy is unanalyzed. Premium currency creates inflation in the free economy when it converts to gold, but this is not modeled.
265
+
266
+ **How to spot it:** The economy document does not mention real-money purchases. The monetization document does not model impact on the free economy. No cross-reference between the two documents exists.
267
+
268
+ ### 3. "We Will Balance in Beta"
269
+
270
+ The economy document defers all numeric values to "balancing during beta testing." While tuning in beta is essential, it requires a starting point. Without initial values grounded in math and genre benchmarks, beta testing starts from random values and requires many more iterations to converge. Design-time modeling reduces beta iteration cycles from months to weeks.
271
+
272
+ **How to spot it:** Numeric fields in the economy document contain "TBD," "to be determined during testing," or "placeholder." More than 30% of critical values are unspecified.