← ALL DOCUMENTS

Ω 26 — VFX & Particle Systems

26 — VFX & Particle Systems

Purpose

This document specifies all visual effects and particle systems in Tao Baryon — enemy death VFX, player hit reactions, weapon impacts, environmental effects, special ability visuals, boss phase transitions, and performance budgets. It bridges the visual identity specification (25_visual_identity.md) and the gameplay systems into concrete implementation guidance.


VFX Philosophy

Juice without noise

Every VFX serves a function. Enemy death — communicates kill. Hit reaction — communicates damage. Phase transition — communicates escalation. No effect exists purely for decoration. When a player is in a 10× combo at depth 200 in endless mode, there will be simultaneously 50+ enemies on screen and dense bullet patterns. Every particle that does not communicate information is visual noise that obscures the player's ability to read the battlefield.

The test: Cover the VFX. Does the gameplay still communicate everything essential through audio and UI alone? Yes — the VFX is additive. No — the VFX is load-bearing and must be present even at reduced quality.

Performance gates

All particle systems are implemented with a hard budget (see Performance Budget section). On low-spec devices (frame time > 18ms), particle counts scale down automatically in priority order. No VFX failure should cause a gameplay failure — the game must be playable with all particles disabled.

The playfield must remain readable

No VFX may obscure the player's hitbox. No VFX may be white (it creates false "is this a bullet?" confusion). Enemy death VFX resolves in under 0.5 seconds. Persistent environmental VFX (hazards, fields) use visual languages distinct from bullet visual languages.


Enemy Death VFX

Grunt Deaths (G1–G5)

Trigger: Enemy HP reaches 0 Duration: 0.3–0.4s Particle count: 8–12 particles

