Skip to content

Bullet Heaven / Dark Cosmos — Design Context

Bullet Heaven / Dark Cosmos — Design Context

Section titled “Bullet Heaven / Dark Cosmos — Design Context”

The player ship — cyan primary accent against near-black

Neon-void: near-black space as the canvas, a single confident cyan accent carrying most UI weight, per-system accent colors (weapon/element identity colors) used sparingly and only where they carry real meaning (e.g. a weapon icon’s own color, never a decorative gradient).

  • Primary accent: NeonTheme.CYAN — carries HP bar (healthy), borders, headers, default UI accent.
  • Semantic HP ramp: cyan (>60% HP) → lerp cyan/amber (30–60%) → red Color(1.0, 0.25, 0.2) (<30%), defined in Hud._hp_color(frac). Reuse this exact curve as the trigger for any new HP-driven prominence/urgency scaling — color and visual weight should escalate together, not independently.
  • Per-weapon/per-element identity colors (WeaponPanel._WeaponIcon._COLOR, ElementPalette): fixed per kind, never element-tinted for weapon icons (a weapon keeps its own color regardless of current element).
  • Backgrounds use near-black translucent panels (Color(0.02, 0.03, 0.06, 0.6–0.66)), never flat pure black.
  • Orbitron (NeonTheme.title_font()): headers, titles, UI labels — geometric, screen-legible at distance.
  • JetBrains Mono (NeonTheme.mono_font()): HUD numbers (HP values, timers) — monospace so digits don’t shift width as they change.
  • Glass/glow card treatment (established in the 2026-07-03 HUD/shop polish pass): StyleBoxFlat with a dark translucent bg_color, thin 1–2px accent border at restrained alpha (~0.22–0.42, not a heavy glow), a soft accent-tinted shadow (size 3–7px). This is the shared visual family across menu cards, docks, and HUD bars — restrained, not maximalist neon.
  • Circular docks (WeaponPanel.slot_style(), shared by weapon/drone docks): corner_radius == size/2 on a square StyleBoxFlat, 1px border. Reads as one visual family with the ability bar’s own circular module rings.
  • Bars (Hud._bar_track_style/_bar_fill_style): rounded track (12px corner radius) + rounded glowing fill pill (8px corner radius), fill shadow at 0.5 alpha for a genuine glow.
  • Anchored Controls via set_anchors_preset — never hardcoded pixel positions in a CanvasLayer (a documented past bug class in this project).
  • Top-center: player-critical status (HP only — level/XP removed from the live HUD per the 2026-07-03 HUD elegance pass; level now shows on the level-up panel and Ship Configuration screen instead).
  • Top-left: tactical/loadout info (weapon dock, drone dock, ability icons) — secondary to survival status, should read as clearly lower-priority than the HP block through size/position/default-visibility, not equal visual weight.
  • Bottom-center: transient onboarding-only content (control hints), self-dismissing — never a permanent fixture.
  • Continuous subtle idle motion (thruster pulse, glow breathing) rather than static elements — but never distracting or fast enough to compete with gameplay reading.
  • Transient celebratory moments (level-up) should be brief (under ~1s) and not block input/movement.