bmad-method 4.42.1 → 4.43.1
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 -98
- package/bmad-core/agents/bmad-master.md +6 -6
- package/bmad-core/data/bmad-kb.md +1 -0
- package/bmad-core/tasks/validate-next-story.md +1 -1
- package/bmad-core/templates/brownfield-architecture-tmpl.yaml +5 -5
- package/dist/agents/analyst.txt +1 -0
- package/dist/agents/architect.txt +5 -5
- package/dist/agents/bmad-master.txt +12 -11
- package/dist/agents/bmad-orchestrator.txt +1 -0
- 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 +7 -6
- package/dist/teams/team-fullstack.txt +7 -6
- package/dist/teams/team-ide-minimal.txt +2 -1
- package/dist/teams/team-no-ui.txt +7 -6
- package/docs/GUIDING-PRINCIPLES.md +3 -3
- package/docs/expansion-packs.md +3 -83
- 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 +19 -2
- package/tools/flattener/ignoreRules.js +2 -0
- package/tools/installer/bin/bmad.js +37 -1
- package/tools/installer/config/install.config.yaml +35 -7
- package/tools/installer/lib/ide-setup.js +285 -80
- package/tools/installer/lib/installer.js +6 -1
- 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,406 @@
|
|
|
1
|
+
template:
|
|
2
|
+
id: godot-game-story-template-v4
|
|
3
|
+
name: Godot Game Development Story
|
|
4
|
+
version: 4.0
|
|
5
|
+
output:
|
|
6
|
+
format: markdown
|
|
7
|
+
filename: "stories/{{epic_name}}/{{story_id}}-{{story_name}}.md"
|
|
8
|
+
title: "Godot Story: {{story_title}}"
|
|
9
|
+
|
|
10
|
+
workflow:
|
|
11
|
+
mode: interactive
|
|
12
|
+
|
|
13
|
+
sections:
|
|
14
|
+
- id: initial-setup
|
|
15
|
+
instruction: |
|
|
16
|
+
This template creates detailed Godot game development stories with TDD focus and 60+ FPS performance requirements. Each story should focus on a single, implementable feature using appropriate language choices (GDScript for logic, C# for performance-critical systems).
|
|
17
|
+
|
|
18
|
+
Before starting, ensure you have access to:
|
|
19
|
+
|
|
20
|
+
- Game Design Document (GDD) with Godot specifications
|
|
21
|
+
- Game Architecture Document with node hierarchy
|
|
22
|
+
- Language strategy decisions (GDScript vs C#)
|
|
23
|
+
- Performance targets (60+ FPS mandatory)
|
|
24
|
+
- Any existing stories in this epic
|
|
25
|
+
|
|
26
|
+
The story must include TDD requirements (GUT for GDScript, GoDotTest for C#) and performance validation steps.
|
|
27
|
+
|
|
28
|
+
- id: story-header
|
|
29
|
+
content: |
|
|
30
|
+
**Epic:** {{epic_name}}
|
|
31
|
+
**Story ID:** {{story_id}}
|
|
32
|
+
**Priority:** {{High|Medium|Low}}
|
|
33
|
+
**Points:** {{story_points}}
|
|
34
|
+
**Status:** Draft
|
|
35
|
+
**Language:** {{GDScript|C#|Both}}
|
|
36
|
+
**Performance Target:** 60+ FPS
|
|
37
|
+
|
|
38
|
+
- id: description
|
|
39
|
+
title: Description
|
|
40
|
+
instruction: Provide a clear, concise description of what this story implements in Godot. Focus on the specific game feature, node architecture, and language choice rationale. Reference the GDD section and performance requirements.
|
|
41
|
+
template: |
|
|
42
|
+
{{clear_description_of_what_needs_to_be_implemented}}
|
|
43
|
+
|
|
44
|
+
**Godot Implementation:** Using {{node_types}} with {{language_choice}} for {{performance_reason}}
|
|
45
|
+
**Performance Impact:** {{expected_fps_impact}}
|
|
46
|
+
|
|
47
|
+
- id: acceptance-criteria
|
|
48
|
+
title: Acceptance Criteria
|
|
49
|
+
instruction: Define specific, testable conditions that must be met for the story to be considered complete. Each criterion should be verifiable and directly related to gameplay functionality.
|
|
50
|
+
sections:
|
|
51
|
+
- id: functional-requirements
|
|
52
|
+
title: Functional Requirements
|
|
53
|
+
type: checklist
|
|
54
|
+
items:
|
|
55
|
+
- "{{specific_functional_requirement}}"
|
|
56
|
+
- id: technical-requirements
|
|
57
|
+
title: Technical Requirements
|
|
58
|
+
type: checklist
|
|
59
|
+
items:
|
|
60
|
+
- Code follows GDScript/C# best practices with static typing
|
|
61
|
+
- Maintains 60+ FPS on all target devices (frame time <16.67ms)
|
|
62
|
+
- Object pooling implemented for spawned entities
|
|
63
|
+
- Signals properly connected and cleaned up
|
|
64
|
+
- GUT/GoDotTest coverage >= 80%
|
|
65
|
+
- "{{specific_technical_requirement}}"
|
|
66
|
+
- id: game-design-requirements
|
|
67
|
+
title: Game Design Requirements
|
|
68
|
+
type: checklist
|
|
69
|
+
items:
|
|
70
|
+
- "{{gameplay_requirement_from_gdd}}"
|
|
71
|
+
- "{{balance_requirement_if_applicable}}"
|
|
72
|
+
- "{{player_experience_requirement}}"
|
|
73
|
+
|
|
74
|
+
- id: technical-specifications
|
|
75
|
+
title: Technical Specifications
|
|
76
|
+
instruction: Provide specific Godot technical details including node hierarchy, signal flow, and language decisions. Include scene structure and resource requirements.
|
|
77
|
+
sections:
|
|
78
|
+
- id: files-to-modify
|
|
79
|
+
title: Files to Create/Modify
|
|
80
|
+
template: |
|
|
81
|
+
**New Scenes (.tscn):**
|
|
82
|
+
|
|
83
|
+
- `res://scenes/{{scene_name}}.tscn` - {{purpose}}
|
|
84
|
+
|
|
85
|
+
**New Scripts:**
|
|
86
|
+
|
|
87
|
+
- `res://scripts/{{script_name}}.gd` - {{gdscript_purpose}} (static typing required)
|
|
88
|
+
- `res://scripts/{{script_name}}.cs` - {{csharp_purpose}} (for performance)
|
|
89
|
+
|
|
90
|
+
**New Resources (.tres):**
|
|
91
|
+
|
|
92
|
+
- `res://resources/{{resource_name}}.tres` - {{resource_purpose}}
|
|
93
|
+
|
|
94
|
+
**Modified Files:**
|
|
95
|
+
|
|
96
|
+
- `{{existing_file_1}}` - {{changes_needed}}
|
|
97
|
+
- `{{existing_file_2}}` - {{changes_needed}}
|
|
98
|
+
- id: class-interface-definitions
|
|
99
|
+
title: Node/Class Definitions
|
|
100
|
+
instruction: Define specific Godot node structures and classes with language strategy
|
|
101
|
+
template: |
|
|
102
|
+
**GDScript Implementation (for game logic):**
|
|
103
|
+
```gdscript
|
|
104
|
+
# {{script_name}}.gd
|
|
105
|
+
class_name {{ClassName}}
|
|
106
|
+
extends {{Node2D|Control|Node3D}}
|
|
107
|
+
|
|
108
|
+
# Static typing mandatory for 10-20% performance gain
|
|
109
|
+
@export var {{property_name}}: {{type}} = {{default_value}}
|
|
110
|
+
|
|
111
|
+
var _{{private_property}}: {{type}}
|
|
112
|
+
|
|
113
|
+
signal {{signal_name}}({{params}})
|
|
114
|
+
|
|
115
|
+
func _ready() -> void:
|
|
116
|
+
# TDD: Write GUT tests first
|
|
117
|
+
pass
|
|
118
|
+
|
|
119
|
+
func _physics_process(delta: float) -> void:
|
|
120
|
+
# Must maintain 60+ FPS
|
|
121
|
+
pass
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**C# Implementation (for performance-critical systems):**
|
|
125
|
+
```csharp
|
|
126
|
+
// {{script_name}}.cs
|
|
127
|
+
using Godot;
|
|
128
|
+
|
|
129
|
+
[GlobalClass]
|
|
130
|
+
public partial class {{ClassName}} : {{Node2D|Control|Node3D}}
|
|
131
|
+
{
|
|
132
|
+
[Export] public {{type}} {{PropertyName}} { get; set; }
|
|
133
|
+
|
|
134
|
+
[Signal]
|
|
135
|
+
public delegate void {{SignalName}}EventHandler({{params}});
|
|
136
|
+
|
|
137
|
+
public override void _Ready()
|
|
138
|
+
{
|
|
139
|
+
// TDD: Write GoDotTest tests first
|
|
140
|
+
// No LINQ in hot paths
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
public override void _PhysicsProcess(double delta)
|
|
144
|
+
{
|
|
145
|
+
// Optimize for 60+ FPS, no allocations
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
- id: integration-points
|
|
150
|
+
title: Integration Points
|
|
151
|
+
instruction: Specify how this feature integrates with existing Godot systems
|
|
152
|
+
template: |
|
|
153
|
+
**Scene Tree Integration:**
|
|
154
|
+
|
|
155
|
+
- Parent Scene: `res://scenes/{{parent_scene}}.tscn`
|
|
156
|
+
- Node Path: `/root/{{node_path}}`
|
|
157
|
+
- Scene Instancing: {{instancing_details}}
|
|
158
|
+
|
|
159
|
+
**Node Dependencies:**
|
|
160
|
+
|
|
161
|
+
- {{node_name}}: {{dependency_description}}
|
|
162
|
+
- Language: {{GDScript|C#}} - {{language_reason}}
|
|
163
|
+
|
|
164
|
+
**Signal Connections:**
|
|
165
|
+
|
|
166
|
+
- Emits: `{{signal_name}}` when {{condition}}
|
|
167
|
+
- Connects to: `{{node_path}}.{{signal_name}}` for {{response}}
|
|
168
|
+
- Cleanup: Signals disconnected in `_exit_tree()`
|
|
169
|
+
|
|
170
|
+
**Resource Dependencies:**
|
|
171
|
+
|
|
172
|
+
- `res://resources/{{resource}}.tres` - {{usage}}
|
|
173
|
+
- Preloaded: {{yes|no}} - {{preload_reason}}
|
|
174
|
+
|
|
175
|
+
- id: tdd-workflow
|
|
176
|
+
title: TDD Workflow (Red-Green-Refactor)
|
|
177
|
+
instruction: Define the Test-Driven Development approach for this story
|
|
178
|
+
template: |
|
|
179
|
+
**RED Phase - Write Failing Tests First:**
|
|
180
|
+
|
|
181
|
+
GDScript (GUT):
|
|
182
|
+
- [ ] Create test file: `res://tests/unit/test_{{component}}.gd`
|
|
183
|
+
- [ ] Write test for {{behavior_1}} - expect failure
|
|
184
|
+
- [ ] Write test for {{behavior_2}} - expect failure
|
|
185
|
+
- [ ] Write performance test for 60+ FPS - expect failure
|
|
186
|
+
|
|
187
|
+
C# (GoDotTest):
|
|
188
|
+
- [ ] Create test file: `res://tests/unit/{{Component}}Tests.cs`
|
|
189
|
+
- [ ] Write test for {{behavior_1}} - expect failure
|
|
190
|
+
- [ ] Write optimization test (no allocations) - expect failure
|
|
191
|
+
|
|
192
|
+
**GREEN Phase - Make Tests Pass:**
|
|
193
|
+
|
|
194
|
+
- [ ] Implement minimal code to pass {{behavior_1}} test
|
|
195
|
+
- [ ] Implement minimal code to pass {{behavior_2}} test
|
|
196
|
+
- [ ] Ensure 60+ FPS requirement is met
|
|
197
|
+
- [ ] Verify all tests are green
|
|
198
|
+
|
|
199
|
+
**REFACTOR Phase - Optimize and Clean:**
|
|
200
|
+
|
|
201
|
+
- [ ] Add static typing to all GDScript (10-20% perf gain)
|
|
202
|
+
- [ ] Remove LINQ from C# hot paths
|
|
203
|
+
- [ ] Implement object pooling for {{spawned_entities}}
|
|
204
|
+
- [ ] Clean up signal connections
|
|
205
|
+
- [ ] Profile and verify 60+ FPS maintained
|
|
206
|
+
- [ ] Ensure test coverage >= 80%
|
|
207
|
+
|
|
208
|
+
- id: implementation-tasks
|
|
209
|
+
title: Implementation Tasks
|
|
210
|
+
instruction: Break down the implementation into TDD-focused tasks following Red-Green-Refactor cycle. Each task should maintain 60+ FPS.
|
|
211
|
+
sections:
|
|
212
|
+
- id: dev-agent-record
|
|
213
|
+
title: Dev Agent Record
|
|
214
|
+
template: |
|
|
215
|
+
**TDD Tasks (Red-Green-Refactor):**
|
|
216
|
+
|
|
217
|
+
- [ ] Write GUT/GoDotTest tests for {{component}} (RED phase)
|
|
218
|
+
- [ ] Implement {{node_structure}} to pass tests (GREEN phase)
|
|
219
|
+
- [ ] Refactor with static typing and optimization (REFACTOR phase)
|
|
220
|
+
- [ ] Create object pool for {{spawned_entities}}
|
|
221
|
+
- [ ] Implement signal connections with cleanup
|
|
222
|
+
- [ ] Profile performance to ensure 60+ FPS
|
|
223
|
+
- [ ] Language optimization (GDScript static typing or C# no-LINQ)
|
|
224
|
+
- [ ] Integration testing with {{related_system}}
|
|
225
|
+
- [ ] Final performance validation (must maintain 60+ FPS)
|
|
226
|
+
|
|
227
|
+
**Debug Log:**
|
|
228
|
+
| Task | File | Change | Reverted? |
|
|
229
|
+
|------|------|--------|-----------|
|
|
230
|
+
| | | | |
|
|
231
|
+
|
|
232
|
+
**Completion Notes:**
|
|
233
|
+
|
|
234
|
+
<!-- Only note deviations from requirements, keep under 50 words -->
|
|
235
|
+
|
|
236
|
+
**Change Log:**
|
|
237
|
+
|
|
238
|
+
<!-- Only requirement changes during implementation -->
|
|
239
|
+
|
|
240
|
+
- id: godot-technical-context
|
|
241
|
+
title: Godot Technical Context
|
|
242
|
+
instruction: Define the Godot-specific technical implementation details
|
|
243
|
+
template: |
|
|
244
|
+
**Engine Version:** Godot {{version}} (4.3+ recommended)
|
|
245
|
+
**Renderer:** {{Forward+|Mobile|Compatibility}}
|
|
246
|
+
**Primary Language:** {{GDScript|C#}} - {{reason}}
|
|
247
|
+
|
|
248
|
+
**Node Architecture:**
|
|
249
|
+
```
|
|
250
|
+
{{parent_node}}
|
|
251
|
+
└── {{child_node_1}} ({{node_type}})
|
|
252
|
+
├── {{child_node_2}} ({{node_type}})
|
|
253
|
+
└── {{child_node_3}} ({{node_type}})
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
**Performance Requirements:**
|
|
257
|
+
- Target FPS: 60+ (mandatory)
|
|
258
|
+
- Frame Budget: 16.67ms
|
|
259
|
+
- Memory Budget: {{memory_mb}}MB
|
|
260
|
+
- Draw Calls: < {{draw_calls}}
|
|
261
|
+
|
|
262
|
+
**Object Pooling Required:**
|
|
263
|
+
- {{entity_type}}: Pool size {{pool_size}}
|
|
264
|
+
- Recycling strategy: {{strategy}}
|
|
265
|
+
|
|
266
|
+
- id: game-design-context
|
|
267
|
+
title: Game Design Context
|
|
268
|
+
instruction: Reference the specific sections of the GDD that this story implements with Godot-specific details
|
|
269
|
+
template: |
|
|
270
|
+
**GDD Reference:** {{section_name}} ({{page_or_section_number}})
|
|
271
|
+
|
|
272
|
+
**Game Mechanic:** {{mechanic_name}}
|
|
273
|
+
|
|
274
|
+
**Godot Implementation Approach:**
|
|
275
|
+
- Node Architecture: {{node_hierarchy}}
|
|
276
|
+
- Language Choice: {{GDScript|C#}} for {{reason}}
|
|
277
|
+
- Performance Target: 60+ FPS with {{expected_load}}
|
|
278
|
+
|
|
279
|
+
**Player Experience Goal:** {{experience_description}}
|
|
280
|
+
|
|
281
|
+
**Balance Parameters (Resource-based):**
|
|
282
|
+
|
|
283
|
+
- {{parameter_1}}: {{value_or_range}} (stored in .tres)
|
|
284
|
+
- {{parameter_2}}: {{value_or_range}} (exported variable)
|
|
285
|
+
|
|
286
|
+
- id: testing-requirements
|
|
287
|
+
title: Testing Requirements
|
|
288
|
+
instruction: Define specific TDD testing criteria with GUT (GDScript) and GoDotTest (C#) frameworks
|
|
289
|
+
sections:
|
|
290
|
+
- id: unit-tests
|
|
291
|
+
title: Unit Tests (TDD Mandatory)
|
|
292
|
+
template: |
|
|
293
|
+
**GUT Test Files (GDScript):**
|
|
294
|
+
|
|
295
|
+
- `res://tests/unit/test_{{component_name}}.gd`
|
|
296
|
+
- Coverage Target: 80% minimum
|
|
297
|
+
|
|
298
|
+
**GoDotTest Files (C#):**
|
|
299
|
+
|
|
300
|
+
- `res://tests/unit/{{ComponentName}}Tests.cs`
|
|
301
|
+
- No LINQ in test hot paths
|
|
302
|
+
|
|
303
|
+
**Test Scenarios (Write First - Red Phase):**
|
|
304
|
+
|
|
305
|
+
- {{test_scenario_1}} - Must validate 60+ FPS
|
|
306
|
+
- {{test_scenario_2}} - Signal emission verification
|
|
307
|
+
- {{edge_case_test}} - Object pool boundary testing
|
|
308
|
+
- Performance test: Frame time < 16.67ms
|
|
309
|
+
- id: game-testing
|
|
310
|
+
title: Game Testing
|
|
311
|
+
template: |
|
|
312
|
+
**Manual Test Cases (Godot Editor):**
|
|
313
|
+
|
|
314
|
+
1. {{test_case_1_description}}
|
|
315
|
+
|
|
316
|
+
- Expected: {{expected_behavior}}
|
|
317
|
+
- Performance: Must maintain 60+ FPS
|
|
318
|
+
- Profiler Check: Frame time < 16.67ms
|
|
319
|
+
- Language Validation: {{GDScript|C#}} performing as expected
|
|
320
|
+
|
|
321
|
+
2. {{test_case_2_description}}
|
|
322
|
+
- Expected: {{expected_behavior}}
|
|
323
|
+
- Signal Flow: {{signal_verification}}
|
|
324
|
+
- Memory: No leaks, signals cleaned up
|
|
325
|
+
- Object Pools: Verify pooling active
|
|
326
|
+
- id: performance-tests
|
|
327
|
+
title: Performance Tests
|
|
328
|
+
template: |
|
|
329
|
+
**Godot Profiler Metrics (Mandatory):**
|
|
330
|
+
|
|
331
|
+
- Frame rate: 60+ FPS consistently (FAIL if below)
|
|
332
|
+
- Frame time: < 16.67ms average
|
|
333
|
+
- Physics frame: < {{physics_time}}ms
|
|
334
|
+
- Memory usage: < {{memory_limit}}MB
|
|
335
|
+
- Draw calls: < {{draw_call_budget}}
|
|
336
|
+
- Object pools: Active and recycling properly
|
|
337
|
+
- GDScript static typing: Verified (10-20% perf gain)
|
|
338
|
+
- C# optimization: No LINQ, no allocations in hot paths
|
|
339
|
+
- {{feature_specific_performance_metric}}
|
|
340
|
+
|
|
341
|
+
- id: dependencies
|
|
342
|
+
title: Dependencies
|
|
343
|
+
instruction: List any dependencies including Godot-specific requirements
|
|
344
|
+
template: |
|
|
345
|
+
**Story Dependencies:**
|
|
346
|
+
|
|
347
|
+
- {{story_id}}: {{dependency_description}}
|
|
348
|
+
|
|
349
|
+
**Godot System Dependencies:**
|
|
350
|
+
|
|
351
|
+
- Node: {{parent_node}} must exist in scene tree
|
|
352
|
+
- Autoload: {{autoload_singleton}} configured
|
|
353
|
+
- Language: {{prerequisite_language_setup}}
|
|
354
|
+
|
|
355
|
+
**Resource Dependencies:**
|
|
356
|
+
|
|
357
|
+
- Resource Type: {{.tres|.tscn}}
|
|
358
|
+
- Asset: {{asset_description}}
|
|
359
|
+
- Location: `res://{{asset_path}}`
|
|
360
|
+
- Import Settings: {{import_configuration}}
|
|
361
|
+
|
|
362
|
+
- id: definition-of-done
|
|
363
|
+
title: Definition of Done
|
|
364
|
+
instruction: Checklist that must be completed with focus on Godot, TDD, and performance
|
|
365
|
+
type: checklist
|
|
366
|
+
items:
|
|
367
|
+
- All acceptance criteria met
|
|
368
|
+
- TDD followed (tests written first, then implementation)
|
|
369
|
+
- GUT tests passing (GDScript) with 80%+ coverage
|
|
370
|
+
- GoDotTest passing (C#) with 80%+ coverage
|
|
371
|
+
- Performance: 60+ FPS maintained on all platforms
|
|
372
|
+
- Static typing used in all GDScript
|
|
373
|
+
- C# optimized (no LINQ in hot paths)
|
|
374
|
+
- Object pooling active for spawned entities
|
|
375
|
+
- Signals properly connected and cleaned up
|
|
376
|
+
- No GDScript or C# errors/warnings
|
|
377
|
+
- Node hierarchy follows architecture
|
|
378
|
+
- Resources (.tres) configured properly
|
|
379
|
+
- Export templates tested
|
|
380
|
+
- Documentation updated
|
|
381
|
+
- "{{game_specific_dod_item}}"
|
|
382
|
+
|
|
383
|
+
- id: notes
|
|
384
|
+
title: Notes
|
|
385
|
+
instruction: Any additional Godot-specific context, language decisions, or optimization notes
|
|
386
|
+
template: |
|
|
387
|
+
**Godot Implementation Notes:**
|
|
388
|
+
|
|
389
|
+
- Language Choice: {{GDScript|C#}} because {{performance_reason}}
|
|
390
|
+
- Node Architecture: {{node_pattern}} for {{benefit}}
|
|
391
|
+
- Signal Pattern: {{signal_strategy}}
|
|
392
|
+
- {{note_1}}
|
|
393
|
+
|
|
394
|
+
**Performance Decisions:**
|
|
395
|
+
|
|
396
|
+
- Static Typing: {{gdscript_typing_strategy}} for 10-20% gain
|
|
397
|
+
- C# Usage: {{csharp_systems}} for critical performance
|
|
398
|
+
- Object Pooling: {{pooling_strategy}} for spawned entities
|
|
399
|
+
- {{decision_1}}: {{rationale}}
|
|
400
|
+
|
|
401
|
+
**Future Optimizations:**
|
|
402
|
+
|
|
403
|
+
- Consider migrating {{system}} to C# if FPS drops
|
|
404
|
+
- Implement LOD for {{complex_nodes}}
|
|
405
|
+
- Add performance benchmarks to test suite
|
|
406
|
+
- {{future_optimization_1}}
|