# [Mechanic/System Name] > **Status**: Draft | In Review | Approved | Implemented > **Author**: [Agent or person] > **Last Updated**: [Date] > **Last Verified**: [Date — when this doc was last confirmed accurate against current design] > **Implements Pillar**: [Which game pillar this supports] ## Summary [2–3 sentences: what this system is, what it does for the player, and why it exists in this game. Written for tiered context loading — a skill scanning 20 GDDs uses this section to decide whether to read further. No jargon.] > **Quick reference** — Layer: `[Foundation | Core | Feature | Presentation]` · Priority: `[MVP | Vertical Slice | Alpha | Full Vision]` · Key deps: `[System names or "None"]` ## Overview [One paragraph that explains this mechanic to someone who knows nothing about the project. What is it, what does the player do, and why does it exist?] ## Player Fantasy [What should the player FEEL when engaging with this mechanic? What is the emotional or power fantasy being served? This section guides all detail decisions below.] ## Detailed Design ### Core Rules [Precise, unambiguous rules. A programmer should be able to implement this section without asking questions. Use numbered rules for sequential processes and bullet points for properties.] ### States and Transitions [If this system has states (e.g., weapon states, status effects, phases), document every state and every valid transition between states.] | State | Entry Condition | Exit Condition | Behavior | |-------|----------------|----------------|----------| ### Interactions with Other Systems [How does this system interact with combat? Inventory? Progression? UI? For each interaction, specify the interface: what data flows in, what flows out, and who is responsible for what.] ## Formulas [Every mathematical formula used by this system. For each formula:] ### [Formula Name] ``` result = base_value * (1 + modifier_sum) * scaling_factor ``` | Variable | Type | Range | Source | Description | |----------|------|-------|--------|-------------| | base_value | float | 1-100 | data file | The base amount before modifiers | | modifier_sum | float | -0.9 to 5.0 | calculated | Sum of all active modifiers | | scaling_factor | float | 0.5-2.0 | data file | Level-based scaling | **Expected output range**: [min] to [max] **Edge case**: When modifier_sum < -0.9, clamp to -0.9 to prevent negative results. ## Edge Cases [Explicitly document what happens in unusual situations. Each edge case should have a clear resolution.] | Scenario | Expected Behavior | Rationale | |----------|------------------|-----------| | [What if X is zero?] | [This happens] | [Because of this reason] | | [What if both effects trigger?] | [Priority rule] | [Design reasoning] | ## Dependencies [List every system this mechanic depends on or that depends on this mechanic.] | System | Direction | Nature of Dependency | |--------|-----------|---------------------| | [Combat] | This depends on Combat | Needs damage calculation results | | [Inventory] | Inventory depends on this | Provides item effect data | ## Tuning Knobs [Every value that should be adjustable for balancing. Include the current value, the safe range, and what happens at the extremes.] | Parameter | Current Value | Safe Range | Effect of Increase | Effect of Decrease | |-----------|--------------|------------|-------------------|-------------------| ## Visual/Audio Requirements [What visual and audio feedback does this mechanic need?] | Event | Visual Feedback | Audio Feedback | Priority | |-------|----------------|---------------|----------| ## Game Feel > **Why this section exists separately from Visual/Audio Requirements**: Visual/Audio > Requirements document WHAT feedback events occur (tables of events mapped to assets). > Game Feel documents HOW the mechanic feels to operate — the responsiveness, weight, > snap, and kinesthetic quality of the interaction. These are design targets for timing, > frame data, and physical sensation of control. Game feel must be specified at design > time because it drives animation budgets, input handling architecture, and hitbox > timing. Retrofitting feel targets after implementation is expensive and often requires > fundamental rework. ### Feel Reference [Name a specific game, mechanic, or moment that captures the target feel. Be precise — cite the exact mechanic, not just the game. Explain what quality you are borrowing. Optionally include an anti-reference (what this should NOT feel like).] > Example: "Should feel like Dark Souls weapon swings — weighty, committed, and > telegraphed, but satisfying on contact. NOT floaty like early Halo melee." ### Input Responsiveness [Maximum acceptable latency from player input to visible/audible response, per action.] | Action | Max Input-to-Response Latency (ms) | Frame Budget (at 60fps) | Notes | |--------|-----------------------------------|------------------------|-------| | [Primary action] | [e.g., 50ms] | [e.g., 3 frames] | | | [Secondary action] | | | | ### Animation Feel Targets [Frame data targets for each animation in this mechanic. Startup = windup before the action has any effect. Active = frames when the action is "happening" (hitbox live, ability firing, etc.). Recovery = committed/vulnerable frames after the action resolves.] | Animation | Startup Frames | Active Frames | Recovery Frames | Feel Goal | Notes | |-----------|---------------|--------------|----------------|-----------|-------| | [e.g., Light attack] | | | | [e.g., Snappy, low commitment] | | | [e.g., Heavy attack] | | | | [e.g., Weighty, high commitment] | | ### Impact Moments [Defines the punctuation of the mechanic — the moments of peak feedback intensity that make actions feel consequential. Every high-stakes event should have at least one entry.] | Impact Type | Duration (ms) | Effect Description | Configurable? | |-------------|--------------|-------------------|---------------| | Hit-stop (freeze frames) | [e.g., 80ms] | [Freeze both objects on contact] | Yes | | Screen shake | [e.g., 150ms] | [Directional, decaying] | Yes | | Camera impact | | | | | Controller rumble | | | | | Time-scale slowdown | | | | ### Weight and Responsiveness Profile [A short prose description of the overall feel target. Answer the following:] - **Weight**: Does this feel heavy and deliberate, or light and reactive? - **Player control**: How much does the player feel in control at every moment? (High control = can course-correct mid-action; Low control = committed, momentum-based) - **Snap quality**: Does this feel crisp and binary, or smooth and analog? - **Acceleration model**: Does movement/action start instantly (arcade feel) or ramp up from zero (simulation feel)? Same question for deceleration. - **Failure texture**: When the player makes an error, does the mechanic feel fair or punishing? What is the read on WHY they failed? ### Feel Acceptance Criteria [Specific, testable criteria a playtester can verify without measurement instruments. These are subjective targets stated precisely enough to get consistent verdicts.] - [ ] [e.g., "Combat feels impactful — playtesters comment on weight unprompted"] - [ ] [e.g., "No reviewer uses the words 'floaty', 'slippery', or 'unresponsive'"] - [ ] [e.g., "Input latency is imperceptible at target 60fps framerate"] - [ ] [e.g., "Hit-stop reads as satisfying, not as lag or stutter"] ## UI Requirements [What information needs to be displayed to the player and when?] | Information | Display Location | Update Frequency | Condition | |-------------|-----------------|-----------------|-----------| ## Cross-References [Declare every explicit dependency on another GDD's specific mechanic, value, or rule. This table is machine-checked by `/review-all-gdds` Phase 2c — it replaces implicit prose references with verifiable declarations. If you reference another system's behaviour anywhere in this document, it must appear here.] | This Document References | Target GDD | Specific Element Referenced | Nature | |--------------------------|-----------|----------------------------|--------| | [e.g., "combo multiplier feeds score"] | `design/gdd/score.md` | `combo_multiplier` output value | Data dependency | | [e.g., "death triggers respawn"] | `design/gdd/respawn.md` | Death state transition | State trigger | | [e.g., "stamina gates dodge"] | `design/gdd/stamina.md` | Stamina depletion rule | Rule dependency | > **Note on "Nature"**: use one of — `Data dependency` (we consume their output), > `State trigger` (their state change triggers our behaviour), `Rule dependency` > (our rule assumes their rule is also true), `Ownership handoff` (we hand off > ownership of a value to them). ## Acceptance Criteria [Testable criteria that confirm this mechanic is working as designed.] - [ ] [Criterion 1: specific, measurable, testable] - [ ] [Criterion 2] - [ ] [Criterion 3] - [ ] Performance: System update completes within [X]ms - [ ] No hardcoded values in implementation ## Open Questions [Anything not yet decided. Each question should have an owner and deadline.] | Question | Owner | Deadline | Resolution | |----------|-------|----------|-----------|