Add difficulty level design
This commit is contained in:
39
DESIGN.md
39
DESIGN.md
@@ -44,6 +44,7 @@ Prefer Godot resources or plain C# definition classes for tunable game content.
|
||||
- `WeaponDefinition`: firing cadence, projectile count, damage, speed, collision behavior, seeking rules, level scaling.
|
||||
- `SquadronMateTypeDefinition`: formation rule, spacing, movement smoothing, targeting behavior, visuals.
|
||||
- `SpecialWeaponDefinition`: initial ammo, ammo pickup amount, projectile behavior, damage rule, invulnerability or pull effects.
|
||||
- `DifficultyDefinition`: named difficulty preset, gameplay multipliers, survival rules, score modifiers, content overrides.
|
||||
|
||||
## Level System
|
||||
|
||||
@@ -439,6 +440,40 @@ Scoring sources:
|
||||
|
||||
The score system should publish events for UI, highscore, level-up thresholds, and mission results.
|
||||
|
||||
## Difficulty Levels
|
||||
|
||||
Difficulty should be selected before starting a run and then remain fixed until game over, normal victory, or secret victory. It should be represented by a `DifficultyDefinition` so the final jam topic can rebalance the game without rewriting missions.
|
||||
|
||||
Difficulty should affect systems through explicit multipliers and overrides:
|
||||
|
||||
- Enemy health multiplier.
|
||||
- Enemy projectile speed multiplier.
|
||||
- Enemy fire cadence multiplier.
|
||||
- Enemy spawn density multiplier.
|
||||
- Cluster spawn interval multiplier.
|
||||
- Boss health multiplier.
|
||||
- Boss phase timing multiplier.
|
||||
- Hero starting shield charges.
|
||||
- Hero retry count.
|
||||
- Collectible drop rate multiplier.
|
||||
- Special weapon initial ammo multiplier.
|
||||
- Score multiplier.
|
||||
- Clear screen pickup strength.
|
||||
- Enemy escape rule override for cluster rewards.
|
||||
|
||||
Avoid making difficulty depend on hidden rules. The player should be able to understand the broad promise of each difficulty from the menu.
|
||||
|
||||
Suggested presets:
|
||||
|
||||
- Easy: more shield charges, slower enemy projectiles, fewer spawns, generous drops, no score bonus.
|
||||
- Normal: intended baseline for first completion.
|
||||
- Hard: faster enemy projectiles, denser clusters, stricter boss timings, moderate score bonus.
|
||||
- Expert: highest density and speed, fewer retries or shields, strongest score bonus, intended for highscore runs.
|
||||
|
||||
Difficulty should not change core controls, mission order, weapon identity, or story outcome. Secret victory may require a minimum difficulty if the final topic benefits from that, but the requirement should be visible before the run starts.
|
||||
|
||||
Difficulty-specific mission overrides can be used when multipliers are not enough. For example, a mission may add an extra enemy cluster on Hard and Expert, or replace a boss projectile pattern on Expert. These overrides should be optional and declared in mission data.
|
||||
|
||||
## Persistence
|
||||
|
||||
Persist only what needs to survive across missions or game sessions.
|
||||
@@ -460,6 +495,7 @@ Run-ending highscore state:
|
||||
- Player name or initials.
|
||||
- Score.
|
||||
- Mission reached.
|
||||
- Difficulty.
|
||||
|
||||
## Testing Strategy
|
||||
|
||||
@@ -475,10 +511,13 @@ High-value unit tests:
|
||||
- Game over triggers when retry count is exhausted.
|
||||
- Cluster reward is awarded only when completion rules are satisfied.
|
||||
- Special weapon ammo pickups replenish the selected special weapon.
|
||||
- Difficulty modifiers adjust enemy health, projectile speed, spawn intervals, shield charges, retries, and score.
|
||||
- Difficulty-specific mission overrides are applied only for matching difficulties.
|
||||
|
||||
High-value play tests:
|
||||
|
||||
- Start game and enter first mission.
|
||||
- Select each difficulty and verify visible run settings.
|
||||
- Pick a special weapon in the shop.
|
||||
- Complete a small enemy cluster and receive points.
|
||||
- Collect each collectible type.
|
||||
|
||||
Reference in New Issue
Block a user