# Game Design Document (GDD) Workflow

This folder contains the GDD workflow for game projects, replacing the traditional PRD approach with game-specific documentation.

## Overview

The GDD workflow creates a comprehensive Game Design Document that captures:

- Core gameplay mechanics and pillars
- Game type-specific elements (RPG systems, platformer movement, puzzle mechanics, etc.)
- Level design framework
- Art and audio direction
- Technical specifications (platform-agnostic)
- Development epics

## Architecture

### Universal Template

`gdd-template.md` contains sections common to ALL game types:

- Executive Summary
- Goals and Context
- Core Gameplay
- Win/Loss Conditions
- Progression and Balance
- Level Design Framework
- Art and Audio Direction
- Technical Specs
- Development Epics
- Success Metrics

### Game-Type-Specific Injection

The template includes a `{{GAME_TYPE_SPECIFIC_SECTIONS}}` placeholder that gets replaced with game-type-specific content.

### Game Types Registry

`game-types.csv` defines 24+ game types with:

- **id**: Unique identifier (e.g., `action-platformer`, `rpg`, `roguelike`)
- **name**: Human-readable name
- **description**: Brief description of the game type
- **genre_tags**: Searchable tags
- **fragment_file**: Path to type-specific template fragment

### Game-Type Fragments

Located in `game-types/` folder, these markdown files contain sections specific to each game type:

**action-platformer.md**:

- Movement System (jump mechanics, air control, special moves)
- Combat System (attack types, combos, enemy AI)
- Level Design Patterns (platforming challenges, combat arenas)
- Player Abilities and Unlocks

**rpg.md**:

- Character System (stats, classes, leveling)
- Inventory and Equipment
- Quest System
- World and Exploration
- NPC and Dialogue
- Combat System

**puzzle.md**:

- Core Puzzle Mechanics
- Puzzle Progression
- Level Structure
- Player Assistance
- Replayability

**roguelike.md**:

- Run Structure
- Procedural Generation
- Permadeath and Progression
- Item and Upgrade System
- Character Selection
- Difficulty Modifiers

...and 20+ more game types!

## Workflow Flow

1. **Router Detection** (instructions-router.md):
   - Step 3 asks for project type
   - If "Game" selected → sets `workflow_type = "gdd"`
   - Skips standard level classification
   - Jumps to GDD-specific assessment

2. **Game Type Selection** (instructions-gdd.md Step 1):
   - Presents 9 common game types + "Other"
   - Maps selection to `game-types.csv`
   - Loads corresponding fragment file
   - Stores `game_type` for injection

3. **Universal GDD Sections** (Steps 2-5, 7-13):
   - Platform and target audience
   - Goals and context
   - Core gameplay (pillars, loop, win/loss)
   - Mechanics and controls
   - Progression and balance
   - Level design
   - Art and audio
   - Technical specs
   - Epics and metrics

4. **Game-Type Injection** (Step 6):
   - Loads fragment from `game-types/{game_type}.md`
   - For each `{{placeholder}}` in fragment, elicits details
   - Injects completed sections into `{{GAME_TYPE_SPECIFIC_SECTIONS}}`

5. **Solutioning Handoff** (Step 14):
   - Routes to `3-solutioning` workflow
   - Platform/engine specifics handled by solutioning registry
   - Game-\* entries in solutioning `registry.csv` provide engine-specific guidance

## Platform vs. Game Type Separation

**GDD (this workflow)**: Game-type specifics

- What makes an RPG an RPG (stats, quests, inventory)
- What makes a platformer a platformer (jump mechanics, level design)
- Genre-defining mechanics and systems

**Solutioning (3-solutioning workflow)**: Platform/engine specifics

- Unity vs. Godot vs. Phaser vs. Unreal
- 2D vs. 3D rendering
- Physics engines
- Input systems
- Platform constraints (mobile, web, console)

This separation allows:

- Single universal GDD regardless of platform
- Platform decisions made during architecture phase
- Easy platform pivots without rewriting GDD

## Output

**GDD.md**: Complete game design document with:

- All universal sections filled
- Game-type-specific sections injected
- Ready for solutioning handoff

## Example Game Types

| ID                | Name              | Key Sections                                      |
| ----------------- | ----------------- | ------------------------------------------------- |
| action-platformer | Action Platformer | Movement, Combat, Level Patterns, Abilities       |
| rpg               | RPG               | Character System, Inventory, Quests, World, NPCs  |
| puzzle            | Puzzle            | Puzzle Mechanics, Progression, Level Structure    |
| roguelike         | Roguelike         | Run Structure, Procgen, Permadeath, Items         |
| shooter           | Shooter           | Weapon Systems, Enemy AI, Arena Design            |
| strategy          | Strategy          | Resources, Units, AI, Victory Conditions          |
| metroidvania      | Metroidvania      | Interconnected World, Ability Gating, Exploration |
| visual-novel      | Visual Novel      | Branching Story, Dialogue Trees, Choices          |
| tower-defense     | Tower Defense     | Waves, Tower Types, Placement, Economy            |
| card-game         | Card Game         | Deck Building, Card Mechanics, Turn System        |

...and 14+ more!

## Adding New Game Types

1. Add row to `game-types.csv`:

   ```csv
   new-type,New Type Name,"Description",tags,new-type.md
   ```

2. Create `game-types/new-type.md`:

   ```markdown
   ## New Type Specific Elements

   ### System Name

   {{system_placeholder}}

   **Details:**

   - Element 1
   - Element 2
   ```

3. The workflow automatically uses it!

## Integration with Solutioning

When a game project completes the GDD and moves to solutioning:

1. Solutioning workflow reads `project_type == "game"`
2. Loads GDD.md instead of PRD.md
3. Matches game platforms to solutioning `registry.csv` game-\* entries
4. Provides engine-specific guidance (Unity, Godot, Phaser, etc.)
5. Generates architecture.md with platform decisions
6. Creates per-epic tech specs

Example solutioning registry entries:

- `game-unity-2d`: Unity 2D games
- `game-godot-3d`: Godot 3D games
- `game-phaser`: Phaser web games
- `game-unreal-3d`: Unreal Engine games
- `game-custom-3d-rust`: Custom Rust game engines

## Philosophy

**Game projects are fundamentally different from software products**:

- Gameplay feel > feature lists
- Playtesting > user testing
- Game pillars > product goals
- Mechanics > requirements
- Fun > utility

The GDD workflow respects these differences while maintaining BMAD Method rigor.
