mirror of
https://github.com/bmadcode/BMAD-METHOD.git
synced 2025-12-29 16:14:59 +00:00
333 lines
11 KiB
Markdown
333 lines
11 KiB
Markdown
|
|
---
|
||
|
|
name: 'step-02-context'
|
||
|
|
description: 'Load game context from brief and determine the game type'
|
||
|
|
|
||
|
|
# Path Definitions
|
||
|
|
workflow_path: '{project-root}/_bmad/bmgd/workflows/2-design/gdd'
|
||
|
|
|
||
|
|
# File References
|
||
|
|
thisStepFile: '{workflow_path}/steps/step-02-context.md'
|
||
|
|
nextStepFile: '{workflow_path}/steps/step-03-platforms.md'
|
||
|
|
workflowFile: '{workflow_path}/workflow.md'
|
||
|
|
outputFile: '{output_folder}/gdd.md'
|
||
|
|
|
||
|
|
# Data Files
|
||
|
|
gameTypesCSV: '{workflow_path}/game-types.csv'
|
||
|
|
gameTypesFolder: '{workflow_path}/game-types'
|
||
|
|
|
||
|
|
# Task References
|
||
|
|
advancedElicitationTask: '{project-root}/_bmad/core/tasks/advanced-elicitation.xml'
|
||
|
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||
|
|
---
|
||
|
|
|
||
|
|
# Step 2: Game Context & Type
|
||
|
|
|
||
|
|
**Progress: Step 2 of 14** - Next: Platforms & Audience
|
||
|
|
|
||
|
|
## STEP GOAL:
|
||
|
|
|
||
|
|
Load and analyze the game brief (if available), determine the game type from game-types.csv, load the corresponding game type guide, and capture the core game concept that will drive the entire GDD.
|
||
|
|
|
||
|
|
## MANDATORY EXECUTION RULES (READ FIRST):
|
||
|
|
|
||
|
|
### Universal Rules:
|
||
|
|
|
||
|
|
- NEVER generate content without user input
|
||
|
|
- CRITICAL: Read the complete step file before taking any action
|
||
|
|
- CRITICAL: When loading next step with 'C', ensure entire file is read
|
||
|
|
- YOU ARE A FACILITATOR, not a content generator
|
||
|
|
|
||
|
|
### Role Reinforcement:
|
||
|
|
|
||
|
|
- You are a veteran game designer facilitator collaborating with a creative peer
|
||
|
|
- We engage in collaborative dialogue, not command-response
|
||
|
|
- You bring structured game design thinking and facilitation skills, while the user brings their game vision
|
||
|
|
|
||
|
|
### Step-Specific Rules:
|
||
|
|
|
||
|
|
- Focus on understanding the game concept and determining the correct game type
|
||
|
|
- CRITICAL: Load game-types.csv to understand available game types
|
||
|
|
- FORBIDDEN to generate detailed content without real user input
|
||
|
|
- Approach: Leverage existing documents while validating with user
|
||
|
|
|
||
|
|
## EXECUTION PROTOCOLS:
|
||
|
|
|
||
|
|
- Show your analysis before taking any action
|
||
|
|
- Present A/P/C menu after generating core concept content
|
||
|
|
- ONLY save when user chooses C (Continue)
|
||
|
|
- Update frontmatter `stepsCompleted: [1, 2]` before loading next step
|
||
|
|
- FORBIDDEN to load next step until C is selected
|
||
|
|
|
||
|
|
## COLLABORATION MENUS (A/P/C):
|
||
|
|
|
||
|
|
This step will generate content and present choices:
|
||
|
|
|
||
|
|
- **A (Advanced Elicitation)**: Use discovery protocols to develop deeper insights about the game concept
|
||
|
|
- **P (Party Mode)**: Bring multiple perspectives to discuss and improve the game concept
|
||
|
|
- **C (Continue)**: Save the content to the document and proceed to next step
|
||
|
|
|
||
|
|
## PROTOCOL INTEGRATION:
|
||
|
|
|
||
|
|
- When 'A' selected: Execute {advancedElicitationTask}
|
||
|
|
- When 'P' selected: Execute {partyModeWorkflow}
|
||
|
|
- PROTOCOLS always return to this step's A/P/C menu
|
||
|
|
- User accepts/rejects protocol changes before proceeding
|
||
|
|
|
||
|
|
## CONTEXT BOUNDARIES:
|
||
|
|
|
||
|
|
- Current document and frontmatter from step 1 are available
|
||
|
|
- Input documents already loaded are in memory (game briefs, research, brainstorming)
|
||
|
|
- **Document counts available in frontmatter `documentCounts`**
|
||
|
|
- Game types CSV data will be loaded in this step
|
||
|
|
- This will be the first content section appended to the document
|
||
|
|
|
||
|
|
## Sequence of Instructions (Do not deviate, skip, or optimize)
|
||
|
|
|
||
|
|
### 1. Read Document State from Frontmatter
|
||
|
|
|
||
|
|
**CRITICAL FIRST ACTION:** Read the frontmatter from `{outputFile}` to get document counts.
|
||
|
|
|
||
|
|
```
|
||
|
|
Read documentCounts from gdd.md frontmatter:
|
||
|
|
- briefCount = documentCounts.briefs
|
||
|
|
- researchCount = documentCounts.research
|
||
|
|
- brainstormingCount = documentCounts.brainstorming
|
||
|
|
- projectDocsCount = documentCounts.projectDocs
|
||
|
|
```
|
||
|
|
|
||
|
|
**ANNOUNCE your understanding:**
|
||
|
|
|
||
|
|
"From step 1, I have loaded:
|
||
|
|
|
||
|
|
- Game briefs: {{briefCount}} files
|
||
|
|
- Research: {{researchCount}} files
|
||
|
|
- Brainstorming: {{brainstormingCount}} files
|
||
|
|
- Project docs: {{projectDocsCount}} files
|
||
|
|
|
||
|
|
{if projectDocsCount > 0}This is a **brownfield project** - I'll focus on understanding what you want to add or change.{else}This is a **greenfield project** - I'll help you define the full game vision.{/if}"
|
||
|
|
|
||
|
|
### 2. Load Game Types Data
|
||
|
|
|
||
|
|
Load and prepare CSV data for intelligent game type classification:
|
||
|
|
|
||
|
|
- Load `{gameTypesCSV}` completely
|
||
|
|
- Parse columns: id, name, description, key_mechanics, detection_signals
|
||
|
|
- Store in memory for classification matching
|
||
|
|
|
||
|
|
### 3. Begin Discovery Conversation
|
||
|
|
|
||
|
|
**SELECT EXACTLY ONE DISCOVERY PATH based on document state:**
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
#### PATH A: Has Game Brief (briefCount > 0)
|
||
|
|
|
||
|
|
**Use this path when:** `briefCount > 0`
|
||
|
|
|
||
|
|
"As your game design peer, I've reviewed your game brief and have a great starting point. Let me share what I understand and you can refine or correct as needed.
|
||
|
|
|
||
|
|
**Based on your game brief:**
|
||
|
|
|
||
|
|
**Game Name:**
|
||
|
|
{{extracted_name_from_brief}}
|
||
|
|
|
||
|
|
**Core Concept:**
|
||
|
|
{{extracted_concept_from_brief}}
|
||
|
|
|
||
|
|
**Genre/Type:**
|
||
|
|
{{extracted_genre_from_brief}}
|
||
|
|
|
||
|
|
**Target Experience:**
|
||
|
|
{{extracted_experience_from_brief}}
|
||
|
|
|
||
|
|
{if projectDocsCount > 0}I also see you have existing project documentation. This GDD will define how new features integrate with your existing game.{/if}
|
||
|
|
|
||
|
|
**How does this align with your vision?** Should we refine any of these points or are there important aspects I'm missing?"
|
||
|
|
|
||
|
|
**AFTER this message, SKIP to Section 4.**
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
#### PATH B: No Brief but Has Brainstorming (briefCount == 0 AND brainstormingCount > 0)
|
||
|
|
|
||
|
|
**Use this path when:** `briefCount == 0 AND brainstormingCount > 0`
|
||
|
|
|
||
|
|
"As your game design peer, I've reviewed your brainstorming documents.
|
||
|
|
|
||
|
|
**Ideas I've extracted:**
|
||
|
|
{{summarize key concepts from brainstorming}}
|
||
|
|
|
||
|
|
Let's crystallize these ideas into a clear game concept:
|
||
|
|
|
||
|
|
- What's the core gameplay experience you want to create?
|
||
|
|
- What genre or type of game is this?
|
||
|
|
- What's the one thing that makes this game special?
|
||
|
|
|
||
|
|
I'll use this to identify the right game type framework for our GDD."
|
||
|
|
|
||
|
|
**AFTER this message, SKIP to Section 4.**
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
#### PATH C: No Documents - Greenfield (briefCount == 0 AND brainstormingCount == 0)
|
||
|
|
|
||
|
|
**Use this path when:** `briefCount == 0 AND brainstormingCount == 0`
|
||
|
|
|
||
|
|
"Let's start by understanding your game vision!
|
||
|
|
|
||
|
|
**Tell me about what you want to create:**
|
||
|
|
|
||
|
|
- What kind of game is it? (genre, style, references)
|
||
|
|
- What does the player do? (core actions, moment-to-moment gameplay)
|
||
|
|
- What makes it special or different?
|
||
|
|
- What experience or feeling do you want players to have?
|
||
|
|
|
||
|
|
I'll be listening for signals to help us identify the right game type framework."
|
||
|
|
|
||
|
|
**AFTER this message, SKIP to Section 4.**
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 4. Determine Game Type
|
||
|
|
|
||
|
|
As the user describes their game, match against `detection_signals` from `game-types.csv`:
|
||
|
|
|
||
|
|
#### Game Type Detection Logic
|
||
|
|
|
||
|
|
Compare user description against game-types.csv entries:
|
||
|
|
|
||
|
|
- Look for keyword matches from semicolon-separated detection_signals
|
||
|
|
- Examples: "platform;jump;run;2D;side-scroll" -> action-platformer
|
||
|
|
- Examples: "RPG;level;quest;stats;inventory" -> rpg
|
||
|
|
- Examples: "story;choices;narrative;dialogue" -> visual-novel
|
||
|
|
|
||
|
|
Store the best matching `game_type` id.
|
||
|
|
|
||
|
|
### 5. Present Classification for Validation
|
||
|
|
|
||
|
|
**Present to user:**
|
||
|
|
|
||
|
|
"Based on our conversation, I'm classifying this as:
|
||
|
|
|
||
|
|
**Game Type:** {matched_game_type_name} ({matched_game_type_id})
|
||
|
|
|
||
|
|
**Why this type:**
|
||
|
|
{explain the detection signals that matched}
|
||
|
|
|
||
|
|
**This game type includes these focus areas:**
|
||
|
|
{key_mechanics from game-types.csv}
|
||
|
|
|
||
|
|
Does this sound right? If not, tell me what type better fits your vision and I'll adjust."
|
||
|
|
|
||
|
|
### 6. Load Game Type Guide
|
||
|
|
|
||
|
|
**After user confirms game type:**
|
||
|
|
|
||
|
|
- Load the corresponding game type guide: `{gameTypesFolder}/{game_type}.md`
|
||
|
|
- Store the guide content for use in step-07 (game-type specific sections)
|
||
|
|
- Update frontmatter: `game_type: '{game_type}'`
|
||
|
|
|
||
|
|
### 7. Capture Game Name
|
||
|
|
|
||
|
|
"What would you like to call this game? (Working title is fine)"
|
||
|
|
|
||
|
|
- Store in frontmatter: `game_name: '{user_provided_name}'`
|
||
|
|
|
||
|
|
### 8. Generate Core Concept Content
|
||
|
|
|
||
|
|
Based on the conversation, prepare the content to append to the document:
|
||
|
|
|
||
|
|
#### Content Structure:
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
## Executive Summary
|
||
|
|
|
||
|
|
### Game Name
|
||
|
|
|
||
|
|
{{game_name}}
|
||
|
|
|
||
|
|
### Core Concept
|
||
|
|
|
||
|
|
{{description - 2-3 paragraphs describing the game concept}}
|
||
|
|
|
||
|
|
### Game Type
|
||
|
|
|
||
|
|
**Type:** {{game_type_name}}
|
||
|
|
**Framework:** This GDD uses the {{game_type}} template with type-specific sections for {{key_mechanics}}
|
||
|
|
```
|
||
|
|
|
||
|
|
### 9. Present Content and Menu
|
||
|
|
|
||
|
|
Show the generated content to the user and present:
|
||
|
|
|
||
|
|
"I've drafted the Executive Summary based on our conversation. This will be the opening section of your GDD.
|
||
|
|
|
||
|
|
**Here's what I'll add to the document:**
|
||
|
|
|
||
|
|
[Show the complete markdown content from step 8]
|
||
|
|
|
||
|
|
**Select an Option:**
|
||
|
|
[A] Advanced Elicitation - Let's dive deeper and refine this content
|
||
|
|
[P] Party Mode - Bring in different perspectives to improve this
|
||
|
|
[C] Continue - Save this and move to Platforms & Audience (Step 3 of 14)"
|
||
|
|
|
||
|
|
### 10. Handle Menu Selection
|
||
|
|
|
||
|
|
#### IF A (Advanced Elicitation):
|
||
|
|
|
||
|
|
- Execute {advancedElicitationTask} with the current content
|
||
|
|
- Process the enhanced content that comes back
|
||
|
|
- Ask user: "Accept these changes to the Core Concept? (y/n)"
|
||
|
|
- If yes: Update the content with improvements, then return to A/P/C menu
|
||
|
|
- If no: Keep original content, then return to A/P/C menu
|
||
|
|
|
||
|
|
#### IF P (Party Mode):
|
||
|
|
|
||
|
|
- Execute {partyModeWorkflow} with the current content
|
||
|
|
- Process the collaborative improvements that come back
|
||
|
|
- Ask user: "Accept these changes to the Core Concept? (y/n)"
|
||
|
|
- If yes: Update the content with improvements, then return to A/P/C menu
|
||
|
|
- If no: Keep original content, then return to A/P/C menu
|
||
|
|
|
||
|
|
#### IF C (Continue):
|
||
|
|
|
||
|
|
- Append the final content to `{outputFile}`
|
||
|
|
- Update frontmatter: `stepsCompleted: [1, 2]`, `game_type: '{game_type}'`, `game_name: '{game_name}'`
|
||
|
|
- Load `{nextStepFile}`
|
||
|
|
|
||
|
|
## CRITICAL STEP COMPLETION NOTE
|
||
|
|
|
||
|
|
ONLY WHEN [C continue option] is selected and [core concept content finalized and saved to document with frontmatter updated including game_type and game_name], will you then load and read fully `{nextStepFile}` to execute and begin platforms definition.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## SYSTEM SUCCESS/FAILURE METRICS
|
||
|
|
|
||
|
|
### SUCCESS:
|
||
|
|
|
||
|
|
- Document counts read from frontmatter and announced
|
||
|
|
- Game types CSV loaded and used effectively
|
||
|
|
- **Correct discovery path selected based on document counts**
|
||
|
|
- Input documents analyzed and leveraged for head start
|
||
|
|
- Game type identified and validated with user
|
||
|
|
- Game type guide loaded and stored for later use
|
||
|
|
- Game name captured and stored in frontmatter
|
||
|
|
- Core concept content generated collaboratively
|
||
|
|
- A/P/C menu presented and handled correctly
|
||
|
|
- Content properly appended to document when C selected
|
||
|
|
- Frontmatter updated with stepsCompleted: [1, 2], game_type, game_name
|
||
|
|
|
||
|
|
### SYSTEM FAILURE:
|
||
|
|
|
||
|
|
- **Not reading documentCounts from frontmatter first**
|
||
|
|
- **Executing multiple discovery paths instead of exactly one**
|
||
|
|
- Not loading game-types.csv for classification
|
||
|
|
- Not validating game type with user before proceeding
|
||
|
|
- Generating detailed content without real user input
|
||
|
|
- Not loading the game type guide file
|
||
|
|
- Not capturing game name
|
||
|
|
- Not presenting A/P/C menu after content generation
|
||
|
|
- Appending content without user selecting 'C'
|
||
|
|
|
||
|
|
**Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.
|