--- name: balance-check description: "Analyzes game balance data files, formulas, and configuration to identify outliers, broken progressions, degenerate strategies, and economy imbalances. Use after modifying any balance-related data or design. Use when user says 'balance report', 'check game balance', 'run a balance check'." argument-hint: "[system-name|path-to-data-file] [--review full|lean|solo]" user-invocable: true allowed-tools: Read, Glob, Grep, Write, Edit, Task, question agent: economy-designer --- ## Phase 1: Identify Balance Domain Determine the balance domain from `$ARGUMENTS`: - **Combat** → weapon/ability DPS, time-to-kill, damage type interactions - **Economy** → resource faucets/sinks, acquisition rates, item pricing - **Progression** → XP/power curves, dead zones, power spikes - **Loot** → rarity distribution, pity timers, inventory pressure - **File path given** → load that file directly and infer domain from content If no argument, use `question`: - "Which system should I check for balance?" - Options: `[A] Combat balance` / `[B] Economy balance` / `[C] Progression balance` / `[D] Loot balance` --- ## Phase 2: Gather Context Run these in parallel using Glob/Grep: ``` Glob pattern="assets/data/**/*.json" → find all data files Glob pattern="assets/data/**/*.tres" → find Godot resource data files Grep pattern="balance" path="design/gdd/" → find relevant GDDs Glob pattern="design/balance/**/*.md" → find previous balance reports ``` - Read the GDD for the identified domain from `design/gdd/` - Read all relevant data files from `assets/data/` - Extract intended design targets, tuning knobs, and expected value ranges from the GDD --- ## Phase 3: Delegate Expert Analysis Spawn specialist agents via Task in **parallel** for the identified domain. Pass the full GDD content and data file content to each agent. ### Combat balance → spawn `systems-designer` Ask them to: - Calculate DPS for all weapons/abilities at each power tier - Check time-to-kill at each tier - Identify any options that dominate all others (strictly better) - Check if defensive options can create unkillable states - Verify damage type/resistance interactions are balanced - Produce a table of outliers with expected vs actual values ### Economy balance → spawn `economy-designer` Ask them to: - Map all resource faucets and sinks with flow rates - Project resource accumulation over time - Check for infinite resource loops - Verify gold sinks scale with gold generation - Check if any items are never worth purchasing - Produce a resource flow diagram in table form ### Progression balance → spawn `systems-designer` Ask them to: - Plot the XP curve and power curve - Check for dead zones (no meaningful progression for too long) - Check for power spikes (sudden jumps in capability) - Verify content gates align with expected player power - Check if skip/grind strategies break intended pacing - Produce a progression curve health assessment ### Loot balance → spawn `economy-designer` Ask them to: - Calculate expected time to acquire each rarity tier - Check pity timer math - Verify no loot is strictly useless at any stage - Check inventory pressure vs acquisition rate - Produce a drop table health assessment **Always also spawn `economy-designer`** for a cross-domain check: pass all agent findings and ask for any cross-domain imbalance (e.g., combat rewards flooding the economy, progression gated by an unbalanced loot table). --- ## Phase 4: Synthesize Findings Collect all agent outputs. Identify: - **Outliers**: values outside expected ranges, confirmed by agents - **Degenerate strategies**: player behaviors that break intended balance - **Conflicts**: disagreements between agents on what constitutes an issue Surface any agent disagreements to the user via `question` before proceeding. --- ## Phase 5: Output the Analysis Present the synthesized report: ``` ## Balance Check: [System Name] ### Data Sources Analyzed - [List of files read] ### Agent Contributors - systems-designer: [findings summary] - economy-designer: [findings summary] ### Health Summary: [HEALTHY / CONCERNS / CRITICAL ISSUES] ### Outliers Detected | Item/Value | Expected Range | Actual | Severity | Issue | |-----------|---------------|--------|----------|-------| ### Degenerate Strategies Found - [Strategy description and why it is problematic] ### Progression Analysis [Graph description or table showing progression curve health] ### Cross-Domain Impact [economy-designer findings on how this domain affects others] ### Recommendations | Priority | Issue | Suggested Fix | Impact | Owner | |----------|-------|--------------|--------|-------| ``` Ask: "May I write this balance report to `design/balance/balance-check-[system]-[date].md`?" If yes, write the file (create `design/balance/` directory if needed). --- ## Phase 6: Fix & Verify Cycle After writing the report, use `question`: > "Would you like to fix any of these balance issues now?" > - Options: `[A] Yes — fix the highest-priority issue` / `[B] Yes — let me pick which one` / `[C] No — save the report for later` If yes: - Ask which issue to address first (refer to the Recommendations table by priority row) - Guide the user to update the relevant data file in `assets/data/` or formula in `design/balance/` - After each fix, offer to re-run the relevant balance checks to verify no new outliers were introduced - If the fix changes a tuning knob defined in a GDD or referenced by an ADR, remind: > "This value is defined in a design document. Run `/propagate-design-change [path]` on the affected GDD to find downstream impacts before committing." If no: - Remind: "Re-run `/balance-check` after fixes to verify. The report is saved at `design/balance/balance-check-[system]-[date].md`." ## Recommended Next Steps - `/propagate-design-change [gdd-file]` — if fixes changed GDD-defined values - `/consistency-check` — verify fixed values don't conflict with other GDDs - `/design-review [gdd-file]` — if the balance changes require design re-validation - `/architecture-decision` — if a balance fix requires a new technical pattern