bmad-method 6.0.0-alpha.17 → 6.0.0-alpha.18

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.
Files changed (186) hide show
  1. package/CHANGELOG.md +97 -0
  2. package/package.json +1 -1
  3. package/src/modules/bmgd/_module-installer/installer.js +160 -0
  4. package/src/modules/bmgd/_module-installer/platform-specifics/claude-code.js +23 -0
  5. package/src/modules/bmgd/_module-installer/platform-specifics/windsurf.js +18 -0
  6. package/src/modules/bmgd/agents/game-architect.agent.yaml +23 -8
  7. package/src/modules/bmgd/agents/game-designer.agent.yaml +38 -18
  8. package/src/modules/bmgd/agents/game-dev.agent.yaml +30 -14
  9. package/src/modules/bmgd/agents/game-qa.agent.yaml +64 -0
  10. package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +27 -39
  11. package/src/modules/bmgd/agents/game-solo-dev.agent.yaml +56 -0
  12. package/src/modules/bmgd/docs/README.md +180 -0
  13. package/src/modules/bmgd/docs/agents-guide.md +407 -0
  14. package/src/modules/bmgd/docs/game-types-guide.md +503 -0
  15. package/src/modules/bmgd/docs/glossary.md +294 -0
  16. package/src/modules/bmgd/docs/quick-flow-guide.md +288 -0
  17. package/src/modules/bmgd/docs/quick-start.md +250 -0
  18. package/src/modules/bmgd/docs/troubleshooting.md +259 -0
  19. package/src/modules/bmgd/docs/workflow-overview.jpg +0 -0
  20. package/src/modules/bmgd/docs/workflows-guide.md +463 -0
  21. package/src/modules/bmgd/gametest/knowledge/balance-testing.md +220 -0
  22. package/src/modules/bmgd/gametest/knowledge/certification-testing.md +319 -0
  23. package/src/modules/bmgd/gametest/knowledge/compatibility-testing.md +228 -0
  24. package/src/modules/bmgd/gametest/knowledge/godot-testing.md +376 -0
  25. package/src/modules/bmgd/gametest/knowledge/input-testing.md +315 -0
  26. package/src/modules/bmgd/gametest/knowledge/localization-testing.md +304 -0
  27. package/src/modules/bmgd/gametest/knowledge/multiplayer-testing.md +322 -0
  28. package/src/modules/bmgd/gametest/knowledge/performance-testing.md +204 -0
  29. package/src/modules/bmgd/gametest/knowledge/playtesting.md +384 -0
  30. package/src/modules/bmgd/gametest/knowledge/qa-automation.md +190 -0
  31. package/src/modules/bmgd/gametest/knowledge/regression-testing.md +280 -0
  32. package/src/modules/bmgd/gametest/knowledge/save-testing.md +280 -0
  33. package/src/modules/bmgd/gametest/knowledge/smoke-testing.md +404 -0
  34. package/src/modules/bmgd/gametest/knowledge/test-priorities.md +271 -0
  35. package/src/modules/bmgd/gametest/knowledge/unity-testing.md +383 -0
  36. package/src/modules/bmgd/gametest/knowledge/unreal-testing.md +388 -0
  37. package/src/modules/bmgd/gametest/qa-index.csv +17 -0
  38. package/src/modules/bmgd/module.yaml +25 -9
  39. package/src/modules/bmgd/teams/default-party.csv +2 -0
  40. package/src/modules/bmgd/teams/team-gamedev.yaml +12 -1
  41. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-01-init.md +164 -0
  42. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-02-context.md +210 -0
  43. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-03-ideation.md +289 -0
  44. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-04-complete.md +275 -0
  45. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.md +49 -0
  46. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.yaml +29 -8
  47. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-01-init.md +223 -0
  48. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-01b-continue.md +151 -0
  49. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-02-vision.md +218 -0
  50. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-03-market.md +218 -0
  51. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-04-fundamentals.md +231 -0
  52. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-05-scope.md +242 -0
  53. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-06-references.md +224 -0
  54. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-07-content.md +282 -0
  55. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-08-complete.md +296 -0
  56. package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.md +62 -0
  57. package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.yaml +40 -9
  58. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-01-init.md +248 -0
  59. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-01b-continue.md +173 -0
  60. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-02-context.md +332 -0
  61. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-03-platforms.md +245 -0
  62. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-04-vision.md +229 -0
  63. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-05-core-gameplay.md +258 -0
  64. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-06-mechanics.md +249 -0
  65. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-07-game-type.md +266 -0
  66. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-08-progression.md +272 -0
  67. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-09-levels.md +264 -0
  68. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-10-art-audio.md +255 -0
  69. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-11-technical.md +275 -0
  70. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-12-epics.md +284 -0
  71. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-13-metrics.md +250 -0
  72. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-14-complete.md +335 -0
  73. package/src/modules/bmgd/workflows/2-design/gdd/workflow.md +61 -0
  74. package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +27 -7
  75. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-01-init.md +228 -0
  76. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-01b-continue.md +163 -0
  77. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-02-foundation.md +262 -0
  78. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-03-story.md +238 -0
  79. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-04-characters.md +297 -0
  80. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-05-world.md +262 -0
  81. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-06-dialogue.md +250 -0
  82. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-07-environmental.md +244 -0
  83. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-08-delivery.md +264 -0
  84. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-09-integration.md +254 -0
  85. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-10-production.md +262 -0
  86. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-11-complete.md +331 -0
  87. package/src/modules/bmgd/workflows/2-design/narrative/workflow.md +57 -0
  88. package/src/modules/bmgd/workflows/2-design/narrative/workflow.yaml +53 -8
  89. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-01-init.md +223 -0
  90. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-01b-continue.md +153 -0
  91. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-02-context.md +262 -0
  92. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-03-starter.md +290 -0
  93. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-04-decisions.md +300 -0
  94. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-05-crosscutting.md +319 -0
  95. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-06-structure.md +304 -0
  96. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-07-patterns.md +349 -0
  97. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-08-validation.md +293 -0
  98. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-09-complete.md +302 -0
  99. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.md +55 -0
  100. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +50 -21
  101. package/src/modules/bmgd/workflows/4-production/code-review/checklist.md +23 -0
  102. package/src/modules/bmgd/workflows/4-production/code-review/instructions.xml +225 -0
  103. package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +18 -15
  104. package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +1 -1
  105. package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +1 -1
  106. package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +11 -6
  107. package/src/modules/bmgd/workflows/4-production/create-story/checklist.md +332 -214
  108. package/src/modules/bmgd/workflows/4-production/create-story/instructions.xml +298 -0
  109. package/src/modules/bmgd/workflows/4-production/create-story/template.md +3 -5
  110. package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +12 -7
  111. package/src/modules/bmgd/workflows/4-production/dev-story/checklist.md +65 -23
  112. package/src/modules/bmgd/workflows/4-production/dev-story/instructions.xml +409 -0
  113. package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +13 -3
  114. package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +4 -4
  115. package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +12 -7
  116. package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +32 -41
  117. package/src/modules/bmgd/workflows/4-production/sprint-planning/sprint-status-template.yaml +13 -13
  118. package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +6 -1
  119. package/src/modules/bmgd/workflows/4-production/sprint-status/instructions.md +229 -0
  120. package/src/modules/bmgd/workflows/4-production/sprint-status/workflow.yaml +35 -0
  121. package/src/modules/bmgd/workflows/bmgd-quick-flow/create-tech-spec/instructions.md +140 -0
  122. package/src/modules/bmgd/workflows/bmgd-quick-flow/create-tech-spec/workflow.yaml +27 -0
  123. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/checklist.md +37 -0
  124. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/instructions.md +220 -0
  125. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/workflow.yaml +45 -0
  126. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/checklist.md +26 -0
  127. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/instructions.md +156 -0
  128. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/workflow.yaml +36 -0
  129. package/src/modules/bmgd/workflows/gametest/automate/checklist.md +93 -0
  130. package/src/modules/bmgd/workflows/gametest/automate/instructions.md +317 -0
  131. package/src/modules/bmgd/workflows/gametest/automate/workflow.yaml +50 -0
  132. package/src/modules/bmgd/workflows/gametest/performance/checklist.md +96 -0
  133. package/src/modules/bmgd/workflows/gametest/performance/instructions.md +323 -0
  134. package/src/modules/bmgd/workflows/gametest/performance/performance-template.md +256 -0
  135. package/src/modules/bmgd/workflows/gametest/performance/workflow.yaml +48 -0
  136. package/src/modules/bmgd/workflows/gametest/playtest-plan/checklist.md +93 -0
  137. package/src/modules/bmgd/workflows/gametest/playtest-plan/instructions.md +297 -0
  138. package/src/modules/bmgd/workflows/gametest/playtest-plan/playtest-template.md +208 -0
  139. package/src/modules/bmgd/workflows/gametest/playtest-plan/workflow.yaml +59 -0
  140. package/src/modules/bmgd/workflows/gametest/test-design/checklist.md +98 -0
  141. package/src/modules/bmgd/workflows/gametest/test-design/instructions.md +280 -0
  142. package/src/modules/bmgd/workflows/gametest/test-design/test-design-template.md +205 -0
  143. package/src/modules/bmgd/workflows/gametest/test-design/workflow.yaml +47 -0
  144. package/src/modules/bmgd/workflows/gametest/test-framework/checklist.md +103 -0
  145. package/src/modules/bmgd/workflows/gametest/test-framework/instructions.md +348 -0
  146. package/src/modules/bmgd/workflows/gametest/test-framework/workflow.yaml +48 -0
  147. package/src/modules/bmgd/workflows/gametest/test-review/checklist.md +87 -0
  148. package/src/modules/bmgd/workflows/gametest/test-review/instructions.md +272 -0
  149. package/src/modules/bmgd/workflows/gametest/test-review/test-review-template.md +203 -0
  150. package/src/modules/bmgd/workflows/gametest/test-review/workflow.yaml +48 -0
  151. package/src/modules/bmgd/workflows/workflow-status/init/instructions.md +299 -0
  152. package/src/modules/bmgd/workflows/workflow-status/init/workflow.yaml +29 -0
  153. package/src/modules/bmgd/workflows/workflow-status/instructions.md +395 -0
  154. package/src/modules/bmgd/workflows/workflow-status/paths/gamedev-brownfield.yaml +65 -0
  155. package/src/modules/bmgd/workflows/workflow-status/paths/gamedev-greenfield.yaml +71 -0
  156. package/src/modules/bmgd/workflows/workflow-status/paths/quickflow-brownfield.yaml +29 -0
  157. package/src/modules/bmgd/workflows/workflow-status/paths/quickflow-greenfield.yaml +39 -0
  158. package/src/modules/bmgd/workflows/workflow-status/project-levels.yaml +63 -0
  159. package/src/modules/bmgd/workflows/workflow-status/workflow-status-template.yaml +24 -0
  160. package/src/modules/bmgd/workflows/workflow-status/workflow.yaml +30 -0
  161. package/tools/cli/commands/install.js +9 -0
  162. package/tools/cli/installers/lib/core/installer.js +109 -109
  163. package/tools/cli/installers/lib/core/installer.js.bak +3204 -0
  164. package/tools/cli/installers/lib/modules/manager.js +16 -4
  165. package/tools/cli/lib/agent/compiler.js +99 -0
  166. package/tools/cli/lib/ui.js +78 -27
  167. package/src/modules/bmgd/workflows/2-design/gdd/instructions-gdd.md +0 -502
  168. package/src/modules/bmgd/workflows/4-production/code-review/instructions.md +0 -398
  169. package/src/modules/bmgd/workflows/4-production/create-story/instructions.md +0 -256
  170. package/src/modules/bmgd/workflows/4-production/dev-story/instructions.md +0 -267
  171. package/src/modules/bmgd/workflows/4-production/epic-tech-context/checklist.md +0 -17
  172. package/src/modules/bmgd/workflows/4-production/epic-tech-context/instructions.md +0 -164
  173. package/src/modules/bmgd/workflows/4-production/epic-tech-context/template.md +0 -76
  174. package/src/modules/bmgd/workflows/4-production/epic-tech-context/workflow.yaml +0 -58
  175. package/src/modules/bmgd/workflows/4-production/story-context/checklist.md +0 -16
  176. package/src/modules/bmgd/workflows/4-production/story-context/context-template.xml +0 -34
  177. package/src/modules/bmgd/workflows/4-production/story-context/instructions.md +0 -209
  178. package/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml +0 -63
  179. package/src/modules/bmgd/workflows/4-production/story-done/instructions.md +0 -111
  180. package/src/modules/bmgd/workflows/4-production/story-done/workflow.yaml +0 -28
  181. package/src/modules/bmgd/workflows/4-production/story-ready/instructions.md +0 -117
  182. package/src/modules/bmgd/workflows/4-production/story-ready/workflow.yaml +0 -25
  183. /package/src/modules/bmgd/workflows/1-preproduction/game-brief/{template.md → templates/game-brief-template.md} +0 -0
  184. /package/src/modules/bmgd/workflows/2-design/gdd/{gdd-template.md → templates/gdd-template.md} +0 -0
  185. /package/src/modules/bmgd/workflows/2-design/narrative/{narrative-template.md → templates/narrative-template.md} +0 -0
  186. /package/src/modules/bmgd/workflows/3-technical/game-architecture/{architecture-template.md → templates/architecture-template.md} +0 -0
