Skip to content

Nova visual loop (2026-09-23 22:39 → 01:39 BST)

Nova visual loop — 3 hours, Chris’s brief (2026-09-23)

Section titled “Nova visual loop — 3 hours, Chris’s brief (2026-09-23)”

“the nova look is great, the only thing the coloured wash is not quite right, its too much, better to have it black, but the sprites look good, lets run a loop over the next 3 hours and upgrade all sprites to this and make the player sprite look better and the radar warning needs improving, also see what other effects can be improved, tone down the motion blur effect slightly”

Deadline: 01:39 BST 2026-09-24. Each loop pass: take the top unchecked item, do it, gate it (suite + count guard; ui-sweep if default UI changes; capture + look), commit + push, tick it here. Sequential only — never parallel writes to the tree. Nothing is deployed to the TV until the end (one showcase build with everything), unless a pass needs an on-device check.

  • Chris’s eye is the test: every visual change gets a before/after capture saved to the scratchpad and noted here; the final report shows them.
  • Keep competing techniques switchable (old look one flag away) until Chris signs off.
  • Gemini is allowed for hero art (player ship, complex units). Web UI only, scratchpad only, never copy reference art into the repo; import via tools/nova_units/import_unit.py.
  • Perf: nothing added may cost more than it replaces on the ATV (Nova buckets are 2 layers vs 7).
  • 1. Nova ground off: keep Nova units, background back to black (split VisualLook: units vs ground).
  • 2. Tone down the warp blur slightly (smear, streak alpha, star streak length, ghost alpha).
  • 3. Nova designs for every remaining non-boss enemy type (own bucket each): shooter, splitter, skirmisher, rusher, zapper, scatterer, bomber, lancer, accumulator, tank missile, wyrm, beacon, glass wisp, halo chain, leech, coil, fleet kite. Keep each type’s identity/shape. Sprite-art types (spider/weaver, orbiter, ghost, warden) — decide per type (ghost has no glow by Chris’s call; keep it).
  • 4. Make Nova the default look (VisualLook.nova = true) once the roster is covered; old look stays one flag away.
  • 5. Player ship: Nova-style hero hull (Gemini-generated, imported), pale plated body + tight glow, keeps tier progression readable. Old hull one flag away.
  • 6. Threat radar redesign: no full-screen red wash; off-screen threats only, as tight Nova-style edge markers. Old radar one flag away.
  • 7. Other effects audit: projectiles, death pops, pickups/gems, level-up burst — pick the weakest 2-3 against the Nova look and improve.
  • 7b. Nova-style UI (Chris, 23:45: “add into each loop to improve the look of the interface using the nova style look to UI elements”): panels, buttons/cards, HUD docks, radar, level-up cards — pale plated surfaces, thin darker seams, tight coloured edge glow instead of flat neon outlines. One screen per pass; ui-sweep re-bless after eyeballing.
  • 8. Final: showcase build to the TV (AUTO_SHOWCASE), capture board, report.
  • 22:50 items 1-2: VisualLook.nova_ground split out (default off, Nova units unaffected); warp blur toned down ~25-30% (smear 2.6->1.9, star streak 110->80, ghost alpha 0.7->0.52, streaks 7px->5px at 75% alpha). Suite 254/254.
  • 23:05 item 3: 17 new designs (all non-boss types except the sprite-art Weaver/Orbiter/Ghost/Warden, kept by design). Renderer made table-driven (_NOVA_UNITS). Found + fixed: QuadMesh UVs run bottom-to-top, so every non-radial Nova texture rendered upside down; exports are now pre-flipped (designs + import_unit). Gallery: scratchpad/loop_item3_gallery.png. Suite 254/254.
  • 23:15 item 4: Nova is the default (Chris: “make nova the default now i cant see any downside”). Tools only override the switch when their env var is set; tests that assert old-look invariants pin it and restore it. Suite 254/254. ui-sweep exited silently (tooling issue, to investigate) — not certified this pass.
  • 23:40 item 5: Nova hull = Gemini plated fighter (hull_a; manta hull_b kept as alternative via PlayerRenderer.NOVA_HULL), pale body + tier-accent glow, follows VisualLook.nova live, same on-screen size, cobalt-only tilt flipbook bypassed under Nova. import_unit gained –no-flip/–size (Sprite2D doesn’t flip). Warp afterimages thinned (12->8, 16->26px) and enemy trail offset 1.6->1.0 radii so trails stay attached. Boards: scratchpad/loop_item5_*.png. Suite green.
  • 23:50 GATE SLIP: 893cf36 was committed with 4 failing tests (the commit step wasn’t chained on the gate). Fixed in the next commit: cobalt-hull tests pin the old look, new Nova hull test, afterimage test gap matches the new spacing. Every commit from here is gate && commit.
  • 23:30 item 6: radar V2 (ThreatRadar.radar_v2, V1 one flip away and still tested): off-screen threats only, Nova arrowheads (pale body + red glow) at the edge pointing at each of the top 10, sized/brightened by danger x proximity. No full-screen shader or SubViewport any more (the V1 pass cost ~10ms render on the ATV whenever anything was alive). Surrounded by visible enemies = no radar at all. Capture: scratchpad/loop_item6_radar.png. warp_capture gained WARP_ZOOM.
  • 23:32 Chris (watching the TV): warp star streaks too strong -> streak alpha 0.85 -> 0.3, width r1.6 -> r1.1 (ArenaBackground.WARP_STREAK_ALPHA).
  • 23:50 item 7: audited combat captures against the Nova units. Gems were already white-cyan (the yellow diamonds in older captures were Shooters). Weakest: player shots (thin bloom-dependent streaks) -> Nova projectiles: pale white-hot core (0.88), tighter saturated halo (0.42), less overbright (1.25), 1.5x wider bolts. Old values one flag (VisualLook.nova). Damage numbers left for the UI pass (7b). Capture: scratchpad/loop_item7_proj.png.
  • 23:40 Chris (TV): background stars sparkle when moving, too many. Cause: NebulaBg renders at half res, small stars were ~0.6px there and popped between pixels as the camera moved. Now >=1.7 half-res px with a soft edge, half as many, only rare big ones twinkle.
  • 00:00 Chris (TV): radar arrows look too much like enemies; wants a subtle reddish glow, arrows only for bosses, maybe a temporary warning when enemies spawn. Done: arrows removed (bosses keep BossEdgeIndicator’s named arrow); a thin 30px red edge band toward off-screen threats only, resting alpha <= 0.22, and a sector whose threat jumps (a new group arrives) flares to ~0.42 then fades over ~1s. Drawn as sub-stepped polygon strips (no full-screen pass). Capture: scratchpad/loop_item6b_radar_glow.png.
  • 00:05 item 7b pass 1: ui-sweep root cause found — an occluded windowed godot gets App-Napped and stalls (and wrapper timeouts orphaned four of them); --always-on-top makes the sweep finish in 15s every time. Added NeonTheme.nova_box() (chamfered plate, 1px pale edge, tight accent glow, pale focus tint) and applied it to the theme’s Button boxes and the level-up cards. Dud ‘no effect’ level-up card logged in RELEASE-0.1.md §4. Capture: scratchpad/loop_item7b_cards.png.
  • 00:15 item 7b pass 2: start menu carousel cards get Nova plates (faint on side cards, full with accent glow on the focused card); the hologram brackets Chris chose stay on top. Capture: scratchpad/loop_item7b_menu.png. Sweep 9/9, start_menu re-blessed.
  • 00:20 item 7b pass 3: pause menu buttons -> Nova plates in their own accent colours. Capture: scratchpad/loop_item7b_pause.png.
  • 00:20 item 7b pass 4: HUD weapon + drone docks -> Nova hex plates (NeonTheme.draw_nova_hex_slot; the round WeaponPanel.slot_style backing is transparent under Nova). Capture: scratchpad/loop_item7b_docks.png. Nit left: the drone triangle pokes just past its hex edge.
  • 00:22 item 7b pass 5: shop, ship config, dimension choice and results boxes -> NeonTheme.nova_box. Found: all 7 ship classes fly the same Nova hull (class identity lost) and the ship-config preview still shows the old cobalt sprite. Gemini agent dispatched for per-class Nova hulls (silhouette per class, approved hull as style); PlayerRenderer + previews to follow.
  • 00:40 item 7b pass 6: per-class Nova hulls. Gemini fleet batch checked by eye before import: cobalt came back as a pair of gears (rejected), aurum/amethyst/obsidian were near-copies of hull_a (not imported, they fall back to it). Imported prism (long fighter, plates gamma-darkened to match) and fuchsia (multi-wing); manta reuses the approved manta hull_b. Classes without their own file keep hull_a via PlayerRenderer.nova_hull_base.
  • 00:45 item 8: BUILD 187 showcase (AUTO_SHOWCASE on for the export only, reverted) installed + launched on the Living Room Apple TV. Loop closed.