bmad-method 4.43.0 → 4.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +2 -9
- package/README.md +0 -80
- package/bmad-core/tasks/validate-next-story.md +1 -1
- package/dist/agents/dev.txt +1 -1
- package/dist/agents/po.txt +1 -1
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +1 -1
- package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +1 -1
- package/dist/expansion-packs/bmad-godot-game-dev/agents/bmad-orchestrator.txt +1513 -0
- package/dist/expansion-packs/bmad-godot-game-dev/agents/game-analyst.txt +3190 -0
- package/dist/expansion-packs/bmad-godot-game-dev/agents/game-architect.txt +4499 -0
- package/dist/expansion-packs/bmad-godot-game-dev/agents/game-designer.txt +3925 -0
- package/dist/expansion-packs/bmad-godot-game-dev/agents/game-developer.txt +666 -0
- package/dist/expansion-packs/bmad-godot-game-dev/agents/game-pm.txt +2381 -0
- package/dist/expansion-packs/bmad-godot-game-dev/agents/game-po.txt +1612 -0
- package/dist/expansion-packs/bmad-godot-game-dev/agents/game-qa.txt +1745 -0
- package/dist/expansion-packs/bmad-godot-game-dev/agents/game-sm.txt +1208 -0
- package/dist/expansion-packs/bmad-godot-game-dev/agents/game-ux-expert.txt +958 -0
- package/dist/expansion-packs/bmad-godot-game-dev/teams/godot-game-team.txt +27721 -0
- package/dist/teams/team-all.txt +1 -1
- package/dist/teams/team-fullstack.txt +1 -1
- package/dist/teams/team-ide-minimal.txt +1 -1
- package/dist/teams/team-no-ui.txt +1 -1
- package/docs/GUIDING-PRINCIPLES.md +3 -3
- package/docs/flattener.md +91 -0
- package/docs/versions.md +1 -1
- package/docs/working-in-the-brownfield.md +15 -6
- package/expansion-packs/bmad-godot-game-dev/README.md +244 -0
- package/expansion-packs/bmad-godot-game-dev/agent-teams/godot-game-team.yaml +18 -0
- package/expansion-packs/bmad-godot-game-dev/agents/bmad-orchestrator.md +147 -0
- package/expansion-packs/bmad-godot-game-dev/agents/game-analyst.md +84 -0
- package/expansion-packs/bmad-godot-game-dev/agents/game-architect.md +146 -0
- package/expansion-packs/bmad-godot-game-dev/agents/game-designer.md +78 -0
- package/expansion-packs/bmad-godot-game-dev/agents/game-developer.md +124 -0
- package/expansion-packs/bmad-godot-game-dev/agents/game-pm.md +82 -0
- package/expansion-packs/bmad-godot-game-dev/agents/game-po.md +115 -0
- package/expansion-packs/bmad-godot-game-dev/agents/game-qa.md +160 -0
- package/expansion-packs/bmad-godot-game-dev/agents/game-sm.md +66 -0
- package/expansion-packs/bmad-godot-game-dev/agents/game-ux-expert.md +75 -0
- package/expansion-packs/bmad-godot-game-dev/checklists/game-architect-checklist.md +377 -0
- package/expansion-packs/bmad-godot-game-dev/checklists/game-change-checklist.md +250 -0
- package/expansion-packs/bmad-godot-game-dev/checklists/game-design-checklist.md +225 -0
- package/expansion-packs/bmad-godot-game-dev/checklists/game-po-checklist.md +448 -0
- package/expansion-packs/bmad-godot-game-dev/checklists/game-story-dod-checklist.md +202 -0
- package/expansion-packs/bmad-godot-game-dev/config.yaml +30 -0
- package/expansion-packs/bmad-godot-game-dev/data/bmad-kb.md +811 -0
- package/expansion-packs/bmad-godot-game-dev/data/brainstorming-techniques.md +36 -0
- package/expansion-packs/bmad-godot-game-dev/data/development-guidelines.md +893 -0
- package/expansion-packs/bmad-godot-game-dev/data/elicitation-methods.md +156 -0
- package/expansion-packs/bmad-godot-game-dev/data/technical-preferences.md +3 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/advanced-elicitation.md +110 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/apply-qa-fixes.md +224 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/brownfield-create-epic.md +162 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/brownfield-create-story.md +149 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/correct-course-game.md +159 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/create-deep-research-prompt.md +278 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/create-doc.md +103 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/create-game-story.md +202 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/document-project.md +343 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/execute-checklist.md +88 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/facilitate-brainstorming-session.md +136 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/game-brownfield-create-epic.md +160 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/game-brownfield-create-story.md +147 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/game-design-brainstorming.md +290 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/game-risk-profile.md +368 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/game-test-design.md +219 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/generate-ai-frontend-prompt.md +51 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/kb-mode-interaction.md +77 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/review-game-story.md +364 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/shard-doc.md +187 -0
- package/expansion-packs/bmad-godot-game-dev/tasks/validate-game-story.md +208 -0
- package/expansion-packs/bmad-godot-game-dev/templates/brainstorming-output-tmpl.yaml +156 -0
- package/expansion-packs/bmad-godot-game-dev/templates/brownfield-prd-tmpl.yaml +281 -0
- package/expansion-packs/bmad-godot-game-dev/templates/competitor-analysis-tmpl.yaml +306 -0
- package/expansion-packs/bmad-godot-game-dev/templates/game-architecture-tmpl.yaml +1111 -0
- package/expansion-packs/bmad-godot-game-dev/templates/game-brief-tmpl.yaml +356 -0
- package/expansion-packs/bmad-godot-game-dev/templates/game-design-doc-tmpl.yaml +724 -0
- package/expansion-packs/bmad-godot-game-dev/templates/game-prd-tmpl.yaml +209 -0
- package/expansion-packs/bmad-godot-game-dev/templates/game-qa-gate-tmpl.yaml +186 -0
- package/expansion-packs/bmad-godot-game-dev/templates/game-story-tmpl.yaml +406 -0
- package/expansion-packs/bmad-godot-game-dev/templates/game-ui-spec-tmpl.yaml +601 -0
- package/expansion-packs/bmad-godot-game-dev/templates/level-design-doc-tmpl.yaml +620 -0
- package/expansion-packs/bmad-godot-game-dev/templates/market-research-tmpl.yaml +418 -0
- package/expansion-packs/bmad-godot-game-dev/utils/bmad-doc-template.md +327 -0
- package/expansion-packs/bmad-godot-game-dev/utils/workflow-management.md +71 -0
- package/expansion-packs/bmad-godot-game-dev/workflows/game-dev-greenfield.yaml +245 -0
- package/expansion-packs/bmad-godot-game-dev/workflows/game-prototype.yaml +213 -0
- package/package.json +1 -1
- package/release_notes.md +11 -2
- package/tools/flattener/ignoreRules.js +2 -0
- package/tools/installer/bin/bmad.js +2 -1
- package/tools/installer/config/install.config.yaml +16 -7
- package/tools/installer/lib/ide-setup.js +192 -80
- package/tools/installer/package.json +1 -1
- package/tools/upgraders/v3-to-v4-upgrader.js +1 -0
- package/test.md +0 -1
- /package/{implement-fork-friendly-ci.sh → tools/implement-fork-friendly-ci.sh} +0 -0
|
@@ -0,0 +1,620 @@
|
|
|
1
|
+
template:
|
|
2
|
+
id: godot-level-design-doc-template-v3
|
|
3
|
+
name: Godot Level Design Document
|
|
4
|
+
version: 3.0
|
|
5
|
+
output:
|
|
6
|
+
format: markdown
|
|
7
|
+
filename: docs/godot-level-design-document.md
|
|
8
|
+
title: "{{game_title}} Godot Level Design Document"
|
|
9
|
+
|
|
10
|
+
workflow:
|
|
11
|
+
mode: interactive
|
|
12
|
+
|
|
13
|
+
sections:
|
|
14
|
+
- id: initial-setup
|
|
15
|
+
instruction: |
|
|
16
|
+
This template creates comprehensive Godot level design documentation focusing on scene structure, TileMap implementation, and performance optimization (60+ FPS). This document provides detail for creating Godot scenes (.tscn), implementing node hierarchies, and optimizing with object pooling.
|
|
17
|
+
|
|
18
|
+
If available, review: Game Design Document (GDD), Game Architecture Document, Language Strategy (GDScript vs C#). This document must align with 60+ FPS performance requirements and TDD practices (GUT/GoDotTest).
|
|
19
|
+
|
|
20
|
+
- id: introduction
|
|
21
|
+
title: Introduction
|
|
22
|
+
instruction: Establish the purpose and scope of level design for this game
|
|
23
|
+
content: |
|
|
24
|
+
This document defines the Godot level design framework for {{game_title}}, providing guidelines for creating performant, engaging levels using Godot's scene system, TileMap nodes, and Area2D/3D collision systems while maintaining 60+ FPS.
|
|
25
|
+
|
|
26
|
+
This framework ensures consistency across all level scenes (.tscn) while leveraging Godot's node inheritance, scene instancing, and object pooling for optimal performance.
|
|
27
|
+
sections:
|
|
28
|
+
- id: change-log
|
|
29
|
+
title: Change Log
|
|
30
|
+
instruction: Track document versions and changes
|
|
31
|
+
type: table
|
|
32
|
+
template: |
|
|
33
|
+
| Date | Version | Description | Author |
|
|
34
|
+
| :--- | :------ | :---------- | :----- |
|
|
35
|
+
|
|
36
|
+
- id: level-design-philosophy
|
|
37
|
+
title: Level Design Philosophy
|
|
38
|
+
instruction: Establish the overall approach to level design based on the game's core pillars and mechanics. Apply `tasks#advanced-elicitation` after presenting this section.
|
|
39
|
+
sections:
|
|
40
|
+
- id: design-principles
|
|
41
|
+
title: Design Principles
|
|
42
|
+
instruction: Define 3-5 core principles that guide all level design decisions
|
|
43
|
+
type: numbered-list
|
|
44
|
+
template: |
|
|
45
|
+
**{{principle_name}}** - {{description}}
|
|
46
|
+
- id: player-experience-goals
|
|
47
|
+
title: Player Experience Goals
|
|
48
|
+
instruction: Define what players should feel and learn in each level category
|
|
49
|
+
template: |
|
|
50
|
+
**Tutorial Levels:** {{experience_description}}
|
|
51
|
+
**Standard Levels:** {{experience_description}}
|
|
52
|
+
**Challenge Levels:** {{experience_description}}
|
|
53
|
+
**Boss Levels:** {{experience_description}}
|
|
54
|
+
- id: level-flow-framework
|
|
55
|
+
title: Level Flow Framework
|
|
56
|
+
instruction: Define the standard structure for level progression with performance targets
|
|
57
|
+
template: |
|
|
58
|
+
**Introduction Phase:** {{duration}} - {{purpose}} - Target: 60+ FPS
|
|
59
|
+
**Development Phase:** {{duration}} - {{purpose}} - Object pooling active
|
|
60
|
+
**Climax Phase:** {{duration}} - {{purpose}} - Peak performance critical
|
|
61
|
+
**Resolution Phase:** {{duration}} - {{purpose}} - Scene cleanup required
|
|
62
|
+
|
|
63
|
+
- id: level-categories
|
|
64
|
+
title: Level Categories
|
|
65
|
+
instruction: Define different types of levels based on the GDD requirements. Each category should be specific enough for implementation.
|
|
66
|
+
repeatable: true
|
|
67
|
+
sections:
|
|
68
|
+
- id: level-category
|
|
69
|
+
title: "{{category_name}} Levels"
|
|
70
|
+
template: |
|
|
71
|
+
**Purpose:** {{gameplay_purpose}}
|
|
72
|
+
|
|
73
|
+
**Target Duration:** {{min_time}} - {{max_time}} minutes
|
|
74
|
+
|
|
75
|
+
**Difficulty Range:** {{difficulty_scale}}
|
|
76
|
+
|
|
77
|
+
**Key Mechanics Featured:**
|
|
78
|
+
|
|
79
|
+
- {{mechanic_1}} - {{usage_description}}
|
|
80
|
+
- {{mechanic_2}} - {{usage_description}}
|
|
81
|
+
|
|
82
|
+
**Player Objectives:**
|
|
83
|
+
|
|
84
|
+
- Primary: {{primary_objective}}
|
|
85
|
+
- Secondary: {{secondary_objective}}
|
|
86
|
+
- Hidden: {{secret_objective}}
|
|
87
|
+
|
|
88
|
+
**Success Criteria:**
|
|
89
|
+
|
|
90
|
+
- {{completion_requirement_1}}
|
|
91
|
+
- {{completion_requirement_2}}
|
|
92
|
+
|
|
93
|
+
**Godot Technical Requirements:**
|
|
94
|
+
|
|
95
|
+
- Maximum nodes: {{node_limit}} active nodes
|
|
96
|
+
- Performance target: 60+ FPS mandatory (frame time <16.67ms)
|
|
97
|
+
- Memory budget: {{memory_limit}}MB scene memory
|
|
98
|
+
- Draw calls: <{{draw_call_limit}} for level geometry
|
|
99
|
+
- Object pools: Required for {{spawned_entities}}
|
|
100
|
+
- Language: {{GDScript|C#}} for level logic - {{reason}}
|
|
101
|
+
|
|
102
|
+
- id: level-progression-system
|
|
103
|
+
title: Level Progression System
|
|
104
|
+
instruction: Define how players move through levels and how difficulty scales
|
|
105
|
+
sections:
|
|
106
|
+
- id: world-structure
|
|
107
|
+
title: World Structure
|
|
108
|
+
instruction: Define the Godot scene organization and resource structure
|
|
109
|
+
template: |
|
|
110
|
+
**Scene Organization:** {{linear|hub_world|open_world}}
|
|
111
|
+
|
|
112
|
+
**Total Level Scenes:** {{number}} .tscn files
|
|
113
|
+
|
|
114
|
+
**World Scene Breakdown:**
|
|
115
|
+
|
|
116
|
+
- World 1: {{level_count}} scenes - res://levels/world1/ - {{difficulty_range}}
|
|
117
|
+
- World 2: {{level_count}} scenes - res://levels/world2/ - {{difficulty_range}}
|
|
118
|
+
- World 3: {{level_count}} scenes - res://levels/world3/ - {{difficulty_range}}
|
|
119
|
+
|
|
120
|
+
**Scene Loading:** < 3 seconds with loading screen if needed
|
|
121
|
+
**Scene Instancing:** Use PackedScene for repeated elements
|
|
122
|
+
- id: difficulty-progression
|
|
123
|
+
title: Difficulty Progression
|
|
124
|
+
instruction: Define how challenge increases across the game
|
|
125
|
+
sections:
|
|
126
|
+
- id: progression-curve
|
|
127
|
+
title: Progression Curve
|
|
128
|
+
type: code
|
|
129
|
+
language: text
|
|
130
|
+
template: |
|
|
131
|
+
Difficulty
|
|
132
|
+
^ ___/```
|
|
133
|
+
| /
|
|
134
|
+
| / ___/```
|
|
135
|
+
| / /
|
|
136
|
+
| / /
|
|
137
|
+
|/ /
|
|
138
|
+
+-----------> Level Number
|
|
139
|
+
Tutorial Early Mid Late
|
|
140
|
+
- id: scaling-parameters
|
|
141
|
+
title: Scaling Parameters
|
|
142
|
+
type: bullet-list
|
|
143
|
+
template: |
|
|
144
|
+
- Enemy count: {{start_count}} → {{end_count}} (pooled)
|
|
145
|
+
- Enemy difficulty: {{start_diff}} → {{end_diff}}
|
|
146
|
+
- Level complexity: {{start_complex}} → {{end_complex}}
|
|
147
|
+
- Time pressure: {{start_time}} → {{end_time}}
|
|
148
|
+
- Performance impact: Must maintain 60+ FPS at peak
|
|
149
|
+
- id: unlock-requirements
|
|
150
|
+
title: Unlock Requirements
|
|
151
|
+
instruction: Define how players access new levels
|
|
152
|
+
template: |
|
|
153
|
+
**Progression Gates:**
|
|
154
|
+
|
|
155
|
+
- Linear progression: Complete previous level
|
|
156
|
+
- Star requirements: {{star_count}} stars to unlock
|
|
157
|
+
- Skill gates: Demonstrate {{skill_requirement}}
|
|
158
|
+
- Optional content: {{unlock_condition}}
|
|
159
|
+
|
|
160
|
+
- id: level-design-components
|
|
161
|
+
title: Level Design Components
|
|
162
|
+
instruction: Define the building blocks used to create levels
|
|
163
|
+
sections:
|
|
164
|
+
- id: environmental-elements
|
|
165
|
+
title: Environmental Elements
|
|
166
|
+
instruction: Define Godot nodes and resources for level components
|
|
167
|
+
template: |
|
|
168
|
+
**TileMap Layers:**
|
|
169
|
+
|
|
170
|
+
- Background: TileMap node - {{tile_size}}px tiles
|
|
171
|
+
- Collision: TileMap with physics layers
|
|
172
|
+
- Foreground: TileMap for overlays
|
|
173
|
+
|
|
174
|
+
**Interactive Nodes:**
|
|
175
|
+
|
|
176
|
+
- {{node_1}}: Area2D/3D - {{signals_emitted}}
|
|
177
|
+
- {{node_2}}: RigidBody2D/3D - {{physics_properties}}
|
|
178
|
+
|
|
179
|
+
**Hazard Nodes:**
|
|
180
|
+
|
|
181
|
+
- {{hazard_1}}: Area2D with damage signal
|
|
182
|
+
- {{hazard_2}}: AnimationPlayer for moving hazards
|
|
183
|
+
|
|
184
|
+
**Performance:** All interactive elements use object pooling
|
|
185
|
+
- id: collectibles-rewards
|
|
186
|
+
title: Collectibles and Rewards
|
|
187
|
+
instruction: Define all collectible items and their placement rules
|
|
188
|
+
template: |
|
|
189
|
+
**Collectible Types:**
|
|
190
|
+
|
|
191
|
+
- {{collectible_1}}: {{value_and_purpose}}
|
|
192
|
+
- {{collectible_2}}: {{value_and_purpose}}
|
|
193
|
+
|
|
194
|
+
**Placement Guidelines:**
|
|
195
|
+
|
|
196
|
+
- Mandatory collectibles: {{placement_rules}}
|
|
197
|
+
- Optional collectibles: {{placement_rules}}
|
|
198
|
+
- Secret collectibles: {{placement_rules}}
|
|
199
|
+
|
|
200
|
+
**Reward Distribution:**
|
|
201
|
+
|
|
202
|
+
- Easy to find: {{percentage}}%
|
|
203
|
+
- Moderate challenge: {{percentage}}%
|
|
204
|
+
- High skill required: {{percentage}}%
|
|
205
|
+
- id: enemy-placement-framework
|
|
206
|
+
title: Enemy Placement Framework
|
|
207
|
+
instruction: Define enemy node placement and pooling strategies
|
|
208
|
+
template: |
|
|
209
|
+
**Enemy Scene Types:**
|
|
210
|
+
|
|
211
|
+
- {{enemy_scene_1}}.tscn: {{node_type}} - {{ai_behavior}}
|
|
212
|
+
- {{enemy_scene_2}}.tscn: {{node_type}} - {{ai_behavior}}
|
|
213
|
+
|
|
214
|
+
**Godot Placement Methods:**
|
|
215
|
+
|
|
216
|
+
- Spawn Points: Position2D/3D markers in scene
|
|
217
|
+
- Dynamic Spawning: Object pool with max {{pool_size}}
|
|
218
|
+
- Wave System: Timer-based with performance monitoring
|
|
219
|
+
|
|
220
|
+
**Performance Scaling:**
|
|
221
|
+
|
|
222
|
+
- Max active enemies: {{max_count}} to maintain 60+ FPS
|
|
223
|
+
- LOD system: Disable AI beyond {{distance}} units
|
|
224
|
+
- Pooling strategy: Reuse instances, never instantiate in gameplay
|
|
225
|
+
|
|
226
|
+
- id: level-creation-guidelines
|
|
227
|
+
title: Level Creation Guidelines
|
|
228
|
+
instruction: Provide specific guidelines for creating individual levels
|
|
229
|
+
sections:
|
|
230
|
+
- id: level-layout-principles
|
|
231
|
+
title: Godot Level Layout Principles
|
|
232
|
+
template: |
|
|
233
|
+
**TileMap Design:**
|
|
234
|
+
|
|
235
|
+
- Tile size: {{tile_size}}x{{tile_size}} pixels
|
|
236
|
+
- Grid dimensions: {{grid_width}}x{{grid_height}} tiles
|
|
237
|
+
- Collision layers: {{collision_layer_count}}
|
|
238
|
+
- Autotiling: {{autotile_enabled}} for efficiency
|
|
239
|
+
|
|
240
|
+
**Node-Based Navigation:**
|
|
241
|
+
|
|
242
|
+
- Navigation2D/3D setup: {{nav_mesh_config}}
|
|
243
|
+
- Path2D for guided movement
|
|
244
|
+
- Area2D triggers for zone transitions
|
|
245
|
+
- Position2D markers for spawn points
|
|
246
|
+
|
|
247
|
+
**Performance Layout:**
|
|
248
|
+
- Chunk size for streaming: {{chunk_size}}
|
|
249
|
+
- Occlusion culling setup: {{occlusion_config}}
|
|
250
|
+
- Draw call optimization: Batch similar tiles
|
|
251
|
+
- id: pacing-and-flow
|
|
252
|
+
title: Pacing and Flow
|
|
253
|
+
instruction: Define how to control the rhythm and pace of gameplay within levels
|
|
254
|
+
template: |
|
|
255
|
+
**Action Sequences:**
|
|
256
|
+
|
|
257
|
+
- High intensity duration: {{max_duration}}
|
|
258
|
+
- Rest period requirement: {{min_rest_time}}
|
|
259
|
+
- Intensity variation: {{pacing_pattern}}
|
|
260
|
+
|
|
261
|
+
**Learning Sequences:**
|
|
262
|
+
|
|
263
|
+
- New mechanic introduction: {{teaching_method}}
|
|
264
|
+
- Practice opportunity: {{practice_duration}}
|
|
265
|
+
- Skill application: {{application_context}}
|
|
266
|
+
- id: challenge-design
|
|
267
|
+
title: Challenge Design
|
|
268
|
+
instruction: Define how to create appropriate challenges for each level type
|
|
269
|
+
template: |
|
|
270
|
+
**Challenge Types:**
|
|
271
|
+
|
|
272
|
+
- Execution challenges: {{skill_requirements}}
|
|
273
|
+
- Puzzle challenges: {{complexity_guidelines}}
|
|
274
|
+
- Time challenges: {{time_pressure_rules}}
|
|
275
|
+
- Resource challenges: {{resource_management}}
|
|
276
|
+
|
|
277
|
+
**Difficulty Calibration:**
|
|
278
|
+
|
|
279
|
+
- Skill check frequency: {{frequency_guidelines}}
|
|
280
|
+
- Failure recovery: {{retry_mechanics}}
|
|
281
|
+
- Hint system integration: {{help_system}}
|
|
282
|
+
|
|
283
|
+
- id: technical-implementation
|
|
284
|
+
title: Godot Technical Implementation
|
|
285
|
+
instruction: Define Godot-specific technical requirements for level scenes
|
|
286
|
+
sections:
|
|
287
|
+
- id: level-scene-structure
|
|
288
|
+
title: Level Scene Structure
|
|
289
|
+
instruction: Define Godot scene hierarchy and resource organization
|
|
290
|
+
template: |
|
|
291
|
+
**Scene File Format:**
|
|
292
|
+
|
|
293
|
+
- File type: .tscn (Godot scene)
|
|
294
|
+
- Naming: `level_{{world}}_{{number}}.tscn`
|
|
295
|
+
- Location: res://levels/{{world}}/
|
|
296
|
+
- Resource format: .tres for level data
|
|
297
|
+
|
|
298
|
+
**Scene Hierarchy:**
|
|
299
|
+
```
|
|
300
|
+
Level (Node2D/Spatial)
|
|
301
|
+
├── TileMap (background)
|
|
302
|
+
├── TileMap (collision)
|
|
303
|
+
├── TileMap (foreground)
|
|
304
|
+
├── Entities (Node2D)
|
|
305
|
+
│ ├── Enemies (pooled)
|
|
306
|
+
│ └── Pickups (pooled)
|
|
307
|
+
├── Triggers (Node2D)
|
|
308
|
+
└── LevelLogic (Node with script)
|
|
309
|
+
```
|
|
310
|
+
sections:
|
|
311
|
+
- id: level-resource-data
|
|
312
|
+
title: Level Resource Data (.tres)
|
|
313
|
+
type: code
|
|
314
|
+
language: gdscript
|
|
315
|
+
template: |
|
|
316
|
+
# LevelData.gd - extends Resource
|
|
317
|
+
class_name LevelData
|
|
318
|
+
extends Resource
|
|
319
|
+
|
|
320
|
+
@export var level_id: String = "{{unique_identifier}}"
|
|
321
|
+
@export var world_id: String = "{{world_identifier}}"
|
|
322
|
+
@export var difficulty: float = {{difficulty_value}}
|
|
323
|
+
@export var target_time: float = {{completion_time_seconds}}
|
|
324
|
+
@export var target_fps: int = 60 # Mandatory
|
|
325
|
+
|
|
326
|
+
@export var objectives: Dictionary = {
|
|
327
|
+
"primary": "{{primary_objective}}",
|
|
328
|
+
"secondary": ["{{secondary_objectives}}"],
|
|
329
|
+
"hidden": ["{{secret_objectives}}"]
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
@export var performance_limits: Dictionary = {
|
|
333
|
+
"max_enemies": {{enemy_pool_size}},
|
|
334
|
+
"max_particles": {{particle_limit}},
|
|
335
|
+
"max_draw_calls": {{draw_call_limit}}
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
# Entity spawn data
|
|
339
|
+
@export var spawn_points: Array[Vector2] = []
|
|
340
|
+
@export var enemy_waves: Array[Resource] = []
|
|
341
|
+
- id: godot-asset-integration
|
|
342
|
+
title: Godot Asset Integration
|
|
343
|
+
instruction: Define how Godot resources and assets are organized
|
|
344
|
+
template: |
|
|
345
|
+
**TileSet Resource:**
|
|
346
|
+
|
|
347
|
+
- Resource path: res://tilesets/{{tileset_name}}.tres
|
|
348
|
+
- Tile size: {{tile_dimensions}}x{{tile_dimensions}}px
|
|
349
|
+
- Physics layers: {{collision_layers}}
|
|
350
|
+
- Autotile setup: {{autotile_config}}
|
|
351
|
+
- Custom data layers: {{custom_properties}}
|
|
352
|
+
|
|
353
|
+
**Audio Integration:**
|
|
354
|
+
|
|
355
|
+
- AudioStreamPlayer2D for positional audio
|
|
356
|
+
- Audio bus: "Level" for volume control
|
|
357
|
+
- Stream format: .ogg for music, .wav for SFX
|
|
358
|
+
- Preload critical sounds to avoid frame drops
|
|
359
|
+
|
|
360
|
+
**Texture Import Settings:**
|
|
361
|
+
- Filter: Nearest (for pixel art) or Linear
|
|
362
|
+
- Mipmaps: Disabled for 2D, Enabled for 3D
|
|
363
|
+
- Compression: Lossless for important visuals
|
|
364
|
+
- id: godot-performance-optimization
|
|
365
|
+
title: Godot Performance Optimization
|
|
366
|
+
instruction: Define Godot-specific optimization for 60+ FPS
|
|
367
|
+
template: |
|
|
368
|
+
**Node Limits (for 60+ FPS):**
|
|
369
|
+
|
|
370
|
+
- Maximum active nodes: {{node_limit}}
|
|
371
|
+
- Maximum physics bodies: {{physics_limit}}
|
|
372
|
+
- Maximum particles: {{particle_limit}} (use GPUParticles2D/3D)
|
|
373
|
+
- Maximum lights: {{light_limit}}
|
|
374
|
+
|
|
375
|
+
**Memory Management:**
|
|
376
|
+
|
|
377
|
+
- Scene memory budget: {{scene_memory}}MB
|
|
378
|
+
- Texture memory: {{texture_memory}}MB
|
|
379
|
+
- Object pooling: Mandatory for all spawned entities
|
|
380
|
+
- Scene loading: <3 seconds (show loading screen if longer)
|
|
381
|
+
|
|
382
|
+
**Godot Optimization Techniques:**
|
|
383
|
+
|
|
384
|
+
- VisibilityEnabler2D/3D for automatic culling
|
|
385
|
+
- LOD using visibility ranges
|
|
386
|
+
- Static body optimization for non-moving collision
|
|
387
|
+
- YSort for efficient 2D depth sorting
|
|
388
|
+
- Multimesh for repeated elements
|
|
389
|
+
|
|
390
|
+
**Language Strategy:**
|
|
391
|
+
- Level logic: GDScript with static typing
|
|
392
|
+
- Performance-critical systems: C# (no LINQ)
|
|
393
|
+
|
|
394
|
+
- id: godot-level-patterns
|
|
395
|
+
title: Godot Level Design Patterns
|
|
396
|
+
instruction: Document common Godot patterns for level implementation
|
|
397
|
+
sections:
|
|
398
|
+
- id: scene-inheritance
|
|
399
|
+
title: Scene Inheritance Pattern
|
|
400
|
+
template: |
|
|
401
|
+
**Base Level Scene:**
|
|
402
|
+
- res://levels/base_level.tscn
|
|
403
|
+
- Contains common nodes (UI, pause, music)
|
|
404
|
+
- Child scenes inherit and override
|
|
405
|
+
|
|
406
|
+
**Inherited Scenes:**
|
|
407
|
+
- Each level extends base_level.tscn
|
|
408
|
+
- Override specific properties
|
|
409
|
+
- Maintain 60+ FPS through shared resources
|
|
410
|
+
- id: tilemap-patterns
|
|
411
|
+
title: TileMap Best Practices
|
|
412
|
+
template: |
|
|
413
|
+
**Layer Organization:**
|
|
414
|
+
- Background: Decorative, no collision
|
|
415
|
+
- Collision: Physics bodies, one-way platforms
|
|
416
|
+
- Foreground: Overlay effects
|
|
417
|
+
|
|
418
|
+
**Autotiling Setup:**
|
|
419
|
+
- 3x3 minimal or 16-tile for complex terrain
|
|
420
|
+
- Custom data for gameplay properties
|
|
421
|
+
- Collision shapes optimized per tile
|
|
422
|
+
- id: spawning-patterns
|
|
423
|
+
title: Entity Spawning Patterns
|
|
424
|
+
template: |
|
|
425
|
+
**Object Pooling (Mandatory):**
|
|
426
|
+
```gdscript
|
|
427
|
+
# Enemy pool manager
|
|
428
|
+
var enemy_pool: Array = []
|
|
429
|
+
var max_enemies: int = {{max_count}}
|
|
430
|
+
|
|
431
|
+
func _ready() -> void:
|
|
432
|
+
# Pre-instantiate enemies
|
|
433
|
+
for i in max_enemies:
|
|
434
|
+
var enemy = enemy_scene.instantiate()
|
|
435
|
+
enemy.set_process(false)
|
|
436
|
+
enemy_pool.append(enemy)
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
**Spawn Points:**
|
|
440
|
+
- Use Position2D/3D markers
|
|
441
|
+
- Group spawn points for wave management
|
|
442
|
+
- Signal when spawn completes
|
|
443
|
+
- id: performance-patterns
|
|
444
|
+
title: Performance Optimization Patterns
|
|
445
|
+
template: |
|
|
446
|
+
**Visibility Management:**
|
|
447
|
+
- VisibilityEnabler2D for off-screen culling
|
|
448
|
+
- LOD groups for distance-based quality
|
|
449
|
+
- Disable process for inactive entities
|
|
450
|
+
|
|
451
|
+
**Memory Management:**
|
|
452
|
+
- Preload frequently used resources
|
|
453
|
+
- Queue_free() with object pool return
|
|
454
|
+
- Signal cleanup in _exit_tree()
|
|
455
|
+
|
|
456
|
+
**Draw Call Batching:**
|
|
457
|
+
- Use same material/shader where possible
|
|
458
|
+
- Batch static geometry
|
|
459
|
+
- Minimize transparent overdraw
|
|
460
|
+
|
|
461
|
+
- id: level-testing-framework
|
|
462
|
+
title: Level Testing Framework
|
|
463
|
+
instruction: Define how levels should be tested and validated
|
|
464
|
+
sections:
|
|
465
|
+
- id: automated-testing
|
|
466
|
+
title: Automated Testing
|
|
467
|
+
template: |
|
|
468
|
+
**Performance Testing (GUT/GoDotTest):**
|
|
469
|
+
|
|
470
|
+
- Frame rate validation: Must maintain 60+ FPS
|
|
471
|
+
- Frame time monitoring: <16.67ms average
|
|
472
|
+
- Memory leak detection: Check signal cleanup
|
|
473
|
+
- Object pool verification: Ensure recycling works
|
|
474
|
+
- Loading time: <3 seconds per scene
|
|
475
|
+
|
|
476
|
+
**Gameplay Testing (TDD Approach):**
|
|
477
|
+
|
|
478
|
+
- Write GUT tests for level completion paths
|
|
479
|
+
- Test all Area2D triggers fire correctly
|
|
480
|
+
- Verify collectible spawn points accessible
|
|
481
|
+
- Test enemy AI with performance monitoring
|
|
482
|
+
- Validate all signals connect/disconnect properly
|
|
483
|
+
- id: manual-testing-protocol
|
|
484
|
+
title: Manual Testing Protocol
|
|
485
|
+
sections:
|
|
486
|
+
- id: playtesting-checklist
|
|
487
|
+
title: Godot Playtesting Checklist
|
|
488
|
+
type: checklist
|
|
489
|
+
items:
|
|
490
|
+
- Level maintains 60+ FPS throughout gameplay
|
|
491
|
+
- TileMap collision works correctly
|
|
492
|
+
- All Area2D triggers activate properly
|
|
493
|
+
- Object pooling functions without hiccups
|
|
494
|
+
- Scene transitions take <3 seconds
|
|
495
|
+
- Input responsiveness <50ms (3 frames)
|
|
496
|
+
- No memory leaks from signals
|
|
497
|
+
- Navigation mesh pathfinding works
|
|
498
|
+
- id: player-experience-testing
|
|
499
|
+
title: Player Experience Testing
|
|
500
|
+
type: checklist
|
|
501
|
+
items:
|
|
502
|
+
- Tutorial levels teach effectively
|
|
503
|
+
- Challenge feels fair and rewarding
|
|
504
|
+
- Flow and pacing maintain engagement
|
|
505
|
+
- Audio and visual feedback support gameplay
|
|
506
|
+
- id: balance-validation
|
|
507
|
+
title: Balance Validation
|
|
508
|
+
template: |
|
|
509
|
+
**Godot Metrics Collection:**
|
|
510
|
+
|
|
511
|
+
- FPS consistency: >95% of time at 60+ FPS
|
|
512
|
+
- Completion rate: Target {{completion_percentage}}%
|
|
513
|
+
- Average completion time: {{target_time}} ± {{variance}}
|
|
514
|
+
- Object pool efficiency: >90% reuse rate
|
|
515
|
+
- Draw calls per level: <{{draw_call_target}}
|
|
516
|
+
|
|
517
|
+
**Performance-Based Iteration:**
|
|
518
|
+
|
|
519
|
+
- If FPS drops: Reduce active enemies/particles
|
|
520
|
+
- If loading slow: Optimize texture imports
|
|
521
|
+
- If memory high: Check for signal leaks
|
|
522
|
+
- Testing with Godot profiler mandatory
|
|
523
|
+
|
|
524
|
+
- id: content-creation-pipeline
|
|
525
|
+
title: Godot Level Creation Pipeline
|
|
526
|
+
instruction: Define the workflow for creating new Godot level scenes
|
|
527
|
+
sections:
|
|
528
|
+
- id: design-phase
|
|
529
|
+
title: Design Phase
|
|
530
|
+
template: |
|
|
531
|
+
**Concept Development:**
|
|
532
|
+
|
|
533
|
+
1. Define level goals and performance targets (60+ FPS)
|
|
534
|
+
2. Sketch TileMap layout and node placement
|
|
535
|
+
3. Plan object pooling for spawned entities
|
|
536
|
+
4. Choose language (GDScript vs C#) for level logic
|
|
537
|
+
5. Estimate memory and draw call budget
|
|
538
|
+
|
|
539
|
+
**Godot Documentation Requirements:**
|
|
540
|
+
|
|
541
|
+
- Level scene hierarchy diagram
|
|
542
|
+
- TileSet resource requirements
|
|
543
|
+
- Signal flow documentation
|
|
544
|
+
- Performance budget allocation
|
|
545
|
+
- TDD test plan (GUT/GoDotTest)
|
|
546
|
+
- id: implementation-phase
|
|
547
|
+
title: Godot Implementation Phase
|
|
548
|
+
template: |
|
|
549
|
+
**Scene Creation (TDD Approach):**
|
|
550
|
+
|
|
551
|
+
1. Write GUT tests for level mechanics (RED phase)
|
|
552
|
+
2. Create level scene (.tscn) structure
|
|
553
|
+
3. Build TileMap layers (collision, visual, background)
|
|
554
|
+
4. Implement object pools for enemies/pickups
|
|
555
|
+
5. Add Area2D triggers and signals (GREEN phase)
|
|
556
|
+
6. Configure Navigation2D mesh
|
|
557
|
+
7. Optimize with static typing (REFACTOR phase)
|
|
558
|
+
|
|
559
|
+
**Godot Quality Assurance:**
|
|
560
|
+
|
|
561
|
+
1. Run GUT/GoDotTest suites
|
|
562
|
+
2. Profile with Godot debugger (60+ FPS check)
|
|
563
|
+
3. Verify object pooling efficiency
|
|
564
|
+
4. Check memory usage and draw calls
|
|
565
|
+
5. Test on minimum spec hardware
|
|
566
|
+
- id: integration-phase
|
|
567
|
+
title: Godot Integration Phase
|
|
568
|
+
template: |
|
|
569
|
+
**Scene Integration:**
|
|
570
|
+
|
|
571
|
+
1. Add to level scene autoload manager
|
|
572
|
+
2. Connect to game state signals
|
|
573
|
+
3. Integrate with save system (user:// path)
|
|
574
|
+
4. Link achievements via signal system
|
|
575
|
+
5. Set up scene transitions (<3 seconds)
|
|
576
|
+
|
|
577
|
+
**Final Godot Validation:**
|
|
578
|
+
|
|
579
|
+
1. Test scene in full game context
|
|
580
|
+
2. Verify 60+ FPS with all systems active
|
|
581
|
+
3. Export template testing (all platforms)
|
|
582
|
+
4. Check InputMap works for all devices
|
|
583
|
+
5. Validate object pools don't leak memory
|
|
584
|
+
|
|
585
|
+
- id: success-metrics
|
|
586
|
+
title: Godot Level Success Metrics
|
|
587
|
+
instruction: Define metrics for level design success with performance focus
|
|
588
|
+
sections:
|
|
589
|
+
- id: player-engagement
|
|
590
|
+
title: Player Engagement
|
|
591
|
+
type: bullet-list
|
|
592
|
+
template: |
|
|
593
|
+
- Level completion rate: {{target_rate}}%
|
|
594
|
+
- Replay rate: {{replay_target}}%
|
|
595
|
+
- Time spent per level: {{engagement_time}}
|
|
596
|
+
- Player satisfaction: {{satisfaction_target}}/10
|
|
597
|
+
- Input responsiveness: <50ms feedback
|
|
598
|
+
- id: godot-performance
|
|
599
|
+
title: Godot Technical Performance
|
|
600
|
+
type: bullet-list
|
|
601
|
+
template: |
|
|
602
|
+
- Frame rate: 60+ FPS maintained {{fps_consistency}}%
|
|
603
|
+
- Frame time: <16.67ms average
|
|
604
|
+
- Scene loading: <3 seconds {{load_compliance}}%
|
|
605
|
+
- Memory efficiency: {{memory_efficiency}}%
|
|
606
|
+
- Object pool reuse: >90% efficiency
|
|
607
|
+
- Draw calls: Within budget {{draw_compliance}}%
|
|
608
|
+
- Signal leaks: 0 tolerance
|
|
609
|
+
- Crash rate: <{{crash_threshold}}%
|
|
610
|
+
- id: design-quality
|
|
611
|
+
title: Design Quality
|
|
612
|
+
type: bullet-list
|
|
613
|
+
template: |
|
|
614
|
+
- Difficulty curve adherence: {{curve_accuracy}}
|
|
615
|
+
- Node architecture efficiency: {{node_score}}
|
|
616
|
+
- TileMap optimization: {{tilemap_score}}
|
|
617
|
+
- Signal flow clarity: {{signal_score}}
|
|
618
|
+
- TDD coverage: >80% (GUT/GoDotTest)
|
|
619
|
+
- Language strategy appropriateness: {{language_score}}
|
|
620
|
+
- Content accessibility: {{accessibility_rate}}%
|