@@ -0,0 +1,204 @@
1
+ # Performance Testing for Games
2
+
3
+ ## Overview
4
+
5
+ Performance testing ensures your game runs smoothly on target hardware. Frame rate, load times, and memory usage directly impact player experience.
6
+
7
+ ## Key Performance Metrics
8
+
9
+ ### Frame Rate
10
+
11
+ - **Target:** 30fps, 60fps, 120fps depending on platform/genre
12
+ - **Measure:** Average, minimum, 1% low, 0.1% low
13
+ - **Goal:** Consistent frame times, no stutters
14
+
15
+ ### Frame Time Budget
16
+
17
+ At 60fps, you have 16.67ms per frame:
18
+
19
+ ```
20
+ Rendering: 8ms (48%)
21
+ Game Logic: 4ms (24%)
22
+ Physics: 2ms (12%)
23
+ Audio: 1ms (6%)
24
+ UI: 1ms (6%)
25
+ Headroom: 0.67ms (4%)
26
+ ```
27
+
28
+ ### Memory
29
+
30
+ - **RAM:** Total allocation, peak usage, fragmentation
31
+ - **VRAM:** Texture memory, render targets, buffers
32
+ - **Goal:** Stay within platform limits with headroom
33
+
34
+ ### Load Times
35
+
36
+ - **Initial Load:** Time to main menu
37
+ - **Level Load:** Time between scenes
38
+ - **Streaming:** Asset loading during gameplay
39
+ - **Goal:** Meet platform certification requirements
40
+
41
+ ## Profiling Tools by Engine
42
+
43
+ ### Unity
44
+
45
+ - **Profiler Window** - CPU, GPU, memory, rendering
46
+ - **Frame Debugger** - Draw call analysis
47
+ - **Memory Profiler** - Heap snapshots
48
+ - **Profile Analyzer** - Compare captures
49
+
50
+ ### Unreal Engine
51
+
52
+ - **Unreal Insights** - Comprehensive profiling
53
+ - **Stat Commands** - Runtime statistics
54
+ - **GPU Visualizer** - GPU timing breakdown
55
+ - **Memory Report** - Allocation tracking
56
+
57
+ ### Godot
58
+
59
+ - **Debugger** - Built-in profiler
60
+ - **Monitors** - Real-time metrics
61
+ - **Remote Debugger** - Profile on device
62
+
63
+ ### Platform Tools
64
+
65
+ - **PIX** (Xbox/Windows) - GPU debugging
66
+ - **RenderDoc** - GPU capture and replay
67
+ - **Instruments** (iOS/macOS) - Apple profiling
68
+ - **Android Profiler** - Android Studio tools
69
+
70
+ ## Performance Testing Process
71
+
72
+ ### 1. Establish Baselines
73
+
74
+ - Profile on target hardware
75
+ - Record key metrics
76
+ - Create benchmark scenes
77
+
78
+ ### 2. Set Budgets
79
+
80
+ - Define frame time budgets per system
81
+ - Set memory limits
82
+ - Establish load time targets
83
+
84
+ ### 3. Monitor Continuously
85
+
86
+ - Integrate profiling in CI
87
+ - Track metrics over time
88
+ - Alert on regressions
89
+
90
+ ### 4. Optimize When Needed
91
+
92
+ - Profile before optimizing
93
+ - Target biggest bottlenecks
94
+ - Verify improvements
95
+
96
+ ## Common Performance Issues
97
+
98
+ ### CPU Bottlenecks
99
+
100
+ | Issue | Symptoms | Solution |
101
+ | --------------------- | ----------------- | --------------------------------- |
102
+ | Too many game objects | Slow update loop | Object pooling, LOD |
103
+ | Expensive AI | Spiky frame times | Budget AI, spread over frames |
104
+ | Physics overload | Physics spikes | Simplify colliders, reduce bodies |
105
+ | GC stutter | Regular hitches | Avoid runtime allocations |
106
+
107
+ ### GPU Bottlenecks
108
+
109
+ | Issue | Symptoms | Solution |
110
+ | ------------------- | ----------------- | -------------------------------- |
111
+ | Overdraw | Fill rate limited | Occlusion culling, reduce layers |
112
+ | Too many draw calls | CPU-GPU bound | Batching, instancing, atlasing |
113
+ | Shader complexity | Long GPU times | Simplify shaders, LOD |
114
+ | Resolution too high | Fill rate limited | Dynamic resolution, FSR/DLSS |
115
+
116
+ ### Memory Issues
117
+
118
+ | Issue | Symptoms | Solution |
119
+ | ------------- | ----------------- | ---------------------------- |
120
+ | Texture bloat | High VRAM | Compress, mipmap, stream |
121
+ | Leaks | Growing memory | Track allocations, fix leaks |
122
+ | Fragmentation | OOM despite space | Pool allocations, defrag |
123
+
124
+ ## Benchmark Scenes
125
+
126
+ Create standardized test scenarios:
127
+
128
+ ### Stress Test Scene
129
+
130
+ - Maximum entities on screen
131
+ - Complex visual effects
132
+ - Worst-case for performance
133
+
134
+ ### Typical Gameplay Scene
135
+
136
+ - Representative of normal play
137
+ - Average entity count
138
+ - Baseline for comparison
139
+
140
+ ### Isolated System Tests
141
+
142
+ - Combat only (no rendering)
143
+ - Rendering only (no game logic)
144
+ - AI only (pathfinding stress)
145
+
146
+ ## Automated Performance Testing
147
+
148
+ ### CI Integration
149
+
150
+ ```yaml
151
+ # Example: Fail build if frame time exceeds budget
152
+ performance_test:
153
+ script:
154
+ - run_benchmark --scene stress_test
155
+ - check_metrics --max-frame-time 16.67ms --max-memory 2GB
156
+ artifacts:
157
+ - performance_report.json
158
+ ```
159
+
160
+ ### Regression Detection
161
+
162
+ - Compare against previous builds
163
+ - Alert on significant changes (>10%)
164
+ - Track trends over time
165
+
166
+ ## Platform-Specific Considerations
167
+
168
+ ### Console
169
+
170
+ - Fixed hardware targets
171
+ - Strict certification requirements
172
+ - Thermal throttling concerns
173
+
174
+ ### PC
175
+
176
+ - Wide hardware range
177
+ - Scalable quality settings
178
+ - Min/recommended specs
179
+
180
+ ### Mobile
181
+
182
+ - Thermal throttling
183
+ - Battery impact
184
+ - Memory constraints
185
+ - Background app pressure
186
+
187
+ ## Performance Testing Checklist
188
+
189
+ ### Before Release
190
+
191
+ - [ ] Profiled on all target platforms
192
+ - [ ] Frame rate targets met
193
+ - [ ] No memory leaks
194
+ - [ ] Load times acceptable
195
+ - [ ] No GC stutters in gameplay
196
+ - [ ] Thermal tests passed (mobile/console)
197
+ - [ ] Certification requirements met
198
+
199
+ ### Ongoing
200
+
201
+ - [ ] Performance tracked in CI
202
+ - [ ] Regression alerts configured
203
+ - [ ] Benchmark scenes maintained
204
+ - [ ] Budgets documented and enforced
@@ -0,0 +1,384 @@
1
+ # Playtesting Fundamentals
2
+
3
+ ## Overview
4
+
5
+ Playtesting is the process of having people play your game to gather feedback and identify issues. It's distinct from QA testing in that it focuses on player experience, fun factor, and design validation rather than bug hunting.
6
+
7
+ ## Types of Playtesting
8
+
9
+ ### Internal Playtesting
10
+
11
+ - **Developer Testing** - Daily testing during development
12
+ - **Team Testing** - Cross-discipline team plays together
13
+ - **Best for:** Rapid iteration, catching obvious issues
14
+
15
+ ### External Playtesting
16
+
17
+ - **Friends & Family** - Trusted external testers
18
+ - **Focus Groups** - Targeted demographic testing
19
+ - **Public Beta** - Large-scale community testing
20
+ - **Best for:** Fresh perspectives, UX validation
21
+
22
+ ### Specialized Playtesting
23
+
24
+ - **Accessibility Testing** - Players with disabilities
25
+ - **Localization Testing** - Regional/cultural validation
26
+ - **Competitive Testing** - Balance and meta testing
27
+
28
+ ## Playtesting Process
29
+
30
+ ### 1. Define Goals
31
+
32
+ Before each playtest session, define:
33
+
34
+ - What questions are you trying to answer?
35
+ - What features are you testing?
36
+ - What metrics will you gather?
37
+
38
+ ### 2. Prepare the Build
39
+
40
+ - Create a stable, playable build
41
+ - Include telemetry/logging if needed
42
+ - Prepare any necessary documentation
43
+
44
+ ### 3. Brief Testers
45
+
46
+ - Explain what to test (or don't, for blind testing)
47
+ - Set expectations for bugs/polish level
48
+ - Provide feedback mechanisms
49
+
50
+ ### 4. Observe and Record
51
+
52
+ - Watch players without intervening
53
+ - Note confusion points, frustration, delight
54
+ - Record gameplay if possible
55
+
56
+ ### 5. Gather Feedback
57
+
58
+ - Structured surveys for quantitative data
59
+ - Open discussion for qualitative insights
60
+ - Allow time for "what else?" comments
61
+
62
+ ### 6. Analyze and Act
63
+
64
+ - Identify patterns across testers
65
+ - Prioritize issues by frequency and severity
66
+ - Create actionable tasks from findings
67
+
68
+ ## Key Metrics to Track
69
+
70
+ ### Engagement Metrics
71
+
72
+ - Session length
73
+ - Return rate
74
+ - Completion rate
75
+ - Drop-off points
76
+
77
+ ### Difficulty Metrics
78
+
79
+ - Deaths/failures per section
80
+ - Time to complete sections
81
+ - Hint/help usage
82
+ - Difficulty setting distribution
83
+
84
+ ### UX Metrics
85
+
86
+ - Time to first action
87
+ - Tutorial completion rate
88
+ - Menu navigation patterns
89
+ - Control scheme preferences
90
+
91
+ ## Playtesting by Game Type
92
+
93
+ Different genres require different playtesting approaches and focus areas.
94
+
95
+ ### Action/Platformer Games
96
+
97
+ **Focus Areas:**
98
+
99
+ - Control responsiveness and "game feel"
100
+ - Difficulty curve across levels
101
+ - Checkpoint placement and frustration points
102
+ - Visual clarity during fast-paced action
103
+
104
+ **Key Questions:**
105
+
106
+ - Does the character feel good to control?
107
+ - Are deaths feeling fair or cheap?
108
+ - Is the player learning organically or hitting walls?
109
+
110
+ ### RPG/Story Games
111
+
112
+ **Focus Areas:**
113
+
114
+ - Narrative pacing and engagement
115
+ - Quest clarity and tracking
116
+ - Character/dialogue believability
117
+ - Progression and reward timing
118
+
119
+ **Key Questions:**
120
+
121
+ - Do players understand their current objective?
122
+ - Are choices feeling meaningful?
123
+ - Is the story holding attention or being skipped?
124
+
125
+ ### Puzzle Games
126
+
127
+ **Focus Areas:**
128
+
129
+ - Solution discoverability
130
+ - "Aha moment" timing
131
+ - Hint system effectiveness
132
+ - Difficulty progression
133
+
134
+ **Key Questions:**
135
+
136
+ - Are players solving puzzles the intended way?
137
+ - How long before frustration sets in?
138
+ - Do solutions feel satisfying or arbitrary?
139
+
140
+ ### Multiplayer/Competitive Games
141
+
142
+ **Focus Areas:**
143
+
144
+ - Balance across characters/builds/strategies
145
+ - Meta development and dominant strategies
146
+ - Social dynamics and toxicity vectors
147
+ - Matchmaking feel
148
+
149
+ **Key Questions:**
150
+
151
+ - Are there "must-pick" or "never-pick" options?
152
+ - Do losing players understand why they lost?
153
+ - Is the skill ceiling high enough for mastery?
154
+
155
+ ### Survival/Sandbox Games
156
+
157
+ **Focus Areas:**
158
+
159
+ - Early game onboarding and survival
160
+ - Goal clarity vs. freedom balance
161
+ - Resource economy and pacing
162
+ - Emergent gameplay moments
163
+
164
+ **Key Questions:**
165
+
166
+ - Do players know what to do first?
167
+ - Is the loop engaging beyond the first hour?
168
+ - Are players creating their own goals?
169
+
170
+ ### Mobile/Casual Games
171
+
172
+ **Focus Areas:**
173
+
174
+ - Session length appropriateness
175
+ - One-hand playability (if applicable)
176
+ - Interruption handling (calls, notifications)
177
+ - Monetization friction points
178
+
179
+ **Key Questions:**
180
+
181
+ - Can players play in 2-minute sessions?
182
+ - Is the core loop immediately understandable?
183
+ - Where do players churn?
184
+
185
+ ### Horror Games
186
+
187
+ **Focus Areas:**
188
+
189
+ - Tension and release pacing
190
+ - Scare effectiveness and desensitization
191
+ - Safe space placement
192
+ - Audio/visual atmosphere
193
+
194
+ **Key Questions:**
195
+
196
+ - When do players feel safe vs. threatened?
197
+ - Are scares landing or becoming predictable?
198
+ - Is anxiety sustainable or exhausting?
199
+
200
+ ## Processing Feedback Effectively
201
+
202
+ Raw feedback is noise. Processed feedback is signal.
203
+
204
+ ### The Feedback Processing Pipeline
205
+
206
+ ```
207
+ Raw Feedback → Categorize → Pattern Match → Root Cause → Prioritize → Action
208
+ ```
209
+
210
+ ### Step 1: Categorize Feedback
211
+
212
+ Sort all feedback into buckets:
213
+
214
+ | Category | Examples |
215
+ | ------------- | ---------------------------------- |
216
+ | **Bugs** | Crashes, glitches, broken features |
217
+ | **Usability** | Confusing UI, unclear objectives |
218
+ | **Balance** | Too hard, too easy, unfair |
219
+ | **Feel** | Controls, pacing, satisfaction |
220
+ | **Content** | Wants more of X, dislikes Y |
221
+ | **Polish** | Audio, visuals, juice |
222
+
223
+ ### Step 2: Pattern Matching
224
+
225
+ Individual feedback is anecdotal. Patterns are data.
226
+
227
+ **Threshold Guidelines:**
228
+
229
+ - 1 person mentions it → Note it
230
+ - 3+ people mention it → Investigate
231
+ - 50%+ mention it → Priority issue
232
+
233
+ **Watch for:**
234
+
235
+ - Same complaint, different words
236
+ - Same area, different complaints (signals deeper issue)
237
+ - Contradictory feedback (may indicate preference split)
238
+
239
+ ### Step 3: Root Cause Analysis
240
+
241
+ Players report symptoms, not diseases.
242
+
243
+ **Example:**
244
+
245
+ - **Symptom:** "The boss is too hard"
246
+ - **Possible Root Causes:**
247
+ - Boss mechanics unclear
248
+ - Player didn't learn required skill earlier
249
+ - Checkpoint too far from boss
250
+ - Health/damage tuning off
251
+ - Boss pattern has no safe windows
252
+
253
+ **Ask "Why?" five times** to get to root cause.
254
+
255
+ ### Step 4: Separate Fact from Opinion
256
+
257
+ | Fact (Actionable) | Opinion (Context) |
258
+ | --------------------------------- | ----------------------- |
259
+ | "I died 12 times on level 3" | "Level 3 is too hard" |
260
+ | "I didn't use the shield ability" | "The shield is useless" |
261
+ | "I quit after 20 minutes" | "The game is boring" |
262
+
263
+ **Facts tell you WHAT happened. Opinions tell you how they FELT about it.**
264
+
265
+ Both matter, but facts drive solutions.
266
+
267
+ ### Step 5: The Feedback Matrix
268
+
269
+ Plot issues on impact vs. effort:
270
+
271
+ ```
272
+ High Impact
273
+
274
+ Quick │ Major
275
+ Wins │ Projects
276
+
277
+ ─────────────┼─────────────
278
+
279
+ Fill │ Reconsider
280
+ Time │
281
+
282
+ Low Impact
283
+ Low Effort ──────── High Effort
284
+ ```
285
+
286
+ ### Step 6: Validate Before Acting
287
+
288
+ Before making changes based on feedback:
289
+
290
+ 1. **Reproduce** - Can you see the issue yourself?
291
+ 2. **Quantify** - How many players affected?
292
+ 3. **Contextualize** - Is this your target audience?
293
+ 4. **Test solutions** - Will the fix create new problems?
294
+
295
+ ### Handling Contradictory Feedback
296
+
297
+ When Player A wants X and Player B wants the opposite:
298
+
299
+ 1. **Check sample size** - Is it really split or just 2 loud voices?
300
+ 2. **Segment audiences** - Are these different player types?
301
+ 3. **Find the underlying need** - Both may want the same thing differently
302
+ 4. **Consider options** - Difficulty settings, toggles, multiple paths
303
+ 5. **Make a decision** - You can't please everyone; know your target
304
+
305
+ ### Feedback Red Flags
306
+
307
+ **Dismiss or investigate carefully:**
308
+
309
+ - "Make it like [other game]" - They want a feeling, not a clone
310
+ - "Add multiplayer" - Feature creep disguised as feedback
311
+ - "I would have bought it if..." - Hypothetical customers aren't real
312
+ - Feedback from non-target audience - Know who you're building for
313
+
314
+ **Take seriously:**
315
+
316
+ - Confusion about core mechanics
317
+ - Consistent drop-off at same point
318
+ - "I wanted to like it but..."
319
+ - Silent quitting (no feedback, just gone)
320
+
321
+ ### Documentation Best Practices
322
+
323
+ **For each playtest session, record:**
324
+
325
+ - Date and build version
326
+ - Tester demographics/experience
327
+ - Session length
328
+ - Key observations (timestamped if recorded)
329
+ - Quantitative survey results
330
+ - Top 3 issues identified
331
+ - Actions taken as result
332
+
333
+ **Maintain a living document** that tracks:
334
+
335
+ - Issue → First reported → Times reported → Status → Resolution
336
+ - This prevents re-discovering the same issues
337
+
338
+ ## Common Playtesting Pitfalls
339
+
340
+ ### Leading Questions
341
+
342
+ **Bad:** "Did you find the combat exciting?"
343
+ **Good:** "How would you describe the combat?"
344
+
345
+ ### Intervening Too Soon
346
+
347
+ Let players struggle before helping. Confusion is valuable data.
348
+
349
+ ### Testing Too Late
350
+
351
+ Start playtesting early with paper prototypes and gray boxes.
352
+
353
+ ### Ignoring Negative Feedback
354
+
355
+ Negative feedback is often the most valuable. Don't dismiss it.
356
+
357
+ ### Over-Relying on Verbal Feedback
358
+
359
+ Watch what players DO, not just what they SAY. Actions reveal truth.
360
+
361
+ ## Playtesting Checklist
362
+
363
+ ### Pre-Session
364
+
365
+ - [ ] Goals defined
366
+ - [ ] Build stable and deployed
367
+ - [ ] Recording setup (if applicable)
368
+ - [ ] Feedback forms ready
369
+ - [ ] Testers briefed
370
+
371
+ ### During Session
372
+
373
+ - [ ] Observing without intervening
374
+ - [ ] Taking notes on behavior
375
+ - [ ] Tracking time markers for notable moments
376
+ - [ ] Noting emotional reactions
377
+
378
+ ### Post-Session
379
+
380
+ - [ ] Feedback collected
381
+ - [ ] Patterns identified
382
+ - [ ] Priority issues flagged
383
+ - [ ] Action items created
384
+ - [ ] Results shared with team