13 KiB
13 KiB
Development Roadmap
Phased development plan for the Roguelite Platformer.
Overview
| Phase | Focus | Dependencies |
|---|---|---|
| 1 | Core Loop | None |
| 2 | Juice & Polish | Phase 1 |
| 3 | Meta-Progression | Phase 1 |
| 4 | Content | Phases 1-3 |
| 5 | Polish & Release | Phases 1-4 |
Phase 1: Core Loop
Goal: Playable prototype with basic mechanics
Project Setup
- Initialize Vite + Phaser 3 + TypeScript project
- Configure ESLint and Prettier
- Set up project structure (
src/,assets/,docs/) - Create
game.config.tswith Phaser configuration - Create
physics.config.tswith Arcade physics settings
Base Scenes
- BootScene - Initialize game settings
- PreloadScene - Asset loading with progress bar
- GameScene - Main gameplay scene
- GameOverScene - Death screen with restart option
Player
- Create
Player.tsentity class - Create
PlayerController.tsfor input handling - Implement horizontal movement (left/right)
- Implement jump mechanics
- Implement Coyote Time (100ms grace period)
- Implement Input Buffering (100ms jump buffer)
- Implement Variable Jump Height (hold for higher jump)
- Implement Edge Correction (4px ledge assist)
- Add responsive controls (minimal acceleration/drag)
Projectile System
- Create
Projectile.tsentity class - Implement projectile firing (direction based on player facing)
- Implement projectile pool (max 3 active)
- Implement cooldown system (~3 seconds per projectile)
- Add projectile UI indicator in HUD
Enemy (Patroller)
- Create
Enemy.tsbase class - Create
Patroller.tsenemy type - Implement patrol behavior (back-and-forth movement)
- Implement platform edge detection
- Implement enemy states: ACTIVE, STUNNED
- Implement stun mechanic (3 seconds duration)
- Add visual stun indicator (circular timer)
- Implement collision: active enemy kills player
- Implement collision: stunned enemy is passable
Collectibles
- Create
Coin.tsentity class - Implement coin collection mechanics
- Add coin counter to HUD
- Implement level completion condition (all coins collected)
Level Structure
- Implement basic tilemap loading
- Create simple test level (single room)
- Implement player spawn point
- Implement level exit (triggers on all coins collected)
- Implement level transition logic
Core HUD
- Create
UIScene.ts(parallel overlay) - Display coin counter (collected/total)
- Display projectile indicators with cooldowns
- Display current level number
Game Over
- Implement player death on enemy contact
- Implement player death on hazard contact (spikes)
- Show Game Over screen with score
- Implement restart functionality
Phase 1 Completion Criteria
- Player can move, jump, and shoot
- Game feel mechanics working (coyote time, input buffer, variable jump)
- Patroller enemy patrols and can be stunned
- Coins can be collected
- Level transitions work
- Death/restart cycle works
Phase 2: Juice & Polish
Goal: Game feels good to play
Particles
- Create
ParticleManager.tssystem - Dust particles - on landing
- Dust particles - while running (periodic)
- Projectile cloud - on firing
- Stun stars - when enemy stunned
- Coin sparkle - coin idle animation
- Death explosion - on player death
Visual Feedback
- Implement Squash & Stretch for player jump/land
- Implement Squash for enemy stun
- Add coin pulse animation
- Add projectile trail effect
Screen Effects
- Create
CameraManager.tssystem - Implement Screen Shake - micro shake on stun
- Implement Screen Shake - stronger shake on death
- Add settings option to disable screen shake
Hitstop
- Implement Freeze Frame (2-3 frames) on projectile hit
- Apply hitstop to physics pause, not game pause
Audio
- Create
AudioManager.tssystem - SFX: Jump
- SFX: Land
- SFX: Shoot projectile
- SFX: Enemy stunned
- SFX: Coin collected
- SFX: Player death
- SFX: Level complete
- SFX: Menu selection
- Music: Gameplay loop
- Music: Menu theme
- Implement volume controls
Phase 2 Completion Criteria
- All particle effects implemented
- Squash/stretch animations working
- Screen shake working with toggle option
- Hitstop adds impact to hits
- All sound effects in place
- Background music playing
Phase 3: Meta-Progression
Goal: Death -> Shop -> New Run cycle
Save System
- Create
SaveManager.tswith localStorage - Implement save data structure
- Implement save on state change
- Implement load on game start
- Implement save data migration (version support)
State Management
- Create
GameStateManager.ts - Implement
RunState(resets each run) - Implement
MetaState(persists across runs) - Implement GasCoin currency system
- Implement coin -> GasCoin conversion (1:1 + level bonus)
Shop Scene
- Create
ShopScene.ts - Design shop UI layout
- Implement upgrade display (name, description, price)
- Implement purchase mechanics
- Implement upgrade activation/deactivation
- Show owned upgrades vs available upgrades
- Show GasCoin balance
Upgrade System
- Create
UpgradeManager.ts - Define
upgrades.config.tswith all upgrades - Implement upgrade effect application
- Implement 5-10 basic upgrades:
- Light Boots (+10% speed)
- Spring Boots (+15% jump)
- Heavy Armor (+1 HP, -15% speed)
- Large Magazine (+1 projectile)
- Fast Reload (-20% cooldown)
- Range Boost (+30% projectile range)
- Strong Stun (+1s stun duration)
- Magnet (coin attraction)
- Eagle Eye (minimap)
- Danger Sense (enemy highlight)
Game Over Enhancement
- Show run statistics:
- Levels completed
- Coins collected
- Enemies stunned
- Time played
- Show GasCoins earned
- Add "Go to Shop" button
- Add "Play Again" button
Phase 3 Completion Criteria
- Progress saves correctly
- GasCoins accumulate across runs
- Shop allows purchasing upgrades
- Purchased upgrades affect gameplay
- Game Over shows stats and earnings
Phase 4: Content
Goal: Gameplay variety
Additional Enemies
- Jumper - Vertical jumping enemy (level 3+)
- Flyer - Fixed flight path enemy (level 5+)
- Chaser - Slow pursuit enemy (level 7+)
- Sprinter - Fast patrol enemy (level 10+)
- Implement enemy spawn rules by level
Hazards
- Create
Hazard.tsbase class - Spikes - Static instant death (level 2+)
- Falling Platform - Collapses after 0.5s (level 4+)
- Saw - Moving along path (level 6+)
- Turret - Shoots at intervals (level 8+)
- Laser - Toggles on/off (level 10+)
- Implement hazard spawn rules by level
Power-ups
- Create
PowerUp.tsentity class - Shield - Blocks 1 hit
- Magnet - Attracts coins (15s)
- Clock - Slows enemies 50% (10s)
- Coffee - +50% player speed (10s)
- Infinity - Unlimited projectiles (8s)
- Ghost - Phase through enemies (5s)
- Implement 10% spawn chance per level
- Add power-up timer to HUD
Procedural Generation
- Create
LevelGenerator.ts - Create
RoomPlacer.tsfor room grid - Create
PathValidator.tsfor path validation - Design room templates (JSON)
- Implement 4x4 room grid system
- Implement guaranteed path algorithm
- Implement difficulty scaling:
- Levels 1-2: 6-8 rooms, 5-8 coins, 2-3 enemies
- Levels 3-5: 8-10 rooms, 8-12 coins, 4-6 enemies
- Levels 6-9: 10-12 rooms, 12-16 coins, 6-8 enemies
- Levels 10+: 12-16 rooms, 16-20 coins, 8-12 enemies
- Create
SeededRandom.tsfor deterministic generation
More Upgrades
- Double Jump - Unlock: reach level 5
- Dash - Unlock: collect 500 coins in one run
- Second Chance - Unlock: die 50 times
- Explosive Projectile - Area stun, -1 ammo
- Ricochet - Bounces off walls
- Rapid Fire - -40% cooldown, -30% stun duration
- Greed - +50% coins, +25% enemies
- Hardcore - x2 score, no coyote time
- Berserker - Frenzy mode at 0 HP
- Pacifist - x3 score, no projectiles
- Speedrun - Time challenge mode
Achievement System
- Create achievement tracking
- Implement achievement triggers
- Add achievement notifications
- Create achievement display in menu
- Implement unlock requirements for upgrades
Phase 4 Completion Criteria
- All 5 enemy types implemented and balanced
- All 5 hazard types implemented
- All 6 power-ups working
- Procedural generation creates varied levels
- Difficulty scales appropriately
- Additional upgrades purchasable
- Achievements tracking and unlocking
Phase 5: Polish & Release
Goal: Release-ready product
Combo System
- Create
ScoreManager.ts - Implement combo multiplier (x1 -> x2 -> x3 -> x5 -> x10)
- Implement 2-second combo timeout
- Add combo display to HUD
- Implement level bonuses:
- Fast completion (<30s): +50% score
- No damage: +25% score
- No projectiles: +100% score
Leaderboard
- Implement local leaderboard (top 10)
- Create leaderboard display screen
- Add score entry on new high score
- Show rank on Game Over screen
Full UI/UX
- Create
MenuScene.tswith full menu:- Play button
- Shop button
- Leaderboard button
- Settings button
- Achievements button
- Create
PauseScene.ts:- Continue button
- Settings button
- Show current seed
- Quit to menu (with confirmation)
- Polish all UI transitions
- Add button hover/click feedback
Seed System
- Display level seed on pause screen
- Implement seed input mode
- Add "Practice Mode" (seeded, no leaderboard)
Settings
- Music volume slider
- SFX volume slider
- Screen shake toggle
- Show FPS toggle
- Reset progress (with confirmation)
Balance Pass
- Tune player movement speeds
- Tune jump heights
- Tune projectile cooldowns
- Tune stun durations
- Tune enemy speeds and behaviors
- Tune upgrade costs
- Tune difficulty scaling
- Playtest and iterate
Bug Fixing & QA
- Fix known bugs
- Test all features end-to-end
- Test save/load edge cases
- Test on multiple browsers
- Performance optimization
- Memory leak checks
Phase 5 Completion Criteria
- Combo system adds depth to gameplay
- Leaderboard encourages replayability
- Full menu navigation working
- Seed system allows practice
- Settings all functional
- Game balanced and fair
- No critical bugs
Future (Post-MVP)
Backend Integration
- Global leaderboard API
- User accounts (optional)
- Cloud save sync
Daily Challenges
- Daily seed generation
- Separate daily leaderboard
- Daily rewards
Bosses
- Design boss mechanics
- Implement boss encounters (every 5 levels?)
- Boss-specific rewards
Mobile Support
- Touch controls
- UI scaling
- Mobile-specific optimizations
Multiplayer
- Race mode (2 players)
- Shared leaderboard
- Ghost replays
Platform Release
- Steam integration
- Achievements (Steam)
- Cloud saves (Steam)
Task Dependencies
Phase 1 (Core Loop)
│
├──────────────────┐
│ │
▼ ▼
Phase 2 Phase 3
(Juice) (Meta-Progression)
│ │
└─────────┬────────┘
│
▼
Phase 4 (Content)
│
▼
Phase 5 (Polish)
│
▼
RELEASE
│
▼
Future Updates
Risk Mitigation
| Risk | Mitigation |
|---|---|
| Scope creep | Stick to MVP features per phase |
| Game feel issues | Prioritize Phase 2 polish early |
| Balance problems | Iterative testing each phase |
| Save data corruption | Version migrations, backup system |
| Performance issues | Object pooling, culling from start |
Success Metrics
Phase 1
- Can play multiple rounds
- Death/restart cycle smooth
- Player movement feels responsive
Phase 2
- Game "feels good" to play
- Feedback is satisfying
- Audio enhances experience
Phase 3
- Players want to unlock upgrades
- Meta loop is engaging
- Progress feels meaningful
Phase 4
- Variety keeps runs interesting
- Difficulty curve is fair
- Content feels sufficient
Phase 5
- No critical bugs
- Performance is stable
- Ready for public release