bmad-method 6.0.0-alpha.17 → 6.0.0-alpha.19
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/CHANGELOG.md +117 -0
- package/package.json +1 -1
- package/src/modules/bmgd/_module-installer/installer.js +160 -0
- package/src/modules/bmgd/_module-installer/platform-specifics/claude-code.js +23 -0
- package/src/modules/bmgd/_module-installer/platform-specifics/windsurf.js +18 -0
- package/src/modules/bmgd/agents/game-architect.agent.yaml +23 -8
- package/src/modules/bmgd/agents/game-designer.agent.yaml +38 -18
- package/src/modules/bmgd/agents/game-dev.agent.yaml +30 -14
- package/src/modules/bmgd/agents/game-qa.agent.yaml +64 -0
- package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +27 -39
- package/src/modules/bmgd/agents/game-solo-dev.agent.yaml +56 -0
- package/src/modules/bmgd/docs/README.md +180 -0
- package/src/modules/bmgd/docs/agents-guide.md +407 -0
- package/src/modules/bmgd/docs/game-types-guide.md +503 -0
- package/src/modules/bmgd/docs/glossary.md +294 -0
- package/src/modules/bmgd/docs/quick-flow-guide.md +288 -0
- package/src/modules/bmgd/docs/quick-start.md +250 -0
- package/src/modules/bmgd/docs/troubleshooting.md +259 -0
- package/src/modules/bmgd/docs/workflow-overview.jpg +0 -0
- package/src/modules/bmgd/docs/workflows-guide.md +463 -0
- package/src/modules/bmgd/gametest/knowledge/balance-testing.md +220 -0
- package/src/modules/bmgd/gametest/knowledge/certification-testing.md +319 -0
- package/src/modules/bmgd/gametest/knowledge/compatibility-testing.md +228 -0
- package/src/modules/bmgd/gametest/knowledge/godot-testing.md +376 -0
- package/src/modules/bmgd/gametest/knowledge/input-testing.md +315 -0
- package/src/modules/bmgd/gametest/knowledge/localization-testing.md +304 -0
- package/src/modules/bmgd/gametest/knowledge/multiplayer-testing.md +322 -0
- package/src/modules/bmgd/gametest/knowledge/performance-testing.md +204 -0
- package/src/modules/bmgd/gametest/knowledge/playtesting.md +384 -0
- package/src/modules/bmgd/gametest/knowledge/qa-automation.md +190 -0
- package/src/modules/bmgd/gametest/knowledge/regression-testing.md +280 -0
- package/src/modules/bmgd/gametest/knowledge/save-testing.md +280 -0
- package/src/modules/bmgd/gametest/knowledge/smoke-testing.md +404 -0
- package/src/modules/bmgd/gametest/knowledge/test-priorities.md +271 -0
- package/src/modules/bmgd/gametest/knowledge/unity-testing.md +383 -0
- package/src/modules/bmgd/gametest/knowledge/unreal-testing.md +388 -0
- package/src/modules/bmgd/gametest/qa-index.csv +17 -0
- package/src/modules/bmgd/module.yaml +25 -9
- package/src/modules/bmgd/teams/default-party.csv +2 -0
- package/src/modules/bmgd/teams/team-gamedev.yaml +12 -1
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-01-init.md +164 -0
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-02-context.md +210 -0
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-03-ideation.md +289 -0
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-04-complete.md +275 -0
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.md +49 -0
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.yaml +29 -8
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-01-init.md +223 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-01b-continue.md +151 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-02-vision.md +218 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-03-market.md +218 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-04-fundamentals.md +231 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-05-scope.md +242 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-06-references.md +224 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-07-content.md +282 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-08-complete.md +296 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.md +62 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.yaml +40 -9
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-01-init.md +248 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-01b-continue.md +173 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-02-context.md +332 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-03-platforms.md +245 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-04-vision.md +229 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-05-core-gameplay.md +258 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-06-mechanics.md +249 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-07-game-type.md +266 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-08-progression.md +272 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-09-levels.md +264 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-10-art-audio.md +255 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-11-technical.md +275 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-12-epics.md +284 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-13-metrics.md +250 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-14-complete.md +335 -0
- package/src/modules/bmgd/workflows/2-design/gdd/workflow.md +61 -0
- package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +27 -7
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-01-init.md +228 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-01b-continue.md +163 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-02-foundation.md +262 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-03-story.md +238 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-04-characters.md +297 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-05-world.md +262 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-06-dialogue.md +250 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-07-environmental.md +244 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-08-delivery.md +264 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-09-integration.md +254 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-10-production.md +262 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-11-complete.md +331 -0
- package/src/modules/bmgd/workflows/2-design/narrative/workflow.md +57 -0
- package/src/modules/bmgd/workflows/2-design/narrative/workflow.yaml +53 -8
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-01-init.md +223 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-01b-continue.md +153 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-02-context.md +262 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-03-starter.md +290 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-04-decisions.md +300 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-05-crosscutting.md +319 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-06-structure.md +304 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-07-patterns.md +349 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-08-validation.md +293 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-09-complete.md +302 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.md +55 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +50 -21
- package/src/modules/bmgd/workflows/4-production/code-review/checklist.md +23 -0
- package/src/modules/bmgd/workflows/4-production/code-review/instructions.xml +225 -0
- package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +18 -15
- package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +1 -1
- package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +1 -1
- package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +11 -6
- package/src/modules/bmgd/workflows/4-production/create-story/checklist.md +332 -214
- package/src/modules/bmgd/workflows/4-production/create-story/instructions.xml +298 -0
- package/src/modules/bmgd/workflows/4-production/create-story/template.md +3 -5
- package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +12 -7
- package/src/modules/bmgd/workflows/4-production/dev-story/checklist.md +65 -23
- package/src/modules/bmgd/workflows/4-production/dev-story/instructions.xml +409 -0
- package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +13 -3
- package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +4 -4
- package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +12 -7
- package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +32 -41
- package/src/modules/bmgd/workflows/4-production/sprint-planning/sprint-status-template.yaml +13 -13
- package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +6 -1
- package/src/modules/bmgd/workflows/4-production/sprint-status/instructions.md +229 -0
- package/src/modules/bmgd/workflows/4-production/sprint-status/workflow.yaml +35 -0
- package/src/modules/bmgd/workflows/bmgd-quick-flow/create-tech-spec/instructions.md +140 -0
- package/src/modules/bmgd/workflows/bmgd-quick-flow/create-tech-spec/workflow.yaml +27 -0
- package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/checklist.md +37 -0
- package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/instructions.md +220 -0
- package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/workflow.yaml +45 -0
- package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/checklist.md +26 -0
- package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/instructions.md +156 -0
- package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/workflow.yaml +36 -0
- package/src/modules/bmgd/workflows/gametest/automate/checklist.md +93 -0
- package/src/modules/bmgd/workflows/gametest/automate/instructions.md +317 -0
- package/src/modules/bmgd/workflows/gametest/automate/workflow.yaml +50 -0
- package/src/modules/bmgd/workflows/gametest/performance/checklist.md +96 -0
- package/src/modules/bmgd/workflows/gametest/performance/instructions.md +323 -0
- package/src/modules/bmgd/workflows/gametest/performance/performance-template.md +256 -0
- package/src/modules/bmgd/workflows/gametest/performance/workflow.yaml +48 -0
- package/src/modules/bmgd/workflows/gametest/playtest-plan/checklist.md +93 -0
- package/src/modules/bmgd/workflows/gametest/playtest-plan/instructions.md +297 -0
- package/src/modules/bmgd/workflows/gametest/playtest-plan/playtest-template.md +208 -0
- package/src/modules/bmgd/workflows/gametest/playtest-plan/workflow.yaml +59 -0
- package/src/modules/bmgd/workflows/gametest/test-design/checklist.md +98 -0
- package/src/modules/bmgd/workflows/gametest/test-design/instructions.md +280 -0
- package/src/modules/bmgd/workflows/gametest/test-design/test-design-template.md +205 -0
- package/src/modules/bmgd/workflows/gametest/test-design/workflow.yaml +47 -0
- package/src/modules/bmgd/workflows/gametest/test-framework/checklist.md +103 -0
- package/src/modules/bmgd/workflows/gametest/test-framework/instructions.md +348 -0
- package/src/modules/bmgd/workflows/gametest/test-framework/workflow.yaml +48 -0
- package/src/modules/bmgd/workflows/gametest/test-review/checklist.md +87 -0
- package/src/modules/bmgd/workflows/gametest/test-review/instructions.md +272 -0
- package/src/modules/bmgd/workflows/gametest/test-review/test-review-template.md +203 -0
- package/src/modules/bmgd/workflows/gametest/test-review/workflow.yaml +48 -0
- package/src/modules/bmgd/workflows/workflow-status/init/instructions.md +299 -0
- package/src/modules/bmgd/workflows/workflow-status/init/workflow.yaml +29 -0
- package/src/modules/bmgd/workflows/workflow-status/instructions.md +395 -0
- package/src/modules/bmgd/workflows/workflow-status/paths/gamedev-brownfield.yaml +65 -0
- package/src/modules/bmgd/workflows/workflow-status/paths/gamedev-greenfield.yaml +71 -0
- package/src/modules/bmgd/workflows/workflow-status/paths/quickflow-brownfield.yaml +29 -0
- package/src/modules/bmgd/workflows/workflow-status/paths/quickflow-greenfield.yaml +39 -0
- package/src/modules/bmgd/workflows/workflow-status/project-levels.yaml +63 -0
- package/src/modules/bmgd/workflows/workflow-status/workflow-status-template.yaml +24 -0
- package/src/modules/bmgd/workflows/workflow-status/workflow.yaml +30 -0
- package/tools/cli/commands/install.js +9 -0
- package/tools/cli/installers/lib/core/installer.js +140 -592
- package/tools/cli/installers/lib/modules/manager.js +15 -3
- package/tools/cli/lib/agent/compiler.js +99 -0
- package/tools/cli/lib/ui.js +78 -27
- package/src/modules/bmgd/workflows/2-design/gdd/instructions-gdd.md +0 -502
- package/src/modules/bmgd/workflows/4-production/code-review/instructions.md +0 -398
- package/src/modules/bmgd/workflows/4-production/create-story/instructions.md +0 -256
- package/src/modules/bmgd/workflows/4-production/dev-story/instructions.md +0 -267
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/checklist.md +0 -17
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/instructions.md +0 -164
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/template.md +0 -76
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/workflow.yaml +0 -58
- package/src/modules/bmgd/workflows/4-production/story-context/checklist.md +0 -16
- package/src/modules/bmgd/workflows/4-production/story-context/context-template.xml +0 -34
- package/src/modules/bmgd/workflows/4-production/story-context/instructions.md +0 -209
- package/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml +0 -63
- package/src/modules/bmgd/workflows/4-production/story-done/instructions.md +0 -111
- package/src/modules/bmgd/workflows/4-production/story-done/workflow.yaml +0 -28
- package/src/modules/bmgd/workflows/4-production/story-ready/instructions.md +0 -117
- package/src/modules/bmgd/workflows/4-production/story-ready/workflow.yaml +0 -25
- /package/src/modules/bmgd/workflows/1-preproduction/game-brief/{template.md → templates/game-brief-template.md} +0 -0
- /package/src/modules/bmgd/workflows/2-design/gdd/{gdd-template.md → templates/gdd-template.md} +0 -0
- /package/src/modules/bmgd/workflows/2-design/narrative/{narrative-template.md → templates/narrative-template.md} +0 -0
- /package/src/modules/bmgd/workflows/3-technical/game-architecture/{architecture-template.md → templates/architecture-template.md} +0 -0
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
<!-- Powered by BMAD-CORE™ -->
|
|
2
|
+
|
|
3
|
+
# Performance Testing Strategy
|
|
4
|
+
|
|
5
|
+
**Workflow ID**: `_bmad/bmgd/gametest/performance`
|
|
6
|
+
**Version**: 1.0 (BMad v6)
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
Design a comprehensive performance testing strategy covering frame rate, memory usage, loading times, and platform-specific requirements. Performance directly impacts player experience.
|
|
13
|
+
|
|
14
|
+
**Knowledge Base Reference**: `knowledge/performance-testing.md`
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Preflight Requirements
|
|
19
|
+
|
|
20
|
+
- ✅ Target platforms identified
|
|
21
|
+
- ✅ Performance requirements known (target FPS, memory limits)
|
|
22
|
+
- ✅ Representative content available for testing
|
|
23
|
+
- ✅ Profiling tools accessible
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Step 1: Define Performance Targets
|
|
28
|
+
|
|
29
|
+
### Frame Rate Targets
|
|
30
|
+
|
|
31
|
+
| Platform | Target FPS | Minimum FPS | Notes |
|
|
32
|
+
| ----------------- | ---------- | ----------- | ------------------ |
|
|
33
|
+
| PC (High) | 60+ | 30 | Uncapped option |
|
|
34
|
+
| PC (Low) | 30 | 30 | Scalable settings |
|
|
35
|
+
| PS5/Xbox X | 60 | 60 | Performance mode |
|
|
36
|
+
| PS4/Xbox One | 30 | 30 | Locked |
|
|
37
|
+
| Switch Docked | 30 | 30 | Stable |
|
|
38
|
+
| Switch Handheld | 30 | 25 | Power saving |
|
|
39
|
+
| Mobile (High) | 60 | 30 | Device dependent |
|
|
40
|
+
| Mobile (Standard) | 30 | 30 | Thermal throttling |
|
|
41
|
+
|
|
42
|
+
### Memory Budgets
|
|
43
|
+
|
|
44
|
+
| Platform | Total RAM | Game Budget | Notes |
|
|
45
|
+
| ------------- | --------- | ----------- | ------------------- |
|
|
46
|
+
| PC (Min spec) | 8 GB | 4 GB | Leave room for OS |
|
|
47
|
+
| PS5 | 16 GB | 12 GB | Unified memory |
|
|
48
|
+
| Xbox Series X | 16 GB | 13 GB | With Smart Delivery |
|
|
49
|
+
| Switch | 4 GB | 2.5 GB | Tight constraints |
|
|
50
|
+
| Mobile | 4-6 GB | 1.5-2 GB | Background apps |
|
|
51
|
+
|
|
52
|
+
### Loading Time Targets
|
|
53
|
+
|
|
54
|
+
| Scenario | Target | Maximum |
|
|
55
|
+
| ------------ | ------ | ------- |
|
|
56
|
+
| Initial boot | < 10s | 30s |
|
|
57
|
+
| Level load | < 15s | 30s |
|
|
58
|
+
| Fast travel | < 5s | 10s |
|
|
59
|
+
| Respawn | < 3s | 5s |
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Step 2: Identify Test Scenarios
|
|
64
|
+
|
|
65
|
+
### Stress Test Scenarios
|
|
66
|
+
|
|
67
|
+
Create scenarios that push performance limits:
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
SCENARIO: Maximum Entity Count
|
|
71
|
+
GIVEN game level with normal enemy spawn
|
|
72
|
+
WHEN enemy count reaches 50+
|
|
73
|
+
THEN frame rate stays above minimum
|
|
74
|
+
AND no visual artifacts
|
|
75
|
+
AND audio doesn't stutter
|
|
76
|
+
|
|
77
|
+
SCENARIO: Particle System Stress
|
|
78
|
+
GIVEN combat with multiple effects
|
|
79
|
+
WHEN 20+ particle systems active
|
|
80
|
+
THEN frame rate degradation < 20%
|
|
81
|
+
AND memory allocation stable
|
|
82
|
+
|
|
83
|
+
SCENARIO: Draw Call Stress
|
|
84
|
+
GIVEN level with maximum visible geometry
|
|
85
|
+
WHEN camera shows worst-case view
|
|
86
|
+
THEN frame rate stays above minimum
|
|
87
|
+
AND no hitching or stuttering
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Memory Test Scenarios
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
SCENARIO: Extended Play Session
|
|
94
|
+
GIVEN game running for 4+ hours
|
|
95
|
+
WHEN normal gameplay occurs
|
|
96
|
+
THEN memory usage remains stable
|
|
97
|
+
AND no memory leaks detected
|
|
98
|
+
AND no crash from fragmentation
|
|
99
|
+
|
|
100
|
+
SCENARIO: Level Transition
|
|
101
|
+
GIVEN player completes level
|
|
102
|
+
WHEN transitioning to new level
|
|
103
|
+
THEN previous level fully unloaded
|
|
104
|
+
AND memory baseline returns
|
|
105
|
+
AND no cumulative growth
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Loading Test Scenarios
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
SCENARIO: Cold Boot
|
|
112
|
+
GIVEN game not in memory
|
|
113
|
+
WHEN launching game
|
|
114
|
+
THEN reaches interactive state in < target
|
|
115
|
+
AND loading feedback shown
|
|
116
|
+
AND no apparent hang
|
|
117
|
+
|
|
118
|
+
SCENARIO: Save/Load Performance
|
|
119
|
+
GIVEN large save file (max progress)
|
|
120
|
+
WHEN loading save
|
|
121
|
+
THEN completes in < target
|
|
122
|
+
AND no corruption
|
|
123
|
+
AND gameplay resumes smoothly
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Step 3: Define Test Methodology
|
|
129
|
+
|
|
130
|
+
### Automated Performance Tests
|
|
131
|
+
|
|
132
|
+
**Unity Profiler Integration**:
|
|
133
|
+
|
|
134
|
+
```csharp
|
|
135
|
+
[UnityTest]
|
|
136
|
+
public IEnumerator Performance_CombatScene_MaintainsFPS()
|
|
137
|
+
{
|
|
138
|
+
using (Measure.ProfilerMarkers(new[] { "Main Thread" }))
|
|
139
|
+
{
|
|
140
|
+
SceneManager.LoadScene("CombatStressTest");
|
|
141
|
+
yield return new WaitForSeconds(30f);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
var metrics = Measure.Custom(new SampleGroupDefinition("FPS"));
|
|
145
|
+
Assert.Greater(metrics.Median, 30, "FPS should stay above 30");
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**Unreal Automation**:
|
|
150
|
+
|
|
151
|
+
```cpp
|
|
152
|
+
bool FPerformanceTest::RunTest(const FString& Parameters)
|
|
153
|
+
{
|
|
154
|
+
// Capture baseline
|
|
155
|
+
float StartTime = FPlatformTime::Seconds();
|
|
156
|
+
|
|
157
|
+
// Run stress scenario
|
|
158
|
+
for (int i = 0; i < 100; i++)
|
|
159
|
+
{
|
|
160
|
+
GetWorld()->SpawnActor<AStressTestActor>();
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Measure frame time
|
|
164
|
+
float FrameTime = FApp::GetDeltaTime();
|
|
165
|
+
TestTrue("Frame time under budget", FrameTime < 0.033f); // 30 FPS
|
|
166
|
+
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**Godot Benchmark**:
|
|
172
|
+
|
|
173
|
+
```gdscript
|
|
174
|
+
func test_performance_entity_stress():
|
|
175
|
+
var frame_times = []
|
|
176
|
+
|
|
177
|
+
# Spawn stress load
|
|
178
|
+
for i in range(100):
|
|
179
|
+
var entity = stress_entity.instantiate()
|
|
180
|
+
add_child(entity)
|
|
181
|
+
|
|
182
|
+
# Collect frame times
|
|
183
|
+
for i in range(300): # 5 seconds at 60fps
|
|
184
|
+
await get_tree().process_frame
|
|
185
|
+
frame_times.append(Performance.get_monitor(Performance.TIME_PROCESS))
|
|
186
|
+
|
|
187
|
+
# Analyze
|
|
188
|
+
var avg_frame_time = frame_times.reduce(func(a, b): return a + b) / frame_times.size()
|
|
189
|
+
assert_lt(avg_frame_time, 0.033, "Average frame time under 33ms (30 FPS)")
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Manual Profiling Checklist
|
|
193
|
+
|
|
194
|
+
1. **CPU Profiling**
|
|
195
|
+
- [ ] Identify hotspots
|
|
196
|
+
- [ ] Check GC frequency
|
|
197
|
+
- [ ] Verify multithreading usage
|
|
198
|
+
|
|
199
|
+
2. **GPU Profiling**
|
|
200
|
+
- [ ] Draw call count
|
|
201
|
+
- [ ] Overdraw analysis
|
|
202
|
+
- [ ] Shader complexity
|
|
203
|
+
|
|
204
|
+
3. **Memory Profiling**
|
|
205
|
+
- [ ] Heap allocation patterns
|
|
206
|
+
- [ ] Asset memory usage
|
|
207
|
+
- [ ] Leak detection over time
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## Step 4: Create Benchmark Suite
|
|
212
|
+
|
|
213
|
+
### Benchmark Levels
|
|
214
|
+
|
|
215
|
+
Create dedicated benchmark scenarios:
|
|
216
|
+
|
|
217
|
+
| Benchmark | Purpose | Duration |
|
|
218
|
+
| --------------- | ------------------------ | -------- |
|
|
219
|
+
| Combat Stress | Max entities, effects | 60s |
|
|
220
|
+
| Open World | Draw distance, streaming | 120s |
|
|
221
|
+
| Menu Navigation | UI performance | 30s |
|
|
222
|
+
| Save/Load | Persistence performance | 30s |
|
|
223
|
+
|
|
224
|
+
### Baseline Capture
|
|
225
|
+
|
|
226
|
+
1. Run benchmarks on reference hardware
|
|
227
|
+
2. Record baseline metrics
|
|
228
|
+
3. Set regression thresholds (e.g., 10% degradation = fail)
|
|
229
|
+
4. Integrate into CI pipeline
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## Step 5: Platform-Specific Testing
|
|
234
|
+
|
|
235
|
+
### PC Testing
|
|
236
|
+
|
|
237
|
+
- Test across min/recommended specs
|
|
238
|
+
- Verify quality settings work
|
|
239
|
+
- Check VRAM usage at each tier
|
|
240
|
+
- Test at multiple resolutions
|
|
241
|
+
|
|
242
|
+
### Console Testing
|
|
243
|
+
|
|
244
|
+
- Test in both performance/quality modes
|
|
245
|
+
- Verify thermal throttling behavior
|
|
246
|
+
- Check suspend/resume impact
|
|
247
|
+
- Test with varying storage speeds
|
|
248
|
+
|
|
249
|
+
### Mobile Testing
|
|
250
|
+
|
|
251
|
+
- Test on low/mid/high tier devices
|
|
252
|
+
- Monitor thermal throttling
|
|
253
|
+
- Check battery impact
|
|
254
|
+
- Test with background apps
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Step 6: Generate Performance Test Plan
|
|
259
|
+
|
|
260
|
+
### Document Structure
|
|
261
|
+
|
|
262
|
+
```markdown
|
|
263
|
+
# Performance Test Plan: {Project Name}
|
|
264
|
+
|
|
265
|
+
## Performance Targets
|
|
266
|
+
|
|
267
|
+
[Tables for FPS, memory, loading times]
|
|
268
|
+
|
|
269
|
+
## Test Scenarios
|
|
270
|
+
|
|
271
|
+
### Frame Rate Tests
|
|
272
|
+
|
|
273
|
+
[Stress test scenarios]
|
|
274
|
+
|
|
275
|
+
### Memory Tests
|
|
276
|
+
|
|
277
|
+
[Extended play, leak detection scenarios]
|
|
278
|
+
|
|
279
|
+
### Loading Tests
|
|
280
|
+
|
|
281
|
+
[Boot, level load, save/load scenarios]
|
|
282
|
+
|
|
283
|
+
## Methodology
|
|
284
|
+
|
|
285
|
+
### Automated Tests
|
|
286
|
+
|
|
287
|
+
[Code examples, CI integration]
|
|
288
|
+
|
|
289
|
+
### Manual Profiling
|
|
290
|
+
|
|
291
|
+
[Checklist, tools to use]
|
|
292
|
+
|
|
293
|
+
## Benchmark Suite
|
|
294
|
+
|
|
295
|
+
[Benchmark definitions, baseline metrics]
|
|
296
|
+
|
|
297
|
+
## Platform Matrix
|
|
298
|
+
|
|
299
|
+
[Platform-specific requirements and tests]
|
|
300
|
+
|
|
301
|
+
## Regression Criteria
|
|
302
|
+
|
|
303
|
+
[What constitutes a performance regression]
|
|
304
|
+
|
|
305
|
+
## Schedule
|
|
306
|
+
|
|
307
|
+
[When performance tests run, who reviews]
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
## Deliverables
|
|
313
|
+
|
|
314
|
+
1. **Performance Test Plan** - Comprehensive strategy document
|
|
315
|
+
2. **Benchmark Scenarios** - Reproducible test levels
|
|
316
|
+
3. **Baseline Metrics** - Reference performance data
|
|
317
|
+
4. **Automated Tests** - CI-integrated performance tests
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
## Validation
|
|
322
|
+
|
|
323
|
+
Refer to `checklist.md` for validation criteria.
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# Performance Test Plan: {PROJECT_NAME}
|
|
2
|
+
|
|
3
|
+
**Version**: {VERSION}
|
|
4
|
+
**Created**: {DATE}
|
|
5
|
+
**Author**: {AUTHOR}
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
### Performance Philosophy
|
|
12
|
+
|
|
13
|
+
{High-level approach to performance for this project}
|
|
14
|
+
|
|
15
|
+
### Target Experience
|
|
16
|
+
|
|
17
|
+
- Primary target: {platform, e.g., "PS5 at 60 FPS"}
|
|
18
|
+
- Minimum viable: {platform, e.g., "PS4 at 30 FPS"}
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Performance Targets
|
|
23
|
+
|
|
24
|
+
### Frame Rate
|
|
25
|
+
|
|
26
|
+
| Platform | Target FPS | Minimum FPS | Mode |
|
|
27
|
+
| ------------- | ---------- | ----------- | ----------- |
|
|
28
|
+
| PC (High) | | | |
|
|
29
|
+
| PC (Low) | | | |
|
|
30
|
+
| PS5 | | | Performance |
|
|
31
|
+
| PS5 | | | Quality |
|
|
32
|
+
| Xbox Series X | | | |
|
|
33
|
+
| Switch | | | |
|
|
34
|
+
| Mobile | | | |
|
|
35
|
+
|
|
36
|
+
### Memory Budget
|
|
37
|
+
|
|
38
|
+
| Platform | Total RAM | Game Budget | Reserve |
|
|
39
|
+
| ------------- | --------- | ----------- | ------- |
|
|
40
|
+
| PC (Min) | | | |
|
|
41
|
+
| PS5 | | | |
|
|
42
|
+
| Xbox Series X | | | |
|
|
43
|
+
| Switch | | | |
|
|
44
|
+
| Mobile | | | |
|
|
45
|
+
|
|
46
|
+
### Loading Times
|
|
47
|
+
|
|
48
|
+
| Scenario | Target | Maximum | Notes |
|
|
49
|
+
| ------------ | ------ | ------- | ----- |
|
|
50
|
+
| Initial boot | | | |
|
|
51
|
+
| Level load | | | |
|
|
52
|
+
| Fast travel | | | |
|
|
53
|
+
| Respawn | | | |
|
|
54
|
+
| Save/Load | | | |
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Test Scenarios
|
|
59
|
+
|
|
60
|
+
### Frame Rate Stress Tests
|
|
61
|
+
|
|
62
|
+
#### Scenario: {Name}
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
GIVEN {setup conditions}
|
|
66
|
+
WHEN {stress conditions applied}
|
|
67
|
+
THEN frame rate >= {minimum}
|
|
68
|
+
AND frame time variance < {threshold}
|
|
69
|
+
PLATFORM: {target platforms}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
{Repeat for each scenario}
|
|
73
|
+
|
|
74
|
+
### Memory Tests
|
|
75
|
+
|
|
76
|
+
#### Scenario: Extended Play Session
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
GIVEN game running for 4+ hours
|
|
80
|
+
WHEN normal gameplay patterns occur
|
|
81
|
+
THEN memory usage stays within budget
|
|
82
|
+
AND no detected memory leaks
|
|
83
|
+
AND GC pauses < 16ms
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
#### Scenario: Level Transition
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
GIVEN player completes level
|
|
90
|
+
WHEN loading next level
|
|
91
|
+
THEN previous level memory freed
|
|
92
|
+
AND memory returns to baseline (+/- 5%)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Loading Time Tests
|
|
96
|
+
|
|
97
|
+
#### Scenario: Cold Boot
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
GIVEN game not in memory
|
|
101
|
+
WHEN launching from platform UI
|
|
102
|
+
THEN interactive menu in < {target}s
|
|
103
|
+
AND loading progress visible
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Benchmark Suite
|
|
109
|
+
|
|
110
|
+
### Benchmark Levels
|
|
111
|
+
|
|
112
|
+
| Name | Purpose | Duration | Key Metrics |
|
|
113
|
+
| ------------- | --------- | --------- | ------------------ |
|
|
114
|
+
| {Benchmark 1} | {purpose} | {seconds} | FPS, frame time |
|
|
115
|
+
| {Benchmark 2} | {purpose} | {seconds} | Draw calls, memory |
|
|
116
|
+
| {Benchmark 3} | {purpose} | {seconds} | Load time |
|
|
117
|
+
|
|
118
|
+
### Baseline Metrics
|
|
119
|
+
|
|
120
|
+
| Benchmark | Platform | FPS (Avg) | FPS (1%) | Memory | Date |
|
|
121
|
+
| --------- | -------- | --------- | -------- | ------ | ---- |
|
|
122
|
+
| | | | | | |
|
|
123
|
+
|
|
124
|
+
### Regression Criteria
|
|
125
|
+
|
|
126
|
+
| Metric | Warning | Failure |
|
|
127
|
+
| ----------- | ------- | ------- |
|
|
128
|
+
| FPS Average | -5% | -10% |
|
|
129
|
+
| FPS 1% Low | -10% | -20% |
|
|
130
|
+
| Memory | +5% | +10% |
|
|
131
|
+
| Load Time | +10% | +25% |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Profiling Methodology
|
|
136
|
+
|
|
137
|
+
### Tools
|
|
138
|
+
|
|
139
|
+
| Platform | CPU Profiler | GPU Profiler | Memory |
|
|
140
|
+
| -------- | --------------- | ----------------- | --------------- |
|
|
141
|
+
| Unity | Unity Profiler | Frame Debugger | Memory Profiler |
|
|
142
|
+
| Unreal | Unreal Insights | RenderDoc | Memreport |
|
|
143
|
+
| Godot | Profiler | Shader debugger | Monitors |
|
|
144
|
+
| PC | PIX, vtune | RenderDoc, Nsight | RAMMap |
|
|
145
|
+
| PS5 | Razor | Razor GPU | - |
|
|
146
|
+
| Xbox | PIX | PIX | - |
|
|
147
|
+
|
|
148
|
+
### Profiling Checklist
|
|
149
|
+
|
|
150
|
+
#### CPU
|
|
151
|
+
|
|
152
|
+
- [ ] Main thread frame time
|
|
153
|
+
- [ ] Worker thread utilization
|
|
154
|
+
- [ ] GC frequency and duration
|
|
155
|
+
- [ ] Hotspot identification
|
|
156
|
+
|
|
157
|
+
#### GPU
|
|
158
|
+
|
|
159
|
+
- [ ] Draw call count
|
|
160
|
+
- [ ] Overdraw ratio
|
|
161
|
+
- [ ] Shader complexity
|
|
162
|
+
- [ ] Memory bandwidth
|
|
163
|
+
|
|
164
|
+
#### Memory
|
|
165
|
+
|
|
166
|
+
- [ ] Peak allocation
|
|
167
|
+
- [ ] Leak detection
|
|
168
|
+
- [ ] Fragmentation
|
|
169
|
+
- [ ] Asset memory breakdown
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Automated Tests
|
|
174
|
+
|
|
175
|
+
### CI Integration
|
|
176
|
+
|
|
177
|
+
```yaml
|
|
178
|
+
# Example CI configuration
|
|
179
|
+
performance-tests:
|
|
180
|
+
stage: test
|
|
181
|
+
script:
|
|
182
|
+
- ./run-benchmarks.sh
|
|
183
|
+
- ./check-regression.sh
|
|
184
|
+
artifacts:
|
|
185
|
+
reports:
|
|
186
|
+
performance: benchmark-results.json
|
|
187
|
+
rules:
|
|
188
|
+
- if: $CI_PIPELINE_SOURCE == "schedule"
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Automated Test Examples
|
|
192
|
+
|
|
193
|
+
{Engine-appropriate code examples}
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Platform-Specific Testing
|
|
198
|
+
|
|
199
|
+
### PC
|
|
200
|
+
|
|
201
|
+
- [ ] Test on minimum spec hardware
|
|
202
|
+
- [ ] Test on recommended spec hardware
|
|
203
|
+
- [ ] Verify quality presets work
|
|
204
|
+
- [ ] Check VRAM usage at each tier
|
|
205
|
+
- [ ] Test at 1080p, 1440p, 4K
|
|
206
|
+
|
|
207
|
+
### Console
|
|
208
|
+
|
|
209
|
+
- [ ] Test performance mode
|
|
210
|
+
- [ ] Test quality mode
|
|
211
|
+
- [ ] Check thermal throttling behavior
|
|
212
|
+
- [ ] Verify suspend/resume
|
|
213
|
+
- [ ] Test with HDD vs SSD (if applicable)
|
|
214
|
+
|
|
215
|
+
### Mobile
|
|
216
|
+
|
|
217
|
+
- [ ] Test on low-tier device
|
|
218
|
+
- [ ] Test on mid-tier device
|
|
219
|
+
- [ ] Test on high-tier device
|
|
220
|
+
- [ ] Monitor thermal throttling
|
|
221
|
+
- [ ] Check battery drain
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Schedule
|
|
226
|
+
|
|
227
|
+
| Activity | Frequency | Owner |
|
|
228
|
+
| ------------------ | --------- | --------- |
|
|
229
|
+
| Benchmark run | Daily | CI |
|
|
230
|
+
| Regression review | Weekly | QA Lead |
|
|
231
|
+
| Deep profiling | Milestone | Tech Lead |
|
|
232
|
+
| Platform soak test | Monthly | QA |
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## Reporting
|
|
237
|
+
|
|
238
|
+
### Weekly Performance Report
|
|
239
|
+
|
|
240
|
+
- Benchmark trends
|
|
241
|
+
- Regression incidents
|
|
242
|
+
- Optimization progress
|
|
243
|
+
- Risk areas
|
|
244
|
+
|
|
245
|
+
### Release Criteria
|
|
246
|
+
|
|
247
|
+
- [ ] All platforms meet minimum FPS
|
|
248
|
+
- [ ] No memory leaks in 4-hour test
|
|
249
|
+
- [ ] Load times within targets
|
|
250
|
+
- [ ] No regression > failure threshold
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## Notes
|
|
255
|
+
|
|
256
|
+
{Additional considerations, known issues, platform quirks}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Game QA workflow: performance
|
|
2
|
+
name: gametest-performance
|
|
3
|
+
description: "Design performance testing strategy for frame rate, memory, and loading times"
|
|
4
|
+
author: "BMad"
|
|
5
|
+
|
|
6
|
+
# Critical variables from config
|
|
7
|
+
config_source: "{project-root}/_bmad/bmgd/config.yaml"
|
|
8
|
+
output_folder: "{config_source}:output_folder"
|
|
9
|
+
user_name: "{config_source}:user_name"
|
|
10
|
+
communication_language: "{config_source}:communication_language"
|
|
11
|
+
document_output_language: "{config_source}:document_output_language"
|
|
12
|
+
date: system-generated
|
|
13
|
+
|
|
14
|
+
# Workflow components
|
|
15
|
+
installed_path: "{project-root}/_bmad/bmgd/workflows/gametest/performance"
|
|
16
|
+
instructions: "{installed_path}/instructions.md"
|
|
17
|
+
validation: "{installed_path}/checklist.md"
|
|
18
|
+
template: "{installed_path}/performance-template.md"
|
|
19
|
+
|
|
20
|
+
# Variables and inputs
|
|
21
|
+
variables:
|
|
22
|
+
target_fps: 60
|
|
23
|
+
target_platform: "auto" # auto, pc, console, mobile
|
|
24
|
+
game_engine: "auto" # auto, unity, unreal, godot
|
|
25
|
+
|
|
26
|
+
# Output configuration
|
|
27
|
+
default_output_file: "{output_folder}/performance-test-plan.md"
|
|
28
|
+
|
|
29
|
+
# Required tools
|
|
30
|
+
required_tools:
|
|
31
|
+
- read_file
|
|
32
|
+
- write_file
|
|
33
|
+
- list_files
|
|
34
|
+
- search_repo
|
|
35
|
+
|
|
36
|
+
tags:
|
|
37
|
+
- qa
|
|
38
|
+
- performance
|
|
39
|
+
- profiling
|
|
40
|
+
- optimization
|
|
41
|
+
- benchmarks
|
|
42
|
+
|
|
43
|
+
execution_hints:
|
|
44
|
+
interactive: false
|
|
45
|
+
autonomous: true
|
|
46
|
+
iterative: true
|
|
47
|
+
|
|
48
|
+
web_bundle: false
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Playtest Planning - Validation Checklist
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
- [ ] Playable build available
|
|
8
|
+
- [ ] Build is stable (no crash blockers)
|
|
9
|
+
- [ ] Test objectives defined
|
|
10
|
+
- [ ] Participant criteria established
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Planning
|
|
15
|
+
|
|
16
|
+
- [ ] Playtest type selected (internal/external/focused)
|
|
17
|
+
- [ ] Session duration appropriate for objectives
|
|
18
|
+
- [ ] Participant count sufficient (5+ for patterns)
|
|
19
|
+
- [ ] Team roles assigned
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Session Structure
|
|
24
|
+
|
|
25
|
+
### Pre-Session
|
|
26
|
+
|
|
27
|
+
- [ ] Welcome script prepared
|
|
28
|
+
- [ ] Consent form ready (if recording)
|
|
29
|
+
- [ ] Setup instructions documented
|
|
30
|
+
- [ ] Accessibility accommodations considered
|
|
31
|
+
|
|
32
|
+
### Gameplay Session
|
|
33
|
+
|
|
34
|
+
- [ ] Focus areas identified
|
|
35
|
+
- [ ] Observation guide created
|
|
36
|
+
- [ ] Intervention rules defined
|
|
37
|
+
- [ ] Note-taking template ready
|
|
38
|
+
|
|
39
|
+
### Post-Session
|
|
40
|
+
|
|
41
|
+
- [ ] Interview questions prepared
|
|
42
|
+
- [ ] Questions are open-ended
|
|
43
|
+
- [ ] Time allocated for open feedback
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Observation Guide
|
|
48
|
+
|
|
49
|
+
- [ ] Key signals identified (confusion, frustration, engagement)
|
|
50
|
+
- [ ] Recording format defined
|
|
51
|
+
- [ ] Quantitative metrics listed
|
|
52
|
+
- [ ] All observers aligned on what to watch
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Documentation
|
|
57
|
+
|
|
58
|
+
- [ ] Playtest plan document complete
|
|
59
|
+
- [ ] Observation template attached
|
|
60
|
+
- [ ] Note-taking template included
|
|
61
|
+
- [ ] Report template prepared
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Logistics
|
|
66
|
+
|
|
67
|
+
- [ ] Build deployed and accessible
|
|
68
|
+
- [ ] Hardware ready and tested
|
|
69
|
+
- [ ] Recording equipment checked (if applicable)
|
|
70
|
+
- [ ] Quiet space secured
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Post-Playtest
|
|
75
|
+
|
|
76
|
+
- [ ] Debrief meeting scheduled
|
|
77
|
+
- [ ] Report deadline set
|
|
78
|
+
- [ ] Action item review planned
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Completion Criteria
|
|
83
|
+
|
|
84
|
+
- [ ] All team members have plan document
|
|
85
|
+
- [ ] Observers understand focus areas
|
|
86
|
+
- [ ] Templates are ready to use
|
|
87
|
+
- [ ] Build is stable for session
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
**Completed by:** {name}
|
|
92
|
+
**Date:** {date}
|
|
93
|
+
**Session Date:** {playtest_date}
|