Specification:

  • Small burst of 8–12 square particles (2–3px each), flying outward from death position
  • Color: warm orange-red (Telos hull color) transitioning to dark gray as they cool
  • Brief bright flash (1 frame) at death position — white-adjacent (actually #ffe0d0, warm not cold white)
  • Score pop spawns simultaneously at death position (see 19_hud.md)
  • Particle lifetime: 0.3s, fading out with alpha
  • No lingering effects

Scale by tier: G1 = minimal (8 particles), G5 = moderate (12 particles, slightly larger flash). The player should feel G5 deaths as more significant without it becoming visually overwhelming.

Strafer Deaths (S1–S2)

Duration: 0.35s Particle count: 10–15

Specification:

  • Elongated particles (3×6px streaks) following the strafer's last movement direction — the ship breaks apart in motion
  • Color: blue-gray (strafers have a cooler hull than grunts) → gray → transparent
  • Brief directional scatter rather than radial burst — the death has momentum

Bomber Deaths (B1–B5)

Duration: 0.5–0.6s Particle count: 20–30

Specification:

  • Larger explosion than grunts — bombers carry payload
  • Three-part sequence: (1) brief flash, (2) primary burst (15–20 particles), (3) secondary debris cloud (5–10 slower particles)
  • Color: warm orange core → red → dark smoke particles
  • B4/B5 deaths: add a brief shockwave ring (expanding circle, no fill, just a thin ring at 80% opacity fading over 0.3s, radius expands from 0 to 24px)
  • Shockwave does not deal damage — visual only

Sniper Deaths (Sn1–Sn3)

Duration: 0.4s Particle count: 12–16

Specification:

  • Surgical collapse — the sniper doesn't explode dramatically, it dies precisely
  • Particles implode slightly inward before scattering (brief inward pull, 0.1s, then scatter)
  • Color: muted gold (Telos precision identity) → gray
  • At Sn3: a brief bright line (the sniper's targeting beam, cut off) traces back toward the sniper's last aim point, then fades over 0.15s

Kamikaze Deaths (K1–K4)

Duration: 0.5s Particle count: 15–25

Specification:

  • Kamikazes explode on contact — death VFX doubles as collision VFX
  • Large radial burst with 15–20 particles
  • K4: Full shockwave ring (larger than bomber — 32px final radius) + extra particles
  • Color: hot white core → orange → red
  • K3/K4: brief screen flash at impact (white frame, 1 frame — only for kamikaze contact damage, not other impacts)

Elite Deaths (E1–E4)

Duration: 0.8s Particle count: 30–50

Specification:

  • All elites have enhanced death VFX that communicates their significance
  • Two-phase: (1) dramatic collapse (0.3s, particles implode), (2) outward burst (0.5s, larger particles)
  • Color: specific per elite type:
    • E1 Choral Knight: magenta-gold (full Telos liturgical colors)
    • E2 Inquisitor Hunter: cold blue-white (clinical, precise)
    • E3 Geometer Saint: golden mathematical spiral pattern (particles arrange briefly in spiral before dispersing — 0.2s)
    • E4 Apparatus Guardian: mixed color burst — all Telos colors simultaneously (it has been all things)
  • 0.3s audio pause (see 24_audio.md — elite death sound includes a brief silence)
  • Score pop for elite kill is larger font (16px vs. 12px) and a distinct amber color

Boltzmann Construct Deaths (Endless)

Duration: 1.0s Particle count: 40–60

Specification:

  • The construct was barely coherent; its death is a decoherence event
  • Particles scatter randomly, change direction mid-flight (Boltzmann randomness)
  • Some particles briefly form recognizable geometric shapes before dissolving
  • Colors: shifting — orange to purple to teal, non-uniform across particles
  • Rare drop item spawns from center after 0.3s (guaranteed)
  • Brief text: "BOLTZMANN" in small warm text rises from position, fades over 1.5s

Player Hit VFX

Standard Damage

Duration: 0.15s Effect: Ship sprite flashes red-white for 2 frames. No particle burst. HP bar: Smooth transition to new value (200ms).

Shield Hit (no HP damage)

Duration: 0.2s Effect: Brief geometric shield flash — hexagonal pattern outline flares and fades around the ship. Blue-white color. No screen shake. Sound is clean click.

Critical Hit (HP drops below 25%)

Duration: 0.3s Effect: Larger flash + brief screen desaturation for 0.5s (saturation drops to 70%). The world looks worse when the player is in danger. Recovers to normal saturation over 0.5s.

Player Death

Duration: 1.2s Specification:

  • Ship sprite begins collapse animation (0.3s — hull cracks, dims)
  • Then: bass implosion particle burst (40 particles, inward first then outward)
  • Color: lime #c8f542 — the player's own color, dissipating. Their matter, unresolved.
  • Screen fades to black over 0.6s
  • No respawn flash — the black holds until the player taps (continue/restart)

Weapon Impact VFX

W1 Pulse Cannon Impact

Brief electric sizzle particle (3 particles, tiny, 0.15s). Color: lime core → white edge.

W2 Inertial Lance Impact

Small debris scatter (4 particles, square, 0.2s). Color: gray-white. Impact point shows brief deformation on target sprite (hull briefly darkens at impact location, recovers over 0.3s).

W3 Coherence Beam Impact

Continuous sustained VFX while beam is on target: small bright particles spawn at impact point and drift off the target. Color: white core with magenta fringe. When beam ends, a brief cooling effect (impact point dims over 0.2s).

W4 Hawking Bolt Detonation

Major impact VFX:

  • Primary burst: 20–30 particles, radial, hot white core → deep purple
  • Shockwave ring: 40px final radius, 0.4s
  • Small particle "evaporation" trail rises from detonation point over 0.8s — references Hawking radiation

W5 Penrose Lance Impact

Scaling with charge (distance):

  • Short range: small impact, 5 particles
  • Max range: large impact, 20 particles + gold-magenta burst ring

W6 Anomaly Field Active VFX

Persistent effect (3–5s duration):

  • Enemies inside field: subtle geometric distortion applied to their sprites (shader effect — vertices shift ±2px periodically, enemies look "wrong")
  • Particle effect: small angular particles orbit the field boundary
  • Color: shifting blue-violet
  • On collapse: sharp snap VFX — all distortion resolves instantly, brief white ring at collapse point

W7 Cosmic String Spear

  • A thin white line renders across the full playfield width, 1px, lasting 0.3s (M0–M2) or 0.5s (M3)
  • Along the line: subtle gravitational shimmer (pixels adjacent to the line slightly displaced)
  • At the far end: brief small flash where the string "anchors"
  • No blood/gore-adjacent imagery — the enemies simply aren't there after the line passes through them

W8 Boltzmann Cascade

Pattern-dependent impacts. Each of the 5 pattern types has its own impact VFX, visually matching the projectile type that landed.


Special Ability VFX

S1 — Singularity Pull

Deploy: Small black sphere appears at target point, surrounded by bright accretion ring (thin, fast-spinning) Active (2s): Particles drawn toward center — enemy particles, loose debris, even some enemy bullets deform toward it. Visual gravity. Collapse: Inward implosion, brief flash, sphere disappears

S2 — Phase Shift

Activate: Ship outline becomes translucent (opacity 40%). Edges glow with brief quantum shimmer (sparkle pattern around ship boundary, 0.3s) Active: Ship sprite rendered at 40% opacity with a blue-white edge glow. Bullets pass through with no impact VFX. Deactivate: Opacity returns to 100% with brief flash. The ship snaps back into full presence.

S3 — Time Dilation Field

Deploy: Circle expands from target point to full radius (0.4s), marked by a thin blue ring Active: Interior of field: subtle blur/soft-focus on elements inside. Time-dilated elements have a faint blue tint. The ring pulses slowly. Collapse: Ring implodes to center with a clean click VFX

S4 — Cherenkov Burst

Activate: Ship gains bright blue-white glow, intensity scales with speed Active: Blue Cherenkov cone trails behind ship movement direction. Contact with enemies creates bright blue burst at contact point. Deactivate: Glow fades over 0.5s

S5 — Vacuum Pulse

Deploy: Expanding ring from player ship — bright white, thin, expands to full radius (full playfield width if strong enough) over 0.4s Effect: Bullets hit by ring dissolve into small sparkle particles No lingering effect — the ring clears and is gone

S6 — Penrose Charge

Wind-up (1s): Ship glows intensely — bright gold-magenta gradient appearing around the hull Fire: Single massive beam VFX — much wider and brighter than the standard Penrose Lance. The entire beam is visible for 0.3s before fading. Impact: Largest weapon impact in the game. Boss encounters: camera briefly (0.1s) shakes + screen flash.

S7 — Coherence Field

Active: Geometric shield visible — hexagonal lattice pattern, semi-transparent blue-white. Lattice glows at the edges. Taking a hit while shielded: Hexagons flash bright at impact point. Shield absorbs hits visually — no damage VFX on the ship. Expiry: Lattice dissolves particle by particle over 0.3s.

S8 — Vacuum Bloom

Deploy: A growing sphere of distortion — the Anomaly Field visual but faster and more intense Risk zone: The boundary pulses between visibility and near-invisible. Player must exit the boundary — the visual design must make the boundary readable but not trivially safe. Enemies inside: Geometry completely decoherent — sprites tear apart visually Collapse: Everything snaps. Brief bright flash at the center.


Boss Phase Transition VFX

All Bosses (Common)

At 70% and 40% HP thresholds:

  1. Boss sprite briefly flashes white (2 frames)
  2. 0.5s pause — all enemy fire and movement freezes
  3. Boss sprite darkens briefly (0.2s) then returns to full brightness at new phase colors
  4. HP bar phase marker turns red
  5. New music phase begins
  6. Boss resumes with new attack patterns

Phase color shift: Each phase transition shifts the boss sprite's color temperature slightly toward red — they become visually warmer and more dangerous as phases progress.

Halen — Special Phase Transitions

Phase 1 → Phase 2 (70% HP):

  • 1-second extended pause (longer than other bosses)
  • The Apparatus background structure visible in Stage 30 briefly brightens — Halen has merged more deeply with it
  • His sprite shifts from human-ship silhouette toward something larger and less defined
  • His voice line plays during the pause

Phase 2 → Phase 3 (40% HP):

  • 0.5s pause
  • Screen briefly shows the ghost image of Halen's pre-upload design (human shape) overlaid on his ship sprite, then fades — 0.5s, opacity 30%
  • This is the only moment in the game where his humanity is directly visualized
  • No in-game explanation. Players who recognize it will feel it. Players who don't will remember it later when they read the Codex.

Halen Death:

  • No explosion. His sprite implodes — collapses inward to a single point, then disappears cleanly. No debris. No fragments.
  • At the collapse point: a brief burst of particles in his hull colors — the colors of a consciousness that spent 847 years alive.
  • The point of collapse glows faintly for 3 seconds, then fades.
  • Then: 8 seconds of nothing.
  • Then: the 10 Veiled witnessing craft enter from the top of the screen, slowly, in formation. No bullets. They are here to observe.

Environmental Hazard VFX

Gravitational Lensing Zones

  • Background slightly distorted in zone (shader: UV displacement, strength ±4px at center)
  • Edge of zone: thin visible ring, very faint (#8b8fa8 at 30% opacity), radius pulse 4s cycle

Exotic Matter Clouds

  • Irregular cloud shape rendered as soft transparent noise
  • Color: soft blue-purple, 20% opacity maximum
  • Projectiles entering the cloud: brief trail distortion (projectile path curves slightly)

Time-Dilated Zones

  • Zone boundary: soft blue ring, pulsing slowly
  • Interior: very slight hue shift (everything inside +10° toward blue on the color wheel)
  • The player ship inside the zone has a faint blue aura

Cosmic Strings (Sector 5 + Endless depth 300+)

  • 2-second pre-materialization warning: thin dashed line at final position, #555972 at 60% opacity
  • Materialization: line brightens from ends toward center over 0.3s, reaches full bright white
  • Active: 2px white line with a pixel-displacement shimmer along its length — space is not flat here
  • Movement: drifts at constant speed, no acceleration
  • De-materialization: reverse of materialization (fades from center outward)

Spacetime Collapse Zones (Sector 5 + Endless depth 500+)

  • Large zone filled with dark/transparent animated "collapse" texture — geometry being consumed
  • Rim: bright red outline, pulsing fast (1Hz) to communicate danger
  • Entering the zone: player takes increasing damage per second — the damage is visualized as the ship sprite having its edges "eaten" by the collapse texture

Performance Budget

Particle Budget Per Frame

Device tier Max particles Behavior at limit
High-end (60fps target) 400 No culling
Mid-range (60fps) 250 Score pops culled first
Low-end (30fps target) 120 Score pops, debris trail, cloud VFX culled
Reduce Motion ON 60 Only load-bearing VFX (hit flash, death burst)

Culling Priority (lowest priority culled first)

  1. Score pop floaters
  2. Pickup magnet particles
  3. Distant enemy death debris (enemies off-screen or near edge)
  4. Shockwave rings (only the ring, not the burst)
  5. Ambient environmental particle effects
  6. Non-critical impact sparks
  7. (Never culled) Player hit flash, player death, boss phase transitions, boss death

Shader Budget

  • Maximum 2 active shaders simultaneously (distortion + tint)
  • Anomaly Field distortion shader: disabled on low-end, replaced with simple color tint
  • Time-Dilation Zone hue shift: can be disabled (replaced with just the ring border)
  • Cosmic String displacement: can be disabled (line still renders, just without displacement effect)

Summary — Locked Decisions

  1. All VFX serve a function — visual noise over the playfield is a bug, not a feature
  2. Enemy death VFX: 0.3–0.8s per tier, particle counts scale with enemy significance
  3. Elite deaths have enhanced 2-phase VFX, type-specific color signatures
  4. Player death: lime #c8f542 particles (their own color dissolving) — authorial choice
  5. Halen Phase 2→3 transition: ghost image of human shape overlaid on ship sprite for 0.5s — only moment his humanity is directly visualized
  6. Halen death: implosion to a point, 8s silence, Witnesses enter — no explosion
  7. W7 Cosmic String Spear: 1px white line across playfield, gravitational shimmer, clean
  8. S3 Time Dilation: audio pitch of all sounds inside field drops to 70% — VFX and audio work together
  9. Performance budget: 400/250/120/60 particles max by device tier; culling priority defined
  10. Shaders: max 2 active simultaneously, graceful degradation on low-end devices
  11. Cosmic String: 2s dashed pre-warning before materialization — mandatory, no exceptions

Document version: 1.0 (locked) Part of: Tao Baryon GDD — Tier 5 Audio & Visual