615 lines
21 KiB
YAML
Raw Normal View History

# <!-- Powered by BMAD™ Core -->
2025-07-06 18:26:09 -05:00
template:
id: game-architecture-template-v2
name: Game Architecture Document
version: 2.0
output:
format: markdown
filename: "docs/{{game_name}}-game-architecture.md"
title: "{{game_title}} Game Architecture Document"
workflow:
mode: interactive
sections:
- id: initial-setup
instruction: |
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.
2025-07-06 18:26:09 -05:00
If available, review any provided documents: Game Design Document (GDD), Technical Preferences. This architecture should support all game mechanics defined in the GDD.
- id: introduction
title: Introduction
instruction: Establish the document's purpose and scope for game development
content: |
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.
2025-07-06 18:26:09 -05:00
This architecture is designed to support the gameplay mechanics defined in the Game Design Document while maintaining 60 FPS performance and cross-platform compatibility.
sections:
- id: change-log
title: Change Log
instruction: Track document versions and changes
type: table
template: |
| Date | Version | Description | Author |
| :--- | :------ | :---------- | :----- |
- id: technical-overview
title: Technical Overview
instruction: Present all subsections together, then apply `tasks#advanced-elicitation` protocol to the complete section.
sections:
- id: architecture-summary
title: Architecture Summary
instruction: |
Provide a comprehensive overview covering:
2025-07-06 18:26:09 -05:00
- Game engine choice and configuration
- Project structure and organization
- Key systems and their interactions
- Performance and optimization strategy
- How this architecture achieves GDD requirements
- id: platform-targets
title: Platform Targets
instruction: Based on GDD requirements, confirm platform support
template: |
**Primary Platform:** {{primary_platform}}
**Secondary Platforms:** {{secondary_platforms}}
**Minimum Requirements:** {{min_specs}}
**Target Performance:** 60 FPS on {{target_device}}
- id: technology-stack
title: Technology Stack
template: |
**Core Engine:** Phaser 3.70+
**Language:** TypeScript 5.0+ (Strict Mode)
**Build Tool:** {{build_tool}} (Webpack/Vite/Parcel)
**Package Manager:** {{package_manager}}
**Testing:** {{test_framework}}
**Deployment:** {{deployment_platform}}
- id: project-structure
title: Project Structure
instruction: Define the complete project organization that developers will follow
sections:
- id: repository-organization
title: Repository Organization
instruction: Design a clear folder structure for game development
type: code
language: text
template: |
{{game_name}}/
├── src/
│ ├── scenes/ # Game scenes
│ ├── gameObjects/ # Custom game objects
│ ├── systems/ # Core game systems
│ ├── utils/ # Utility functions
│ ├── types/ # TypeScript type definitions
│ ├── config/ # Game configuration
│ └── main.ts # Entry point
├── assets/
│ ├── images/ # Sprite assets
│ ├── audio/ # Sound files
│ ├── data/ # JSON data files
│ └── fonts/ # Font files
├── public/ # Static web assets
├── tests/ # Test files
├── docs/ # Documentation
│ ├── stories/ # Development stories
│ └── architecture/ # Technical docs
└── dist/ # Built game files
- id: module-organization
title: Module Organization
instruction: Define how TypeScript modules should be organized
sections:
- id: scene-structure
title: Scene Structure
type: bullet-list
template: |
- Each scene in separate file
- Scene-specific logic contained
- Clear data passing between scenes
- id: game-object-pattern
title: Game Object Pattern
type: bullet-list
template: |
- Component-based architecture
- Reusable game object classes
- Type-safe property definitions
- id: system-architecture
title: System Architecture
type: bullet-list
template: |
- Singleton managers for global systems
- Event-driven communication
- Clear separation of concerns
- id: core-game-systems
title: Core Game Systems
instruction: Detail each major system that needs to be implemented. Each system should be specific enough for developers to create implementation stories.
sections:
- id: scene-management
title: Scene Management System
template: |
**Purpose:** Handle game flow and scene transitions
2025-07-06 18:26:09 -05:00
**Key Components:**
2025-07-06 18:26:09 -05:00
- Scene loading and unloading
- Data passing between scenes
- Transition effects
- Memory management
2025-07-06 18:26:09 -05:00
**Implementation Requirements:**
2025-07-06 18:26:09 -05:00
- Preload scene for asset loading
- Menu system with navigation
- Gameplay scenes with state management
- Pause/resume functionality
2025-07-06 18:26:09 -05:00
**Files to Create:**
2025-07-06 18:26:09 -05:00
- `src/scenes/BootScene.ts`
- `src/scenes/PreloadScene.ts`
- `src/scenes/MenuScene.ts`
- `src/scenes/GameScene.ts`
- `src/systems/SceneManager.ts`
- id: game-state-management
title: Game State Management
template: |
**Purpose:** Track player progress and game status
2025-07-06 18:26:09 -05:00
**State Categories:**
2025-07-06 18:26:09 -05:00
- Player progress (levels, unlocks)
- Game settings (audio, controls)
- Session data (current level, score)
- Persistent data (achievements, statistics)
2025-07-06 18:26:09 -05:00
**Implementation Requirements:**
2025-07-06 18:26:09 -05:00
- Save/load system with localStorage
- State validation and error recovery
- Cross-session data persistence
- Settings management
2025-07-06 18:26:09 -05:00
**Files to Create:**
2025-07-06 18:26:09 -05:00
- `src/systems/GameState.ts`
- `src/systems/SaveManager.ts`
- `src/types/GameData.ts`
- id: asset-management
title: Asset Management System
template: |
**Purpose:** Efficient loading and management of game assets
2025-07-06 18:26:09 -05:00
**Asset Categories:**
2025-07-06 18:26:09 -05:00
- Sprite sheets and animations
- Audio files and music
- Level data and configurations
- UI assets and fonts
2025-07-06 18:26:09 -05:00
**Implementation Requirements:**
2025-07-06 18:26:09 -05:00
- Progressive loading strategy
- Asset caching and optimization
- Error handling for failed loads
- Memory management for large assets
2025-07-06 18:26:09 -05:00
**Files to Create:**
2025-07-06 18:26:09 -05:00
- `src/systems/AssetManager.ts`
- `src/config/AssetConfig.ts`
- `src/utils/AssetLoader.ts`
- id: input-management
title: Input Management System
template: |
**Purpose:** Handle all player input across platforms
2025-07-06 18:26:09 -05:00
**Input Types:**
2025-07-06 18:26:09 -05:00
- Keyboard controls
- Mouse/pointer interaction
- Touch gestures (mobile)
- Gamepad support (optional)
2025-07-06 18:26:09 -05:00
**Implementation Requirements:**
2025-07-06 18:26:09 -05:00
- Input mapping and configuration
- Touch-friendly mobile controls
- Input buffering for responsive gameplay
- Customizable control schemes
2025-07-06 18:26:09 -05:00
**Files to Create:**
2025-07-06 18:26:09 -05:00
- `src/systems/InputManager.ts`
- `src/utils/TouchControls.ts`
- `src/types/InputTypes.ts`
- id: game-mechanics-systems
title: Game Mechanics Systems
instruction: For each major mechanic defined in the GDD, create a system specification
repeatable: true
sections:
- id: mechanic-system
title: "{{mechanic_name}} System"
template: |
**Purpose:** {{system_purpose}}
2025-07-06 18:26:09 -05:00
**Core Functionality:**
2025-07-06 18:26:09 -05:00
- {{feature_1}}
- {{feature_2}}
- {{feature_3}}
2025-07-06 18:26:09 -05:00
**Dependencies:** {{required_systems}}
2025-07-06 18:26:09 -05:00
**Performance Considerations:** {{optimization_notes}}
2025-07-06 18:26:09 -05:00
**Files to Create:**
2025-07-06 18:26:09 -05:00
- `src/systems/{{system_name}}.ts`
- `src/gameObjects/{{related_object}}.ts`
- `src/types/{{system_types}}.ts`
- id: physics-collision
title: Physics & Collision System
template: |
**Physics Engine:** {{physics_choice}} (Arcade Physics/Matter.js)
2025-07-06 18:26:09 -05:00
**Collision Categories:**
2025-07-06 18:26:09 -05:00
- Player collision
- Enemy interactions
- Environmental objects
- Collectibles and items
2025-07-06 18:26:09 -05:00
**Implementation Requirements:**
2025-07-06 18:26:09 -05:00
- Optimized collision detection
- Physics body management
- Collision callbacks and events
- Performance monitoring
2025-07-06 18:26:09 -05:00
**Files to Create:**
2025-07-06 18:26:09 -05:00
- `src/systems/PhysicsManager.ts`
- `src/utils/CollisionGroups.ts`
- id: audio-system
title: Audio System
template: |
**Audio Requirements:**
2025-07-06 18:26:09 -05:00
- Background music with looping
- Sound effects for actions
- Audio settings and volume control
- Mobile audio optimization
2025-07-06 18:26:09 -05:00
**Implementation Features:**
2025-07-06 18:26:09 -05:00
- Audio sprite management
- Dynamic music system
- Spatial audio (if applicable)
- Audio pooling for performance
2025-07-06 18:26:09 -05:00
**Files to Create:**
2025-07-06 18:26:09 -05:00
- `src/systems/AudioManager.ts`
- `src/config/AudioConfig.ts`
- id: ui-system
title: UI System
template: |
**UI Components:**
2025-07-06 18:26:09 -05:00
- HUD elements (score, health, etc.)
- Menu navigation
- Modal dialogs
- Settings screens
2025-07-06 18:26:09 -05:00
**Implementation Requirements:**
2025-07-06 18:26:09 -05:00
- Responsive layout system
- Touch-friendly interface
- Keyboard navigation support
- Animation and transitions
2025-07-06 18:26:09 -05:00
**Files to Create:**
2025-07-06 18:26:09 -05:00
- `src/systems/UIManager.ts`
- `src/gameObjects/UI/`
- `src/types/UITypes.ts`
- id: performance-architecture
title: Performance Architecture
instruction: Define performance requirements and optimization strategies
sections:
- id: performance-targets
title: Performance Targets
template: |
**Frame Rate:** 60 FPS sustained, 30 FPS minimum
**Memory Usage:** <{{memory_limit}}MB total
**Load Times:** <{{initial_load}}s initial, <{{level_load}}s per level
**Battery Optimization:** Reduced updates when not visible
- id: optimization-strategies
title: Optimization Strategies
sections:
- id: object-pooling
title: Object Pooling
type: bullet-list
template: |
- Bullets and projectiles
- Particle effects
- Enemy objects
- UI elements
- id: asset-optimization
title: Asset Optimization
type: bullet-list
template: |
- Texture atlases for sprites
- Audio compression
- Lazy loading for large assets
- Progressive enhancement
- id: rendering-optimization
title: Rendering Optimization
type: bullet-list
template: |
- Sprite batching
- Culling off-screen objects
- Reduced particle counts on mobile
- Texture resolution scaling
- id: optimization-files
title: Files to Create
type: bullet-list
template: |
- `src/utils/ObjectPool.ts`
- `src/utils/PerformanceMonitor.ts`
- `src/config/OptimizationConfig.ts`
- id: game-configuration
title: Game Configuration
instruction: Define all configurable aspects of the game
sections:
- id: phaser-configuration
title: Phaser Configuration
type: code
language: typescript
template: |
// src/config/GameConfig.ts
const gameConfig: Phaser.Types.Core.GameConfig = {
type: Phaser.AUTO,
width: {{game_width}},
height: {{game_height}},
scale: {
mode: {{scale_mode}},
autoCenter: Phaser.Scale.CENTER_BOTH
},
physics: {
default: '{{physics_system}}',
{{physics_system}}: {
gravity: { y: {{gravity}} },
debug: false
}
},
// Additional configuration...
};
- id: game-balance-configuration
title: Game Balance Configuration
instruction: Based on GDD, define configurable game parameters
type: code
language: typescript
template: |
// src/config/GameBalance.ts
export const GameBalance = {
player: {
speed: {{player_speed}},
health: {{player_health}},
// Additional player parameters...
},
difficulty: {
easy: {{easy_params}},
normal: {{normal_params}},
hard: {{hard_params}}
},
// Additional balance parameters...
};
- id: development-guidelines
title: Development Guidelines
instruction: Provide coding standards specific to game development
sections:
- id: typescript-standards
title: TypeScript Standards
sections:
- id: type-safety
title: Type Safety
type: bullet-list
template: |
- Use strict mode
- Define interfaces for all data structures
- Avoid `any` type usage
- Use enums for game states
- id: code-organization
title: Code Organization
type: bullet-list
template: |
- One class per file
- Clear naming conventions
- Proper error handling
- Comprehensive documentation
- id: phaser-best-practices
title: Phaser 3 Best Practices
sections:
- id: scene-management-practices
title: Scene Management
type: bullet-list
template: |
- Clean up resources in shutdown()
- Use scene data for communication
- Implement proper event handling
- Avoid memory leaks
- id: game-object-design
title: Game Object Design
type: bullet-list
template: |
- Extend Phaser classes appropriately
- Use component-based architecture
- Implement object pooling where needed
- Follow consistent update patterns
- id: testing-strategy
title: Testing Strategy
sections:
- id: unit-testing
title: Unit Testing
type: bullet-list
template: |
- Test game logic separately from Phaser
- Mock Phaser dependencies
- Test utility functions
- Validate game balance calculations
- id: integration-testing
title: Integration Testing
type: bullet-list
template: |
- Scene loading and transitions
- Save/load functionality
- Input handling
- Performance benchmarks
- id: test-files
title: Files to Create
type: bullet-list
template: |
- `tests/utils/GameLogic.test.ts`
- `tests/systems/SaveManager.test.ts`
- `tests/performance/FrameRate.test.ts`
- id: deployment-architecture
title: Deployment Architecture
instruction: Define how the game will be built and deployed
sections:
- id: build-process
title: Build Process
sections:
- id: development-build
title: Development Build
type: bullet-list
template: |
- Fast compilation
- Source maps enabled
- Debug logging active
- Hot reload support
- id: production-build
title: Production Build
type: bullet-list
template: |
- Minified and optimized
- Asset compression
- Performance monitoring
- Error tracking
- id: deployment-strategy
title: Deployment Strategy
sections:
- id: web-deployment
title: Web Deployment
type: bullet-list
template: |
- Static hosting ({{hosting_platform}})
- CDN for assets
- Progressive loading
- Browser compatibility
- id: mobile-packaging
title: Mobile Packaging
type: bullet-list
template: |
- Cordova/Capacitor wrapper
- Platform-specific optimization
- App store requirements
- Performance testing
- id: implementation-roadmap
title: Implementation Roadmap
instruction: Break down the architecture implementation into phases that align with the GDD development phases
sections:
- id: phase-1-foundation
title: "Phase 1: Foundation ({{duration}})"
sections:
- id: phase-1-core
title: Core Systems
type: bullet-list
template: |
- Project setup and configuration
- Basic scene management
- Asset loading pipeline
- Input handling framework
- id: phase-1-epics
title: Story Epics
type: bullet-list
template: |
- "Engine Setup and Configuration"
- "Basic Scene Management System"
- "Asset Loading Foundation"
- id: phase-2-game-systems
title: "Phase 2: Game Systems ({{duration}})"
sections:
- id: phase-2-gameplay
title: Gameplay Systems
type: bullet-list
template: |
- {{primary_mechanic}} implementation
- Physics and collision system
- Game state management
- UI framework
- id: phase-2-epics
title: Story Epics
type: bullet-list
template: |
- "{{primary_mechanic}} System Implementation"
- "Physics and Collision Framework"
- "Game State Management System"
- id: phase-3-content-polish
title: "Phase 3: Content & Polish ({{duration}})"
sections:
- id: phase-3-content
title: Content Systems
type: bullet-list
template: |
- Level loading and management
- Audio system integration
- Performance optimization
- Final polish and testing
- id: phase-3-epics
title: Story Epics
type: bullet-list
template: |
- "Level Management System"
- "Audio Integration and Optimization"
- "Performance Optimization and Testing"
- id: risk-assessment
title: Risk Assessment
instruction: Identify potential technical risks and mitigation strategies
type: table
template: |
| Risk | Probability | Impact | Mitigation Strategy |
| ---------------------------- | ----------- | ---------- | ------------------- |
| Performance issues on mobile | {{prob}} | {{impact}} | {{mitigation}} |
| Asset loading bottlenecks | {{prob}} | {{impact}} | {{mitigation}} |
| Cross-platform compatibility | {{prob}} | {{impact}} | {{mitigation}} |
- id: success-criteria
title: Success Criteria
instruction: Define measurable technical success criteria
sections:
- id: technical-metrics
title: Technical Metrics
type: bullet-list
template: |
- All systems implemented per specification
- Performance targets met consistently
- Zero critical bugs in core systems
- Successful deployment across target platforms
- id: code-quality
title: Code Quality
type: bullet-list
template: |
- 90%+ test coverage on game logic
- Zero TypeScript errors in strict mode
- Consistent adherence to coding standards
- Comprehensive documentation coverage