* Godot Game Dev expansion pack for BMAD * Workflow changes * Workflow changes * Fixing config.yaml, editing README.md to indicate correct workflow * Fixing references to config.yaml, adding missing QA review to game-dev agent * More game story creation fixes * More game story creation fixes * Adding built web agent file * - Adding ability for QA agent to have preloaded context files similar to Dev agent. - Fixing stray Unity references in game-architecture-tmpl.yaml --------- Co-authored-by: Brian <bmadcode@gmail.com>
187 lines
7.0 KiB
YAML
187 lines
7.0 KiB
YAML
template:
|
|
id: godot-qa-gate-template-v2
|
|
name: Godot Game Quality Gate Decision
|
|
version: 2.0
|
|
output:
|
|
format: yaml
|
|
filename: docs/qa/gates/{{epic_num}}.{{story_num}}-{{story_slug}}.yml
|
|
title: "Godot Quality Gate: {{epic_num}}.{{story_num}}"
|
|
|
|
# Required fields (keep these first)
|
|
schema: 1
|
|
story: "{{epic_num}}.{{story_num}}"
|
|
story_title: "{{story_title}}"
|
|
gate: "{{gate_status}}" # PASS|CONCERNS|FAIL|WAIVED
|
|
status_reason: "{{status_reason}}" # 1-2 sentence summary focusing on TDD compliance and 60+ FPS performance
|
|
reviewer: "Linus (Godot Game Test Architect)"
|
|
updated: "{{iso_timestamp}}"
|
|
|
|
# Always present but only active when WAIVED
|
|
waiver: { active: false }
|
|
|
|
# Godot-specific Issues (if any) - Use fixed severity: low | medium | high
|
|
top_issues: [] # Focus on performance drops below 60 FPS, missing TDD tests, wrong language choices
|
|
|
|
# Risk summary (from risk-profile task if run)
|
|
risk_summary:
|
|
totals: { critical: 0, high: 0, medium: 0, low: 0 }
|
|
recommendations:
|
|
must_fix: []
|
|
monitor: []
|
|
|
|
# Godot examples section using block scalars for clarity
|
|
examples:
|
|
with_issues: |
|
|
top_issues:
|
|
- id: "PERF-001"
|
|
severity: high # ONLY: low|medium|high
|
|
finding: "Frame rate drops to 45 FPS during particle spawning"
|
|
suggested_action: "Implement object pooling for particle systems"
|
|
- id: "TDD-001"
|
|
severity: high
|
|
finding: "No GUT tests for player controller despite GDScript implementation"
|
|
suggested_action: "Add GUT test coverage before marking story complete"
|
|
- id: "LANG-001"
|
|
severity: medium
|
|
finding: "Physics system using GDScript instead of C# causing performance issues"
|
|
suggested_action: "Refactor physics calculations to C# for better performance"
|
|
|
|
when_waived: |
|
|
waiver:
|
|
active: true
|
|
reason: "Performance at 55 FPS acceptable for early access - optimization planned for next sprint"
|
|
approved_by: "Product Owner"
|
|
|
|
# ============ Optional Extended Fields ============
|
|
# Uncomment and use if your team wants more detail
|
|
# CRITICAL: Gates should FAIL if performance drops below 60 FPS or TDD is not followed
|
|
|
|
optional_fields_examples:
|
|
quality_and_expiry: |
|
|
quality_score: 75 # 100 - (20*FAILs) - (10*CONCERNS) - (5*FPS_drops_below_60)
|
|
expires: "2025-01-26T00:00:00Z" # Optional gate freshness window
|
|
|
|
evidence: |
|
|
evidence:
|
|
gut_tests_reviewed: 15 # GDScript tests
|
|
godottest_reviewed: 8 # C# tests
|
|
performance_validated: true # 60+ FPS confirmed
|
|
language_strategy_verified: true # GDScript/C# choices appropriate
|
|
trace:
|
|
ac_covered: [1, 2, 3] # AC numbers with GUT/GoDotTest coverage
|
|
ac_gaps: [4] # AC numbers lacking TDD coverage
|
|
fps_validation: "60+ FPS on all target platforms"
|
|
|
|
nfr_validation: |
|
|
nfr_validation:
|
|
performance: { status: PASS, notes: "60+ FPS maintained, frame time <16.67ms" }
|
|
tdd_compliance: { status: PASS, notes: "GUT coverage 85%, GoDotTest coverage 80%" }
|
|
language_strategy: { status: PASS, notes: "GDScript for logic, C# for physics - appropriate" }
|
|
object_pooling: { status: CONCERNS, notes: "Pooling missing for bullet spawns" }
|
|
signal_cleanup: { status: PASS, notes: "All signals properly disconnected" }
|
|
platform_exports: { status: PASS, notes: "Export templates configured for all targets" }
|
|
|
|
history: |
|
|
history: # Append-only audit trail
|
|
- at: "2025-01-12T10:00:00Z"
|
|
gate: FAIL
|
|
note: "Initial review - FPS dropped to 45, no GUT tests"
|
|
- at: "2025-01-12T15:00:00Z"
|
|
gate: CONCERNS
|
|
note: "GUT tests added, FPS improved to 58 - needs object pooling"
|
|
|
|
risk_summary: |
|
|
risk_summary: # From Godot risk-profile task
|
|
totals:
|
|
critical: 0 # FPS < 30 or no TDD
|
|
high: 0 # FPS < 60 or wrong language choice
|
|
medium: 0 # Missing optimizations
|
|
low: 0 # Minor issues
|
|
# 'highest' is emitted only when risks exist
|
|
recommendations:
|
|
must_fix: [] # Performance below 60 FPS, missing TDD
|
|
monitor: [] # Language strategy concerns
|
|
|
|
recommendations: |
|
|
recommendations:
|
|
immediate: # Must fix before production
|
|
- action: "Implement object pooling for all spawned entities"
|
|
refs: ["res://scripts/spawners/bullet_spawner.gd:42-68"]
|
|
- action: "Add GUT tests for player controller"
|
|
refs: ["res://scripts/player/player_controller.gd"]
|
|
- action: "Optimize particle system to maintain 60+ FPS"
|
|
refs: ["res://scenes/effects/particles.tscn"]
|
|
future: # Can be addressed later
|
|
- action: "Consider migrating physics to C# for 20% performance gain"
|
|
refs: ["res://scripts/physics/physics_manager.gd"]
|
|
- action: "Add performance benchmarks to GUT test suite"
|
|
refs: ["res://tests/"]
|
|
|
|
godot_performance_metrics: |
|
|
godot_metrics:
|
|
frame_rate:
|
|
current: 62 # Current FPS
|
|
target: 60 # Minimum acceptable (FAIL if below)
|
|
peak: 120 # Best achieved
|
|
frame_time:
|
|
current_ms: 16.1 # Current frame time
|
|
target_ms: 16.67 # Maximum for 60 FPS
|
|
memory:
|
|
scene_mb: 45 # Scene memory usage
|
|
texture_mb: 128 # Texture memory
|
|
pool_count: 5 # Active object pools
|
|
draw_calls:
|
|
current: 85
|
|
budget: 100 # Platform-specific budget
|
|
language_distribution:
|
|
gdscript_files: 45 # With static typing
|
|
csharp_files: 12 # Performance-critical systems
|
|
|
|
test_coverage_metrics: |
|
|
test_coverage:
|
|
gut_tests:
|
|
total: 45
|
|
passing: 43
|
|
coverage_percent: 85
|
|
performance_tests: 8 # Tests validating 60+ FPS
|
|
godottest_tests:
|
|
total: 20
|
|
passing: 20
|
|
coverage_percent: 80
|
|
physics_tests: 15 # C# physics validation
|
|
tdd_compliance:
|
|
stories_with_tests_first: 18
|
|
stories_without_tests: 2
|
|
compliance_percent: 90
|
|
|
|
# ============ Godot Gate Decision Criteria ============
|
|
# Apply these rules in order to determine gate status:
|
|
|
|
gate_decision_rules: |
|
|
1. AUTOMATIC FAIL CONDITIONS:
|
|
- Performance below 60 FPS on any target platform
|
|
- No TDD tests (neither GUT nor GoDotTest)
|
|
- Memory leaks detected (signals not cleaned up)
|
|
- Wrong language choice causing performance issues
|
|
- Object pooling missing for frequently spawned entities
|
|
|
|
2. CONCERNS CONDITIONS:
|
|
- Performance between 55-59 FPS
|
|
- TDD coverage below 80%
|
|
- Static typing not used in GDScript
|
|
- LINQ usage in C# hot paths
|
|
- Scene transitions exceeding 3 seconds
|
|
|
|
3. PASS CONDITIONS:
|
|
- Consistent 60+ FPS across all platforms
|
|
- GUT/GoDotTest coverage >= 80%
|
|
- Appropriate language choices (GDScript for logic, C# for performance)
|
|
- Object pooling implemented for all spawned entities
|
|
- All signals properly connected and cleaned up
|
|
|
|
4. WAIVER ONLY WITH:
|
|
- Product Owner approval
|
|
- Clear remediation plan
|
|
- Timeline for fixing issues
|
|
- Risk acceptance documented
|