bmad初始化

This commit is contained in:
2025-11-01 19:22:39 +08:00
parent 5b21dc0bd5
commit 426ae41f54
447 changed files with 80633 additions and 0 deletions

View File

@@ -0,0 +1,488 @@
# GDD Workflow - Game Projects (All Levels)
<workflow>
<critical>The workflow execution engine is governed by: {project_root}/bmad/core/tasks/workflow.xml</critical>
<critical>You MUST have already loaded and processed: {installed_path}/workflow.yaml</critical>
<critical>Communicate all responses in {communication_language} and language MUST be tailored to {user_skill_level}</critical>
<critical>Generate all documents in {document_output_language}</critical>
<critical>This is the GDD instruction set for GAME projects - replaces PRD with Game Design Document</critical>
<critical>Project analysis already completed - proceeding with game-specific design</critical>
<critical>Uses gdd_template for GDD output, game_types.csv for type-specific sections</critical>
<critical>Routes to 3-solutioning for architecture (platform-specific decisions handled there)</critical>
<critical>If users mention technical details, append to technical_preferences with timestamp</critical>
<critical>DOCUMENT OUTPUT: Concise, clear, actionable game design specs. Use tables/lists over prose. User skill level ({user_skill_level}) affects conversation style ONLY, not document content.</critical>
<step n="0" goal="Validate workflow and extract project configuration">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: data</param>
<param>data_request: project_config</param>
</invoke-workflow>
<check if="status_exists == false">
<output>**Note: No Workflow Status File Found**
The GDD workflow can run standalone or as part of the BMM workflow path.
**Recommended:** Run `workflow-init` first for:
- Project context tracking
- Workflow sequencing guidance
- Progress monitoring across workflows
**Or continue standalone** without progress tracking.
</output>
<ask>Continue in standalone mode or exit to run workflow-init? (continue/exit)</ask>
<check if="continue">
<action>Set standalone_mode = true</action>
</check>
<check if="exit">
<action>Exit workflow</action>
</check>
</check>
<check if="status_exists == true">
<action>Store {{status_file_path}} for later updates</action>
<check if="project_type != 'game'">
<output>**Incorrect Workflow for Software Projects**
Your project is type: {{project_type}}
**Correct workflows for software projects:**
- Level 0-1: `tech-spec` (Architect agent)
- Level 2-4: `prd` (PM agent)
{{#if project_level <= 1}}
Use: `tech-spec`
{{else}}
Use: `prd`
{{/if}}
</output>
<action>Exit and redirect to appropriate workflow</action>
</check>
</check>
</step>
<step n="0.5" goal="Validate workflow sequencing" tag="workflow-status">
<check if="standalone_mode != true">
<action>Check status of "gdd" workflow in loaded status file</action>
<check if="gdd status is file path (already completed)">
<output>⚠️ GDD already completed: {{gdd status}}</output>
<ask>Re-running will overwrite the existing GDD. Continue? (y/n)</ask>
<check if="n">
<output>Exiting. Use workflow-status to see your next step.</output>
<action>Exit workflow</action>
</check>
</check>
<check if="gdd is not the next expected workflow (latter items are completed already in the list)">
<output>⚠️ Next expected workflow: {{next_workflow}}. GDD is out of sequence.</output>
<ask>Continue with GDD anyway? (y/n)</ask>
<check if="n">
<output>Exiting. Run {{next_workflow}} instead.</output>
<action>Exit workflow</action>
</check>
</check>
</check>
</step>
<step n="1" goal="Load context and determine game type">
<action>Use {{project_type}} and {{project_level}} from status data</action>
<check if="continuation_mode == true">
<action>Load existing GDD.md and check completion status</action>
<ask>Found existing work. Would you like to:
1. Review what's done and continue
2. Modify existing sections
3. Start fresh
</ask>
<action>If continuing, skip to first incomplete section</action>
</check>
<action if="new or starting fresh">Check or existing game-brief in output_folder</action>
<check if="game-brief exists">
<ask>Found existing game brief! Would you like to:
1. Use it as input (recommended - I'll extract key info)
2. Ignore it and start fresh
</ask>
</check>
<check if="using game-brief">
<action>Load and analyze game-brief document</action>
<action>Extract: game_name, core_concept, target_audience, platforms, game_pillars, primary_mechanics</action>
<action>Pre-fill relevant GDD sections with game-brief content</action>
<action>Note which sections were pre-filled from brief</action>
</check>
<check if="no game-brief was loaded">
<ask>Describe your game. What is it about? What does the player do? What is the Genre or type?</ask>
<action>Analyze description to determine game type</action>
<action>Map to closest game_types.csv id or use "custom"</action>
</check>
<check if="else (game-brief was loaded)">
<action>Use game concept from brief to determine game type</action>
<ask optional="true">
I've identified this as a **{{game_type}}** game. Is that correct?
If not, briefly describe what type it should be:
</ask>
<action>Map selection to game_types.csv id</action>
<action>Load corresponding fragment file from game-types/ folder</action>
<action>Store game_type for later injection</action>
<action>Load gdd_template from workflow.yaml</action>
Get core game concept and vision.
<template-output>description</template-output>
</check>
</step>
<step n="2" goal="Define platforms and target audience">
<action>Guide user to specify target platform(s) for their game, exploring considerations like desktop, mobile, web, console, or multi-platform deployment</action>
<template-output>platforms</template-output>
<action>Guide user to define their target audience with specific demographics: age range, gaming experience level (casual/core/hardcore), genre familiarity, and preferred play session lengths</action>
<template-output>target_audience</template-output>
</step>
<step n="3" goal="Define goals, context, and unique selling points">
<action>Guide user to define project goals appropriate for their level (Level 0-1: 1-2 goals, Level 2: 2-3 goals, Level 3-4: 3-5 strategic goals) - what success looks like for this game</action>
<template-output>goals</template-output>
<action>Guide user to provide context on why this game matters now - the motivation and rationale behind the project</action>
<template-output>context</template-output>
<action>Guide user to identify the unique selling points (USPs) - what makes this game different from existing games in the market</action>
<template-output>unique_selling_points</template-output>
</step>
<step n="4" goal="Core gameplay definition">
<critical>These are game-defining decisions</critical>
<action>Guide user to identify 2-4 core game pillars - the fundamental gameplay elements that define their game's experience (e.g., tight controls + challenging combat + rewarding exploration, or strategic depth + replayability + quick sessions)</action>
<template-output>game_pillars</template-output>
<action>Guide user to describe the core gameplay loop - what actions the player repeats throughout the game, creating a clear cyclical pattern of player behavior and rewards</action>
<template-output>gameplay_loop</template-output>
<action>Guide user to define win and loss conditions - how the player succeeds and fails in the game</action>
<template-output>win_loss_conditions</template-output>
</step>
<step n="5" goal="Game mechanics and controls">
<action>Guide user to define the primary game mechanics that players will interact with throughout the game</action>
<template-output>primary_mechanics</template-output>
<invoke-task halt="true">{project-root}/bmad/core/tasks/adv-elicit.xml</invoke-task>
<action>Guide user to describe their control scheme and input method (keyboard/mouse, gamepad, touchscreen, etc.), including key bindings or button layouts if known</action>
<template-output>controls</template-output>
</step>
<step n="6" goal="Inject game-type-specific sections">
<action>Load game-type fragment from: {installed_path}/gdd/game-types/{{game_type}}.md</action>
<critical>Process each section in the fragment template</critical>
For each {{placeholder}} in the fragment, elicit and capture that information.
<template-output file="GDD.md">GAME_TYPE_SPECIFIC_SECTIONS</template-output>
<invoke-task halt="true">{project-root}/bmad/core/tasks/adv-elicit.xml</invoke-task>
</step>
<step n="7" goal="Progression and balance">
<action>Guide user to describe how player progression works in their game - whether through skill improvement, power gains, ability unlocking, narrative advancement, or a combination of approaches</action>
<template-output>player_progression</template-output>
<action>Guide user to define the difficulty curve: how challenge increases over time, pacing rhythm (steady/spikes/player-controlled), and any accessibility options planned</action>
<template-output>difficulty_curve</template-output>
<action>Ask if the game includes an in-game economy or resource system, and if so, guide user to describe it (skip if not applicable)</action>
<template-output>economy_resources</template-output>
</step>
<step n="8" goal="Level design framework">
<action>Guide user to describe the types of levels/stages in their game (e.g., tutorial, themed biomes, boss arenas, procedural vs. handcrafted, etc.)</action>
<template-output>level_types</template-output>
<action>Guide user to explain how levels progress or unlock - whether through linear sequence, hub-based structure, open world exploration, or player-driven choices</action>
<template-output>level_progression</template-output>
</step>
<step n="9" goal="Art and audio direction">
<action>Guide user to describe their art style vision: visual aesthetic (pixel art, low-poly, realistic, stylized), color palette preferences, and any inspirations or references</action>
<template-output>art_style</template-output>
<action>Guide user to describe their audio and music direction: music style/genre, sound effect tone, and how important audio is to the gameplay experience</action>
<template-output>audio_music</template-output>
</step>
<step n="10" goal="Technical specifications">
<action>Guide user to define performance requirements: target frame rate, resolution, acceptable load times, and mobile battery considerations if applicable</action>
<template-output>performance_requirements</template-output>
<action>Guide user to identify platform-specific considerations (mobile touch controls/screen sizes, PC keyboard/mouse/settings, console controller/certification, web browser compatibility/file size)</action>
<template-output>platform_details</template-output>
<action>Guide user to document key asset requirements: art assets (sprites/models/animations), audio assets (music/SFX/voice), estimated counts/sizes, and asset pipeline needs</action>
<template-output>asset_requirements</template-output>
</step>
<step n="11" goal="Epic structure">
<action>Work with user to translate game features into development epics, following level-appropriate guidelines (Level 1: 1 epic/1-10 stories, Level 2: 1-2 epics/5-15 stories, Level 3: 2-5 epics/12-40 stories, Level 4: 5+ epics/40+ stories)</action>
<template-output>epics</template-output>
<invoke-task halt="true">{project-root}/bmad/core/tasks/adv-elicit.xml</invoke-task>
</step>
<step n="12" goal="Generate detailed epic breakdown in epics.md">
<action>Load epics_template from workflow.yaml</action>
<critical>Create separate epics.md with full story hierarchy</critical>
<action>Generate epic overview section with all epics listed</action>
<template-output file="epics.md">epic_overview</template-output>
<action>For each epic, generate detailed breakdown with expanded goals, capabilities, and success criteria</action>
<action>For each epic, generate all stories in user story format with prerequisites, acceptance criteria (3-8 per story), and high-level technical notes</action>
<for-each epic="epic_list">
<template-output file="epics.md">epic\_{{epic_number}}\_details</template-output>
<invoke-task halt="true">{project-root}/bmad/core/tasks/adv-elicit.xml</invoke-task>
</for-each>
</step>
<step n="13" goal="Success metrics">
<action>Guide user to identify technical metrics they'll track (e.g., frame rate consistency, load times, crash rate, memory usage)</action>
<template-output>technical_metrics</template-output>
<action>Guide user to identify gameplay metrics they'll track (e.g., player completion rate, session length, difficulty pain points, feature engagement)</action>
<template-output>gameplay_metrics</template-output>
</step>
<step n="14" goal="Document out of scope and assumptions">
<action>Guide user to document what is explicitly out of scope for this game - features, platforms, or content that won't be included in this version</action>
<template-output>out_of_scope</template-output>
<action>Guide user to document key assumptions and dependencies - technical assumptions, team capabilities, third-party dependencies, or external factors the project relies on</action>
<template-output>assumptions_and_dependencies</template-output>
</step>
<step n="15" goal="Update status and populate story sequence" tag="workflow-status">
<check if="standalone_mode != true">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Find workflow_status key "gdd"</action>
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
<action>Update workflow_status["gdd"] = "{output_folder}/bmm-gdd-{{game_name}}-{{date}}.md"</action>
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
<action>Parse {epics_output_file} to extract all stories</action>
<action>Populate story_sequence section in status file with story IDs</action>
<action>Set each story status to "not-started"</action>
<output>Loaded {{total_stories}} stories from epics into story sequence.</output>
<action>Find first non-completed workflow in workflow_status (next workflow to do)</action>
<action>Determine next agent from path file based on next workflow</action>
<output>Next workflow: {{next_workflow}} ({{next_agent}} agent)</output>
</check>
</step>
<step n="16" goal="Generate solutioning handoff and next steps">
<action>Check if game-type fragment contained narrative tags indicating narrative importance</action>
<check if="fragment had <narrative-workflow-critical> or <narrative-workflow-recommended>">
<action>Set needs_narrative = true</action>
<action>Extract narrative importance level from tag</action>
## Next Steps for {{game_name}}
</check>
<check if="needs_narrative == true">
<action>Inform user that their game type benefits from narrative design, presenting the option to create a Narrative Design Document covering story structure, character arcs, world lore, dialogue framework, and environmental storytelling</action>
<ask>This game type ({{game_type}}) benefits from narrative design.
Would you like to create a Narrative Design Document now?
1. Yes, create Narrative Design Document (recommended)
2. No, proceed directly to solutioning
3. Skip for now, I'll do it later
Your choice:</ask>
</check>
<check if="user selects option 1 or fuzzy indicates wanting to create the narrative design document">
<invoke-workflow>{project-root}/bmad/bmm/workflows/2-plan-workflows/narrative/workflow.yaml</invoke-workflow>
<action>Pass GDD context to narrative workflow</action>
<action>Exit current workflow (narrative will hand off to solutioning when done)</action>
Since this is a Level {{project_level}} game project, you need solutioning for platform/engine architecture.
**Start new chat with solutioning workflow and provide:**
1. This GDD: `{{gdd_output_file}}`
2. Project analysis: `{{analysis_file}}`
**The solutioning workflow will:**
- Determine game engine/platform (Unity, Godot, Phaser, custom, etc.)
- Generate architecture.md with engine-specific decisions
- Create per-epic tech specs
- Handle platform-specific architecture (from registry.csv game-\* entries)
## Complete Next Steps Checklist
<action>Generate comprehensive checklist based on project analysis</action>
### Phase 1: Architecture and Engine Selection
- [ ] **Run solutioning workflow** (REQUIRED)
- Command: `workflow create-architecture`
- Input: GDD.md, bmm-workflow-status.md
- Output: architecture.md with engine/platform specifics
- Note: Registry.csv will provide engine-specific guidance
### Phase 2: Prototype and Playtesting
- [ ] **Create core mechanic prototype**
- Validate game feel
- Test control responsiveness
- Iterate on game pillars
- [ ] **Playtest early and often**
- Internal testing
- External playtesting
- Feedback integration
### Phase 3: Asset Production
- [ ] **Create asset pipeline**
- Art style guides
- Technical constraints
- Asset naming conventions
- [ ] **Audio integration**
- Music composition/licensing
- SFX creation
- Audio middleware setup
### Phase 4: Development
- [ ] **Generate detailed user stories**
- Command: `workflow generate-stories`
- Input: GDD.md + architecture.md
- [ ] **Sprint planning**
- Vertical slices
- Milestone planning
- Demo/playable builds
<ask>**✅ GDD Complete, {user_name}!**
Next immediate action:
</check>
<check if="needs_narrative == true">
1. Create Narrative Design Document (recommended for {{game_type}})
2. Start solutioning workflow (engine/architecture)
3. Create prototype build
4. Begin asset production planning
5. Review GDD with team/stakeholders
6. Exit workflow
</check>
<check if="else">
1. Start solutioning workflow (engine/architecture)
2. Create prototype build
3. Begin asset production planning
4. Review GDD with team/stakeholders
5. Exit workflow
Which would you like to proceed with?</ask>
</check>
<check if="user selects narrative option">
<invoke-workflow>{project-root}/bmad/bmm/workflows/2-plan-workflows/narrative/workflow.yaml</invoke-workflow>
<action>Pass GDD context to narrative workflow</action>
</check>
</step>
</workflow>