333 lines
11 KiB
Markdown
Raw Normal View History

feat(bmgd): comprehensive BMGD module upgrade (#1151) * feat(bmgd): comprehensive BMGD module upgrade ## New Agents - **Game QA (GLaDOS)**: Game QA Architect + Test Automation Specialist - Engine-specific testing (Unity, Unreal, Godot) - Knowledge base with 15+ testing topics - Workflows: test-framework, test-design, automate, playtest-plan, performance-test, test-review - **Game Solo Dev (Indie)**: Elite Indie Game Developer + Quick Flow Specialist - Rapid prototyping and iteration focused - Quick-flow workflows for solo/small team development ## Production Workflow Alignment Aligned BMGD 4-production workflows with BMM 4-implementation: ### Removed Obsolete Workflows - story-done (merged into dev-story) - story-ready (merged into create-story) - story-context (merged into create-story) - epic-tech-context (no longer separate workflow) ### Added Workflows - sprint-status: View sprint progress, surface risks, recommend next action ### Updated Workflows (now standalone, copied from BMM) - code-review: Adversarial review with instructions.xml - correct-course: Sprint change management - create-story: Direct ready-for-dev marking - dev-story: TDD implementation with instructions.xml - retrospective: Epic completion review - sprint-planning: Sprint status generation ## Game Testing Architecture (gametest/) New knowledge base for game-specific testing: - qa-index.csv: Knowledge fragment index - 15 knowledge files covering: - Engine-specific: Unity, Unreal, Godot testing - Game-specific: Playtesting, balance, save systems, multiplayer - Platform: Certification (TRC/XR), localization, input - General QA: Automation, performance, regression, smoke tests ## Quick-Flow Workflows (bmgd-quick-flow/) - quick-prototype: Rapid mechanic testing - quick-dev: Flexible feature implementation ## Documentation Complete documentation suite in docs/: - README.md: Documentation index - quick-start.md: Getting started guide - agents-guide.md: All 6 agents reference - workflows-guide.md: Complete workflow reference - quick-flow-guide.md: Rapid development guide - game-types-guide.md: 24 game type templates - glossary.md: Game dev terminology - troubleshooting.md: Common issues ## Teams & Installer - Updated team-gamedev.yaml with all 6 agents and workflows - Updated default-party.csv with Game QA and Game Solo Dev - Created _module-installer/ with: - installer.js: Creates directories, logs engine selection - platform-specifics/: Claude Code and Windsurf handlers ## Agent Updates All agents now reference standalone BMGD workflows: - game-architect: correct-course → BMGD - game-dev: dev-story, code-review → BMGD - game-scrum-master: All production workflows → BMGD - game-solo-dev: code-review → BMGD ## Module Configuration - Added sprint_artifacts alias for workflow compatibility - All workflows use bmgd/config.yaml * fix(bmgd): update sprint-status workflow to reference bmgd instead of bmm Replace all /bmad:bmm:workflows references with /bmad:bmgd:workflows in the sprint-status workflow instructions. * feat(bmgd): add workflow-status and create-tech-spec workflows Add BMGD-native workflow-status and create-tech-spec workflows, replacing all BMM references with BMGD paths. ## New Workflows ### workflow-status - Multi-mode status checker for game projects - Game-specific project levels (Game Jam → AAA) - Workflow paths: gamedev-greenfield, gamedev-brownfield, quickflow-greenfield, quickflow-brownfield - Init workflow for new game project setup ### create-tech-spec - Game-focused spec engineering workflow - Engine-aware (Unity/Unreal/Godot) - Performance and gameplay feel considerations ## Agent Updates Updated all BMGD agents to reference BMGD workflows: - game-architect, game-designer, game-dev, game-qa, game-scrum-master, game-solo-dev All agents now use /bmad:bmgd:workflows instead of /bmad:bmm:workflows * fix(bmgd): address PR review findings and enhance playtesting docs ## PR Review Fixes (F1-F20) ### Configuration & Naming - F1: Changed user_skill_level to game_dev_experience in module.yaml - F3: Renamed gametest/framework to gametest/test-framework ### Cleanup - F2: Deleted 4 orphaned root-level template files - F6: Removed duplicate code block in create-story/instructions.xml - F9: Removed trailing empty line from qa-index.csv - F20: Deleted orphaned docs/unnamed.jpg ### Installer Improvements - F7: Simplified platform handler stubs (removed unused code) - F8: Added return value checking for platform handlers - F13: Added path traversal validation (isWithinProjectRoot) - F18: Added type validation for config string values ### Agent Fixes - F10: Added workflow-status and advanced-elicitation to game-solo-dev - F12: Fixed "GOTO step 2a" → "GOTO step 2" references - F14: Removed duplicate project-context.md from principles in 5 agents ### Workflow Updates - F17: Added input_file_patterns to playtest-plan workflow ### Documentation - F4-F5: Updated quick-start.md with 6 agents and fixed table - Updated workflows-guide.md with test-framework reference ### Knowledge Base Updates (from earlier CodeRabbit comments) - Updated unity-testing.md to Test Framework 1.6.0 - Fixed unreal-testing.md (MarkAsGarbage, UnrealEditor.exe) - Added FVerifyPlayerMoved note to smoke-testing.md - Fixed certification-testing.md table formatting ### Playtesting Documentation Enhancement - Added "Playtesting by Game Type" section (7 genres) - Added "Processing Feedback Effectively" section - Expanded from ~138 to ~340 lines * refactor(bmgd): use exec for step-file workflows and multi format Update agent menu items to use correct notation for step-file workflows: **game-designer.agent.yaml:** - Convert 4 step-file workflows to multi format with shortcodes: - [BG] brainstorm-game - [GB] create-game-brief - [GDD] create-gdd - [ND] narrative - Changed from workflow: .yaml to exec: .md **game-architect.agent.yaml:** - Changed create-architecture from workflow: to exec: with workflow.md --------- Co-authored-by: Scott Jennings <scott.jennings+CIGINT@cloudimperiumgames.com>
2025-12-17 00:33:22 -06:00
---
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.