bmad-method 5.0.0-beta.2 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/ISSUE_TEMPLATE/bug_report.md +3 -3
- package/.github/ISSUE_TEMPLATE/feature_request.md +3 -3
- package/.github/workflows/discord.yaml +11 -2
- package/.github/workflows/format-check.yaml +42 -0
- package/.github/workflows/manual-release.yaml +173 -0
- package/.husky/pre-commit +3 -0
- package/.vscode/settings.json +26 -1
- package/CHANGELOG.md +0 -11
- package/README.md +2 -0
- package/bmad-core/agent-teams/team-all.yaml +1 -1
- package/bmad-core/agents/bmad-orchestrator.md +1 -1
- package/bmad-core/agents/dev.md +4 -4
- package/bmad-core/data/bmad-kb.md +1 -1
- package/bmad-core/data/test-levels-framework.md +12 -12
- package/bmad-core/tasks/facilitate-brainstorming-session.md +1 -1
- package/bmad-core/tasks/nfr-assess.md +10 -10
- package/bmad-core/tasks/qa-gate.md +23 -23
- package/bmad-core/tasks/review-story.md +18 -18
- package/bmad-core/tasks/risk-profile.md +25 -25
- package/bmad-core/tasks/test-design.md +9 -9
- package/bmad-core/tasks/trace-requirements.md +21 -21
- package/bmad-core/templates/architecture-tmpl.yaml +49 -49
- package/bmad-core/templates/brainstorming-output-tmpl.yaml +5 -5
- package/bmad-core/templates/brownfield-architecture-tmpl.yaml +31 -31
- package/bmad-core/templates/brownfield-prd-tmpl.yaml +13 -13
- package/bmad-core/templates/competitor-analysis-tmpl.yaml +19 -6
- package/bmad-core/templates/front-end-architecture-tmpl.yaml +21 -9
- package/bmad-core/templates/front-end-spec-tmpl.yaml +24 -24
- package/bmad-core/templates/fullstack-architecture-tmpl.yaml +122 -104
- package/bmad-core/templates/market-research-tmpl.yaml +2 -2
- package/bmad-core/templates/prd-tmpl.yaml +9 -9
- package/bmad-core/templates/project-brief-tmpl.yaml +4 -4
- package/bmad-core/templates/qa-gate-tmpl.yaml +9 -9
- package/bmad-core/templates/story-tmpl.yaml +12 -12
- package/bmad-core/workflows/brownfield-fullstack.yaml +9 -9
- package/bmad-core/workflows/brownfield-service.yaml +1 -1
- package/bmad-core/workflows/brownfield-ui.yaml +1 -1
- package/bmad-core/workflows/greenfield-fullstack.yaml +1 -1
- package/bmad-core/workflows/greenfield-service.yaml +1 -1
- package/bmad-core/workflows/greenfield-ui.yaml +1 -1
- package/common/utils/bmad-doc-template.md +5 -5
- package/dist/agents/analyst.txt +28 -15
- package/dist/agents/architect.txt +220 -190
- package/dist/agents/bmad-master.txt +298 -255
- package/dist/agents/bmad-orchestrator.txt +1 -1
- package/dist/agents/pm.txt +20 -20
- package/dist/agents/po.txt +11 -11
- package/dist/agents/qa.txt +275 -618
- package/dist/agents/sm.txt +11 -11
- package/dist/agents/ux-expert.txt +23 -23
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +109 -109
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +75 -77
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +41 -41
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +483 -474
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +1 -1
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +149 -149
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +20 -20
- package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +371 -358
- package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +25 -25
- package/dist/teams/team-all.txt +581 -881
- package/dist/teams/team-fullstack.txt +316 -273
- package/dist/teams/team-ide-minimal.txt +276 -619
- package/dist/teams/team-no-ui.txt +281 -238
- package/docs/versioning-and-releases.md +114 -44
- package/eslint.config.mjs +119 -0
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.4 Deployment Configuration/1.4.2 - cloudbuild.yaml +26 -26
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +4 -4
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +1 -1
- package/expansion-packs/bmad-2d-phaser-game-dev/data/development-guidelines.md +26 -28
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +50 -50
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +23 -23
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +24 -24
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +42 -42
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +65 -65
- package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +5 -5
- package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +1 -1
- package/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.md +3 -3
- package/expansion-packs/bmad-2d-unity-game-dev/data/bmad-kb.md +1 -1
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +23 -23
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +63 -63
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +20 -20
- package/expansion-packs/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +65 -65
- package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +5 -5
- package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +1 -1
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +20 -20
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +7 -7
- package/package.json +62 -39
- package/prettier.config.mjs +32 -0
- package/release_notes.md +30 -0
- package/tools/bmad-npx-wrapper.js +10 -10
- package/tools/builders/web-builder.js +124 -130
- package/tools/bump-all-versions.js +42 -33
- package/tools/bump-expansion-version.js +23 -16
- package/tools/cli.js +10 -12
- package/tools/flattener/aggregate.js +10 -10
- package/tools/flattener/binary.js +44 -17
- package/tools/flattener/discovery.js +19 -18
- package/tools/flattener/files.js +6 -6
- package/tools/flattener/ignoreRules.js +125 -125
- package/tools/flattener/main.js +201 -304
- package/tools/flattener/projectRoot.js +75 -73
- package/tools/flattener/prompts.js +9 -9
- package/tools/flattener/stats.helpers.js +131 -67
- package/tools/flattener/stats.js +3 -3
- package/tools/flattener/test-matrix.js +201 -193
- package/tools/flattener/xml.js +33 -31
- package/tools/installer/bin/bmad.js +130 -89
- package/tools/installer/config/ide-agent-config.yaml +1 -1
- package/tools/installer/config/install.config.yaml +2 -2
- package/tools/installer/lib/config-loader.js +46 -42
- package/tools/installer/lib/file-manager.js +91 -113
- package/tools/installer/lib/ide-base-setup.js +57 -56
- package/tools/installer/lib/ide-setup.js +375 -343
- package/tools/installer/lib/installer.js +875 -714
- package/tools/installer/lib/memory-profiler.js +54 -53
- package/tools/installer/lib/module-manager.js +19 -15
- package/tools/installer/lib/resource-locator.js +26 -28
- package/tools/installer/package.json +19 -19
- package/tools/lib/dependency-resolver.js +26 -30
- package/tools/lib/yaml-utils.js +7 -7
- package/tools/preview-release-notes.js +66 -0
- package/tools/shared/bannerArt.js +3 -3
- package/tools/sync-installer-version.js +7 -9
- package/tools/update-expansion-version.js +14 -15
- package/tools/upgraders/v3-to-v4-upgrader.js +203 -294
- package/tools/version-bump.js +41 -26
- package/tools/yaml-format.js +56 -43
- package/.github/workflows/promote-to-stable.yml +0 -144
- package/.github/workflows/release.yaml +0 -60
- package/.releaserc.json +0 -21
- package/tools/semantic-release-sync-installer.js +0 -30
|
@@ -420,7 +420,7 @@ dependencies:
|
|
|
420
420
|
==================== START: .bmad-2d-phaser-game-dev/tasks/facilitate-brainstorming-session.md ====================
|
|
421
421
|
---
|
|
422
422
|
docOutputLocation: docs/brainstorming-session-results.md
|
|
423
|
-
template:
|
|
423
|
+
template: '.bmad-2d-phaser-game-dev/templates/brainstorming-output-tmpl.yaml'
|
|
424
424
|
---
|
|
425
425
|
|
|
426
426
|
# Facilitate Brainstorming Session Task
|
|
@@ -1431,12 +1431,12 @@ sections:
|
|
|
1431
1431
|
- id: introduction
|
|
1432
1432
|
instruction: |
|
|
1433
1433
|
This template guides creation of a comprehensive Project Brief that serves as the foundational input for product development.
|
|
1434
|
-
|
|
1434
|
+
|
|
1435
1435
|
Start by asking the user which mode they prefer:
|
|
1436
|
-
|
|
1436
|
+
|
|
1437
1437
|
1. **Interactive Mode** - Work through each section collaboratively
|
|
1438
1438
|
2. **YOLO Mode** - Generate complete draft for review and refinement
|
|
1439
|
-
|
|
1439
|
+
|
|
1440
1440
|
Before beginning, understand what inputs are available (brainstorming results, market research, competitive analysis, initial ideas) and gather project context.
|
|
1441
1441
|
|
|
1442
1442
|
- id: executive-summary
|
|
@@ -1757,7 +1757,7 @@ sections:
|
|
|
1757
1757
|
instruction: Map the end-to-end customer experience for primary segments
|
|
1758
1758
|
template: |
|
|
1759
1759
|
For primary customer segment:
|
|
1760
|
-
|
|
1760
|
+
|
|
1761
1761
|
1. **Awareness:** {{discovery_process}}
|
|
1762
1762
|
2. **Consideration:** {{evaluation_criteria}}
|
|
1763
1763
|
3. **Purchase:** {{decision_triggers}}
|
|
@@ -1958,7 +1958,7 @@ sections:
|
|
|
1958
1958
|
title: Competitor Prioritization Matrix
|
|
1959
1959
|
instruction: |
|
|
1960
1960
|
Help categorize competitors by market share and strategic threat level
|
|
1961
|
-
|
|
1961
|
+
|
|
1962
1962
|
Create a 2x2 matrix:
|
|
1963
1963
|
- Priority 1 (Core Competitors): High Market Share + High Threat
|
|
1964
1964
|
- Priority 2 (Emerging Threats): Low Market Share + High Threat
|
|
@@ -2023,7 +2023,14 @@ sections:
|
|
|
2023
2023
|
title: Feature Comparison Matrix
|
|
2024
2024
|
instruction: Create a detailed comparison table of key features across competitors
|
|
2025
2025
|
type: table
|
|
2026
|
-
columns:
|
|
2026
|
+
columns:
|
|
2027
|
+
[
|
|
2028
|
+
"Feature Category",
|
|
2029
|
+
"{{your_company}}",
|
|
2030
|
+
"{{competitor_1}}",
|
|
2031
|
+
"{{competitor_2}}",
|
|
2032
|
+
"{{competitor_3}}",
|
|
2033
|
+
]
|
|
2027
2034
|
rows:
|
|
2028
2035
|
- category: "Core Functionality"
|
|
2029
2036
|
items:
|
|
@@ -2035,7 +2042,13 @@ sections:
|
|
|
2035
2042
|
- ["Onboarding Time", "{{time}}", "{{time}}", "{{time}}", "{{time}}"]
|
|
2036
2043
|
- category: "Integration & Ecosystem"
|
|
2037
2044
|
items:
|
|
2038
|
-
- [
|
|
2045
|
+
- [
|
|
2046
|
+
"API Availability",
|
|
2047
|
+
"{{availability}}",
|
|
2048
|
+
"{{availability}}",
|
|
2049
|
+
"{{availability}}",
|
|
2050
|
+
"{{availability}}",
|
|
2051
|
+
]
|
|
2039
2052
|
- ["Third-party Integrations", "{{number}}", "{{number}}", "{{number}}", "{{number}}"]
|
|
2040
2053
|
- category: "Pricing & Plans"
|
|
2041
2054
|
items:
|
|
@@ -2062,7 +2075,7 @@ sections:
|
|
|
2062
2075
|
title: Positioning Map
|
|
2063
2076
|
instruction: |
|
|
2064
2077
|
Describe competitor positions on key dimensions
|
|
2065
|
-
|
|
2078
|
+
|
|
2066
2079
|
Create a positioning description using 2 key dimensions relevant to the market, such as:
|
|
2067
2080
|
- Price vs. Features
|
|
2068
2081
|
- Ease of Use vs. Power
|
|
@@ -2097,7 +2110,7 @@ sections:
|
|
|
2097
2110
|
title: Blue Ocean Opportunities
|
|
2098
2111
|
instruction: |
|
|
2099
2112
|
Identify uncontested market spaces
|
|
2100
|
-
|
|
2113
|
+
|
|
2101
2114
|
List opportunities to create new market space:
|
|
2102
2115
|
- Underserved segments
|
|
2103
2116
|
- Unaddressed use cases
|
|
@@ -2201,11 +2214,11 @@ sections:
|
|
|
2201
2214
|
- id: summary-details
|
|
2202
2215
|
template: |
|
|
2203
2216
|
**Topic:** {{session_topic}}
|
|
2204
|
-
|
|
2217
|
+
|
|
2205
2218
|
**Session Goals:** {{stated_goals}}
|
|
2206
|
-
|
|
2219
|
+
|
|
2207
2220
|
**Techniques Used:** {{techniques_list}}
|
|
2208
|
-
|
|
2221
|
+
|
|
2209
2222
|
**Total Ideas Generated:** {{total_ideas}}
|
|
2210
2223
|
- id: key-themes
|
|
2211
2224
|
title: "Key Themes Identified:"
|
|
@@ -2330,7 +2343,7 @@ sections:
|
|
|
2330
2343
|
- id: footer
|
|
2331
2344
|
content: |
|
|
2332
2345
|
---
|
|
2333
|
-
|
|
2346
|
+
|
|
2334
2347
|
*Session facilitated using the BMAD-METHOD brainstorming framework*
|
|
2335
2348
|
==================== END: .bmad-2d-phaser-game-dev/templates/brainstorming-output-tmpl.yaml ====================
|
|
2336
2349
|
|
|
@@ -3332,7 +3345,7 @@ sections:
|
|
|
3332
3345
|
- id: initial-setup
|
|
3333
3346
|
instruction: |
|
|
3334
3347
|
This template creates a comprehensive Game Design Document that will serve as the foundation for all game development work. The GDD should be detailed enough that developers can create user stories and epics from it. Focus on gameplay systems, mechanics, and technical requirements that can be broken down into implementable features.
|
|
3335
|
-
|
|
3348
|
+
|
|
3336
3349
|
If available, review any provided documents or ask if any are optionally available: Project Brief, Market Research, Competitive Analysis
|
|
3337
3350
|
|
|
3338
3351
|
- id: executive-summary
|
|
@@ -3377,7 +3390,7 @@ sections:
|
|
|
3377
3390
|
instruction: Define the 30-60 second loop that players will repeat. Be specific about timing and player actions.
|
|
3378
3391
|
template: |
|
|
3379
3392
|
**Primary Loop ({{duration}} seconds):**
|
|
3380
|
-
|
|
3393
|
+
|
|
3381
3394
|
1. {{action_1}} ({{time_1}}s)
|
|
3382
3395
|
2. {{action_2}} ({{time_2}}s)
|
|
3383
3396
|
3. {{action_3}} ({{time_3}}s)
|
|
@@ -3387,12 +3400,12 @@ sections:
|
|
|
3387
3400
|
instruction: Clearly define success and failure states
|
|
3388
3401
|
template: |
|
|
3389
3402
|
**Victory Conditions:**
|
|
3390
|
-
|
|
3403
|
+
|
|
3391
3404
|
- {{win_condition_1}}
|
|
3392
3405
|
- {{win_condition_2}}
|
|
3393
|
-
|
|
3406
|
+
|
|
3394
3407
|
**Failure States:**
|
|
3395
|
-
|
|
3408
|
+
|
|
3396
3409
|
- {{loss_condition_1}}
|
|
3397
3410
|
- {{loss_condition_2}}
|
|
3398
3411
|
|
|
@@ -3408,17 +3421,17 @@ sections:
|
|
|
3408
3421
|
title: "{{mechanic_name}}"
|
|
3409
3422
|
template: |
|
|
3410
3423
|
**Description:** {{detailed_description}}
|
|
3411
|
-
|
|
3424
|
+
|
|
3412
3425
|
**Player Input:** {{input_method}}
|
|
3413
|
-
|
|
3426
|
+
|
|
3414
3427
|
**System Response:** {{game_response}}
|
|
3415
|
-
|
|
3428
|
+
|
|
3416
3429
|
**Implementation Notes:**
|
|
3417
|
-
|
|
3430
|
+
|
|
3418
3431
|
- {{tech_requirement_1}}
|
|
3419
3432
|
- {{tech_requirement_2}}
|
|
3420
3433
|
- {{performance_consideration}}
|
|
3421
|
-
|
|
3434
|
+
|
|
3422
3435
|
**Dependencies:** {{other_mechanics_needed}}
|
|
3423
3436
|
- id: controls
|
|
3424
3437
|
title: Controls
|
|
@@ -3437,9 +3450,9 @@ sections:
|
|
|
3437
3450
|
title: Player Progression
|
|
3438
3451
|
template: |
|
|
3439
3452
|
**Progression Type:** {{linear|branching|metroidvania}}
|
|
3440
|
-
|
|
3453
|
+
|
|
3441
3454
|
**Key Milestones:**
|
|
3442
|
-
|
|
3455
|
+
|
|
3443
3456
|
1. **{{milestone_1}}** - {{unlock_description}}
|
|
3444
3457
|
2. **{{milestone_2}}** - {{unlock_description}}
|
|
3445
3458
|
3. **{{milestone_3}}** - {{unlock_description}}
|
|
@@ -3476,9 +3489,9 @@ sections:
|
|
|
3476
3489
|
**Duration:** {{target_time}}
|
|
3477
3490
|
**Key Elements:** {{required_mechanics}}
|
|
3478
3491
|
**Difficulty:** {{relative_difficulty}}
|
|
3479
|
-
|
|
3492
|
+
|
|
3480
3493
|
**Structure Template:**
|
|
3481
|
-
|
|
3494
|
+
|
|
3482
3495
|
- Introduction: {{intro_description}}
|
|
3483
3496
|
- Challenge: {{main_challenge}}
|
|
3484
3497
|
- Resolution: {{completion_requirement}}
|
|
@@ -3504,13 +3517,13 @@ sections:
|
|
|
3504
3517
|
title: Platform Specific
|
|
3505
3518
|
template: |
|
|
3506
3519
|
**Desktop:**
|
|
3507
|
-
|
|
3520
|
+
|
|
3508
3521
|
- Resolution: {{min_resolution}} - {{max_resolution}}
|
|
3509
3522
|
- Input: Keyboard, Mouse, Gamepad
|
|
3510
3523
|
- Browser: Chrome 80+, Firefox 75+, Safari 13+
|
|
3511
|
-
|
|
3524
|
+
|
|
3512
3525
|
**Mobile:**
|
|
3513
|
-
|
|
3526
|
+
|
|
3514
3527
|
- Resolution: {{mobile_min}} - {{mobile_max}}
|
|
3515
3528
|
- Input: Touch, Tilt (optional)
|
|
3516
3529
|
- OS: iOS 13+, Android 8+
|
|
@@ -3519,14 +3532,14 @@ sections:
|
|
|
3519
3532
|
instruction: Define asset specifications for the art and audio teams
|
|
3520
3533
|
template: |
|
|
3521
3534
|
**Visual Assets:**
|
|
3522
|
-
|
|
3535
|
+
|
|
3523
3536
|
- Art Style: {{style_description}}
|
|
3524
3537
|
- Color Palette: {{color_specification}}
|
|
3525
3538
|
- Animation: {{animation_requirements}}
|
|
3526
3539
|
- UI Resolution: {{ui_specs}}
|
|
3527
|
-
|
|
3540
|
+
|
|
3528
3541
|
**Audio Assets:**
|
|
3529
|
-
|
|
3542
|
+
|
|
3530
3543
|
- Music Style: {{music_genre}}
|
|
3531
3544
|
- Sound Effects: {{sfx_requirements}}
|
|
3532
3545
|
- Voice Acting: {{voice_needs}}
|
|
@@ -3539,7 +3552,7 @@ sections:
|
|
|
3539
3552
|
title: Engine Configuration
|
|
3540
3553
|
template: |
|
|
3541
3554
|
**Phaser 3 Setup:**
|
|
3542
|
-
|
|
3555
|
+
|
|
3543
3556
|
- TypeScript: Strict mode enabled
|
|
3544
3557
|
- Physics: {{physics_system}} (Arcade/Matter)
|
|
3545
3558
|
- Renderer: WebGL with Canvas fallback
|
|
@@ -3548,7 +3561,7 @@ sections:
|
|
|
3548
3561
|
title: Code Architecture
|
|
3549
3562
|
template: |
|
|
3550
3563
|
**Required Systems:**
|
|
3551
|
-
|
|
3564
|
+
|
|
3552
3565
|
- Scene Management
|
|
3553
3566
|
- State Management
|
|
3554
3567
|
- Asset Loading
|
|
@@ -3560,7 +3573,7 @@ sections:
|
|
|
3560
3573
|
title: Data Management
|
|
3561
3574
|
template: |
|
|
3562
3575
|
**Save Data:**
|
|
3563
|
-
|
|
3576
|
+
|
|
3564
3577
|
- Progress tracking
|
|
3565
3578
|
- Settings persistence
|
|
3566
3579
|
- Statistics collection
|
|
@@ -3678,7 +3691,7 @@ sections:
|
|
|
3678
3691
|
- id: initial-setup
|
|
3679
3692
|
instruction: |
|
|
3680
3693
|
This template creates comprehensive level design documentation that guides both content creation and technical implementation. This document should provide enough detail for developers to create level loading systems and for designers to create specific levels.
|
|
3681
|
-
|
|
3694
|
+
|
|
3682
3695
|
If available, review: Game Design Document (GDD), Game Architecture Document. This document should align with the game mechanics and technical systems defined in those documents.
|
|
3683
3696
|
|
|
3684
3697
|
- id: introduction
|
|
@@ -3686,7 +3699,7 @@ sections:
|
|
|
3686
3699
|
instruction: Establish the purpose and scope of level design for this game
|
|
3687
3700
|
content: |
|
|
3688
3701
|
This document defines the level design framework for {{game_title}}, providing guidelines for creating engaging, balanced levels that support the core gameplay mechanics defined in the Game Design Document.
|
|
3689
|
-
|
|
3702
|
+
|
|
3690
3703
|
This framework ensures consistency across all levels while providing flexibility for creative level design within established technical and design constraints.
|
|
3691
3704
|
sections:
|
|
3692
3705
|
- id: change-log
|
|
@@ -3733,29 +3746,29 @@ sections:
|
|
|
3733
3746
|
title: "{{category_name}} Levels"
|
|
3734
3747
|
template: |
|
|
3735
3748
|
**Purpose:** {{gameplay_purpose}}
|
|
3736
|
-
|
|
3749
|
+
|
|
3737
3750
|
**Target Duration:** {{min_time}} - {{max_time}} minutes
|
|
3738
|
-
|
|
3751
|
+
|
|
3739
3752
|
**Difficulty Range:** {{difficulty_scale}}
|
|
3740
|
-
|
|
3753
|
+
|
|
3741
3754
|
**Key Mechanics Featured:**
|
|
3742
|
-
|
|
3755
|
+
|
|
3743
3756
|
- {{mechanic_1}} - {{usage_description}}
|
|
3744
3757
|
- {{mechanic_2}} - {{usage_description}}
|
|
3745
|
-
|
|
3758
|
+
|
|
3746
3759
|
**Player Objectives:**
|
|
3747
|
-
|
|
3760
|
+
|
|
3748
3761
|
- Primary: {{primary_objective}}
|
|
3749
3762
|
- Secondary: {{secondary_objective}}
|
|
3750
3763
|
- Hidden: {{secret_objective}}
|
|
3751
|
-
|
|
3764
|
+
|
|
3752
3765
|
**Success Criteria:**
|
|
3753
|
-
|
|
3766
|
+
|
|
3754
3767
|
- {{completion_requirement_1}}
|
|
3755
3768
|
- {{completion_requirement_2}}
|
|
3756
|
-
|
|
3769
|
+
|
|
3757
3770
|
**Technical Requirements:**
|
|
3758
|
-
|
|
3771
|
+
|
|
3759
3772
|
- Maximum entities: {{entity_limit}}
|
|
3760
3773
|
- Performance target: {{fps_target}} FPS
|
|
3761
3774
|
- Memory budget: {{memory_limit}}MB
|
|
@@ -3770,11 +3783,11 @@ sections:
|
|
|
3770
3783
|
instruction: Based on GDD requirements, define the overall level organization
|
|
3771
3784
|
template: |
|
|
3772
3785
|
**Organization Type:** {{linear|hub_world|open_world}}
|
|
3773
|
-
|
|
3786
|
+
|
|
3774
3787
|
**Total Level Count:** {{number}}
|
|
3775
|
-
|
|
3788
|
+
|
|
3776
3789
|
**World Breakdown:**
|
|
3777
|
-
|
|
3790
|
+
|
|
3778
3791
|
- World 1: {{level_count}} levels - {{theme}} - {{difficulty_range}}
|
|
3779
3792
|
- World 2: {{level_count}} levels - {{theme}} - {{difficulty_range}}
|
|
3780
3793
|
- World 3: {{level_count}} levels - {{theme}} - {{difficulty_range}}
|
|
@@ -3809,7 +3822,7 @@ sections:
|
|
|
3809
3822
|
instruction: Define how players access new levels
|
|
3810
3823
|
template: |
|
|
3811
3824
|
**Progression Gates:**
|
|
3812
|
-
|
|
3825
|
+
|
|
3813
3826
|
- Linear progression: Complete previous level
|
|
3814
3827
|
- Star requirements: {{star_count}} stars to unlock
|
|
3815
3828
|
- Skill gates: Demonstrate {{skill_requirement}}
|
|
@@ -3824,17 +3837,17 @@ sections:
|
|
|
3824
3837
|
instruction: Define all environmental components that can be used in levels
|
|
3825
3838
|
template: |
|
|
3826
3839
|
**Terrain Types:**
|
|
3827
|
-
|
|
3840
|
+
|
|
3828
3841
|
- {{terrain_1}}: {{properties_and_usage}}
|
|
3829
3842
|
- {{terrain_2}}: {{properties_and_usage}}
|
|
3830
|
-
|
|
3843
|
+
|
|
3831
3844
|
**Interactive Objects:**
|
|
3832
|
-
|
|
3845
|
+
|
|
3833
3846
|
- {{object_1}}: {{behavior_and_purpose}}
|
|
3834
3847
|
- {{object_2}}: {{behavior_and_purpose}}
|
|
3835
|
-
|
|
3848
|
+
|
|
3836
3849
|
**Hazards and Obstacles:**
|
|
3837
|
-
|
|
3850
|
+
|
|
3838
3851
|
- {{hazard_1}}: {{damage_and_behavior}}
|
|
3839
3852
|
- {{hazard_2}}: {{damage_and_behavior}}
|
|
3840
3853
|
- id: collectibles-rewards
|
|
@@ -3842,18 +3855,18 @@ sections:
|
|
|
3842
3855
|
instruction: Define all collectible items and their placement rules
|
|
3843
3856
|
template: |
|
|
3844
3857
|
**Collectible Types:**
|
|
3845
|
-
|
|
3858
|
+
|
|
3846
3859
|
- {{collectible_1}}: {{value_and_purpose}}
|
|
3847
3860
|
- {{collectible_2}}: {{value_and_purpose}}
|
|
3848
|
-
|
|
3861
|
+
|
|
3849
3862
|
**Placement Guidelines:**
|
|
3850
|
-
|
|
3863
|
+
|
|
3851
3864
|
- Mandatory collectibles: {{placement_rules}}
|
|
3852
3865
|
- Optional collectibles: {{placement_rules}}
|
|
3853
3866
|
- Secret collectibles: {{placement_rules}}
|
|
3854
|
-
|
|
3867
|
+
|
|
3855
3868
|
**Reward Distribution:**
|
|
3856
|
-
|
|
3869
|
+
|
|
3857
3870
|
- Easy to find: {{percentage}}%
|
|
3858
3871
|
- Moderate challenge: {{percentage}}%
|
|
3859
3872
|
- High skill required: {{percentage}}%
|
|
@@ -3862,18 +3875,18 @@ sections:
|
|
|
3862
3875
|
instruction: Define how enemies should be placed and balanced in levels
|
|
3863
3876
|
template: |
|
|
3864
3877
|
**Enemy Categories:**
|
|
3865
|
-
|
|
3878
|
+
|
|
3866
3879
|
- {{enemy_type_1}}: {{behavior_and_usage}}
|
|
3867
3880
|
- {{enemy_type_2}}: {{behavior_and_usage}}
|
|
3868
|
-
|
|
3881
|
+
|
|
3869
3882
|
**Placement Principles:**
|
|
3870
|
-
|
|
3883
|
+
|
|
3871
3884
|
- Introduction encounters: {{guideline}}
|
|
3872
3885
|
- Standard encounters: {{guideline}}
|
|
3873
3886
|
- Challenge encounters: {{guideline}}
|
|
3874
|
-
|
|
3887
|
+
|
|
3875
3888
|
**Difficulty Scaling:**
|
|
3876
|
-
|
|
3889
|
+
|
|
3877
3890
|
- Enemy count progression: {{scaling_rule}}
|
|
3878
3891
|
- Enemy type introduction: {{pacing_rule}}
|
|
3879
3892
|
- Encounter complexity: {{complexity_rule}}
|
|
@@ -3886,14 +3899,14 @@ sections:
|
|
|
3886
3899
|
title: Level Layout Principles
|
|
3887
3900
|
template: |
|
|
3888
3901
|
**Spatial Design:**
|
|
3889
|
-
|
|
3902
|
+
|
|
3890
3903
|
- Grid size: {{grid_dimensions}}
|
|
3891
3904
|
- Minimum path width: {{width_units}}
|
|
3892
3905
|
- Maximum vertical distance: {{height_units}}
|
|
3893
3906
|
- Safe zones placement: {{safety_guidelines}}
|
|
3894
|
-
|
|
3907
|
+
|
|
3895
3908
|
**Navigation Design:**
|
|
3896
|
-
|
|
3909
|
+
|
|
3897
3910
|
- Clear path indication: {{visual_cues}}
|
|
3898
3911
|
- Landmark placement: {{landmark_rules}}
|
|
3899
3912
|
- Dead end avoidance: {{dead_end_policy}}
|
|
@@ -3903,13 +3916,13 @@ sections:
|
|
|
3903
3916
|
instruction: Define how to control the rhythm and pace of gameplay within levels
|
|
3904
3917
|
template: |
|
|
3905
3918
|
**Action Sequences:**
|
|
3906
|
-
|
|
3919
|
+
|
|
3907
3920
|
- High intensity duration: {{max_duration}}
|
|
3908
3921
|
- Rest period requirement: {{min_rest_time}}
|
|
3909
3922
|
- Intensity variation: {{pacing_pattern}}
|
|
3910
|
-
|
|
3923
|
+
|
|
3911
3924
|
**Learning Sequences:**
|
|
3912
|
-
|
|
3925
|
+
|
|
3913
3926
|
- New mechanic introduction: {{teaching_method}}
|
|
3914
3927
|
- Practice opportunity: {{practice_duration}}
|
|
3915
3928
|
- Skill application: {{application_context}}
|
|
@@ -3918,14 +3931,14 @@ sections:
|
|
|
3918
3931
|
instruction: Define how to create appropriate challenges for each level type
|
|
3919
3932
|
template: |
|
|
3920
3933
|
**Challenge Types:**
|
|
3921
|
-
|
|
3934
|
+
|
|
3922
3935
|
- Execution challenges: {{skill_requirements}}
|
|
3923
3936
|
- Puzzle challenges: {{complexity_guidelines}}
|
|
3924
3937
|
- Time challenges: {{time_pressure_rules}}
|
|
3925
3938
|
- Resource challenges: {{resource_management}}
|
|
3926
|
-
|
|
3939
|
+
|
|
3927
3940
|
**Difficulty Calibration:**
|
|
3928
|
-
|
|
3941
|
+
|
|
3929
3942
|
- Skill check frequency: {{frequency_guidelines}}
|
|
3930
3943
|
- Failure recovery: {{retry_mechanics}}
|
|
3931
3944
|
- Hint system integration: {{help_system}}
|
|
@@ -3939,7 +3952,7 @@ sections:
|
|
|
3939
3952
|
instruction: Define how level data should be structured for implementation
|
|
3940
3953
|
template: |
|
|
3941
3954
|
**Level File Format:**
|
|
3942
|
-
|
|
3955
|
+
|
|
3943
3956
|
- Data format: {{json|yaml|custom}}
|
|
3944
3957
|
- File naming: `level_{{world}}_{{number}}.{{extension}}`
|
|
3945
3958
|
- Data organization: {{structure_description}}
|
|
@@ -3977,14 +3990,14 @@ sections:
|
|
|
3977
3990
|
instruction: Define how level assets are organized and loaded
|
|
3978
3991
|
template: |
|
|
3979
3992
|
**Tilemap Requirements:**
|
|
3980
|
-
|
|
3993
|
+
|
|
3981
3994
|
- Tile size: {{tile_dimensions}}px
|
|
3982
3995
|
- Tileset organization: {{tileset_structure}}
|
|
3983
3996
|
- Layer organization: {{layer_system}}
|
|
3984
3997
|
- Collision data: {{collision_format}}
|
|
3985
|
-
|
|
3998
|
+
|
|
3986
3999
|
**Audio Integration:**
|
|
3987
|
-
|
|
4000
|
+
|
|
3988
4001
|
- Background music: {{music_requirements}}
|
|
3989
4002
|
- Ambient sounds: {{ambient_system}}
|
|
3990
4003
|
- Dynamic audio: {{dynamic_audio_rules}}
|
|
@@ -3993,19 +4006,19 @@ sections:
|
|
|
3993
4006
|
instruction: Define performance requirements for level systems
|
|
3994
4007
|
template: |
|
|
3995
4008
|
**Entity Limits:**
|
|
3996
|
-
|
|
4009
|
+
|
|
3997
4010
|
- Maximum active entities: {{entity_limit}}
|
|
3998
4011
|
- Maximum particles: {{particle_limit}}
|
|
3999
4012
|
- Maximum audio sources: {{audio_limit}}
|
|
4000
|
-
|
|
4013
|
+
|
|
4001
4014
|
**Memory Management:**
|
|
4002
|
-
|
|
4015
|
+
|
|
4003
4016
|
- Texture memory budget: {{texture_memory}}MB
|
|
4004
4017
|
- Audio memory budget: {{audio_memory}}MB
|
|
4005
4018
|
- Level loading time: <{{load_time}}s
|
|
4006
|
-
|
|
4019
|
+
|
|
4007
4020
|
**Culling and LOD:**
|
|
4008
|
-
|
|
4021
|
+
|
|
4009
4022
|
- Off-screen culling: {{culling_distance}}
|
|
4010
4023
|
- Level-of-detail rules: {{lod_system}}
|
|
4011
4024
|
- Asset streaming: {{streaming_requirements}}
|
|
@@ -4018,13 +4031,13 @@ sections:
|
|
|
4018
4031
|
title: Automated Testing
|
|
4019
4032
|
template: |
|
|
4020
4033
|
**Performance Testing:**
|
|
4021
|
-
|
|
4034
|
+
|
|
4022
4035
|
- Frame rate validation: Maintain {{fps_target}} FPS
|
|
4023
4036
|
- Memory usage monitoring: Stay under {{memory_limit}}MB
|
|
4024
4037
|
- Loading time verification: Complete in <{{load_time}}s
|
|
4025
|
-
|
|
4038
|
+
|
|
4026
4039
|
**Gameplay Testing:**
|
|
4027
|
-
|
|
4040
|
+
|
|
4028
4041
|
- Completion path validation: All objectives achievable
|
|
4029
4042
|
- Collectible accessibility: All items reachable
|
|
4030
4043
|
- Softlock prevention: No unwinnable states
|
|
@@ -4052,14 +4065,14 @@ sections:
|
|
|
4052
4065
|
title: Balance Validation
|
|
4053
4066
|
template: |
|
|
4054
4067
|
**Metrics Collection:**
|
|
4055
|
-
|
|
4068
|
+
|
|
4056
4069
|
- Completion rate: Target {{completion_percentage}}%
|
|
4057
4070
|
- Average completion time: {{target_time}} ± {{variance}}
|
|
4058
4071
|
- Death count per level: <{{max_deaths}}
|
|
4059
4072
|
- Collectible discovery rate: {{discovery_percentage}}%
|
|
4060
|
-
|
|
4073
|
+
|
|
4061
4074
|
**Iteration Guidelines:**
|
|
4062
|
-
|
|
4075
|
+
|
|
4063
4076
|
- Adjustment criteria: {{criteria_for_changes}}
|
|
4064
4077
|
- Testing sample size: {{minimum_testers}}
|
|
4065
4078
|
- Validation period: {{testing_duration}}
|
|
@@ -4072,14 +4085,14 @@ sections:
|
|
|
4072
4085
|
title: Design Phase
|
|
4073
4086
|
template: |
|
|
4074
4087
|
**Concept Development:**
|
|
4075
|
-
|
|
4088
|
+
|
|
4076
4089
|
1. Define level purpose and goals
|
|
4077
4090
|
2. Create rough layout sketch
|
|
4078
4091
|
3. Identify key mechanics and challenges
|
|
4079
4092
|
4. Estimate difficulty and duration
|
|
4080
|
-
|
|
4093
|
+
|
|
4081
4094
|
**Documentation Requirements:**
|
|
4082
|
-
|
|
4095
|
+
|
|
4083
4096
|
- Level design brief
|
|
4084
4097
|
- Layout diagrams
|
|
4085
4098
|
- Mechanic integration notes
|
|
@@ -4088,15 +4101,15 @@ sections:
|
|
|
4088
4101
|
title: Implementation Phase
|
|
4089
4102
|
template: |
|
|
4090
4103
|
**Technical Implementation:**
|
|
4091
|
-
|
|
4104
|
+
|
|
4092
4105
|
1. Create level data file
|
|
4093
4106
|
2. Build tilemap and layout
|
|
4094
4107
|
3. Place entities and objects
|
|
4095
4108
|
4. Configure level logic and triggers
|
|
4096
4109
|
5. Integrate audio and visual effects
|
|
4097
|
-
|
|
4110
|
+
|
|
4098
4111
|
**Quality Assurance:**
|
|
4099
|
-
|
|
4112
|
+
|
|
4100
4113
|
1. Automated testing execution
|
|
4101
4114
|
2. Internal playtesting
|
|
4102
4115
|
3. Performance validation
|
|
@@ -4105,14 +4118,14 @@ sections:
|
|
|
4105
4118
|
title: Integration Phase
|
|
4106
4119
|
template: |
|
|
4107
4120
|
**Game Integration:**
|
|
4108
|
-
|
|
4121
|
+
|
|
4109
4122
|
1. Level progression integration
|
|
4110
4123
|
2. Save system compatibility
|
|
4111
4124
|
3. Analytics integration
|
|
4112
4125
|
4. Achievement system integration
|
|
4113
|
-
|
|
4126
|
+
|
|
4114
4127
|
**Final Validation:**
|
|
4115
|
-
|
|
4128
|
+
|
|
4116
4129
|
1. Full game context testing
|
|
4117
4130
|
2. Performance regression testing
|
|
4118
4131
|
3. Platform compatibility verification
|
|
@@ -4165,7 +4178,7 @@ sections:
|
|
|
4165
4178
|
- id: initial-setup
|
|
4166
4179
|
instruction: |
|
|
4167
4180
|
This template creates a comprehensive game brief that serves as the foundation for all subsequent game development work. The brief should capture the essential vision, scope, and requirements needed to create a detailed Game Design Document.
|
|
4168
|
-
|
|
4181
|
+
|
|
4169
4182
|
This brief is typically created early in the ideation process, often after brainstorming sessions, to crystallize the game concept before moving into detailed design.
|
|
4170
4183
|
|
|
4171
4184
|
- id: game-vision
|
|
@@ -4222,7 +4235,7 @@ sections:
|
|
|
4222
4235
|
repeatable: true
|
|
4223
4236
|
template: |
|
|
4224
4237
|
**Core Mechanic: {{mechanic_name}}**
|
|
4225
|
-
|
|
4238
|
+
|
|
4226
4239
|
- **Description:** {{how_it_works}}
|
|
4227
4240
|
- **Player Value:** {{why_its_fun}}
|
|
4228
4241
|
- **Implementation Scope:** {{complexity_estimate}}
|
|
@@ -4249,12 +4262,12 @@ sections:
|
|
|
4249
4262
|
title: Technical Constraints
|
|
4250
4263
|
template: |
|
|
4251
4264
|
**Platform Requirements:**
|
|
4252
|
-
|
|
4265
|
+
|
|
4253
4266
|
- Primary: {{platform_1}} - {{requirements}}
|
|
4254
4267
|
- Secondary: {{platform_2}} - {{requirements}}
|
|
4255
|
-
|
|
4268
|
+
|
|
4256
4269
|
**Technical Specifications:**
|
|
4257
|
-
|
|
4270
|
+
|
|
4258
4271
|
- Engine: Phaser 3 + TypeScript
|
|
4259
4272
|
- Performance Target: {{fps_target}} FPS on {{target_device}}
|
|
4260
4273
|
- Memory Budget: <{{memory_limit}}MB
|
|
@@ -4292,10 +4305,10 @@ sections:
|
|
|
4292
4305
|
title: Competitive Analysis
|
|
4293
4306
|
template: |
|
|
4294
4307
|
**Direct Competitors:**
|
|
4295
|
-
|
|
4308
|
+
|
|
4296
4309
|
- {{competitor_1}}: {{strengths_and_weaknesses}}
|
|
4297
4310
|
- {{competitor_2}}: {{strengths_and_weaknesses}}
|
|
4298
|
-
|
|
4311
|
+
|
|
4299
4312
|
**Differentiation Strategy:**
|
|
4300
4313
|
{{how_we_differ_and_why_thats_valuable}}
|
|
4301
4314
|
- id: market-opportunity
|
|
@@ -4319,16 +4332,16 @@ sections:
|
|
|
4319
4332
|
title: Content Categories
|
|
4320
4333
|
template: |
|
|
4321
4334
|
**Core Content:**
|
|
4322
|
-
|
|
4335
|
+
|
|
4323
4336
|
- {{content_type_1}}: {{quantity_and_description}}
|
|
4324
4337
|
- {{content_type_2}}: {{quantity_and_description}}
|
|
4325
|
-
|
|
4338
|
+
|
|
4326
4339
|
**Optional Content:**
|
|
4327
|
-
|
|
4340
|
+
|
|
4328
4341
|
- {{optional_content_type}}: {{quantity_and_description}}
|
|
4329
|
-
|
|
4342
|
+
|
|
4330
4343
|
**Replay Elements:**
|
|
4331
|
-
|
|
4344
|
+
|
|
4332
4345
|
- {{replayability_features}}
|
|
4333
4346
|
- id: difficulty-accessibility
|
|
4334
4347
|
title: Difficulty and Accessibility
|
|
@@ -4395,13 +4408,13 @@ sections:
|
|
|
4395
4408
|
title: Player Experience Metrics
|
|
4396
4409
|
template: |
|
|
4397
4410
|
**Engagement Goals:**
|
|
4398
|
-
|
|
4411
|
+
|
|
4399
4412
|
- Tutorial completion rate: >{{percentage}}%
|
|
4400
4413
|
- Average session length: {{duration}} minutes
|
|
4401
4414
|
- Player retention: D1 {{d1}}%, D7 {{d7}}%, D30 {{d30}}%
|
|
4402
|
-
|
|
4415
|
+
|
|
4403
4416
|
**Quality Benchmarks:**
|
|
4404
|
-
|
|
4417
|
+
|
|
4405
4418
|
- Player satisfaction: >{{rating}}/10
|
|
4406
4419
|
- Completion rate: >{{percentage}}%
|
|
4407
4420
|
- Technical performance: {{fps_target}} FPS consistent
|
|
@@ -4409,13 +4422,13 @@ sections:
|
|
|
4409
4422
|
title: Development Metrics
|
|
4410
4423
|
template: |
|
|
4411
4424
|
**Technical Targets:**
|
|
4412
|
-
|
|
4425
|
+
|
|
4413
4426
|
- Zero critical bugs at launch
|
|
4414
4427
|
- Performance targets met on all platforms
|
|
4415
4428
|
- Load times under {{seconds}}s
|
|
4416
|
-
|
|
4429
|
+
|
|
4417
4430
|
**Process Goals:**
|
|
4418
|
-
|
|
4431
|
+
|
|
4419
4432
|
- Development timeline adherence
|
|
4420
4433
|
- Feature scope completion
|
|
4421
4434
|
- Quality assurance standards
|
|
@@ -4424,7 +4437,7 @@ sections:
|
|
|
4424
4437
|
condition: has_business_goals
|
|
4425
4438
|
template: |
|
|
4426
4439
|
**Commercial Goals:**
|
|
4427
|
-
|
|
4440
|
+
|
|
4428
4441
|
- {{revenue_target}} in first {{time_period}}
|
|
4429
4442
|
- {{user_acquisition_target}} players in first {{time_period}}
|
|
4430
4443
|
- {{retention_target}} monthly active users
|
|
@@ -4477,12 +4490,12 @@ sections:
|
|
|
4477
4490
|
title: Validation Plan
|
|
4478
4491
|
template: |
|
|
4479
4492
|
**Concept Testing:**
|
|
4480
|
-
|
|
4493
|
+
|
|
4481
4494
|
- {{validation_method_1}} - {{timeline}}
|
|
4482
4495
|
- {{validation_method_2}} - {{timeline}}
|
|
4483
|
-
|
|
4496
|
+
|
|
4484
4497
|
**Prototype Testing:**
|
|
4485
|
-
|
|
4498
|
+
|
|
4486
4499
|
- {{testing_approach}} - {{timeline}}
|
|
4487
4500
|
- {{feedback_collection_method}} - {{timeline}}
|
|
4488
4501
|
|
|
@@ -4728,7 +4741,7 @@ sections:
|
|
|
4728
4741
|
- id: initial-setup
|
|
4729
4742
|
instruction: |
|
|
4730
4743
|
This template creates a comprehensive game architecture document specifically for Phaser 3 + TypeScript projects. This should provide the technical foundation for all game development stories and epics.
|
|
4731
|
-
|
|
4744
|
+
|
|
4732
4745
|
If available, review any provided documents: Game Design Document (GDD), Technical Preferences. This architecture should support all game mechanics defined in the GDD.
|
|
4733
4746
|
|
|
4734
4747
|
- id: introduction
|
|
@@ -4736,7 +4749,7 @@ sections:
|
|
|
4736
4749
|
instruction: Establish the document's purpose and scope for game development
|
|
4737
4750
|
content: |
|
|
4738
4751
|
This document outlines the complete technical architecture for {{game_title}}, a 2D game built with Phaser 3 and TypeScript. It serves as the technical foundation for AI-driven game development, ensuring consistency and scalability across all game systems.
|
|
4739
|
-
|
|
4752
|
+
|
|
4740
4753
|
This architecture is designed to support the gameplay mechanics defined in the Game Design Document while maintaining 60 FPS performance and cross-platform compatibility.
|
|
4741
4754
|
sections:
|
|
4742
4755
|
- id: change-log
|
|
@@ -4755,7 +4768,7 @@ sections:
|
|
|
4755
4768
|
title: Architecture Summary
|
|
4756
4769
|
instruction: |
|
|
4757
4770
|
Provide a comprehensive overview covering:
|
|
4758
|
-
|
|
4771
|
+
|
|
4759
4772
|
- Game engine choice and configuration
|
|
4760
4773
|
- Project structure and organization
|
|
4761
4774
|
- Key systems and their interactions
|
|
@@ -4843,23 +4856,23 @@ sections:
|
|
|
4843
4856
|
title: Scene Management System
|
|
4844
4857
|
template: |
|
|
4845
4858
|
**Purpose:** Handle game flow and scene transitions
|
|
4846
|
-
|
|
4859
|
+
|
|
4847
4860
|
**Key Components:**
|
|
4848
|
-
|
|
4861
|
+
|
|
4849
4862
|
- Scene loading and unloading
|
|
4850
4863
|
- Data passing between scenes
|
|
4851
4864
|
- Transition effects
|
|
4852
4865
|
- Memory management
|
|
4853
|
-
|
|
4866
|
+
|
|
4854
4867
|
**Implementation Requirements:**
|
|
4855
|
-
|
|
4868
|
+
|
|
4856
4869
|
- Preload scene for asset loading
|
|
4857
4870
|
- Menu system with navigation
|
|
4858
4871
|
- Gameplay scenes with state management
|
|
4859
4872
|
- Pause/resume functionality
|
|
4860
|
-
|
|
4873
|
+
|
|
4861
4874
|
**Files to Create:**
|
|
4862
|
-
|
|
4875
|
+
|
|
4863
4876
|
- `src/scenes/BootScene.ts`
|
|
4864
4877
|
- `src/scenes/PreloadScene.ts`
|
|
4865
4878
|
- `src/scenes/MenuScene.ts`
|
|
@@ -4869,23 +4882,23 @@ sections:
|
|
|
4869
4882
|
title: Game State Management
|
|
4870
4883
|
template: |
|
|
4871
4884
|
**Purpose:** Track player progress and game status
|
|
4872
|
-
|
|
4885
|
+
|
|
4873
4886
|
**State Categories:**
|
|
4874
|
-
|
|
4887
|
+
|
|
4875
4888
|
- Player progress (levels, unlocks)
|
|
4876
4889
|
- Game settings (audio, controls)
|
|
4877
4890
|
- Session data (current level, score)
|
|
4878
4891
|
- Persistent data (achievements, statistics)
|
|
4879
|
-
|
|
4892
|
+
|
|
4880
4893
|
**Implementation Requirements:**
|
|
4881
|
-
|
|
4894
|
+
|
|
4882
4895
|
- Save/load system with localStorage
|
|
4883
4896
|
- State validation and error recovery
|
|
4884
4897
|
- Cross-session data persistence
|
|
4885
4898
|
- Settings management
|
|
4886
|
-
|
|
4899
|
+
|
|
4887
4900
|
**Files to Create:**
|
|
4888
|
-
|
|
4901
|
+
|
|
4889
4902
|
- `src/systems/GameState.ts`
|
|
4890
4903
|
- `src/systems/SaveManager.ts`
|
|
4891
4904
|
- `src/types/GameData.ts`
|
|
@@ -4893,23 +4906,23 @@ sections:
|
|
|
4893
4906
|
title: Asset Management System
|
|
4894
4907
|
template: |
|
|
4895
4908
|
**Purpose:** Efficient loading and management of game assets
|
|
4896
|
-
|
|
4909
|
+
|
|
4897
4910
|
**Asset Categories:**
|
|
4898
|
-
|
|
4911
|
+
|
|
4899
4912
|
- Sprite sheets and animations
|
|
4900
4913
|
- Audio files and music
|
|
4901
4914
|
- Level data and configurations
|
|
4902
4915
|
- UI assets and fonts
|
|
4903
|
-
|
|
4916
|
+
|
|
4904
4917
|
**Implementation Requirements:**
|
|
4905
|
-
|
|
4918
|
+
|
|
4906
4919
|
- Progressive loading strategy
|
|
4907
4920
|
- Asset caching and optimization
|
|
4908
4921
|
- Error handling for failed loads
|
|
4909
4922
|
- Memory management for large assets
|
|
4910
|
-
|
|
4923
|
+
|
|
4911
4924
|
**Files to Create:**
|
|
4912
|
-
|
|
4925
|
+
|
|
4913
4926
|
- `src/systems/AssetManager.ts`
|
|
4914
4927
|
- `src/config/AssetConfig.ts`
|
|
4915
4928
|
- `src/utils/AssetLoader.ts`
|
|
@@ -4917,23 +4930,23 @@ sections:
|
|
|
4917
4930
|
title: Input Management System
|
|
4918
4931
|
template: |
|
|
4919
4932
|
**Purpose:** Handle all player input across platforms
|
|
4920
|
-
|
|
4933
|
+
|
|
4921
4934
|
**Input Types:**
|
|
4922
|
-
|
|
4935
|
+
|
|
4923
4936
|
- Keyboard controls
|
|
4924
4937
|
- Mouse/pointer interaction
|
|
4925
4938
|
- Touch gestures (mobile)
|
|
4926
4939
|
- Gamepad support (optional)
|
|
4927
|
-
|
|
4940
|
+
|
|
4928
4941
|
**Implementation Requirements:**
|
|
4929
|
-
|
|
4942
|
+
|
|
4930
4943
|
- Input mapping and configuration
|
|
4931
4944
|
- Touch-friendly mobile controls
|
|
4932
4945
|
- Input buffering for responsive gameplay
|
|
4933
4946
|
- Customizable control schemes
|
|
4934
|
-
|
|
4947
|
+
|
|
4935
4948
|
**Files to Create:**
|
|
4936
|
-
|
|
4949
|
+
|
|
4937
4950
|
- `src/systems/InputManager.ts`
|
|
4938
4951
|
- `src/utils/TouchControls.ts`
|
|
4939
4952
|
- `src/types/InputTypes.ts`
|
|
@@ -4946,19 +4959,19 @@ sections:
|
|
|
4946
4959
|
title: "{{mechanic_name}} System"
|
|
4947
4960
|
template: |
|
|
4948
4961
|
**Purpose:** {{system_purpose}}
|
|
4949
|
-
|
|
4962
|
+
|
|
4950
4963
|
**Core Functionality:**
|
|
4951
|
-
|
|
4964
|
+
|
|
4952
4965
|
- {{feature_1}}
|
|
4953
4966
|
- {{feature_2}}
|
|
4954
4967
|
- {{feature_3}}
|
|
4955
|
-
|
|
4968
|
+
|
|
4956
4969
|
**Dependencies:** {{required_systems}}
|
|
4957
|
-
|
|
4970
|
+
|
|
4958
4971
|
**Performance Considerations:** {{optimization_notes}}
|
|
4959
|
-
|
|
4972
|
+
|
|
4960
4973
|
**Files to Create:**
|
|
4961
|
-
|
|
4974
|
+
|
|
4962
4975
|
- `src/systems/{{system_name}}.ts`
|
|
4963
4976
|
- `src/gameObjects/{{related_object}}.ts`
|
|
4964
4977
|
- `src/types/{{system_types}}.ts`
|
|
@@ -4966,65 +4979,65 @@ sections:
|
|
|
4966
4979
|
title: Physics & Collision System
|
|
4967
4980
|
template: |
|
|
4968
4981
|
**Physics Engine:** {{physics_choice}} (Arcade Physics/Matter.js)
|
|
4969
|
-
|
|
4982
|
+
|
|
4970
4983
|
**Collision Categories:**
|
|
4971
|
-
|
|
4984
|
+
|
|
4972
4985
|
- Player collision
|
|
4973
4986
|
- Enemy interactions
|
|
4974
4987
|
- Environmental objects
|
|
4975
4988
|
- Collectibles and items
|
|
4976
|
-
|
|
4989
|
+
|
|
4977
4990
|
**Implementation Requirements:**
|
|
4978
|
-
|
|
4991
|
+
|
|
4979
4992
|
- Optimized collision detection
|
|
4980
4993
|
- Physics body management
|
|
4981
4994
|
- Collision callbacks and events
|
|
4982
4995
|
- Performance monitoring
|
|
4983
|
-
|
|
4996
|
+
|
|
4984
4997
|
**Files to Create:**
|
|
4985
|
-
|
|
4998
|
+
|
|
4986
4999
|
- `src/systems/PhysicsManager.ts`
|
|
4987
5000
|
- `src/utils/CollisionGroups.ts`
|
|
4988
5001
|
- id: audio-system
|
|
4989
5002
|
title: Audio System
|
|
4990
5003
|
template: |
|
|
4991
5004
|
**Audio Requirements:**
|
|
4992
|
-
|
|
5005
|
+
|
|
4993
5006
|
- Background music with looping
|
|
4994
5007
|
- Sound effects for actions
|
|
4995
5008
|
- Audio settings and volume control
|
|
4996
5009
|
- Mobile audio optimization
|
|
4997
|
-
|
|
5010
|
+
|
|
4998
5011
|
**Implementation Features:**
|
|
4999
|
-
|
|
5012
|
+
|
|
5000
5013
|
- Audio sprite management
|
|
5001
5014
|
- Dynamic music system
|
|
5002
5015
|
- Spatial audio (if applicable)
|
|
5003
5016
|
- Audio pooling for performance
|
|
5004
|
-
|
|
5017
|
+
|
|
5005
5018
|
**Files to Create:**
|
|
5006
|
-
|
|
5019
|
+
|
|
5007
5020
|
- `src/systems/AudioManager.ts`
|
|
5008
5021
|
- `src/config/AudioConfig.ts`
|
|
5009
5022
|
- id: ui-system
|
|
5010
5023
|
title: UI System
|
|
5011
5024
|
template: |
|
|
5012
5025
|
**UI Components:**
|
|
5013
|
-
|
|
5026
|
+
|
|
5014
5027
|
- HUD elements (score, health, etc.)
|
|
5015
5028
|
- Menu navigation
|
|
5016
5029
|
- Modal dialogs
|
|
5017
5030
|
- Settings screens
|
|
5018
|
-
|
|
5031
|
+
|
|
5019
5032
|
**Implementation Requirements:**
|
|
5020
|
-
|
|
5033
|
+
|
|
5021
5034
|
- Responsive layout system
|
|
5022
5035
|
- Touch-friendly interface
|
|
5023
5036
|
- Keyboard navigation support
|
|
5024
5037
|
- Animation and transitions
|
|
5025
|
-
|
|
5038
|
+
|
|
5026
5039
|
**Files to Create:**
|
|
5027
|
-
|
|
5040
|
+
|
|
5028
5041
|
- `src/systems/UIManager.ts`
|
|
5029
5042
|
- `src/gameObjects/UI/`
|
|
5030
5043
|
- `src/types/UITypes.ts`
|
|
@@ -5566,7 +5579,7 @@ interface GameState {
|
|
|
5566
5579
|
interface GameSettings {
|
|
5567
5580
|
musicVolume: number;
|
|
5568
5581
|
sfxVolume: number;
|
|
5569
|
-
difficulty:
|
|
5582
|
+
difficulty: 'easy' | 'normal' | 'hard';
|
|
5570
5583
|
controls: ControlScheme;
|
|
5571
5584
|
}
|
|
5572
5585
|
```
|
|
@@ -5607,12 +5620,12 @@ class GameScene extends Phaser.Scene {
|
|
|
5607
5620
|
private inputManager!: InputManager;
|
|
5608
5621
|
|
|
5609
5622
|
constructor() {
|
|
5610
|
-
super({ key:
|
|
5623
|
+
super({ key: 'GameScene' });
|
|
5611
5624
|
}
|
|
5612
5625
|
|
|
5613
5626
|
preload(): void {
|
|
5614
5627
|
// Load only scene-specific assets
|
|
5615
|
-
this.load.image(
|
|
5628
|
+
this.load.image('player', 'assets/player.png');
|
|
5616
5629
|
}
|
|
5617
5630
|
|
|
5618
5631
|
create(data: SceneData): void {
|
|
@@ -5637,7 +5650,7 @@ class GameScene extends Phaser.Scene {
|
|
|
5637
5650
|
this.inputManager.destroy();
|
|
5638
5651
|
|
|
5639
5652
|
// Remove event listeners
|
|
5640
|
-
this.events.off(
|
|
5653
|
+
this.events.off('*');
|
|
5641
5654
|
}
|
|
5642
5655
|
}
|
|
5643
5656
|
```
|
|
@@ -5646,13 +5659,13 @@ class GameScene extends Phaser.Scene {
|
|
|
5646
5659
|
|
|
5647
5660
|
```typescript
|
|
5648
5661
|
// Proper scene transitions with data
|
|
5649
|
-
this.scene.start(
|
|
5662
|
+
this.scene.start('NextScene', {
|
|
5650
5663
|
playerScore: this.playerScore,
|
|
5651
5664
|
currentLevel: this.currentLevel + 1,
|
|
5652
5665
|
});
|
|
5653
5666
|
|
|
5654
5667
|
// Scene overlays for UI
|
|
5655
|
-
this.scene.launch(
|
|
5668
|
+
this.scene.launch('PauseMenuScene');
|
|
5656
5669
|
this.scene.pause();
|
|
5657
5670
|
```
|
|
5658
5671
|
|
|
@@ -5696,7 +5709,7 @@ class Player extends GameEntity {
|
|
|
5696
5709
|
private health!: HealthComponent;
|
|
5697
5710
|
|
|
5698
5711
|
constructor(scene: Phaser.Scene, x: number, y: number) {
|
|
5699
|
-
super(scene, x, y,
|
|
5712
|
+
super(scene, x, y, 'player');
|
|
5700
5713
|
|
|
5701
5714
|
this.movement = this.addComponent(new MovementComponent(this));
|
|
5702
5715
|
this.health = this.addComponent(new HealthComponent(this, 100));
|
|
@@ -5716,7 +5729,7 @@ class GameManager {
|
|
|
5716
5729
|
|
|
5717
5730
|
constructor(scene: Phaser.Scene) {
|
|
5718
5731
|
if (GameManager.instance) {
|
|
5719
|
-
throw new Error(
|
|
5732
|
+
throw new Error('GameManager already exists!');
|
|
5720
5733
|
}
|
|
5721
5734
|
|
|
5722
5735
|
this.scene = scene;
|
|
@@ -5726,7 +5739,7 @@ class GameManager {
|
|
|
5726
5739
|
|
|
5727
5740
|
static getInstance(): GameManager {
|
|
5728
5741
|
if (!GameManager.instance) {
|
|
5729
|
-
throw new Error(
|
|
5742
|
+
throw new Error('GameManager not initialized!');
|
|
5730
5743
|
}
|
|
5731
5744
|
return GameManager.instance;
|
|
5732
5745
|
}
|
|
@@ -5773,7 +5786,7 @@ class BulletPool {
|
|
|
5773
5786
|
}
|
|
5774
5787
|
|
|
5775
5788
|
// Pool exhausted - create new bullet
|
|
5776
|
-
console.warn(
|
|
5789
|
+
console.warn('Bullet pool exhausted, creating new bullet');
|
|
5777
5790
|
return new Bullet(this.scene, 0, 0);
|
|
5778
5791
|
}
|
|
5779
5792
|
|
|
@@ -5873,14 +5886,12 @@ class InputManager {
|
|
|
5873
5886
|
}
|
|
5874
5887
|
|
|
5875
5888
|
private setupKeyboard(): void {
|
|
5876
|
-
this.keys = this.scene.input.keyboard.addKeys(
|
|
5877
|
-
"W,A,S,D,SPACE,ESC,UP,DOWN,LEFT,RIGHT",
|
|
5878
|
-
);
|
|
5889
|
+
this.keys = this.scene.input.keyboard.addKeys('W,A,S,D,SPACE,ESC,UP,DOWN,LEFT,RIGHT');
|
|
5879
5890
|
}
|
|
5880
5891
|
|
|
5881
5892
|
private setupTouch(): void {
|
|
5882
|
-
this.scene.input.on(
|
|
5883
|
-
this.scene.input.on(
|
|
5893
|
+
this.scene.input.on('pointerdown', this.handlePointerDown, this);
|
|
5894
|
+
this.scene.input.on('pointerup', this.handlePointerUp, this);
|
|
5884
5895
|
}
|
|
5885
5896
|
|
|
5886
5897
|
update(): void {
|
|
@@ -5907,9 +5918,9 @@ class InputManager {
|
|
|
5907
5918
|
class AssetManager {
|
|
5908
5919
|
loadAssets(): Promise<void> {
|
|
5909
5920
|
return new Promise((resolve, reject) => {
|
|
5910
|
-
this.scene.load.on(
|
|
5911
|
-
this.scene.load.on(
|
|
5912
|
-
this.scene.load.on(
|
|
5921
|
+
this.scene.load.on('filecomplete', this.handleFileComplete, this);
|
|
5922
|
+
this.scene.load.on('loaderror', this.handleLoadError, this);
|
|
5923
|
+
this.scene.load.on('complete', () => resolve());
|
|
5913
5924
|
|
|
5914
5925
|
this.scene.load.start();
|
|
5915
5926
|
});
|
|
@@ -5925,8 +5936,8 @@ class AssetManager {
|
|
|
5925
5936
|
private loadFallbackAsset(key: string): void {
|
|
5926
5937
|
// Load placeholder or default assets
|
|
5927
5938
|
switch (key) {
|
|
5928
|
-
case
|
|
5929
|
-
this.scene.load.image(
|
|
5939
|
+
case 'player':
|
|
5940
|
+
this.scene.load.image('player', 'assets/defaults/default-player.png');
|
|
5930
5941
|
break;
|
|
5931
5942
|
default:
|
|
5932
5943
|
console.warn(`No fallback for asset: ${key}`);
|
|
@@ -5953,11 +5964,11 @@ class GameSystem {
|
|
|
5953
5964
|
|
|
5954
5965
|
private attemptRecovery(context: string): void {
|
|
5955
5966
|
switch (context) {
|
|
5956
|
-
case
|
|
5967
|
+
case 'update':
|
|
5957
5968
|
// Reset system state
|
|
5958
5969
|
this.reset();
|
|
5959
5970
|
break;
|
|
5960
|
-
case
|
|
5971
|
+
case 'render':
|
|
5961
5972
|
// Disable visual effects
|
|
5962
5973
|
this.disableEffects();
|
|
5963
5974
|
break;
|
|
@@ -5977,7 +5988,7 @@ class GameSystem {
|
|
|
5977
5988
|
|
|
5978
5989
|
```typescript
|
|
5979
5990
|
// Example test for game mechanics
|
|
5980
|
-
describe(
|
|
5991
|
+
describe('HealthComponent', () => {
|
|
5981
5992
|
let healthComponent: HealthComponent;
|
|
5982
5993
|
|
|
5983
5994
|
beforeEach(() => {
|
|
@@ -5985,18 +5996,18 @@ describe("HealthComponent", () => {
|
|
|
5985
5996
|
healthComponent = new HealthComponent(mockEntity, 100);
|
|
5986
5997
|
});
|
|
5987
5998
|
|
|
5988
|
-
test(
|
|
5999
|
+
test('should initialize with correct health', () => {
|
|
5989
6000
|
expect(healthComponent.currentHealth).toBe(100);
|
|
5990
6001
|
expect(healthComponent.maxHealth).toBe(100);
|
|
5991
6002
|
});
|
|
5992
6003
|
|
|
5993
|
-
test(
|
|
6004
|
+
test('should handle damage correctly', () => {
|
|
5994
6005
|
healthComponent.takeDamage(25);
|
|
5995
6006
|
expect(healthComponent.currentHealth).toBe(75);
|
|
5996
6007
|
expect(healthComponent.isAlive()).toBe(true);
|
|
5997
6008
|
});
|
|
5998
6009
|
|
|
5999
|
-
test(
|
|
6010
|
+
test('should handle death correctly', () => {
|
|
6000
6011
|
healthComponent.takeDamage(150);
|
|
6001
6012
|
expect(healthComponent.currentHealth).toBe(0);
|
|
6002
6013
|
expect(healthComponent.isAlive()).toBe(false);
|
|
@@ -6009,7 +6020,7 @@ describe("HealthComponent", () => {
|
|
|
6009
6020
|
**Scene Testing:**
|
|
6010
6021
|
|
|
6011
6022
|
```typescript
|
|
6012
|
-
describe(
|
|
6023
|
+
describe('GameScene Integration', () => {
|
|
6013
6024
|
let scene: GameScene;
|
|
6014
6025
|
let mockGame: Phaser.Game;
|
|
6015
6026
|
|
|
@@ -6019,7 +6030,7 @@ describe("GameScene Integration", () => {
|
|
|
6019
6030
|
scene = new GameScene();
|
|
6020
6031
|
});
|
|
6021
6032
|
|
|
6022
|
-
test(
|
|
6033
|
+
test('should initialize all systems', () => {
|
|
6023
6034
|
scene.create({});
|
|
6024
6035
|
|
|
6025
6036
|
expect(scene.gameManager).toBeDefined();
|
|
@@ -6378,13 +6389,13 @@ sections:
|
|
|
6378
6389
|
- id: initial-setup
|
|
6379
6390
|
instruction: |
|
|
6380
6391
|
This template creates detailed game development stories that are immediately actionable by game developers. Each story should focus on a single, implementable feature that contributes to the overall game functionality.
|
|
6381
|
-
|
|
6392
|
+
|
|
6382
6393
|
Before starting, ensure you have access to:
|
|
6383
|
-
|
|
6394
|
+
|
|
6384
6395
|
- Game Design Document (GDD)
|
|
6385
6396
|
- Game Architecture Document
|
|
6386
6397
|
- Any existing stories in this epic
|
|
6387
|
-
|
|
6398
|
+
|
|
6388
6399
|
The story should be specific enough that a developer can implement it without requiring additional design decisions.
|
|
6389
6400
|
|
|
6390
6401
|
- id: story-header
|
|
@@ -6433,12 +6444,12 @@ sections:
|
|
|
6433
6444
|
title: Files to Create/Modify
|
|
6434
6445
|
template: |
|
|
6435
6446
|
**New Files:**
|
|
6436
|
-
|
|
6447
|
+
|
|
6437
6448
|
- `{{file_path_1}}` - {{purpose}}
|
|
6438
6449
|
- `{{file_path_2}}` - {{purpose}}
|
|
6439
|
-
|
|
6450
|
+
|
|
6440
6451
|
**Modified Files:**
|
|
6441
|
-
|
|
6452
|
+
|
|
6442
6453
|
- `{{existing_file_1}}` - {{changes_needed}}
|
|
6443
6454
|
- `{{existing_file_2}}` - {{changes_needed}}
|
|
6444
6455
|
- id: class-interface-definitions
|
|
@@ -6453,15 +6464,15 @@ sections:
|
|
|
6453
6464
|
{{property_2}}: {{type}};
|
|
6454
6465
|
{{method_1}}({{params}}): {{return_type}};
|
|
6455
6466
|
}
|
|
6456
|
-
|
|
6467
|
+
|
|
6457
6468
|
// {{class_name}}
|
|
6458
6469
|
class {{class_name}} extends {{phaser_class}} {
|
|
6459
6470
|
private {{property}}: {{type}};
|
|
6460
|
-
|
|
6471
|
+
|
|
6461
6472
|
constructor({{params}}) {
|
|
6462
6473
|
// Implementation requirements
|
|
6463
6474
|
}
|
|
6464
|
-
|
|
6475
|
+
|
|
6465
6476
|
public {{method}}({{params}}): {{return_type}} {
|
|
6466
6477
|
// Method requirements
|
|
6467
6478
|
}
|
|
@@ -6471,15 +6482,15 @@ sections:
|
|
|
6471
6482
|
instruction: Specify how this feature integrates with existing systems
|
|
6472
6483
|
template: |
|
|
6473
6484
|
**Scene Integration:**
|
|
6474
|
-
|
|
6485
|
+
|
|
6475
6486
|
- {{scene_name}}: {{integration_details}}
|
|
6476
|
-
|
|
6487
|
+
|
|
6477
6488
|
**System Dependencies:**
|
|
6478
|
-
|
|
6489
|
+
|
|
6479
6490
|
- {{system_name}}: {{dependency_description}}
|
|
6480
|
-
|
|
6491
|
+
|
|
6481
6492
|
**Event Communication:**
|
|
6482
|
-
|
|
6493
|
+
|
|
6483
6494
|
- Emits: `{{event_name}}` when {{condition}}
|
|
6484
6495
|
- Listens: `{{event_name}}` to {{response}}
|
|
6485
6496
|
|
|
@@ -6491,7 +6502,7 @@ sections:
|
|
|
6491
6502
|
title: Dev Agent Record
|
|
6492
6503
|
template: |
|
|
6493
6504
|
**Tasks:**
|
|
6494
|
-
|
|
6505
|
+
|
|
6495
6506
|
- [ ] {{task_1_description}}
|
|
6496
6507
|
- [ ] {{task_2_description}}
|
|
6497
6508
|
- [ ] {{task_3_description}}
|
|
@@ -6499,18 +6510,18 @@ sections:
|
|
|
6499
6510
|
- [ ] Write unit tests for {{component}}
|
|
6500
6511
|
- [ ] Integration testing with {{related_system}}
|
|
6501
6512
|
- [ ] Performance testing and optimization
|
|
6502
|
-
|
|
6513
|
+
|
|
6503
6514
|
**Debug Log:**
|
|
6504
6515
|
| Task | File | Change | Reverted? |
|
|
6505
6516
|
|------|------|--------|-----------|
|
|
6506
6517
|
| | | | |
|
|
6507
|
-
|
|
6518
|
+
|
|
6508
6519
|
**Completion Notes:**
|
|
6509
|
-
|
|
6520
|
+
|
|
6510
6521
|
<!-- Only note deviations from requirements, keep under 50 words -->
|
|
6511
|
-
|
|
6522
|
+
|
|
6512
6523
|
**Change Log:**
|
|
6513
|
-
|
|
6524
|
+
|
|
6514
6525
|
<!-- Only requirement changes during implementation -->
|
|
6515
6526
|
|
|
6516
6527
|
- id: game-design-context
|
|
@@ -6518,13 +6529,13 @@ sections:
|
|
|
6518
6529
|
instruction: Reference the specific sections of the GDD that this story implements
|
|
6519
6530
|
template: |
|
|
6520
6531
|
**GDD Reference:** {{section_name}} ({{page_or_section_number}})
|
|
6521
|
-
|
|
6532
|
+
|
|
6522
6533
|
**Game Mechanic:** {{mechanic_name}}
|
|
6523
|
-
|
|
6534
|
+
|
|
6524
6535
|
**Player Experience Goal:** {{experience_description}}
|
|
6525
|
-
|
|
6536
|
+
|
|
6526
6537
|
**Balance Parameters:**
|
|
6527
|
-
|
|
6538
|
+
|
|
6528
6539
|
- {{parameter_1}}: {{value_or_range}}
|
|
6529
6540
|
- {{parameter_2}}: {{value_or_range}}
|
|
6530
6541
|
|
|
@@ -6536,11 +6547,11 @@ sections:
|
|
|
6536
6547
|
title: Unit Tests
|
|
6537
6548
|
template: |
|
|
6538
6549
|
**Test Files:**
|
|
6539
|
-
|
|
6550
|
+
|
|
6540
6551
|
- `tests/{{component_name}}.test.ts`
|
|
6541
|
-
|
|
6552
|
+
|
|
6542
6553
|
**Test Scenarios:**
|
|
6543
|
-
|
|
6554
|
+
|
|
6544
6555
|
- {{test_scenario_1}}
|
|
6545
6556
|
- {{test_scenario_2}}
|
|
6546
6557
|
- {{edge_case_test}}
|
|
@@ -6548,12 +6559,12 @@ sections:
|
|
|
6548
6559
|
title: Game Testing
|
|
6549
6560
|
template: |
|
|
6550
6561
|
**Manual Test Cases:**
|
|
6551
|
-
|
|
6562
|
+
|
|
6552
6563
|
1. {{test_case_1_description}}
|
|
6553
|
-
|
|
6564
|
+
|
|
6554
6565
|
- Expected: {{expected_behavior}}
|
|
6555
6566
|
- Performance: {{performance_expectation}}
|
|
6556
|
-
|
|
6567
|
+
|
|
6557
6568
|
2. {{test_case_2_description}}
|
|
6558
6569
|
- Expected: {{expected_behavior}}
|
|
6559
6570
|
- Edge Case: {{edge_case_handling}}
|
|
@@ -6561,7 +6572,7 @@ sections:
|
|
|
6561
6572
|
title: Performance Tests
|
|
6562
6573
|
template: |
|
|
6563
6574
|
**Metrics to Verify:**
|
|
6564
|
-
|
|
6575
|
+
|
|
6565
6576
|
- Frame rate maintains {{fps_target}} FPS
|
|
6566
6577
|
- Memory usage stays under {{memory_limit}}MB
|
|
6567
6578
|
- {{feature_specific_performance_metric}}
|
|
@@ -6571,15 +6582,15 @@ sections:
|
|
|
6571
6582
|
instruction: List any dependencies that must be completed before this story can be implemented
|
|
6572
6583
|
template: |
|
|
6573
6584
|
**Story Dependencies:**
|
|
6574
|
-
|
|
6585
|
+
|
|
6575
6586
|
- {{story_id}}: {{dependency_description}}
|
|
6576
|
-
|
|
6587
|
+
|
|
6577
6588
|
**Technical Dependencies:**
|
|
6578
|
-
|
|
6589
|
+
|
|
6579
6590
|
- {{system_or_file}}: {{requirement}}
|
|
6580
|
-
|
|
6591
|
+
|
|
6581
6592
|
**Asset Dependencies:**
|
|
6582
|
-
|
|
6593
|
+
|
|
6583
6594
|
- {{asset_type}}: {{asset_description}}
|
|
6584
6595
|
- Location: `{{asset_path}}`
|
|
6585
6596
|
|
|
@@ -6602,17 +6613,17 @@ sections:
|
|
|
6602
6613
|
instruction: Any additional context, design decisions, or implementation notes
|
|
6603
6614
|
template: |
|
|
6604
6615
|
**Implementation Notes:**
|
|
6605
|
-
|
|
6616
|
+
|
|
6606
6617
|
- {{note_1}}
|
|
6607
6618
|
- {{note_2}}
|
|
6608
|
-
|
|
6619
|
+
|
|
6609
6620
|
**Design Decisions:**
|
|
6610
|
-
|
|
6621
|
+
|
|
6611
6622
|
- {{decision_1}}: {{rationale}}
|
|
6612
6623
|
- {{decision_2}}: {{rationale}}
|
|
6613
|
-
|
|
6624
|
+
|
|
6614
6625
|
**Future Considerations:**
|
|
6615
|
-
|
|
6626
|
+
|
|
6616
6627
|
- {{future_enhancement_1}}
|
|
6617
6628
|
- {{future_optimization_1}}
|
|
6618
6629
|
==================== END: .bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml ====================
|
|
@@ -6634,7 +6645,7 @@ sections:
|
|
|
6634
6645
|
- id: initial-setup
|
|
6635
6646
|
instruction: |
|
|
6636
6647
|
This template creates a comprehensive game architecture document specifically for Phaser 3 + TypeScript projects. This should provide the technical foundation for all game development stories and epics.
|
|
6637
|
-
|
|
6648
|
+
|
|
6638
6649
|
If available, review any provided documents: Game Design Document (GDD), Technical Preferences. This architecture should support all game mechanics defined in the GDD.
|
|
6639
6650
|
|
|
6640
6651
|
- id: introduction
|
|
@@ -6642,7 +6653,7 @@ sections:
|
|
|
6642
6653
|
instruction: Establish the document's purpose and scope for game development
|
|
6643
6654
|
content: |
|
|
6644
6655
|
This document outlines the complete technical architecture for {{game_title}}, a 2D game built with Phaser 3 and TypeScript. It serves as the technical foundation for AI-driven game development, ensuring consistency and scalability across all game systems.
|
|
6645
|
-
|
|
6656
|
+
|
|
6646
6657
|
This architecture is designed to support the gameplay mechanics defined in the Game Design Document while maintaining 60 FPS performance and cross-platform compatibility.
|
|
6647
6658
|
sections:
|
|
6648
6659
|
- id: change-log
|
|
@@ -6661,7 +6672,7 @@ sections:
|
|
|
6661
6672
|
title: Architecture Summary
|
|
6662
6673
|
instruction: |
|
|
6663
6674
|
Provide a comprehensive overview covering:
|
|
6664
|
-
|
|
6675
|
+
|
|
6665
6676
|
- Game engine choice and configuration
|
|
6666
6677
|
- Project structure and organization
|
|
6667
6678
|
- Key systems and their interactions
|
|
@@ -6749,23 +6760,23 @@ sections:
|
|
|
6749
6760
|
title: Scene Management System
|
|
6750
6761
|
template: |
|
|
6751
6762
|
**Purpose:** Handle game flow and scene transitions
|
|
6752
|
-
|
|
6763
|
+
|
|
6753
6764
|
**Key Components:**
|
|
6754
|
-
|
|
6765
|
+
|
|
6755
6766
|
- Scene loading and unloading
|
|
6756
6767
|
- Data passing between scenes
|
|
6757
6768
|
- Transition effects
|
|
6758
6769
|
- Memory management
|
|
6759
|
-
|
|
6770
|
+
|
|
6760
6771
|
**Implementation Requirements:**
|
|
6761
|
-
|
|
6772
|
+
|
|
6762
6773
|
- Preload scene for asset loading
|
|
6763
6774
|
- Menu system with navigation
|
|
6764
6775
|
- Gameplay scenes with state management
|
|
6765
6776
|
- Pause/resume functionality
|
|
6766
|
-
|
|
6777
|
+
|
|
6767
6778
|
**Files to Create:**
|
|
6768
|
-
|
|
6779
|
+
|
|
6769
6780
|
- `src/scenes/BootScene.ts`
|
|
6770
6781
|
- `src/scenes/PreloadScene.ts`
|
|
6771
6782
|
- `src/scenes/MenuScene.ts`
|
|
@@ -6775,23 +6786,23 @@ sections:
|
|
|
6775
6786
|
title: Game State Management
|
|
6776
6787
|
template: |
|
|
6777
6788
|
**Purpose:** Track player progress and game status
|
|
6778
|
-
|
|
6789
|
+
|
|
6779
6790
|
**State Categories:**
|
|
6780
|
-
|
|
6791
|
+
|
|
6781
6792
|
- Player progress (levels, unlocks)
|
|
6782
6793
|
- Game settings (audio, controls)
|
|
6783
6794
|
- Session data (current level, score)
|
|
6784
6795
|
- Persistent data (achievements, statistics)
|
|
6785
|
-
|
|
6796
|
+
|
|
6786
6797
|
**Implementation Requirements:**
|
|
6787
|
-
|
|
6798
|
+
|
|
6788
6799
|
- Save/load system with localStorage
|
|
6789
6800
|
- State validation and error recovery
|
|
6790
6801
|
- Cross-session data persistence
|
|
6791
6802
|
- Settings management
|
|
6792
|
-
|
|
6803
|
+
|
|
6793
6804
|
**Files to Create:**
|
|
6794
|
-
|
|
6805
|
+
|
|
6795
6806
|
- `src/systems/GameState.ts`
|
|
6796
6807
|
- `src/systems/SaveManager.ts`
|
|
6797
6808
|
- `src/types/GameData.ts`
|
|
@@ -6799,23 +6810,23 @@ sections:
|
|
|
6799
6810
|
title: Asset Management System
|
|
6800
6811
|
template: |
|
|
6801
6812
|
**Purpose:** Efficient loading and management of game assets
|
|
6802
|
-
|
|
6813
|
+
|
|
6803
6814
|
**Asset Categories:**
|
|
6804
|
-
|
|
6815
|
+
|
|
6805
6816
|
- Sprite sheets and animations
|
|
6806
6817
|
- Audio files and music
|
|
6807
6818
|
- Level data and configurations
|
|
6808
6819
|
- UI assets and fonts
|
|
6809
|
-
|
|
6820
|
+
|
|
6810
6821
|
**Implementation Requirements:**
|
|
6811
|
-
|
|
6822
|
+
|
|
6812
6823
|
- Progressive loading strategy
|
|
6813
6824
|
- Asset caching and optimization
|
|
6814
6825
|
- Error handling for failed loads
|
|
6815
6826
|
- Memory management for large assets
|
|
6816
|
-
|
|
6827
|
+
|
|
6817
6828
|
**Files to Create:**
|
|
6818
|
-
|
|
6829
|
+
|
|
6819
6830
|
- `src/systems/AssetManager.ts`
|
|
6820
6831
|
- `src/config/AssetConfig.ts`
|
|
6821
6832
|
- `src/utils/AssetLoader.ts`
|
|
@@ -6823,23 +6834,23 @@ sections:
|
|
|
6823
6834
|
title: Input Management System
|
|
6824
6835
|
template: |
|
|
6825
6836
|
**Purpose:** Handle all player input across platforms
|
|
6826
|
-
|
|
6837
|
+
|
|
6827
6838
|
**Input Types:**
|
|
6828
|
-
|
|
6839
|
+
|
|
6829
6840
|
- Keyboard controls
|
|
6830
6841
|
- Mouse/pointer interaction
|
|
6831
6842
|
- Touch gestures (mobile)
|
|
6832
6843
|
- Gamepad support (optional)
|
|
6833
|
-
|
|
6844
|
+
|
|
6834
6845
|
**Implementation Requirements:**
|
|
6835
|
-
|
|
6846
|
+
|
|
6836
6847
|
- Input mapping and configuration
|
|
6837
6848
|
- Touch-friendly mobile controls
|
|
6838
6849
|
- Input buffering for responsive gameplay
|
|
6839
6850
|
- Customizable control schemes
|
|
6840
|
-
|
|
6851
|
+
|
|
6841
6852
|
**Files to Create:**
|
|
6842
|
-
|
|
6853
|
+
|
|
6843
6854
|
- `src/systems/InputManager.ts`
|
|
6844
6855
|
- `src/utils/TouchControls.ts`
|
|
6845
6856
|
- `src/types/InputTypes.ts`
|
|
@@ -6852,19 +6863,19 @@ sections:
|
|
|
6852
6863
|
title: "{{mechanic_name}} System"
|
|
6853
6864
|
template: |
|
|
6854
6865
|
**Purpose:** {{system_purpose}}
|
|
6855
|
-
|
|
6866
|
+
|
|
6856
6867
|
**Core Functionality:**
|
|
6857
|
-
|
|
6868
|
+
|
|
6858
6869
|
- {{feature_1}}
|
|
6859
6870
|
- {{feature_2}}
|
|
6860
6871
|
- {{feature_3}}
|
|
6861
|
-
|
|
6872
|
+
|
|
6862
6873
|
**Dependencies:** {{required_systems}}
|
|
6863
|
-
|
|
6874
|
+
|
|
6864
6875
|
**Performance Considerations:** {{optimization_notes}}
|
|
6865
|
-
|
|
6876
|
+
|
|
6866
6877
|
**Files to Create:**
|
|
6867
|
-
|
|
6878
|
+
|
|
6868
6879
|
- `src/systems/{{system_name}}.ts`
|
|
6869
6880
|
- `src/gameObjects/{{related_object}}.ts`
|
|
6870
6881
|
- `src/types/{{system_types}}.ts`
|
|
@@ -6872,65 +6883,65 @@ sections:
|
|
|
6872
6883
|
title: Physics & Collision System
|
|
6873
6884
|
template: |
|
|
6874
6885
|
**Physics Engine:** {{physics_choice}} (Arcade Physics/Matter.js)
|
|
6875
|
-
|
|
6886
|
+
|
|
6876
6887
|
**Collision Categories:**
|
|
6877
|
-
|
|
6888
|
+
|
|
6878
6889
|
- Player collision
|
|
6879
6890
|
- Enemy interactions
|
|
6880
6891
|
- Environmental objects
|
|
6881
6892
|
- Collectibles and items
|
|
6882
|
-
|
|
6893
|
+
|
|
6883
6894
|
**Implementation Requirements:**
|
|
6884
|
-
|
|
6895
|
+
|
|
6885
6896
|
- Optimized collision detection
|
|
6886
6897
|
- Physics body management
|
|
6887
6898
|
- Collision callbacks and events
|
|
6888
6899
|
- Performance monitoring
|
|
6889
|
-
|
|
6900
|
+
|
|
6890
6901
|
**Files to Create:**
|
|
6891
|
-
|
|
6902
|
+
|
|
6892
6903
|
- `src/systems/PhysicsManager.ts`
|
|
6893
6904
|
- `src/utils/CollisionGroups.ts`
|
|
6894
6905
|
- id: audio-system
|
|
6895
6906
|
title: Audio System
|
|
6896
6907
|
template: |
|
|
6897
6908
|
**Audio Requirements:**
|
|
6898
|
-
|
|
6909
|
+
|
|
6899
6910
|
- Background music with looping
|
|
6900
6911
|
- Sound effects for actions
|
|
6901
6912
|
- Audio settings and volume control
|
|
6902
6913
|
- Mobile audio optimization
|
|
6903
|
-
|
|
6914
|
+
|
|
6904
6915
|
**Implementation Features:**
|
|
6905
|
-
|
|
6916
|
+
|
|
6906
6917
|
- Audio sprite management
|
|
6907
6918
|
- Dynamic music system
|
|
6908
6919
|
- Spatial audio (if applicable)
|
|
6909
6920
|
- Audio pooling for performance
|
|
6910
|
-
|
|
6921
|
+
|
|
6911
6922
|
**Files to Create:**
|
|
6912
|
-
|
|
6923
|
+
|
|
6913
6924
|
- `src/systems/AudioManager.ts`
|
|
6914
6925
|
- `src/config/AudioConfig.ts`
|
|
6915
6926
|
- id: ui-system
|
|
6916
6927
|
title: UI System
|
|
6917
6928
|
template: |
|
|
6918
6929
|
**UI Components:**
|
|
6919
|
-
|
|
6930
|
+
|
|
6920
6931
|
- HUD elements (score, health, etc.)
|
|
6921
6932
|
- Menu navigation
|
|
6922
6933
|
- Modal dialogs
|
|
6923
6934
|
- Settings screens
|
|
6924
|
-
|
|
6935
|
+
|
|
6925
6936
|
**Implementation Requirements:**
|
|
6926
|
-
|
|
6937
|
+
|
|
6927
6938
|
- Responsive layout system
|
|
6928
6939
|
- Touch-friendly interface
|
|
6929
6940
|
- Keyboard navigation support
|
|
6930
6941
|
- Animation and transitions
|
|
6931
|
-
|
|
6942
|
+
|
|
6932
6943
|
**Files to Create:**
|
|
6933
|
-
|
|
6944
|
+
|
|
6934
6945
|
- `src/systems/UIManager.ts`
|
|
6935
6946
|
- `src/gameObjects/UI/`
|
|
6936
6947
|
- `src/types/UITypes.ts`
|
|
@@ -7250,7 +7261,7 @@ sections:
|
|
|
7250
7261
|
- id: initial-setup
|
|
7251
7262
|
instruction: |
|
|
7252
7263
|
This template creates a comprehensive game brief that serves as the foundation for all subsequent game development work. The brief should capture the essential vision, scope, and requirements needed to create a detailed Game Design Document.
|
|
7253
|
-
|
|
7264
|
+
|
|
7254
7265
|
This brief is typically created early in the ideation process, often after brainstorming sessions, to crystallize the game concept before moving into detailed design.
|
|
7255
7266
|
|
|
7256
7267
|
- id: game-vision
|
|
@@ -7307,7 +7318,7 @@ sections:
|
|
|
7307
7318
|
repeatable: true
|
|
7308
7319
|
template: |
|
|
7309
7320
|
**Core Mechanic: {{mechanic_name}}**
|
|
7310
|
-
|
|
7321
|
+
|
|
7311
7322
|
- **Description:** {{how_it_works}}
|
|
7312
7323
|
- **Player Value:** {{why_its_fun}}
|
|
7313
7324
|
- **Implementation Scope:** {{complexity_estimate}}
|
|
@@ -7334,12 +7345,12 @@ sections:
|
|
|
7334
7345
|
title: Technical Constraints
|
|
7335
7346
|
template: |
|
|
7336
7347
|
**Platform Requirements:**
|
|
7337
|
-
|
|
7348
|
+
|
|
7338
7349
|
- Primary: {{platform_1}} - {{requirements}}
|
|
7339
7350
|
- Secondary: {{platform_2}} - {{requirements}}
|
|
7340
|
-
|
|
7351
|
+
|
|
7341
7352
|
**Technical Specifications:**
|
|
7342
|
-
|
|
7353
|
+
|
|
7343
7354
|
- Engine: Phaser 3 + TypeScript
|
|
7344
7355
|
- Performance Target: {{fps_target}} FPS on {{target_device}}
|
|
7345
7356
|
- Memory Budget: <{{memory_limit}}MB
|
|
@@ -7377,10 +7388,10 @@ sections:
|
|
|
7377
7388
|
title: Competitive Analysis
|
|
7378
7389
|
template: |
|
|
7379
7390
|
**Direct Competitors:**
|
|
7380
|
-
|
|
7391
|
+
|
|
7381
7392
|
- {{competitor_1}}: {{strengths_and_weaknesses}}
|
|
7382
7393
|
- {{competitor_2}}: {{strengths_and_weaknesses}}
|
|
7383
|
-
|
|
7394
|
+
|
|
7384
7395
|
**Differentiation Strategy:**
|
|
7385
7396
|
{{how_we_differ_and_why_thats_valuable}}
|
|
7386
7397
|
- id: market-opportunity
|
|
@@ -7404,16 +7415,16 @@ sections:
|
|
|
7404
7415
|
title: Content Categories
|
|
7405
7416
|
template: |
|
|
7406
7417
|
**Core Content:**
|
|
7407
|
-
|
|
7418
|
+
|
|
7408
7419
|
- {{content_type_1}}: {{quantity_and_description}}
|
|
7409
7420
|
- {{content_type_2}}: {{quantity_and_description}}
|
|
7410
|
-
|
|
7421
|
+
|
|
7411
7422
|
**Optional Content:**
|
|
7412
|
-
|
|
7423
|
+
|
|
7413
7424
|
- {{optional_content_type}}: {{quantity_and_description}}
|
|
7414
|
-
|
|
7425
|
+
|
|
7415
7426
|
**Replay Elements:**
|
|
7416
|
-
|
|
7427
|
+
|
|
7417
7428
|
- {{replayability_features}}
|
|
7418
7429
|
- id: difficulty-accessibility
|
|
7419
7430
|
title: Difficulty and Accessibility
|
|
@@ -7480,13 +7491,13 @@ sections:
|
|
|
7480
7491
|
title: Player Experience Metrics
|
|
7481
7492
|
template: |
|
|
7482
7493
|
**Engagement Goals:**
|
|
7483
|
-
|
|
7494
|
+
|
|
7484
7495
|
- Tutorial completion rate: >{{percentage}}%
|
|
7485
7496
|
- Average session length: {{duration}} minutes
|
|
7486
7497
|
- Player retention: D1 {{d1}}%, D7 {{d7}}%, D30 {{d30}}%
|
|
7487
|
-
|
|
7498
|
+
|
|
7488
7499
|
**Quality Benchmarks:**
|
|
7489
|
-
|
|
7500
|
+
|
|
7490
7501
|
- Player satisfaction: >{{rating}}/10
|
|
7491
7502
|
- Completion rate: >{{percentage}}%
|
|
7492
7503
|
- Technical performance: {{fps_target}} FPS consistent
|
|
@@ -7494,13 +7505,13 @@ sections:
|
|
|
7494
7505
|
title: Development Metrics
|
|
7495
7506
|
template: |
|
|
7496
7507
|
**Technical Targets:**
|
|
7497
|
-
|
|
7508
|
+
|
|
7498
7509
|
- Zero critical bugs at launch
|
|
7499
7510
|
- Performance targets met on all platforms
|
|
7500
7511
|
- Load times under {{seconds}}s
|
|
7501
|
-
|
|
7512
|
+
|
|
7502
7513
|
**Process Goals:**
|
|
7503
|
-
|
|
7514
|
+
|
|
7504
7515
|
- Development timeline adherence
|
|
7505
7516
|
- Feature scope completion
|
|
7506
7517
|
- Quality assurance standards
|
|
@@ -7509,7 +7520,7 @@ sections:
|
|
|
7509
7520
|
condition: has_business_goals
|
|
7510
7521
|
template: |
|
|
7511
7522
|
**Commercial Goals:**
|
|
7512
|
-
|
|
7523
|
+
|
|
7513
7524
|
- {{revenue_target}} in first {{time_period}}
|
|
7514
7525
|
- {{user_acquisition_target}} players in first {{time_period}}
|
|
7515
7526
|
- {{retention_target}} monthly active users
|
|
@@ -7562,12 +7573,12 @@ sections:
|
|
|
7562
7573
|
title: Validation Plan
|
|
7563
7574
|
template: |
|
|
7564
7575
|
**Concept Testing:**
|
|
7565
|
-
|
|
7576
|
+
|
|
7566
7577
|
- {{validation_method_1}} - {{timeline}}
|
|
7567
7578
|
- {{validation_method_2}} - {{timeline}}
|
|
7568
|
-
|
|
7579
|
+
|
|
7569
7580
|
**Prototype Testing:**
|
|
7570
|
-
|
|
7581
|
+
|
|
7571
7582
|
- {{testing_approach}} - {{timeline}}
|
|
7572
7583
|
- {{feedback_collection_method}} - {{timeline}}
|
|
7573
7584
|
|
|
@@ -7609,7 +7620,7 @@ sections:
|
|
|
7609
7620
|
- id: initial-setup
|
|
7610
7621
|
instruction: |
|
|
7611
7622
|
This template creates a comprehensive Game Design Document that will serve as the foundation for all game development work. The GDD should be detailed enough that developers can create user stories and epics from it. Focus on gameplay systems, mechanics, and technical requirements that can be broken down into implementable features.
|
|
7612
|
-
|
|
7623
|
+
|
|
7613
7624
|
If available, review any provided documents or ask if any are optionally available: Project Brief, Market Research, Competitive Analysis
|
|
7614
7625
|
|
|
7615
7626
|
- id: executive-summary
|
|
@@ -7654,7 +7665,7 @@ sections:
|
|
|
7654
7665
|
instruction: Define the 30-60 second loop that players will repeat. Be specific about timing and player actions.
|
|
7655
7666
|
template: |
|
|
7656
7667
|
**Primary Loop ({{duration}} seconds):**
|
|
7657
|
-
|
|
7668
|
+
|
|
7658
7669
|
1. {{action_1}} ({{time_1}}s)
|
|
7659
7670
|
2. {{action_2}} ({{time_2}}s)
|
|
7660
7671
|
3. {{action_3}} ({{time_3}}s)
|
|
@@ -7664,12 +7675,12 @@ sections:
|
|
|
7664
7675
|
instruction: Clearly define success and failure states
|
|
7665
7676
|
template: |
|
|
7666
7677
|
**Victory Conditions:**
|
|
7667
|
-
|
|
7678
|
+
|
|
7668
7679
|
- {{win_condition_1}}
|
|
7669
7680
|
- {{win_condition_2}}
|
|
7670
|
-
|
|
7681
|
+
|
|
7671
7682
|
**Failure States:**
|
|
7672
|
-
|
|
7683
|
+
|
|
7673
7684
|
- {{loss_condition_1}}
|
|
7674
7685
|
- {{loss_condition_2}}
|
|
7675
7686
|
|
|
@@ -7685,17 +7696,17 @@ sections:
|
|
|
7685
7696
|
title: "{{mechanic_name}}"
|
|
7686
7697
|
template: |
|
|
7687
7698
|
**Description:** {{detailed_description}}
|
|
7688
|
-
|
|
7699
|
+
|
|
7689
7700
|
**Player Input:** {{input_method}}
|
|
7690
|
-
|
|
7701
|
+
|
|
7691
7702
|
**System Response:** {{game_response}}
|
|
7692
|
-
|
|
7703
|
+
|
|
7693
7704
|
**Implementation Notes:**
|
|
7694
|
-
|
|
7705
|
+
|
|
7695
7706
|
- {{tech_requirement_1}}
|
|
7696
7707
|
- {{tech_requirement_2}}
|
|
7697
7708
|
- {{performance_consideration}}
|
|
7698
|
-
|
|
7709
|
+
|
|
7699
7710
|
**Dependencies:** {{other_mechanics_needed}}
|
|
7700
7711
|
- id: controls
|
|
7701
7712
|
title: Controls
|
|
@@ -7714,9 +7725,9 @@ sections:
|
|
|
7714
7725
|
title: Player Progression
|
|
7715
7726
|
template: |
|
|
7716
7727
|
**Progression Type:** {{linear|branching|metroidvania}}
|
|
7717
|
-
|
|
7728
|
+
|
|
7718
7729
|
**Key Milestones:**
|
|
7719
|
-
|
|
7730
|
+
|
|
7720
7731
|
1. **{{milestone_1}}** - {{unlock_description}}
|
|
7721
7732
|
2. **{{milestone_2}}** - {{unlock_description}}
|
|
7722
7733
|
3. **{{milestone_3}}** - {{unlock_description}}
|
|
@@ -7753,9 +7764,9 @@ sections:
|
|
|
7753
7764
|
**Duration:** {{target_time}}
|
|
7754
7765
|
**Key Elements:** {{required_mechanics}}
|
|
7755
7766
|
**Difficulty:** {{relative_difficulty}}
|
|
7756
|
-
|
|
7767
|
+
|
|
7757
7768
|
**Structure Template:**
|
|
7758
|
-
|
|
7769
|
+
|
|
7759
7770
|
- Introduction: {{intro_description}}
|
|
7760
7771
|
- Challenge: {{main_challenge}}
|
|
7761
7772
|
- Resolution: {{completion_requirement}}
|
|
@@ -7781,13 +7792,13 @@ sections:
|
|
|
7781
7792
|
title: Platform Specific
|
|
7782
7793
|
template: |
|
|
7783
7794
|
**Desktop:**
|
|
7784
|
-
|
|
7795
|
+
|
|
7785
7796
|
- Resolution: {{min_resolution}} - {{max_resolution}}
|
|
7786
7797
|
- Input: Keyboard, Mouse, Gamepad
|
|
7787
7798
|
- Browser: Chrome 80+, Firefox 75+, Safari 13+
|
|
7788
|
-
|
|
7799
|
+
|
|
7789
7800
|
**Mobile:**
|
|
7790
|
-
|
|
7801
|
+
|
|
7791
7802
|
- Resolution: {{mobile_min}} - {{mobile_max}}
|
|
7792
7803
|
- Input: Touch, Tilt (optional)
|
|
7793
7804
|
- OS: iOS 13+, Android 8+
|
|
@@ -7796,14 +7807,14 @@ sections:
|
|
|
7796
7807
|
instruction: Define asset specifications for the art and audio teams
|
|
7797
7808
|
template: |
|
|
7798
7809
|
**Visual Assets:**
|
|
7799
|
-
|
|
7810
|
+
|
|
7800
7811
|
- Art Style: {{style_description}}
|
|
7801
7812
|
- Color Palette: {{color_specification}}
|
|
7802
7813
|
- Animation: {{animation_requirements}}
|
|
7803
7814
|
- UI Resolution: {{ui_specs}}
|
|
7804
|
-
|
|
7815
|
+
|
|
7805
7816
|
**Audio Assets:**
|
|
7806
|
-
|
|
7817
|
+
|
|
7807
7818
|
- Music Style: {{music_genre}}
|
|
7808
7819
|
- Sound Effects: {{sfx_requirements}}
|
|
7809
7820
|
- Voice Acting: {{voice_needs}}
|
|
@@ -7816,7 +7827,7 @@ sections:
|
|
|
7816
7827
|
title: Engine Configuration
|
|
7817
7828
|
template: |
|
|
7818
7829
|
**Phaser 3 Setup:**
|
|
7819
|
-
|
|
7830
|
+
|
|
7820
7831
|
- TypeScript: Strict mode enabled
|
|
7821
7832
|
- Physics: {{physics_system}} (Arcade/Matter)
|
|
7822
7833
|
- Renderer: WebGL with Canvas fallback
|
|
@@ -7825,7 +7836,7 @@ sections:
|
|
|
7825
7836
|
title: Code Architecture
|
|
7826
7837
|
template: |
|
|
7827
7838
|
**Required Systems:**
|
|
7828
|
-
|
|
7839
|
+
|
|
7829
7840
|
- Scene Management
|
|
7830
7841
|
- State Management
|
|
7831
7842
|
- Asset Loading
|
|
@@ -7837,7 +7848,7 @@ sections:
|
|
|
7837
7848
|
title: Data Management
|
|
7838
7849
|
template: |
|
|
7839
7850
|
**Save Data:**
|
|
7840
|
-
|
|
7851
|
+
|
|
7841
7852
|
- Progress tracking
|
|
7842
7853
|
- Settings persistence
|
|
7843
7854
|
- Statistics collection
|
|
@@ -7955,13 +7966,13 @@ sections:
|
|
|
7955
7966
|
- id: initial-setup
|
|
7956
7967
|
instruction: |
|
|
7957
7968
|
This template creates detailed game development stories that are immediately actionable by game developers. Each story should focus on a single, implementable feature that contributes to the overall game functionality.
|
|
7958
|
-
|
|
7969
|
+
|
|
7959
7970
|
Before starting, ensure you have access to:
|
|
7960
|
-
|
|
7971
|
+
|
|
7961
7972
|
- Game Design Document (GDD)
|
|
7962
7973
|
- Game Architecture Document
|
|
7963
7974
|
- Any existing stories in this epic
|
|
7964
|
-
|
|
7975
|
+
|
|
7965
7976
|
The story should be specific enough that a developer can implement it without requiring additional design decisions.
|
|
7966
7977
|
|
|
7967
7978
|
- id: story-header
|
|
@@ -8010,12 +8021,12 @@ sections:
|
|
|
8010
8021
|
title: Files to Create/Modify
|
|
8011
8022
|
template: |
|
|
8012
8023
|
**New Files:**
|
|
8013
|
-
|
|
8024
|
+
|
|
8014
8025
|
- `{{file_path_1}}` - {{purpose}}
|
|
8015
8026
|
- `{{file_path_2}}` - {{purpose}}
|
|
8016
|
-
|
|
8027
|
+
|
|
8017
8028
|
**Modified Files:**
|
|
8018
|
-
|
|
8029
|
+
|
|
8019
8030
|
- `{{existing_file_1}}` - {{changes_needed}}
|
|
8020
8031
|
- `{{existing_file_2}}` - {{changes_needed}}
|
|
8021
8032
|
- id: class-interface-definitions
|
|
@@ -8030,15 +8041,15 @@ sections:
|
|
|
8030
8041
|
{{property_2}}: {{type}};
|
|
8031
8042
|
{{method_1}}({{params}}): {{return_type}};
|
|
8032
8043
|
}
|
|
8033
|
-
|
|
8044
|
+
|
|
8034
8045
|
// {{class_name}}
|
|
8035
8046
|
class {{class_name}} extends {{phaser_class}} {
|
|
8036
8047
|
private {{property}}: {{type}};
|
|
8037
|
-
|
|
8048
|
+
|
|
8038
8049
|
constructor({{params}}) {
|
|
8039
8050
|
// Implementation requirements
|
|
8040
8051
|
}
|
|
8041
|
-
|
|
8052
|
+
|
|
8042
8053
|
public {{method}}({{params}}): {{return_type}} {
|
|
8043
8054
|
// Method requirements
|
|
8044
8055
|
}
|
|
@@ -8048,15 +8059,15 @@ sections:
|
|
|
8048
8059
|
instruction: Specify how this feature integrates with existing systems
|
|
8049
8060
|
template: |
|
|
8050
8061
|
**Scene Integration:**
|
|
8051
|
-
|
|
8062
|
+
|
|
8052
8063
|
- {{scene_name}}: {{integration_details}}
|
|
8053
|
-
|
|
8064
|
+
|
|
8054
8065
|
**System Dependencies:**
|
|
8055
|
-
|
|
8066
|
+
|
|
8056
8067
|
- {{system_name}}: {{dependency_description}}
|
|
8057
|
-
|
|
8068
|
+
|
|
8058
8069
|
**Event Communication:**
|
|
8059
|
-
|
|
8070
|
+
|
|
8060
8071
|
- Emits: `{{event_name}}` when {{condition}}
|
|
8061
8072
|
- Listens: `{{event_name}}` to {{response}}
|
|
8062
8073
|
|
|
@@ -8068,7 +8079,7 @@ sections:
|
|
|
8068
8079
|
title: Dev Agent Record
|
|
8069
8080
|
template: |
|
|
8070
8081
|
**Tasks:**
|
|
8071
|
-
|
|
8082
|
+
|
|
8072
8083
|
- [ ] {{task_1_description}}
|
|
8073
8084
|
- [ ] {{task_2_description}}
|
|
8074
8085
|
- [ ] {{task_3_description}}
|
|
@@ -8076,18 +8087,18 @@ sections:
|
|
|
8076
8087
|
- [ ] Write unit tests for {{component}}
|
|
8077
8088
|
- [ ] Integration testing with {{related_system}}
|
|
8078
8089
|
- [ ] Performance testing and optimization
|
|
8079
|
-
|
|
8090
|
+
|
|
8080
8091
|
**Debug Log:**
|
|
8081
8092
|
| Task | File | Change | Reverted? |
|
|
8082
8093
|
|------|------|--------|-----------|
|
|
8083
8094
|
| | | | |
|
|
8084
|
-
|
|
8095
|
+
|
|
8085
8096
|
**Completion Notes:**
|
|
8086
|
-
|
|
8097
|
+
|
|
8087
8098
|
<!-- Only note deviations from requirements, keep under 50 words -->
|
|
8088
|
-
|
|
8099
|
+
|
|
8089
8100
|
**Change Log:**
|
|
8090
|
-
|
|
8101
|
+
|
|
8091
8102
|
<!-- Only requirement changes during implementation -->
|
|
8092
8103
|
|
|
8093
8104
|
- id: game-design-context
|
|
@@ -8095,13 +8106,13 @@ sections:
|
|
|
8095
8106
|
instruction: Reference the specific sections of the GDD that this story implements
|
|
8096
8107
|
template: |
|
|
8097
8108
|
**GDD Reference:** {{section_name}} ({{page_or_section_number}})
|
|
8098
|
-
|
|
8109
|
+
|
|
8099
8110
|
**Game Mechanic:** {{mechanic_name}}
|
|
8100
|
-
|
|
8111
|
+
|
|
8101
8112
|
**Player Experience Goal:** {{experience_description}}
|
|
8102
|
-
|
|
8113
|
+
|
|
8103
8114
|
**Balance Parameters:**
|
|
8104
|
-
|
|
8115
|
+
|
|
8105
8116
|
- {{parameter_1}}: {{value_or_range}}
|
|
8106
8117
|
- {{parameter_2}}: {{value_or_range}}
|
|
8107
8118
|
|
|
@@ -8113,11 +8124,11 @@ sections:
|
|
|
8113
8124
|
title: Unit Tests
|
|
8114
8125
|
template: |
|
|
8115
8126
|
**Test Files:**
|
|
8116
|
-
|
|
8127
|
+
|
|
8117
8128
|
- `tests/{{component_name}}.test.ts`
|
|
8118
|
-
|
|
8129
|
+
|
|
8119
8130
|
**Test Scenarios:**
|
|
8120
|
-
|
|
8131
|
+
|
|
8121
8132
|
- {{test_scenario_1}}
|
|
8122
8133
|
- {{test_scenario_2}}
|
|
8123
8134
|
- {{edge_case_test}}
|
|
@@ -8125,12 +8136,12 @@ sections:
|
|
|
8125
8136
|
title: Game Testing
|
|
8126
8137
|
template: |
|
|
8127
8138
|
**Manual Test Cases:**
|
|
8128
|
-
|
|
8139
|
+
|
|
8129
8140
|
1. {{test_case_1_description}}
|
|
8130
|
-
|
|
8141
|
+
|
|
8131
8142
|
- Expected: {{expected_behavior}}
|
|
8132
8143
|
- Performance: {{performance_expectation}}
|
|
8133
|
-
|
|
8144
|
+
|
|
8134
8145
|
2. {{test_case_2_description}}
|
|
8135
8146
|
- Expected: {{expected_behavior}}
|
|
8136
8147
|
- Edge Case: {{edge_case_handling}}
|
|
@@ -8138,7 +8149,7 @@ sections:
|
|
|
8138
8149
|
title: Performance Tests
|
|
8139
8150
|
template: |
|
|
8140
8151
|
**Metrics to Verify:**
|
|
8141
|
-
|
|
8152
|
+
|
|
8142
8153
|
- Frame rate maintains {{fps_target}} FPS
|
|
8143
8154
|
- Memory usage stays under {{memory_limit}}MB
|
|
8144
8155
|
- {{feature_specific_performance_metric}}
|
|
@@ -8148,15 +8159,15 @@ sections:
|
|
|
8148
8159
|
instruction: List any dependencies that must be completed before this story can be implemented
|
|
8149
8160
|
template: |
|
|
8150
8161
|
**Story Dependencies:**
|
|
8151
|
-
|
|
8162
|
+
|
|
8152
8163
|
- {{story_id}}: {{dependency_description}}
|
|
8153
|
-
|
|
8164
|
+
|
|
8154
8165
|
**Technical Dependencies:**
|
|
8155
|
-
|
|
8166
|
+
|
|
8156
8167
|
- {{system_or_file}}: {{requirement}}
|
|
8157
|
-
|
|
8168
|
+
|
|
8158
8169
|
**Asset Dependencies:**
|
|
8159
|
-
|
|
8170
|
+
|
|
8160
8171
|
- {{asset_type}}: {{asset_description}}
|
|
8161
8172
|
- Location: `{{asset_path}}`
|
|
8162
8173
|
|
|
@@ -8179,17 +8190,17 @@ sections:
|
|
|
8179
8190
|
instruction: Any additional context, design decisions, or implementation notes
|
|
8180
8191
|
template: |
|
|
8181
8192
|
**Implementation Notes:**
|
|
8182
|
-
|
|
8193
|
+
|
|
8183
8194
|
- {{note_1}}
|
|
8184
8195
|
- {{note_2}}
|
|
8185
|
-
|
|
8196
|
+
|
|
8186
8197
|
**Design Decisions:**
|
|
8187
|
-
|
|
8198
|
+
|
|
8188
8199
|
- {{decision_1}}: {{rationale}}
|
|
8189
8200
|
- {{decision_2}}: {{rationale}}
|
|
8190
|
-
|
|
8201
|
+
|
|
8191
8202
|
**Future Considerations:**
|
|
8192
|
-
|
|
8203
|
+
|
|
8193
8204
|
- {{future_enhancement_1}}
|
|
8194
8205
|
- {{future_optimization_1}}
|
|
8195
8206
|
==================== END: .bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml ====================
|
|
@@ -8211,7 +8222,7 @@ sections:
|
|
|
8211
8222
|
- id: initial-setup
|
|
8212
8223
|
instruction: |
|
|
8213
8224
|
This template creates comprehensive level design documentation that guides both content creation and technical implementation. This document should provide enough detail for developers to create level loading systems and for designers to create specific levels.
|
|
8214
|
-
|
|
8225
|
+
|
|
8215
8226
|
If available, review: Game Design Document (GDD), Game Architecture Document. This document should align with the game mechanics and technical systems defined in those documents.
|
|
8216
8227
|
|
|
8217
8228
|
- id: introduction
|
|
@@ -8219,7 +8230,7 @@ sections:
|
|
|
8219
8230
|
instruction: Establish the purpose and scope of level design for this game
|
|
8220
8231
|
content: |
|
|
8221
8232
|
This document defines the level design framework for {{game_title}}, providing guidelines for creating engaging, balanced levels that support the core gameplay mechanics defined in the Game Design Document.
|
|
8222
|
-
|
|
8233
|
+
|
|
8223
8234
|
This framework ensures consistency across all levels while providing flexibility for creative level design within established technical and design constraints.
|
|
8224
8235
|
sections:
|
|
8225
8236
|
- id: change-log
|
|
@@ -8266,29 +8277,29 @@ sections:
|
|
|
8266
8277
|
title: "{{category_name}} Levels"
|
|
8267
8278
|
template: |
|
|
8268
8279
|
**Purpose:** {{gameplay_purpose}}
|
|
8269
|
-
|
|
8280
|
+
|
|
8270
8281
|
**Target Duration:** {{min_time}} - {{max_time}} minutes
|
|
8271
|
-
|
|
8282
|
+
|
|
8272
8283
|
**Difficulty Range:** {{difficulty_scale}}
|
|
8273
|
-
|
|
8284
|
+
|
|
8274
8285
|
**Key Mechanics Featured:**
|
|
8275
|
-
|
|
8286
|
+
|
|
8276
8287
|
- {{mechanic_1}} - {{usage_description}}
|
|
8277
8288
|
- {{mechanic_2}} - {{usage_description}}
|
|
8278
|
-
|
|
8289
|
+
|
|
8279
8290
|
**Player Objectives:**
|
|
8280
|
-
|
|
8291
|
+
|
|
8281
8292
|
- Primary: {{primary_objective}}
|
|
8282
8293
|
- Secondary: {{secondary_objective}}
|
|
8283
8294
|
- Hidden: {{secret_objective}}
|
|
8284
|
-
|
|
8295
|
+
|
|
8285
8296
|
**Success Criteria:**
|
|
8286
|
-
|
|
8297
|
+
|
|
8287
8298
|
- {{completion_requirement_1}}
|
|
8288
8299
|
- {{completion_requirement_2}}
|
|
8289
|
-
|
|
8300
|
+
|
|
8290
8301
|
**Technical Requirements:**
|
|
8291
|
-
|
|
8302
|
+
|
|
8292
8303
|
- Maximum entities: {{entity_limit}}
|
|
8293
8304
|
- Performance target: {{fps_target}} FPS
|
|
8294
8305
|
- Memory budget: {{memory_limit}}MB
|
|
@@ -8303,11 +8314,11 @@ sections:
|
|
|
8303
8314
|
instruction: Based on GDD requirements, define the overall level organization
|
|
8304
8315
|
template: |
|
|
8305
8316
|
**Organization Type:** {{linear|hub_world|open_world}}
|
|
8306
|
-
|
|
8317
|
+
|
|
8307
8318
|
**Total Level Count:** {{number}}
|
|
8308
|
-
|
|
8319
|
+
|
|
8309
8320
|
**World Breakdown:**
|
|
8310
|
-
|
|
8321
|
+
|
|
8311
8322
|
- World 1: {{level_count}} levels - {{theme}} - {{difficulty_range}}
|
|
8312
8323
|
- World 2: {{level_count}} levels - {{theme}} - {{difficulty_range}}
|
|
8313
8324
|
- World 3: {{level_count}} levels - {{theme}} - {{difficulty_range}}
|
|
@@ -8342,7 +8353,7 @@ sections:
|
|
|
8342
8353
|
instruction: Define how players access new levels
|
|
8343
8354
|
template: |
|
|
8344
8355
|
**Progression Gates:**
|
|
8345
|
-
|
|
8356
|
+
|
|
8346
8357
|
- Linear progression: Complete previous level
|
|
8347
8358
|
- Star requirements: {{star_count}} stars to unlock
|
|
8348
8359
|
- Skill gates: Demonstrate {{skill_requirement}}
|
|
@@ -8357,17 +8368,17 @@ sections:
|
|
|
8357
8368
|
instruction: Define all environmental components that can be used in levels
|
|
8358
8369
|
template: |
|
|
8359
8370
|
**Terrain Types:**
|
|
8360
|
-
|
|
8371
|
+
|
|
8361
8372
|
- {{terrain_1}}: {{properties_and_usage}}
|
|
8362
8373
|
- {{terrain_2}}: {{properties_and_usage}}
|
|
8363
|
-
|
|
8374
|
+
|
|
8364
8375
|
**Interactive Objects:**
|
|
8365
|
-
|
|
8376
|
+
|
|
8366
8377
|
- {{object_1}}: {{behavior_and_purpose}}
|
|
8367
8378
|
- {{object_2}}: {{behavior_and_purpose}}
|
|
8368
|
-
|
|
8379
|
+
|
|
8369
8380
|
**Hazards and Obstacles:**
|
|
8370
|
-
|
|
8381
|
+
|
|
8371
8382
|
- {{hazard_1}}: {{damage_and_behavior}}
|
|
8372
8383
|
- {{hazard_2}}: {{damage_and_behavior}}
|
|
8373
8384
|
- id: collectibles-rewards
|
|
@@ -8375,18 +8386,18 @@ sections:
|
|
|
8375
8386
|
instruction: Define all collectible items and their placement rules
|
|
8376
8387
|
template: |
|
|
8377
8388
|
**Collectible Types:**
|
|
8378
|
-
|
|
8389
|
+
|
|
8379
8390
|
- {{collectible_1}}: {{value_and_purpose}}
|
|
8380
8391
|
- {{collectible_2}}: {{value_and_purpose}}
|
|
8381
|
-
|
|
8392
|
+
|
|
8382
8393
|
**Placement Guidelines:**
|
|
8383
|
-
|
|
8394
|
+
|
|
8384
8395
|
- Mandatory collectibles: {{placement_rules}}
|
|
8385
8396
|
- Optional collectibles: {{placement_rules}}
|
|
8386
8397
|
- Secret collectibles: {{placement_rules}}
|
|
8387
|
-
|
|
8398
|
+
|
|
8388
8399
|
**Reward Distribution:**
|
|
8389
|
-
|
|
8400
|
+
|
|
8390
8401
|
- Easy to find: {{percentage}}%
|
|
8391
8402
|
- Moderate challenge: {{percentage}}%
|
|
8392
8403
|
- High skill required: {{percentage}}%
|
|
@@ -8395,18 +8406,18 @@ sections:
|
|
|
8395
8406
|
instruction: Define how enemies should be placed and balanced in levels
|
|
8396
8407
|
template: |
|
|
8397
8408
|
**Enemy Categories:**
|
|
8398
|
-
|
|
8409
|
+
|
|
8399
8410
|
- {{enemy_type_1}}: {{behavior_and_usage}}
|
|
8400
8411
|
- {{enemy_type_2}}: {{behavior_and_usage}}
|
|
8401
|
-
|
|
8412
|
+
|
|
8402
8413
|
**Placement Principles:**
|
|
8403
|
-
|
|
8414
|
+
|
|
8404
8415
|
- Introduction encounters: {{guideline}}
|
|
8405
8416
|
- Standard encounters: {{guideline}}
|
|
8406
8417
|
- Challenge encounters: {{guideline}}
|
|
8407
|
-
|
|
8418
|
+
|
|
8408
8419
|
**Difficulty Scaling:**
|
|
8409
|
-
|
|
8420
|
+
|
|
8410
8421
|
- Enemy count progression: {{scaling_rule}}
|
|
8411
8422
|
- Enemy type introduction: {{pacing_rule}}
|
|
8412
8423
|
- Encounter complexity: {{complexity_rule}}
|
|
@@ -8419,14 +8430,14 @@ sections:
|
|
|
8419
8430
|
title: Level Layout Principles
|
|
8420
8431
|
template: |
|
|
8421
8432
|
**Spatial Design:**
|
|
8422
|
-
|
|
8433
|
+
|
|
8423
8434
|
- Grid size: {{grid_dimensions}}
|
|
8424
8435
|
- Minimum path width: {{width_units}}
|
|
8425
8436
|
- Maximum vertical distance: {{height_units}}
|
|
8426
8437
|
- Safe zones placement: {{safety_guidelines}}
|
|
8427
|
-
|
|
8438
|
+
|
|
8428
8439
|
**Navigation Design:**
|
|
8429
|
-
|
|
8440
|
+
|
|
8430
8441
|
- Clear path indication: {{visual_cues}}
|
|
8431
8442
|
- Landmark placement: {{landmark_rules}}
|
|
8432
8443
|
- Dead end avoidance: {{dead_end_policy}}
|
|
@@ -8436,13 +8447,13 @@ sections:
|
|
|
8436
8447
|
instruction: Define how to control the rhythm and pace of gameplay within levels
|
|
8437
8448
|
template: |
|
|
8438
8449
|
**Action Sequences:**
|
|
8439
|
-
|
|
8450
|
+
|
|
8440
8451
|
- High intensity duration: {{max_duration}}
|
|
8441
8452
|
- Rest period requirement: {{min_rest_time}}
|
|
8442
8453
|
- Intensity variation: {{pacing_pattern}}
|
|
8443
|
-
|
|
8454
|
+
|
|
8444
8455
|
**Learning Sequences:**
|
|
8445
|
-
|
|
8456
|
+
|
|
8446
8457
|
- New mechanic introduction: {{teaching_method}}
|
|
8447
8458
|
- Practice opportunity: {{practice_duration}}
|
|
8448
8459
|
- Skill application: {{application_context}}
|
|
@@ -8451,14 +8462,14 @@ sections:
|
|
|
8451
8462
|
instruction: Define how to create appropriate challenges for each level type
|
|
8452
8463
|
template: |
|
|
8453
8464
|
**Challenge Types:**
|
|
8454
|
-
|
|
8465
|
+
|
|
8455
8466
|
- Execution challenges: {{skill_requirements}}
|
|
8456
8467
|
- Puzzle challenges: {{complexity_guidelines}}
|
|
8457
8468
|
- Time challenges: {{time_pressure_rules}}
|
|
8458
8469
|
- Resource challenges: {{resource_management}}
|
|
8459
|
-
|
|
8470
|
+
|
|
8460
8471
|
**Difficulty Calibration:**
|
|
8461
|
-
|
|
8472
|
+
|
|
8462
8473
|
- Skill check frequency: {{frequency_guidelines}}
|
|
8463
8474
|
- Failure recovery: {{retry_mechanics}}
|
|
8464
8475
|
- Hint system integration: {{help_system}}
|
|
@@ -8472,7 +8483,7 @@ sections:
|
|
|
8472
8483
|
instruction: Define how level data should be structured for implementation
|
|
8473
8484
|
template: |
|
|
8474
8485
|
**Level File Format:**
|
|
8475
|
-
|
|
8486
|
+
|
|
8476
8487
|
- Data format: {{json|yaml|custom}}
|
|
8477
8488
|
- File naming: `level_{{world}}_{{number}}.{{extension}}`
|
|
8478
8489
|
- Data organization: {{structure_description}}
|
|
@@ -8510,14 +8521,14 @@ sections:
|
|
|
8510
8521
|
instruction: Define how level assets are organized and loaded
|
|
8511
8522
|
template: |
|
|
8512
8523
|
**Tilemap Requirements:**
|
|
8513
|
-
|
|
8524
|
+
|
|
8514
8525
|
- Tile size: {{tile_dimensions}}px
|
|
8515
8526
|
- Tileset organization: {{tileset_structure}}
|
|
8516
8527
|
- Layer organization: {{layer_system}}
|
|
8517
8528
|
- Collision data: {{collision_format}}
|
|
8518
|
-
|
|
8529
|
+
|
|
8519
8530
|
**Audio Integration:**
|
|
8520
|
-
|
|
8531
|
+
|
|
8521
8532
|
- Background music: {{music_requirements}}
|
|
8522
8533
|
- Ambient sounds: {{ambient_system}}
|
|
8523
8534
|
- Dynamic audio: {{dynamic_audio_rules}}
|
|
@@ -8526,19 +8537,19 @@ sections:
|
|
|
8526
8537
|
instruction: Define performance requirements for level systems
|
|
8527
8538
|
template: |
|
|
8528
8539
|
**Entity Limits:**
|
|
8529
|
-
|
|
8540
|
+
|
|
8530
8541
|
- Maximum active entities: {{entity_limit}}
|
|
8531
8542
|
- Maximum particles: {{particle_limit}}
|
|
8532
8543
|
- Maximum audio sources: {{audio_limit}}
|
|
8533
|
-
|
|
8544
|
+
|
|
8534
8545
|
**Memory Management:**
|
|
8535
|
-
|
|
8546
|
+
|
|
8536
8547
|
- Texture memory budget: {{texture_memory}}MB
|
|
8537
8548
|
- Audio memory budget: {{audio_memory}}MB
|
|
8538
8549
|
- Level loading time: <{{load_time}}s
|
|
8539
|
-
|
|
8550
|
+
|
|
8540
8551
|
**Culling and LOD:**
|
|
8541
|
-
|
|
8552
|
+
|
|
8542
8553
|
- Off-screen culling: {{culling_distance}}
|
|
8543
8554
|
- Level-of-detail rules: {{lod_system}}
|
|
8544
8555
|
- Asset streaming: {{streaming_requirements}}
|
|
@@ -8551,13 +8562,13 @@ sections:
|
|
|
8551
8562
|
title: Automated Testing
|
|
8552
8563
|
template: |
|
|
8553
8564
|
**Performance Testing:**
|
|
8554
|
-
|
|
8565
|
+
|
|
8555
8566
|
- Frame rate validation: Maintain {{fps_target}} FPS
|
|
8556
8567
|
- Memory usage monitoring: Stay under {{memory_limit}}MB
|
|
8557
8568
|
- Loading time verification: Complete in <{{load_time}}s
|
|
8558
|
-
|
|
8569
|
+
|
|
8559
8570
|
**Gameplay Testing:**
|
|
8560
|
-
|
|
8571
|
+
|
|
8561
8572
|
- Completion path validation: All objectives achievable
|
|
8562
8573
|
- Collectible accessibility: All items reachable
|
|
8563
8574
|
- Softlock prevention: No unwinnable states
|
|
@@ -8585,14 +8596,14 @@ sections:
|
|
|
8585
8596
|
title: Balance Validation
|
|
8586
8597
|
template: |
|
|
8587
8598
|
**Metrics Collection:**
|
|
8588
|
-
|
|
8599
|
+
|
|
8589
8600
|
- Completion rate: Target {{completion_percentage}}%
|
|
8590
8601
|
- Average completion time: {{target_time}} ± {{variance}}
|
|
8591
8602
|
- Death count per level: <{{max_deaths}}
|
|
8592
8603
|
- Collectible discovery rate: {{discovery_percentage}}%
|
|
8593
|
-
|
|
8604
|
+
|
|
8594
8605
|
**Iteration Guidelines:**
|
|
8595
|
-
|
|
8606
|
+
|
|
8596
8607
|
- Adjustment criteria: {{criteria_for_changes}}
|
|
8597
8608
|
- Testing sample size: {{minimum_testers}}
|
|
8598
8609
|
- Validation period: {{testing_duration}}
|
|
@@ -8605,14 +8616,14 @@ sections:
|
|
|
8605
8616
|
title: Design Phase
|
|
8606
8617
|
template: |
|
|
8607
8618
|
**Concept Development:**
|
|
8608
|
-
|
|
8619
|
+
|
|
8609
8620
|
1. Define level purpose and goals
|
|
8610
8621
|
2. Create rough layout sketch
|
|
8611
8622
|
3. Identify key mechanics and challenges
|
|
8612
8623
|
4. Estimate difficulty and duration
|
|
8613
|
-
|
|
8624
|
+
|
|
8614
8625
|
**Documentation Requirements:**
|
|
8615
|
-
|
|
8626
|
+
|
|
8616
8627
|
- Level design brief
|
|
8617
8628
|
- Layout diagrams
|
|
8618
8629
|
- Mechanic integration notes
|
|
@@ -8621,15 +8632,15 @@ sections:
|
|
|
8621
8632
|
title: Implementation Phase
|
|
8622
8633
|
template: |
|
|
8623
8634
|
**Technical Implementation:**
|
|
8624
|
-
|
|
8635
|
+
|
|
8625
8636
|
1. Create level data file
|
|
8626
8637
|
2. Build tilemap and layout
|
|
8627
8638
|
3. Place entities and objects
|
|
8628
8639
|
4. Configure level logic and triggers
|
|
8629
8640
|
5. Integrate audio and visual effects
|
|
8630
|
-
|
|
8641
|
+
|
|
8631
8642
|
**Quality Assurance:**
|
|
8632
|
-
|
|
8643
|
+
|
|
8633
8644
|
1. Automated testing execution
|
|
8634
8645
|
2. Internal playtesting
|
|
8635
8646
|
3. Performance validation
|
|
@@ -8638,14 +8649,14 @@ sections:
|
|
|
8638
8649
|
title: Integration Phase
|
|
8639
8650
|
template: |
|
|
8640
8651
|
**Game Integration:**
|
|
8641
|
-
|
|
8652
|
+
|
|
8642
8653
|
1. Level progression integration
|
|
8643
8654
|
2. Save system compatibility
|
|
8644
8655
|
3. Analytics integration
|
|
8645
8656
|
4. Achievement system integration
|
|
8646
|
-
|
|
8657
|
+
|
|
8647
8658
|
**Final Validation:**
|
|
8648
|
-
|
|
8659
|
+
|
|
8649
8660
|
1. Full game context testing
|
|
8650
8661
|
2. Performance regression testing
|
|
8651
8662
|
3. Platform compatibility verification
|
|
@@ -9693,21 +9704,21 @@ workflow:
|
|
|
9693
9704
|
- brainstorming_session
|
|
9694
9705
|
- game_research_prompt
|
|
9695
9706
|
- player_research
|
|
9696
|
-
notes:
|
|
9707
|
+
notes: "Start with brainstorming game concepts, then create comprehensive game brief. SAVE OUTPUT: Copy final game-brief.md to your project's docs/design/ folder."
|
|
9697
9708
|
- agent: game-designer
|
|
9698
9709
|
creates: game-design-doc.md
|
|
9699
9710
|
requires: game-brief.md
|
|
9700
9711
|
optional_steps:
|
|
9701
9712
|
- competitive_analysis
|
|
9702
9713
|
- technical_research
|
|
9703
|
-
notes:
|
|
9714
|
+
notes: "Create detailed Game Design Document using game-design-doc-tmpl. Defines all gameplay mechanics, progression, and technical requirements. SAVE OUTPUT: Copy final game-design-doc.md to your project's docs/design/ folder."
|
|
9704
9715
|
- agent: game-designer
|
|
9705
9716
|
creates: level-design-doc.md
|
|
9706
9717
|
requires: game-design-doc.md
|
|
9707
9718
|
optional_steps:
|
|
9708
9719
|
- level_prototyping
|
|
9709
9720
|
- difficulty_analysis
|
|
9710
|
-
notes:
|
|
9721
|
+
notes: "Create level design framework using level-design-doc-tmpl. Establishes content creation guidelines and performance requirements. SAVE OUTPUT: Copy final level-design-doc.md to your project's docs/design/ folder."
|
|
9711
9722
|
- agent: solution-architect
|
|
9712
9723
|
creates: game-architecture.md
|
|
9713
9724
|
requires:
|
|
@@ -9717,7 +9728,7 @@ workflow:
|
|
|
9717
9728
|
- technical_research_prompt
|
|
9718
9729
|
- performance_analysis
|
|
9719
9730
|
- platform_research
|
|
9720
|
-
notes:
|
|
9731
|
+
notes: "Create comprehensive technical architecture using game-architecture-tmpl. Defines Phaser 3 systems, performance optimization, and code structure. SAVE OUTPUT: Copy final game-architecture.md to your project's docs/architecture/ folder."
|
|
9721
9732
|
- agent: game-designer
|
|
9722
9733
|
validates: design_consistency
|
|
9723
9734
|
requires: all_design_documents
|
|
@@ -9742,7 +9753,7 @@ workflow:
|
|
|
9742
9753
|
optional_steps:
|
|
9743
9754
|
- quick_brainstorming
|
|
9744
9755
|
- concept_validation
|
|
9745
|
-
notes:
|
|
9756
|
+
notes: "Create focused game brief for prototype. Emphasize core mechanics and immediate playability. SAVE OUTPUT: Copy final game-brief.md to your project's docs/ folder."
|
|
9746
9757
|
- agent: game-designer
|
|
9747
9758
|
creates: prototype-design.md
|
|
9748
9759
|
uses: create-doc prototype-design OR create-game-story
|
|
@@ -9906,7 +9917,7 @@ workflow:
|
|
|
9906
9917
|
notes: Implement stories in priority order. Test frequently and adjust design based on what feels fun. Document discoveries.
|
|
9907
9918
|
workflow_end:
|
|
9908
9919
|
action: prototype_evaluation
|
|
9909
|
-
notes:
|
|
9920
|
+
notes: "Prototype complete. Evaluate core mechanics, gather feedback, and decide next steps: iterate, expand, or archive."
|
|
9910
9921
|
game_jam_sequence:
|
|
9911
9922
|
- step: jam_concept
|
|
9912
9923
|
agent: game-designer
|
|
@@ -10366,7 +10377,7 @@ interface GameState {
|
|
|
10366
10377
|
interface GameSettings {
|
|
10367
10378
|
musicVolume: number;
|
|
10368
10379
|
sfxVolume: number;
|
|
10369
|
-
difficulty:
|
|
10380
|
+
difficulty: 'easy' | 'normal' | 'hard';
|
|
10370
10381
|
controls: ControlScheme;
|
|
10371
10382
|
}
|
|
10372
10383
|
```
|
|
@@ -10407,12 +10418,12 @@ class GameScene extends Phaser.Scene {
|
|
|
10407
10418
|
private inputManager!: InputManager;
|
|
10408
10419
|
|
|
10409
10420
|
constructor() {
|
|
10410
|
-
super({ key:
|
|
10421
|
+
super({ key: 'GameScene' });
|
|
10411
10422
|
}
|
|
10412
10423
|
|
|
10413
10424
|
preload(): void {
|
|
10414
10425
|
// Load only scene-specific assets
|
|
10415
|
-
this.load.image(
|
|
10426
|
+
this.load.image('player', 'assets/player.png');
|
|
10416
10427
|
}
|
|
10417
10428
|
|
|
10418
10429
|
create(data: SceneData): void {
|
|
@@ -10437,7 +10448,7 @@ class GameScene extends Phaser.Scene {
|
|
|
10437
10448
|
this.inputManager.destroy();
|
|
10438
10449
|
|
|
10439
10450
|
// Remove event listeners
|
|
10440
|
-
this.events.off(
|
|
10451
|
+
this.events.off('*');
|
|
10441
10452
|
}
|
|
10442
10453
|
}
|
|
10443
10454
|
```
|
|
@@ -10446,13 +10457,13 @@ class GameScene extends Phaser.Scene {
|
|
|
10446
10457
|
|
|
10447
10458
|
```typescript
|
|
10448
10459
|
// Proper scene transitions with data
|
|
10449
|
-
this.scene.start(
|
|
10460
|
+
this.scene.start('NextScene', {
|
|
10450
10461
|
playerScore: this.playerScore,
|
|
10451
10462
|
currentLevel: this.currentLevel + 1,
|
|
10452
10463
|
});
|
|
10453
10464
|
|
|
10454
10465
|
// Scene overlays for UI
|
|
10455
|
-
this.scene.launch(
|
|
10466
|
+
this.scene.launch('PauseMenuScene');
|
|
10456
10467
|
this.scene.pause();
|
|
10457
10468
|
```
|
|
10458
10469
|
|
|
@@ -10496,7 +10507,7 @@ class Player extends GameEntity {
|
|
|
10496
10507
|
private health!: HealthComponent;
|
|
10497
10508
|
|
|
10498
10509
|
constructor(scene: Phaser.Scene, x: number, y: number) {
|
|
10499
|
-
super(scene, x, y,
|
|
10510
|
+
super(scene, x, y, 'player');
|
|
10500
10511
|
|
|
10501
10512
|
this.movement = this.addComponent(new MovementComponent(this));
|
|
10502
10513
|
this.health = this.addComponent(new HealthComponent(this, 100));
|
|
@@ -10516,7 +10527,7 @@ class GameManager {
|
|
|
10516
10527
|
|
|
10517
10528
|
constructor(scene: Phaser.Scene) {
|
|
10518
10529
|
if (GameManager.instance) {
|
|
10519
|
-
throw new Error(
|
|
10530
|
+
throw new Error('GameManager already exists!');
|
|
10520
10531
|
}
|
|
10521
10532
|
|
|
10522
10533
|
this.scene = scene;
|
|
@@ -10526,7 +10537,7 @@ class GameManager {
|
|
|
10526
10537
|
|
|
10527
10538
|
static getInstance(): GameManager {
|
|
10528
10539
|
if (!GameManager.instance) {
|
|
10529
|
-
throw new Error(
|
|
10540
|
+
throw new Error('GameManager not initialized!');
|
|
10530
10541
|
}
|
|
10531
10542
|
return GameManager.instance;
|
|
10532
10543
|
}
|
|
@@ -10573,7 +10584,7 @@ class BulletPool {
|
|
|
10573
10584
|
}
|
|
10574
10585
|
|
|
10575
10586
|
// Pool exhausted - create new bullet
|
|
10576
|
-
console.warn(
|
|
10587
|
+
console.warn('Bullet pool exhausted, creating new bullet');
|
|
10577
10588
|
return new Bullet(this.scene, 0, 0);
|
|
10578
10589
|
}
|
|
10579
10590
|
|
|
@@ -10673,14 +10684,12 @@ class InputManager {
|
|
|
10673
10684
|
}
|
|
10674
10685
|
|
|
10675
10686
|
private setupKeyboard(): void {
|
|
10676
|
-
this.keys = this.scene.input.keyboard.addKeys(
|
|
10677
|
-
"W,A,S,D,SPACE,ESC,UP,DOWN,LEFT,RIGHT",
|
|
10678
|
-
);
|
|
10687
|
+
this.keys = this.scene.input.keyboard.addKeys('W,A,S,D,SPACE,ESC,UP,DOWN,LEFT,RIGHT');
|
|
10679
10688
|
}
|
|
10680
10689
|
|
|
10681
10690
|
private setupTouch(): void {
|
|
10682
|
-
this.scene.input.on(
|
|
10683
|
-
this.scene.input.on(
|
|
10691
|
+
this.scene.input.on('pointerdown', this.handlePointerDown, this);
|
|
10692
|
+
this.scene.input.on('pointerup', this.handlePointerUp, this);
|
|
10684
10693
|
}
|
|
10685
10694
|
|
|
10686
10695
|
update(): void {
|
|
@@ -10707,9 +10716,9 @@ class InputManager {
|
|
|
10707
10716
|
class AssetManager {
|
|
10708
10717
|
loadAssets(): Promise<void> {
|
|
10709
10718
|
return new Promise((resolve, reject) => {
|
|
10710
|
-
this.scene.load.on(
|
|
10711
|
-
this.scene.load.on(
|
|
10712
|
-
this.scene.load.on(
|
|
10719
|
+
this.scene.load.on('filecomplete', this.handleFileComplete, this);
|
|
10720
|
+
this.scene.load.on('loaderror', this.handleLoadError, this);
|
|
10721
|
+
this.scene.load.on('complete', () => resolve());
|
|
10713
10722
|
|
|
10714
10723
|
this.scene.load.start();
|
|
10715
10724
|
});
|
|
@@ -10725,8 +10734,8 @@ class AssetManager {
|
|
|
10725
10734
|
private loadFallbackAsset(key: string): void {
|
|
10726
10735
|
// Load placeholder or default assets
|
|
10727
10736
|
switch (key) {
|
|
10728
|
-
case
|
|
10729
|
-
this.scene.load.image(
|
|
10737
|
+
case 'player':
|
|
10738
|
+
this.scene.load.image('player', 'assets/defaults/default-player.png');
|
|
10730
10739
|
break;
|
|
10731
10740
|
default:
|
|
10732
10741
|
console.warn(`No fallback for asset: ${key}`);
|
|
@@ -10753,11 +10762,11 @@ class GameSystem {
|
|
|
10753
10762
|
|
|
10754
10763
|
private attemptRecovery(context: string): void {
|
|
10755
10764
|
switch (context) {
|
|
10756
|
-
case
|
|
10765
|
+
case 'update':
|
|
10757
10766
|
// Reset system state
|
|
10758
10767
|
this.reset();
|
|
10759
10768
|
break;
|
|
10760
|
-
case
|
|
10769
|
+
case 'render':
|
|
10761
10770
|
// Disable visual effects
|
|
10762
10771
|
this.disableEffects();
|
|
10763
10772
|
break;
|
|
@@ -10777,7 +10786,7 @@ class GameSystem {
|
|
|
10777
10786
|
|
|
10778
10787
|
```typescript
|
|
10779
10788
|
// Example test for game mechanics
|
|
10780
|
-
describe(
|
|
10789
|
+
describe('HealthComponent', () => {
|
|
10781
10790
|
let healthComponent: HealthComponent;
|
|
10782
10791
|
|
|
10783
10792
|
beforeEach(() => {
|
|
@@ -10785,18 +10794,18 @@ describe("HealthComponent", () => {
|
|
|
10785
10794
|
healthComponent = new HealthComponent(mockEntity, 100);
|
|
10786
10795
|
});
|
|
10787
10796
|
|
|
10788
|
-
test(
|
|
10797
|
+
test('should initialize with correct health', () => {
|
|
10789
10798
|
expect(healthComponent.currentHealth).toBe(100);
|
|
10790
10799
|
expect(healthComponent.maxHealth).toBe(100);
|
|
10791
10800
|
});
|
|
10792
10801
|
|
|
10793
|
-
test(
|
|
10802
|
+
test('should handle damage correctly', () => {
|
|
10794
10803
|
healthComponent.takeDamage(25);
|
|
10795
10804
|
expect(healthComponent.currentHealth).toBe(75);
|
|
10796
10805
|
expect(healthComponent.isAlive()).toBe(true);
|
|
10797
10806
|
});
|
|
10798
10807
|
|
|
10799
|
-
test(
|
|
10808
|
+
test('should handle death correctly', () => {
|
|
10800
10809
|
healthComponent.takeDamage(150);
|
|
10801
10810
|
expect(healthComponent.currentHealth).toBe(0);
|
|
10802
10811
|
expect(healthComponent.isAlive()).toBe(false);
|
|
@@ -10809,7 +10818,7 @@ describe("HealthComponent", () => {
|
|
|
10809
10818
|
**Scene Testing:**
|
|
10810
10819
|
|
|
10811
10820
|
```typescript
|
|
10812
|
-
describe(
|
|
10821
|
+
describe('GameScene Integration', () => {
|
|
10813
10822
|
let scene: GameScene;
|
|
10814
10823
|
let mockGame: Phaser.Game;
|
|
10815
10824
|
|
|
@@ -10819,7 +10828,7 @@ describe("GameScene Integration", () => {
|
|
|
10819
10828
|
scene = new GameScene();
|
|
10820
10829
|
});
|
|
10821
10830
|
|
|
10822
|
-
test(
|
|
10831
|
+
test('should initialize all systems', () => {
|
|
10823
10832
|
scene.create({});
|
|
10824
10833
|
|
|
10825
10834
|
expect(scene.gameManager).toBeDefined();
|