Visual overhaul — drawn, not sprited
v0.80 pushed the procedural art to its ceiling before any sprite pipeline enters the question. Every entity in the game received a depth pass: shadows, edge bands, body gradients, and identity treatments that make each thing feel like it exists on a surface rather than painted flat on it.
The enemy roster got a full visual archetype framework. Drones have a triangle head that tracks their aim direction. Turrets read as hull-and-fin silhouettes rather than boxes. Heavy units carry horizontal armor-plate seams. Eye-type enemies got a sclera-and-iris layering that makes them legible even when small. Caster variants now have a faint ambient aura. Every entry in the Archive’s Bestiary renders the real in-game archetype instead of a generic circle.
The player character gained an inner glow, a move bob, and the protocol glyph painted on the body face — so CORE-1 reads as the specific protocol it is running. Vector gained vertex shading that makes the triangle read as a floating pyramid with a lit face and a still shadow underneath.
On the NPC side, the Programmer now has a lit terminal tablet docked to its body. The Archivist pulses a rim glow when the player is carrying unprocessed fragments — a visible signal that it has something to do before you have walked over.
Walls and doors got top-edge highlights and bottom-edge shadows. Pickups (powerups, item drops, cycle motes, memory fragment orbs) each have their own procedural 2.5D treatment: outer glow, radial gradient core, idle breathe animations, and drop shadows.
Floor islands are real now
The old way to make a floating platform was to carve holes in the room collision rectangle. It worked well enough, until it did not — walking onto a platform with one pixel of your collision circle over the edge still triggered a fall, because the cutout matched the visual, not the player’s actual body.
Floors are now first-class room entities, the same class of thing as walls. Each floor has real collision that answers the question “is the player grounded here?” The hole hazard asks that question on every overlap tick; as long as you are on a floor, nothing happens. Walk off the edge and the next tick catches it.
The Vector boss arena expanded from three platforms to five. Two full-width edge floors now frame the central fall pit on both sides, so the arena reads correctly — safe ground at the edges, void in the middle.
Deployable audit
The gatling turret is gone. It did not work and the fix was not worth the slot on the roster. The three remaining deployables — drone, repulsor, and sniper — went through a full audit pass.
Enemy fire now actually damages deployables. Previously, projectiles could not reach a deployable even when aimed directly at it; a new collision layer routes enemy shots through the correct damage path. The drone and repulsor are AoE passthrough by design (no hitbox of their own — they affect the area, not a body), but the sniper turret absorbs fire and can be destroyed.
The decoy flare, which is supposed to draw enemy fire away from the player, was not taking any damage from the projectiles it attracted. The routing check that handles projectile impacts was looking in the wrong place for a self-grouped entity. Fixed.
Each deployable has a threat value now, so enemies with threat-aware targeting treat a dropped sniper as a meaningful priority instead of ignoring it.
Visually, each deployable has its own identity treatment. The drone traces a lazy infinity loop above its shadow, rotor blur suggesting lift. The sniper’s crosshair is now state-driven — scan, lock, tighten, fire — each state shifting the aim-line before the shot lands. The repulsor emits orbital flecks and draws visible tethers to any slowed enemy inside its boundary.
Deployable belt
Deployables used to work differently from consumables — you owned a pool of types and all of them were available mid-run. That mismatch is gone. Deployables now use the same belt pattern as consumables: four slots, filled at the loadout screen before the run, picked from during the run.
The loadout screen’s deployable row became four drag-target slots. The Items/Deployables tab split — you browse consumables on one tab, deployables on the other, drag either to their respective belt slots. The filter bar chips now wrap to a second row when there are enough of them, so the panel no longer clips at the right edge.
Radial wheels
The slide-up deployable bag is retired. Both the consumable belt and the deployable belt now have center-screen radial wheels:
- T opens the deployable wheel. Four wedges, one per belt slot, slot 0 at twelve o’clock and the rest clockwise. Empty slots are visible placeholders, not hidden — position stays stable so muscle memory works.
- C opens the consumable wheel. Same shape, five wedges, level-locked slots showing their unlock level.
- Only one wheel is open at a time. Opening one closes the other. ESC closes whichever is active.
- Right-click any wedge to lock the slot mid-run — lock to a specific item, lock to a category, or leave it free for auto-fill.
- Slow-mo engages while a wheel is open, same as the old bag overlay.
- Hotkeys 1–5 still work for fast consumable use. The wheel is the deliberate surface; the hotkeys are the reflex surface. Both are useful.
After the first playtest pass, the wheel ran 30% larger — the original size read well in isolation but was too small to use confidently in motion.
Protocol fixes
Several lingering bugs from the v0.71 protocol rollout closed this milestone:
- Seeker dash charges — a registry rename left the wrong fallback sorting in place, giving the ability an extra charge. Fixed.
- Rail Slug trail — the trail’s opacity was constant regardless of how long you held the trigger. Now it ramps with charge.
- Sentinel cancels on re-press — pressing the ability key again during the placement phase now cancels it, same as Spectre. Previously the re-press was ignored.
- Level-up picks offered unbuilt protocols — Flux and Swarm appeared in the level-up pool even though neither shipped yet. A new gate field on protocol definitions blocks unbuilt protocols from surfacing.
- Protocol passives polled for state instead of listening for signals — three protocol passives were actively polling their bindings every tick instead of reacting to events. Converted to signal-based.
Other fixes
- Practice mode was broken — picking Practice on the deploy screen sent you into a regular dungeon. A signal that routed the confirmation was discarded before it reached the mode selector. Fixed with a dedicated practice-run start path.
- Hookshot survival across death — if you died mid-tether during the Vector encounter, the hookshot you were trial-equipping survived dungeon teardown and ended up permanently on the next run. The equip now revokes on death. Successful runs keep it.
- Fresh loadout stat picks defaulted to the same value — opening the loadout for the first time left primary and secondary stat pickers pointing at the same stat, which then blocked the third pick. Defaults now differ.
- Walking into your own deployable — the player was taking contact damage from their own turret or drone. Fixed.
- Boss arena blank on first load — the camera was not committed before the first frame rendered on cold boss-room entry. A defensive fix landed; playtest confirmed clean.
What moved out
The numbers pass — XP curve, currency flow, gear sell values, loot rewards — was originally part of this milestone. It moved to v0.99 as a dedicated final-pass milestone before launch. The reason is practical: tuning those numbers is more useful after the intervening milestones have shipped more content to tune against. The design stays; the data waits for a better-grounded moment.
See pm/roadmap/zz_archive/0.80-visual-polish-and-numbers-pass/ for the full feature tree.