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,348 @@
|
|
|
1
|
+
<!-- Powered by BMAD-CORE™ -->
|
|
2
|
+
|
|
3
|
+
# Game Test Framework Setup
|
|
4
|
+
|
|
5
|
+
**Workflow ID**: `_bmad/bmgd/gametest/framework`
|
|
6
|
+
**Version**: 1.0 (BMad v6)
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
Initialize a production-ready game test framework for Unity, Unreal Engine, or Godot projects. This workflow scaffolds the complete testing infrastructure including unit tests, integration tests, and play mode tests appropriate for the detected game engine.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Preflight Requirements
|
|
17
|
+
|
|
18
|
+
**Critical:** Verify these requirements before proceeding. If any fail, HALT and notify the user.
|
|
19
|
+
|
|
20
|
+
- ✅ Game project exists with identifiable engine
|
|
21
|
+
- ✅ No test framework already configured (check for existing test directories)
|
|
22
|
+
- ✅ Project structure is accessible
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Step 1: Detect Game Engine
|
|
27
|
+
|
|
28
|
+
### Actions
|
|
29
|
+
|
|
30
|
+
1. **Identify Engine Type**
|
|
31
|
+
|
|
32
|
+
Look for engine-specific files:
|
|
33
|
+
- **Unity**: `Assets/`, `ProjectSettings/ProjectSettings.asset`, `*.unity` scene files
|
|
34
|
+
- **Unreal**: `*.uproject`, `Source/`, `Config/DefaultEngine.ini`
|
|
35
|
+
- **Godot**: `project.godot`, `*.tscn`, `*.gd` files
|
|
36
|
+
|
|
37
|
+
2. **Verify Engine Version**
|
|
38
|
+
- Unity: Check `ProjectSettings/ProjectVersion.txt`
|
|
39
|
+
- Unreal: Check `*.uproject` file for `EngineAssociation`
|
|
40
|
+
- Godot: Check `project.godot` for `config_version`
|
|
41
|
+
|
|
42
|
+
3. **Check for Existing Test Framework**
|
|
43
|
+
- Unity: Check for `Tests/` folder, `*.Tests.asmdef`
|
|
44
|
+
- Unreal: Check for `Tests/` in Source, `*Tests.Build.cs`
|
|
45
|
+
- Godot: Check for `tests/` folder, GUT plugin in `addons/gut/`
|
|
46
|
+
|
|
47
|
+
**Halt Condition:** If existing framework detected, offer upgrade path or HALT.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Step 2: Scaffold Framework
|
|
52
|
+
|
|
53
|
+
### Unity Test Framework
|
|
54
|
+
|
|
55
|
+
**Knowledge Base Reference**: `knowledge/unity-testing.md`
|
|
56
|
+
|
|
57
|
+
1. **Create Directory Structure**
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
Assets/
|
|
61
|
+
├── Tests/
|
|
62
|
+
│ ├── EditMode/
|
|
63
|
+
│ │ ├── EditModeTests.asmdef
|
|
64
|
+
│ │ └── ExampleEditModeTest.cs
|
|
65
|
+
│ └── PlayMode/
|
|
66
|
+
│ ├── PlayModeTests.asmdef
|
|
67
|
+
│ └── ExamplePlayModeTest.cs
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
2. **Generate Assembly Definitions**
|
|
71
|
+
|
|
72
|
+
`EditModeTests.asmdef`:
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"name": "EditModeTests",
|
|
77
|
+
"references": ["<GameAssembly>"],
|
|
78
|
+
"includePlatforms": ["Editor"],
|
|
79
|
+
"defineConstraints": ["UNITY_INCLUDE_TESTS"],
|
|
80
|
+
"optionalUnityReferences": ["TestAssemblies"]
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
`PlayModeTests.asmdef`:
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"name": "PlayModeTests",
|
|
89
|
+
"references": ["<GameAssembly>"],
|
|
90
|
+
"includePlatforms": [],
|
|
91
|
+
"defineConstraints": ["UNITY_INCLUDE_TESTS"],
|
|
92
|
+
"optionalUnityReferences": ["TestAssemblies"]
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
3. **Generate Sample Tests**
|
|
97
|
+
|
|
98
|
+
Edit Mode test example:
|
|
99
|
+
|
|
100
|
+
```csharp
|
|
101
|
+
using NUnit.Framework;
|
|
102
|
+
|
|
103
|
+
[TestFixture]
|
|
104
|
+
public class DamageCalculatorTests
|
|
105
|
+
{
|
|
106
|
+
[Test]
|
|
107
|
+
public void Calculate_BaseDamage_ReturnsCorrectValue()
|
|
108
|
+
{
|
|
109
|
+
// Arrange
|
|
110
|
+
var calculator = new DamageCalculator();
|
|
111
|
+
|
|
112
|
+
// Act
|
|
113
|
+
float result = calculator.Calculate(100f, 1f);
|
|
114
|
+
|
|
115
|
+
// Assert
|
|
116
|
+
Assert.AreEqual(100f, result);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Play Mode test example:
|
|
122
|
+
|
|
123
|
+
```csharp
|
|
124
|
+
using System.Collections;
|
|
125
|
+
using NUnit.Framework;
|
|
126
|
+
using UnityEngine;
|
|
127
|
+
using UnityEngine.TestTools;
|
|
128
|
+
|
|
129
|
+
public class PlayerMovementTests
|
|
130
|
+
{
|
|
131
|
+
[UnityTest]
|
|
132
|
+
public IEnumerator Player_WhenInputApplied_Moves()
|
|
133
|
+
{
|
|
134
|
+
// Arrange
|
|
135
|
+
var playerGO = new GameObject("Player");
|
|
136
|
+
var controller = playerGO.AddComponent<PlayerController>();
|
|
137
|
+
|
|
138
|
+
// Act
|
|
139
|
+
controller.SetMoveInput(Vector2.right);
|
|
140
|
+
yield return new WaitForSeconds(0.5f);
|
|
141
|
+
|
|
142
|
+
// Assert
|
|
143
|
+
Assert.Greater(playerGO.transform.position.x, 0f);
|
|
144
|
+
|
|
145
|
+
// Cleanup
|
|
146
|
+
Object.Destroy(playerGO);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
### Unreal Engine Automation
|
|
154
|
+
|
|
155
|
+
**Knowledge Base Reference**: `knowledge/unreal-testing.md`
|
|
156
|
+
|
|
157
|
+
1. **Create Directory Structure**
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
Source/
|
|
161
|
+
├── <ProjectName>/
|
|
162
|
+
│ └── ...
|
|
163
|
+
└── <ProjectName>Tests/
|
|
164
|
+
├── <ProjectName>Tests.Build.cs
|
|
165
|
+
└── Private/
|
|
166
|
+
├── DamageCalculationTests.cpp
|
|
167
|
+
└── PlayerCombatTests.cpp
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
2. **Generate Module Build File**
|
|
171
|
+
|
|
172
|
+
`<ProjectName>Tests.Build.cs`:
|
|
173
|
+
|
|
174
|
+
```csharp
|
|
175
|
+
using UnrealBuildTool;
|
|
176
|
+
|
|
177
|
+
public class <ProjectName>Tests : ModuleRules
|
|
178
|
+
{
|
|
179
|
+
public <ProjectName>Tests(ReadOnlyTargetRules Target) : base(Target)
|
|
180
|
+
{
|
|
181
|
+
PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;
|
|
182
|
+
|
|
183
|
+
PublicDependencyModuleNames.AddRange(new string[] {
|
|
184
|
+
"Core",
|
|
185
|
+
"CoreUObject",
|
|
186
|
+
"Engine",
|
|
187
|
+
"<ProjectName>"
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
PrivateDependencyModuleNames.AddRange(new string[] {
|
|
191
|
+
"AutomationController"
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
3. **Generate Sample Tests**
|
|
198
|
+
|
|
199
|
+
```cpp
|
|
200
|
+
#include "Misc/AutomationTest.h"
|
|
201
|
+
|
|
202
|
+
IMPLEMENT_SIMPLE_AUTOMATION_TEST(
|
|
203
|
+
FDamageCalculationTest,
|
|
204
|
+
"<ProjectName>.Combat.DamageCalculation",
|
|
205
|
+
EAutomationTestFlags::ApplicationContextMask |
|
|
206
|
+
EAutomationTestFlags::ProductFilter
|
|
207
|
+
)
|
|
208
|
+
|
|
209
|
+
bool FDamageCalculationTest::RunTest(const FString& Parameters)
|
|
210
|
+
{
|
|
211
|
+
// Arrange
|
|
212
|
+
float BaseDamage = 100.f;
|
|
213
|
+
float CritMultiplier = 2.f;
|
|
214
|
+
|
|
215
|
+
// Act
|
|
216
|
+
float Result = UDamageCalculator::Calculate(BaseDamage, CritMultiplier);
|
|
217
|
+
|
|
218
|
+
// Assert
|
|
219
|
+
TestEqual("Critical hit doubles damage", Result, 200.f);
|
|
220
|
+
|
|
221
|
+
return true;
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
### Godot GUT Framework
|
|
228
|
+
|
|
229
|
+
**Knowledge Base Reference**: `knowledge/godot-testing.md`
|
|
230
|
+
|
|
231
|
+
1. **Create Directory Structure**
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
project/
|
|
235
|
+
├── addons/
|
|
236
|
+
│ └── gut/ (plugin files)
|
|
237
|
+
├── tests/
|
|
238
|
+
│ ├── unit/
|
|
239
|
+
│ │ └── test_damage_calculator.gd
|
|
240
|
+
│ └── integration/
|
|
241
|
+
│ └── test_player_combat.gd
|
|
242
|
+
└── gut_config.json
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
2. **Generate GUT Configuration**
|
|
246
|
+
|
|
247
|
+
`gut_config.json`:
|
|
248
|
+
|
|
249
|
+
```json
|
|
250
|
+
{
|
|
251
|
+
"dirs": ["res://tests/"],
|
|
252
|
+
"include_subdirs": true,
|
|
253
|
+
"prefix": "test_",
|
|
254
|
+
"suffix": ".gd",
|
|
255
|
+
"should_exit": true,
|
|
256
|
+
"should_exit_on_success": true,
|
|
257
|
+
"log_level": 1,
|
|
258
|
+
"junit_xml_file": "results.xml"
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
3. **Generate Sample Tests**
|
|
263
|
+
|
|
264
|
+
`tests/unit/test_damage_calculator.gd`:
|
|
265
|
+
|
|
266
|
+
```gdscript
|
|
267
|
+
extends GutTest
|
|
268
|
+
|
|
269
|
+
var calculator: DamageCalculator
|
|
270
|
+
|
|
271
|
+
func before_each():
|
|
272
|
+
calculator = DamageCalculator.new()
|
|
273
|
+
|
|
274
|
+
func after_each():
|
|
275
|
+
calculator.free()
|
|
276
|
+
|
|
277
|
+
func test_calculate_base_damage():
|
|
278
|
+
var result = calculator.calculate(100.0, 1.0)
|
|
279
|
+
assert_eq(result, 100.0, "Base damage should equal input")
|
|
280
|
+
|
|
281
|
+
func test_calculate_critical_hit():
|
|
282
|
+
var result = calculator.calculate(100.0, 2.0)
|
|
283
|
+
assert_eq(result, 200.0, "Critical hit should double damage")
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
## Step 3: Generate Documentation
|
|
289
|
+
|
|
290
|
+
Create `tests/README.md` with:
|
|
291
|
+
|
|
292
|
+
- Test framework overview for the detected engine
|
|
293
|
+
- Directory structure explanation
|
|
294
|
+
- Running tests locally
|
|
295
|
+
- CI integration commands
|
|
296
|
+
- Best practices for game testing
|
|
297
|
+
- Links to knowledge base fragments
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## Step 4: Deliverables
|
|
302
|
+
|
|
303
|
+
### Primary Artifacts Created
|
|
304
|
+
|
|
305
|
+
1. **Directory Structure** - Engine-appropriate test folders
|
|
306
|
+
2. **Configuration Files** - Framework-specific config (asmdef, Build.cs, gut_config.json)
|
|
307
|
+
3. **Sample Tests** - Working examples for unit and integration tests
|
|
308
|
+
4. **Documentation** - `tests/README.md`
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
## Output Summary
|
|
313
|
+
|
|
314
|
+
After completing this workflow, provide a summary:
|
|
315
|
+
|
|
316
|
+
```markdown
|
|
317
|
+
## Game Test Framework Scaffold Complete
|
|
318
|
+
|
|
319
|
+
**Engine Detected**: {Unity | Unreal | Godot}
|
|
320
|
+
**Framework**: {Unity Test Framework | Unreal Automation | GUT}
|
|
321
|
+
|
|
322
|
+
**Artifacts Created**:
|
|
323
|
+
|
|
324
|
+
- ✅ Test directory structure
|
|
325
|
+
- ✅ Framework configuration
|
|
326
|
+
- ✅ Sample unit tests
|
|
327
|
+
- ✅ Sample integration/play mode tests
|
|
328
|
+
- ✅ Documentation
|
|
329
|
+
|
|
330
|
+
**Next Steps**:
|
|
331
|
+
|
|
332
|
+
1. Review sample tests and adapt to your game
|
|
333
|
+
2. Run initial tests to verify setup
|
|
334
|
+
3. Use `test-design` workflow to plan comprehensive test coverage
|
|
335
|
+
4. Use `automate` workflow to generate additional tests
|
|
336
|
+
|
|
337
|
+
**Knowledge Base References Applied**:
|
|
338
|
+
|
|
339
|
+
- {engine}-testing.md
|
|
340
|
+
- qa-automation.md
|
|
341
|
+
- test-priorities.md
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
---
|
|
345
|
+
|
|
346
|
+
## Validation
|
|
347
|
+
|
|
348
|
+
Refer to `checklist.md` for comprehensive validation criteria.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Game QA workflow: framework
|
|
2
|
+
name: gametest-framework
|
|
3
|
+
description: "Initialize game test framework architecture for Unity, Unreal Engine, or Godot projects"
|
|
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/test-framework"
|
|
16
|
+
instructions: "{installed_path}/instructions.md"
|
|
17
|
+
validation: "{installed_path}/checklist.md"
|
|
18
|
+
|
|
19
|
+
# Variables and inputs
|
|
20
|
+
variables:
|
|
21
|
+
test_dir: "{project-root}/tests" # Root test directory
|
|
22
|
+
game_engine: "auto" # auto, unity, unreal, godot
|
|
23
|
+
test_framework: "auto" # auto, gut (godot), unity-test-framework, unreal-automation
|
|
24
|
+
|
|
25
|
+
# Output configuration
|
|
26
|
+
default_output_file: "{test_dir}/README.md"
|
|
27
|
+
|
|
28
|
+
# Required tools
|
|
29
|
+
required_tools:
|
|
30
|
+
- read_file
|
|
31
|
+
- write_file
|
|
32
|
+
- create_directory
|
|
33
|
+
- list_files
|
|
34
|
+
- search_repo
|
|
35
|
+
|
|
36
|
+
tags:
|
|
37
|
+
- qa
|
|
38
|
+
- setup
|
|
39
|
+
- game-testing
|
|
40
|
+
- framework
|
|
41
|
+
- initialization
|
|
42
|
+
|
|
43
|
+
execution_hints:
|
|
44
|
+
interactive: false
|
|
45
|
+
autonomous: true
|
|
46
|
+
iterative: true
|
|
47
|
+
|
|
48
|
+
web_bundle: false
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Test Review - Validation Checklist
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
- [ ] Test suite accessible
|
|
8
|
+
- [ ] Test results available
|
|
9
|
+
- [ ] Feature list known
|
|
10
|
+
- [ ] Access to CI/CD pipeline
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Metrics Collection
|
|
15
|
+
|
|
16
|
+
- [ ] Test counts by type gathered
|
|
17
|
+
- [ ] Pass rates calculated
|
|
18
|
+
- [ ] Average durations measured
|
|
19
|
+
- [ ] Flaky tests identified
|
|
20
|
+
- [ ] Slow tests identified
|
|
21
|
+
- [ ] Disabled tests listed
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Quality Assessment
|
|
26
|
+
|
|
27
|
+
- [ ] Determinism evaluated
|
|
28
|
+
- [ ] Isolation checked
|
|
29
|
+
- [ ] Speed benchmarked
|
|
30
|
+
- [ ] Readability assessed
|
|
31
|
+
- [ ] Anti-patterns documented
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Coverage Analysis
|
|
36
|
+
|
|
37
|
+
- [ ] All features listed
|
|
38
|
+
- [ ] Test coverage mapped
|
|
39
|
+
- [ ] P0/P1 coverage verified
|
|
40
|
+
- [ ] Critical gaps identified
|
|
41
|
+
- [ ] Gap priorities assigned
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Infrastructure Review
|
|
46
|
+
|
|
47
|
+
- [ ] CI integration verified
|
|
48
|
+
- [ ] Results visibility confirmed
|
|
49
|
+
- [ ] Failure blocking assessed
|
|
50
|
+
- [ ] Fixture quality evaluated
|
|
51
|
+
- [ ] Maintenance burden estimated
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Recommendations
|
|
56
|
+
|
|
57
|
+
- [ ] Findings prioritized
|
|
58
|
+
- [ ] Effort estimated
|
|
59
|
+
- [ ] Immediate actions identified
|
|
60
|
+
- [ ] Short-term improvements listed
|
|
61
|
+
- [ ] Long-term strategy outlined
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Report
|
|
66
|
+
|
|
67
|
+
- [ ] Executive summary complete
|
|
68
|
+
- [ ] Metrics section complete
|
|
69
|
+
- [ ] Quality assessment documented
|
|
70
|
+
- [ ] Coverage analysis included
|
|
71
|
+
- [ ] Recommendations actionable
|
|
72
|
+
- [ ] Appendices populated
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Completion Criteria
|
|
77
|
+
|
|
78
|
+
- [ ] All test types reviewed
|
|
79
|
+
- [ ] Critical gaps identified
|
|
80
|
+
- [ ] Actionable recommendations provided
|
|
81
|
+
- [ ] Report delivered to stakeholders
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
**Completed by:** {name}
|
|
86
|
+
**Date:** {date}
|
|
87
|
+
**Tests Reviewed:** {count}
|