Skip to content

Add damage system - Shields + Hull model (Implementation B) - #25

Open
wannerdev wants to merge 1 commit into
mainfrom
feature/damage-system-shields
Open

Add damage system - Shields + Hull model (Implementation B)#25
wannerdev wants to merge 1 commit into
mainfrom
feature/damage-system-shields

Conversation

@wannerdev

Copy link
Copy Markdown
Owner

Description

Alternative damage system implementation with regenerating shields, knockback mechanics, and arcade-style gameplay.

Implementation Approach

This is Implementation B - Shields + Hull Model with regeneration and knockback.

Key Differences from Implementation A

  • Two-Layer Defense: Shields absorb damage before hull
  • Shield Regeneration: Shields regenerate over time
  • Knockback: Shield hits push satellites away
  • Visual Flicker: White flash effect on shield hits
  • Arcade Feel: More forgiving with regenerating shields

Core Features

Shield System

  • Level 1: 30 shields, 5/sec regen
  • Level 2: 50 shields, 8/sec regen
  • Level 3: 75 shields, 12/sec regen
  • Shields regenerate continuously when not at max

Hull System

  • Level 1: 50 HP
  • Level 2: 85 HP
  • Level 3: 120 HP
  • Hull only takes damage when shields are depleted

Damage Pipeline

  1. Damage hits shields first
  2. Shields absorb what they can
  3. Remaining damage goes to hull
  4. Level demotion based on hull HP percentage

Knockback Mechanics

  • Triggers when shields absorb damage
  • Force = shield_damage * 0.5
  • Direction away from damage source
  • Adds dynamic movement to combat

Visual Effects

  • Shield Ring: Cyan/blue, alpha based on shield %
  • Shield Hit: White flicker for 0.3 seconds
  • Hull Damage: Red glow (only when shields down)

Changes

  • Created damage_system_shields module
  • Added Shields component with regeneration
  • Added Hull component for secondary HP
  • Added ShieldHit component for flicker effect
  • Implemented two-stage damage pipeline
  • Implemented regenerate_shields system
  • Implemented knockback on shield hits
  • Added shield and hull visual effects
  • Integrated into satellite spawning

Technical Implementation

Damage Absorption

let shield_damage = ev.amount.min(shields.current);
shields.current -= shield_damage;
let remaining_damage = ev.amount - shield_damage;
hull.hp -= remaining_damage;

Shield Regeneration

  • Runs every frame
  • Adds regen_per_sec * delta_time to current shields
  • Capped at max shields
  • Continuous regeneration (no delay)

Knockback System

  • Calculates direction from source to target
  • Applies force to velocity
  • Only triggers on shield hits (not hull damage)
  • Proportional to damage absorbed

Visual Feedback

  • Shield Ring: Always visible, alpha = shield %
  • Flicker: White ring on hit, fades over 0.3s
  • Hull Damage: Red glow only when shields = 0

Gameplay Impact

More Forgiving

  • Shields regenerate, allowing recovery
  • Minor damage doesn't cause permanent harm
  • Encourages aggressive play with safety net

Strategic Depth

  • Manage shield regeneration time
  • Retreat when shields low
  • Knockback adds positioning challenge
  • Visual feedback for shield status

Risk vs Reward

  • Can take calculated risks with shields
  • Shield regen allows sustained close orbits
  • Hull damage is permanent (until demotion)
  • Level 3 has best shield regen

Balancing

Shield Capacity vs Regen

  • Level 1: 30 shields, 6 seconds to full regen
  • Level 2: 50 shields, 6.25 seconds to full regen
  • Level 3: 75 shields, 6.25 seconds to full regen

Sun Damage (5 HP/sec)

  • Level 1: 6 seconds shields + 10 seconds hull = 16s total
  • Level 2: 10 seconds shields + 17 seconds hull = 27s total
  • Level 3: 15 seconds shields + 24 seconds hull = 39s total

Benefits Over Implementation A

  • More forgiving: Shields regenerate
  • Better feedback: Visual shield status
  • More dynamic: Knockback adds movement
  • Arcade feel: Faster-paced gameplay
  • Strategic depth: Shield management

Testing

  • Launch satellite into heat zone
  • Verify cyan shield ring appears
  • Watch shields deplete and regenerate
  • Check white flicker on damage
  • Verify knockback pushes satellite
  • Confirm hull damage only when shields down
  • Test level demotion at hull thresholds

Comparison with Implementation A

Feature Implementation A Implementation B
Defense Single HP pool Shields + Hull
Regeneration None Shields regen
Knockback No Yes (on shield hits)
Visual Effects Red glow Shield ring + flicker
Gameplay Feel Hardcore Arcade
Forgiveness Low High
Complexity Simple Moderate

Future Enhancements

  • Shield recharge delay after hit
  • Different shield types/colors
  • Shield boost power-ups
  • Hull repair mechanics
  • Shield overcharge system

Related Feature

Implements: Damage System (Shields + Hull Model)

- Created damage_system_shields module with Shields and Hull components
- Shields absorb damage first before hull takes damage
- Shield regeneration system (L1: 5/s, L2: 8/s, L3: 12/s)
- Level-based shields: L1=30, L2=50, L3=75
- Level-based hull HP: L1=50, L2=85, L3=120
- Shield hit visual effects (white flicker for 0.3s)
- Knockback system when shields absorb damage
- Hull damage only shows when shields are depleted
- Same sun radiation and demotion thresholds as Implementation A
- Arcade-style gameplay with regenerating shields
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant