8.1 KiB
name, description, workflow_path, thisStepFile, nextStepFile, workflowFile, outputFile, advancedElicitationTask, partyModeWorkflow
| name | description | workflow_path | thisStepFile | nextStepFile | workflowFile | outputFile | advancedElicitationTask | partyModeWorkflow |
|---|---|---|---|---|---|---|---|---|
| step-06-structure | Define project structure, directory organization, and architectural boundaries | {project-root}/_bmad/bmgd/workflows/3-technical/game-architecture | {workflow_path}/steps/step-06-structure.md | {workflow_path}/steps/step-07-patterns.md | {workflow_path}/workflow.md | {output_folder}/game-architecture.md | {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml | {project-root}/_bmad/core/workflows/party-mode/workflow.md |
Step 6: Project Structure
Progress: Step 6 of 9 - Next: Implementation Patterns
STEP GOAL:
Define the complete project structure including directory organization, file naming conventions, and architectural boundaries. This ensures all AI agents place code consistently.
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
- NEVER mention time estimates
- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config
{communication_language}
Role Reinforcement:
- You are a veteran game architect facilitator
- Project structure prevents "where does this go?" confusion
- Clear boundaries enable parallel development
Step-Specific Rules:
- Structure must be complete, not generic placeholders
- Map every major system to a location
- Define naming conventions explicitly
EXECUTION PROTOCOLS:
- Show your analysis before taking any action
- Present A/P/C menu after structure defined
- ONLY proceed when user chooses C (Continue)
- Update frontmatter
stepsCompleted: [1, 2, 3, 4, 5, 6]before loading next step
COLLABORATION MENUS (A/P/C):
- A (Advanced Elicitation): Refine structure organization
- P (Party Mode): Get perspectives on layout
- C (Continue): Confirm structure and proceed
Sequence of Instructions (Do not deviate, skip, or optimize)
1. Determine Organization Pattern
"Let's define how your project will be organized.
Organization Patterns:
| Pattern | Description | Best For |
|---|---|---|
| By Feature | All related files together | Feature teams |
| By Type | Scripts, assets, scenes separate | Traditional |
| Hybrid | Types at top, features within | Balanced |
| Domain-Driven | By game domain/system | Complex games |
Engine Conventions:
- {{engine}} typically uses: {{engine_convention}}
What organization pattern do you prefer?"
2. Define Root Structure
"Based on {{selected_pattern}}, let's define your root structure.
For {{engine}}, typical root looks like:
{{project_name}}/
├── {{source_folder}}/ # Game source code
├── {{assets_folder}}/ # Art, audio, data
├── {{scenes_folder}}/ # Scene/level files
├── {{tests_folder}}/ # Test files
├── {{docs_folder}}/ # Documentation
└── {{config_files}} # Project config
Does this work, or would you like to adjust?"
3. Detail Source Structure
"Now let's detail the source code organization.
Based on your systems: {{list_of_systems_from_context}}
Proposed structure:
{{source_folder}}/
├── core/ # Core systems (singletons, managers)
│ ├── {{core_systems}}
├── gameplay/ # Gameplay mechanics
│ ├── {{gameplay_systems}}
├── ui/ # User interface
│ ├── {{ui_organization}}
├── utils/ # Utilities and helpers
│ ├── {{util_types}}
└── data/ # Data structures and models
└── {{data_types}}
What adjustments would you make?"
4. Define Asset Structure
"Let's organize your assets.
Asset Categories:
- Art (sprites, textures, models)
- Audio (music, sfx, voice)
- Data (configurations, levels)
- UI (interface assets)
Proposed asset structure:
{{assets_folder}}/
├── art/
│ ├── {{art_categories}}
├── audio/
│ ├── music/
│ ├── sfx/
│ └── {{audio_categories}}
├── data/
│ └── {{data_file_types}}
└── ui/
└── {{ui_asset_types}}
How should assets be organized?"
5. Map Systems to Locations
"Let's map each major system to its location.
| System | Location | Notes |
|---|
{{system_location_mapping}}
Does this mapping make sense for your project?"
6. Define Naming Conventions
"Finally, let's establish naming conventions.
Files:
- Scripts: {{script_naming}} (e.g., PlayerController, enemy_spawner)
- Scenes: {{scene_naming}} (e.g., Level01, main_menu)
- Assets: {{asset_naming}} (e.g., player_idle, btn_play)
Code Elements:
- Classes: {{class_naming}} (e.g., PascalCase)
- Functions: {{function_naming}} (e.g., snake_case, camelCase)
- Variables: {{variable_naming}}
- Constants: {{constant_naming}} (e.g., UPPER_SNAKE)
Game-Specific:
- Prefabs/Scenes: {{prefab_naming}}
- Animation clips: {{animation_naming}}
- Event names: {{event_naming}}
What are your naming preferences?"
7. Generate Structure Section
Based on the conversation, prepare the content:
## Project Structure
### Organization Pattern
**Pattern:** {{organization_pattern}}
**Rationale:** {{why_this_pattern}}
### Directory Structure
{{project_name}}/ {{complete_directory_tree}}
### System Location Mapping
| System | Location | Responsibility |
| ------ | -------- | -------------- |
{{system_mapping_table}}
### Naming Conventions
#### Files
{{file_naming_rules}}
#### Code Elements
| Element | Convention | Example |
| ------- | ---------- | ------- |
{{code_naming_table}}
#### Game Assets
{{asset_naming_rules}}
### Architectural Boundaries
{{boundary_rules}}
8. Present Content and Menu
Show the generated content to the user and present:
"I've defined the complete project structure.
Here's what I'll add to the document:
[Show the complete markdown content from step 7]
Validation Check:
- Can every system find its home?
- Are naming conventions clear and consistent?
- Will AI agents know exactly where to place new code?
Select an Option: [A] Advanced Elicitation - Refine structure organization [P] Party Mode - Get perspectives on layout [C] Continue - Save this and move to Implementation Patterns (Step 7 of 9)"
9. Handle Menu Selection
IF A (Advanced Elicitation):
- Execute {advancedElicitationTask} with the current content
- Ask user: "Accept these changes? (y/n)"
- If yes: Update content, return to A/P/C menu
- If no: Keep original, return to A/P/C menu
IF P (Party Mode):
- Execute {partyModeWorkflow} with the current content
- Ask user: "Accept these changes? (y/n)"
- If yes: Update content, return to A/P/C menu
- If no: Keep original, return to A/P/C menu
IF C (Continue):
- Append the final content to
{outputFile} - Update frontmatter:
stepsCompleted: [1, 2, 3, 4, 5, 6] - Load
{nextStepFile}
CRITICAL STEP COMPLETION NOTE
ONLY WHEN [C continue option] is selected and [structure content saved with frontmatter updated], will you then load and read fully {nextStepFile}.
SYSTEM SUCCESS/FAILURE METRICS
SUCCESS:
- Complete directory structure defined
- Every system mapped to location
- Naming conventions explicit and consistent
- No placeholder or generic structures
- A/P/C menu presented and handled correctly
- Frontmatter updated with stepsCompleted: [1, 2, 3, 4, 5, 6]
SYSTEM FAILURE:
- Generic structure with placeholders
- Systems without clear locations
- Vague naming conventions
- Not presenting A/P/C menu after structure
- Proceeding without user selecting 'C'
Master Rule: Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.