Skip to content

Nova Drift look: measured gap

Nova Drift look — measured gap (2026-09-23)

Section titled “Nova Drift look — measured gap (2026-09-23)”

Steps 1-2 of docs/superpowers/specs/2026-09-23-nova-drift-look-goal.md.

  • Reference: the 17 screenshots on Nova Drift’s Steam store page (appid 858210, fetched via store.steampowered.com/api/appdetails), 1920×1080. The 3 menu/UI-only frames were dropped, leaving 14 gameplay frames. Kept out of the repo (third-party art, internal comparison only).
  • Ours: 5 gameplay scenes from marketing/capture/shoot.gd (horde, arsenal, reaction, drones, boss) at TV size, adaptive tier 0, the two graphics candidates on.
  • Tool: tools/look_metrics/look_metrics.py <ref_dir> <capture_dir>, frames resized to 960×540 and measured in luma/HSV. Numbers are medians across frames.

Caveats: store screenshots are hand-picked marketing frames (busier and brighter than average play). Our captures are staged, all in one area (red swarmers), and include the threat radar’s red edge band. Treat the gaps as directional, not exact. Re-run on real-play captures once NOVA_LOOK exists.

Trait Nova Drift (median [min..max]) Dark Cosmos What it means
Near-black share of the screen (V < 0.06) 0.05% [0..21%] 64% [33..96%] ND is essentially never black
Background brightness (V, darkest 60%) 0.18 [0.07..0.54] 0.00 [0..0.04] a lit ground vs a void
Background saturation 0.79 [0.60..1.0] 0.00 ND’s ground is a deep saturated hue (violet, navy, teal, maroon)
Bright share of the screen (L > 0.6) 9.8% [2.9..23%] 0.33% [0.3..1.4%] ~30× more lit area
Bright pixels that are white-hot (S < 0.25) 55% [25..80%] 24% [7..33%] ND cores are white/pastel with coloured rims
Saturation of bright pixels 0.27 0.57 ours are saturated all the way through
Dominant hue’s share of coloured pixels 50% [37..85%] 95% [28..98%] ND: ~3 analogous hues per scene; ours: one red
Hue families over 5% 3 [2..6] 1 [1..6] same
Edge density 4.4% 2.2% ND has ~2× the linework (trails, dotted projectiles, ornate outlines)

Ranked gap (by screen area affected, then cost)

Section titled “Ranked gap (by screen area affected, then cost)”
  1. Background. A saturated deep-hue ground at ~0.15-0.2 brightness instead of black, with painted large bodies (planets, suns, dust). Affects 60-95% of every frame. NebulaBg already renders a full-screen shader, so re-grading it should be close to free on the ATV.
  2. White-hot cores, coloured rims, more lit area. Entity cores toward white, colour pushed to the rim and halo, larger soft radial halos. Touches ArchetypeRenderer core colour (CORE_HEAT) and shell alphas.
  3. Palette harmony. Two or three analogous hues per scene rather than one flat hue; affects the per-type/per-area colour tables.
  4. Linework. Dotted/beaded projectile trails, arcs, outlines. The most art-heavy trait, last.

Glow technique (the July baked-glow attempt) does not appear in the top three. That is the likeliest reason July looked “weaker” without looking more like Nova Drift: it changed the halo while the void, the monochrome palette and the saturated cores stayed.

Unit construction (added 2026-09-23 after Chris narrowed the goal)

Section titled “Unit construction (added 2026-09-23 after Chris narrowed the goal)”

Chris: “the nova drift graphics i want to replicate is how they made the units look specifically.” The scene-level gaps above are secondary; this section is the goal.

Measured on three Nova Drift units at full resolution (pink gear enemy nd_05, blue feathered boss nd_06, green blade nd_10), by distance from the unit’s silhouette (whole silhouette, seams filled):

Zone Nova Drift (L / saturation) Our Summoner today tools/nova_units mockup
Body interior 0.78-0.85 / 0.27-0.29 (pastel; the flat green blade 0.46) 0.95 / 0.23 0.85 / 0.20
Outside 0-2px 0.40-0.56 / 0.56-0.74 0.70 / 0.57 0.51 / 0.65
Outside 2-5px 0.22-0.45 / 0.60-0.83 0.65 / 0.61 0.37 / 0.64
Outside 5-10px 0.18-0.41 / 0.66-0.80 0.48 / 0.75 0.22 / 0.57

Read: a pastel body with a HARD edge, then a tight saturated band that falls off within ~5px, then a faint haze. Ours is too bright and too wide at 2-10px because six stepped shell copies stack there (visible as terraces on large units: Summoner, Bomber, Beacon, Brute).

Construction, by eye on the same frames: bodies are several flat plates (gear teeth, feather blades, hull panels) separated by thin seams a shade DARKER than the body; adjacent plates differ slightly in brightness (low-poly facet shading); ring emblems at eyes/cores; busy silhouettes (teeth, spikes).

tools/nova_units/nova_unit_bake.py bakes our primitives with that treatment (glow authored into the sprite, as Nova Drift does). On primitives it lands the measured profile but reads as a gem icon: the remaining gap is silhouette design, which is art direction, not rendering. July’s baked-glow attempt used the right method on the wrong content (it baked our glow shells, not a Nova-style unit).

Designs, round 1 (2026-09-23): tools/nova_units/nova_unit_designs.py gives Swarmer (3 ridged horns + fins on a triangle core), Summoner (toothed gear rim around a hex hub, 3-dot eye), Charger (6 ridged long blades + 6 short) and Centurion (12 outer + 8 inner petals) Nova-style silhouettes, all radial because enemies never rotate. They still read at in-game size (~56-104px incl. glow at 1080p). Awaiting Chris’s eye before any renderer work.