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.
Method
Section titled “Method”- 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.
Results
Section titled “Results”| 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)”- 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.
NebulaBgalready renders a full-screen shader, so re-grading it should be close to free on the ATV. - White-hot cores, coloured rims, more lit area. Entity cores toward white, colour pushed to
the rim and halo, larger soft radial halos. Touches
ArchetypeRenderercore colour (CORE_HEAT) and shell alphas. - Palette harmony. Two or three analogous hues per scene rather than one flat hue; affects the per-type/per-area colour tables.
- 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.