← News  //  2026-07-13  //  v0.5.0

v0.5.0 - Lock, look, and a front door

v0.4.0 gave Nova Protocol combat, an AI to fight, and a lot of automatic targeting. v0.5.0 takes that targeting and hands the controls back to the player, deliberately: passive auto-acquisition is gone, replaced by hold-to-lock radar, a corner viewfinder that renders your target through a second camera, and a kill cam when it dies. It also does the thing every project eventually has to do - it teaches a new player how to fly through the Shakedown Run, gives damage a typed grain, boots into a real main menu, and puts up a front door on the web. Here is the whole of it, down to the nuts and crannies.

Locking is a decision now

The biggest change in feel: all the passive auto-targeting from the last release is gone, replaced by deliberate radar locking. Hold CTRL to sweep and live-lock whatever you look at; your stance picks the slot - lowered gives a white NAV crosshair that feeds GOTO, raised gives a red combat reticle that feeds guns, torpedoes and fine-lock. Tapping CTRL clears the lock in stages - combat first, then nav - and a lock sticks until the target dies, leaves range, or goes cold. Crucially, LOCK is now framed as a ship-computer capability, the same way GOTO is: it is something the ship does for you, not a magic HUD overlay.

Stances pick the slot

The stance-to-slot mapping is the heart of it. With weapons lowered, the sweep paints a white NAV crosshair, and that lock is the one GOTO and the autopilot consume. Raise weapons and the same gesture paints a red combat reticle instead, feeding the guns, the torpedo solution, and the fine-lock that picks out a single section. Because the two locks live in different slots, a nav lock and a combat lock can coexist: you can be flying toward one body while your guns track another.

Clearing in stages

Clearing is deliberate too. A tap of CTRL drops the combat lock first, and a second tap drops the nav lock, so you never lose your navigation target just because you wanted to stop shooting. Short of a manual clear, a lock holds on its own until one of three things ends it - the target dies, it drifts out of range, or it goes cold and stops returning a signal.

Slot-colored lock language

The lock language got slot-colored to match: a red bracket is a combat lock, white is a nav lock, and the old relation tints and reticle pips were retired outright, so color now means one thing only. Turrets hold the combat lock even while you aim them manually, so peeling off to hand-fire a turret does not throw away the lock the rest of the ship is using.

The target viewfinder and kill cam

To make a lock feel like something you have, v0.5.0 adds a target viewfinder: a corner inset that renders a live, magnified 3D view of your combat lock through a second camera. It shows a red armed frame while your weapons are hot, a NO-SIGNAL panel for bodies that cannot be scoped, and - the favorite touch - a roughly two-second freeze-frame kill cam when the target dies. The fine-locked section glows in both the main view and the inset, so you always know exactly what you are shooting at.

What the inset will and will not scope

The inset is picky by design. It zooms combat bodies only - ships, torpedoes, asteroids - and pointedly not beacons, which carry no combat identity worth scoping. For bodies that have no addressable sections, it falls back to framing them by their collider bounds, so a section-less rock still fills the inset cleanly instead of sitting tiny in a corner. Anything the second camera cannot resolve gets the NO-SIGNAL panel rather than a broken render.

The Shakedown Run

New Game now starts the Shakedown Run, a roughly twelve-beat tutorial that walks a new pilot through the whole vocabulary: burn, freelook, stop, salvage, GOTO, coasting through a gravity well, ORBIT, radar lock, a live-fire rehearsal on a derelict, and finally a real scavenger fight. Each beat teaches exactly one gesture and completes the instant that gesture lands, so it never blocks a player who already knows the moves.

One gesture per beat

The pacing is strict: burn to learn the throttle, freelook to learn the camera, stop to learn the brake, salvage to learn the loop, GOTO to hand a target to the autopilot, a gravity-well coast to feel orbital mechanics, ORBIT to hold a ring, radar lock to acquire, a live-fire rehearsal on a derelict to safely pull the trigger, and only then a real scavenger fight to put it all together. Because every beat completes on the gesture itself rather than on a timer, a returning pilot can blow through the whole run without ever being stalled.

The playtest tail

Making it playable shook out a long tail of playtest fixes. Park points were sized to sit inside their beacon triggers so arriving actually counts; orbit-hold now completes when the ring is held rather than merely touched; scavenger spawn timing was tuned and paired with a 150u combat leash so the fight stays where it was staged. Planetoids were made invulnerable so a stray burst cannot brick a beat, the speed cap gets taught rather than silently enforced, and the objective text got readable wrapping and better sound pacing with legible gold pulses. Crucially, asteroid kills now emit OnDestroyed under the scenario id, which had soft-locked the derelict beat when the script never heard the kill it was waiting on.

Damage with a grain

Combat picked up some texture too. Damage is now typed - Kinetic, AP, EMP, Explosive - and checked against per-section resistance tables, so what you shoot matters as much as where you shoot it.

Typed damage and resistance tables

Every hit now carries one of four types - Kinetic, AP, EMP, or Explosive - and each section carries its own resistance table against those four types, so the same round can be devastating against one section and shrugged off by the next. Picking the right ammunition for the section you are aiming at is now a real decision rather than flavor.

Ammo slots

Each turret carries a loaded-ammo slot that sets the type of the rounds it fires, surfaced through a color-coded ammo readout so you can see at a glance what is loaded. The turret's slot and the target's resistance table are the two halves of the same equation.

PDC retuned to point defense

The point-defense cannon was retuned to actually be point defense: per-hit damage dropped from 20 to 4, so the stream chips a target down over a visible burst instead of deleting it in a single frame. That turns the PDC back into a suppression weapon you watch work, rather than an instant-delete button.

Sensor projectiles that curve

Turret bullets are now sensor projectiles - same damage, no physical shove, expended on first contact - so a burst no longer knocks targets around like a battering ram, and each round spends itself the moment it connects. Those rounds now curve through gravity wells like ships and torpedoes, so shots near a planetoid arc the way everything else in the world does instead of flying dead straight through a field that bends every other body.

A game that boots into a menu

v0.5.0 is the release where Nova Protocol starts to feel like a shipped game rather than a scene loader. It boots into a main menu with a live ambient backdrop - an AI ship flying a thruster-driven orbit - plus an ESC pause menu, all living in a new nova_menu crate. Booting into the menu, rather than dropping straight into a scene, is the small structural change that makes the whole thing read as a game with a front door.

Diegetic flight readouts

The flight readouts went diegetic, replacing the old bottom-left status text. Speed and engaged-mode chips now sit beside the velocity sphere where your eyes already are, ORBIT draws a radius spoke so the hold ring is a thing you can see, and the whole cluster takes on a nav-cyan tint while the autopilot is flying so you always know when the ship has the stick.

HUD visibility levels

The HUD learned visibility levels: grave/tilde cycles ALL, then MINIMAL, then NONE, so you can strip the interface down to a clean view for a screenshot or a quiet cruise and cycle it right back.

Contextual keybinds

The keybind cluster is now contextual: a verb's row appears only while that verb can actually act, so the prompts on screen are always things you can do right now. Scenario-emphasized keys show up early and pulse gold to draw the eye to whatever the current beat wants from you.

Objectives and the scenario system

Objectives got easier to follow, and the scenario system underneath grew the primitives that made the Shakedown Run expressible as pure data.

Objective conveyance

A gold marker chip now carries live distance to the current target so you always know how far you have to go. Salvage crates glow and wear brackets so they read as things to grab, keybind emphasis pulses point you at the next gesture, and finishing a beat lands with a completion chime and a posting blip so success is unmistakable.

New scenario primitives

Underneath, the scenario system gained new primitives: nav beacons and salvage crates with authorable radar signatures, so a scenario can place a body and specify exactly how it reads on the radar; despawn-by-id, so a script can remove a specific body it spawned; and a batch of new events and actions - OnOrbit, OnTravelLock and OnCombatLock to react to the player acquiring or holding a target, SetSpeedCap to teach the throttle limit, plus objective markers and hint emphasis. Together these are what let the twelve-beat run be authored as data rather than hand-wired code.

Ships and the editor

Rebindable section keys

In the editor, placed sections now show their bound key as a chip, and you can click that chip to rebind the section to a different key or mouse button. The build panel scrolls too, so a busy ship no longer runs its section list off the bottom of the screen.

A passive play-test target

The editor's play-test ship is now a passive target instead of an AI combatant, so you can shoot at your own build to check weapon coverage without the target shooting back.

A home on the web

Finally, the thing you are reading this on. v0.5.0 ships a web landing site (the web/ directory: TypeScript, Webpack and Tailwind), and the GitHub Pages deploy now serves it at the root with the playable game tucked under /play/. This news feed and the game's new web home start here, with the wiki and tutorial following shortly after in v0.5.2.

Under the hood

A handful of quieter fixes rounded the release out. The debug inspector stays on a window camera instead of leaking into render-to-texture cameras, so it no longer bleeds into the viewfinder's second-camera render. HUD apparent-size elements - reticles and brackets - now measure real colliders rather than the invisible trigger volumes around them, so their on-screen size matches the body they wrap. Debug builds no longer crash when a scenario advances, since the smoke assertion now covers only the boot load, and teardown no longer warns about despawned entities. And two bits of tidy-up: F1 back-to-editor is sandbox-only so it cannot fire from a real run, and the debug ammo readout no longer lingers on screen once debug mode is off.

Point releases

Two patches followed close behind, and between them they cleared the web-build crashes and turned the site into a place you can actually learn from.

v0.5.1 - Web build shakeout

Shortly after 0.5.0 shipped, v0.5.1 cleaned up two crashes unique to the shipped WASM build. Both only bit the browser when you started a run - New Game from the menu or Play from the editor - and never touched native, which is why they slipped past into the shipped app. The target inset was carrying a view_formats override that WebGL2 does not support for a plain sRGB target, and the render validation error it raised was fatal, so the inset now drops that override entirely.

The second was subtler. The skybox cubemap's .meta loader settings had silently stopped applying in the shipped app: AssetMetaCheck::Never ignored them without a word, which resurrected an oversized-upload race that crashes GPUs with a 16384 texture limit. With the meta settings honored again, the cubemap loads within the limit and the race is gone. If you play on the web, this is the one to grab.

v0.5.2 - Learn the ropes on the web

A little later, v0.5.2 turned the site into a place you can actually learn from.

A full wiki landed - gameplay, ship sections, keybinds, world, and meta pages - so the game's systems finally have a written home, alongside a tutorial trimmed down to first-scenario onboarding and two new devlogs. That trim was deliberate: the tutorial now covers exactly the first scenario rather than trying to document everything at once.

Gamepad bindings got rounded out. ORBIT now maps to South, scenario-advance confirm to DPadDown, and HUD cycle, pause, and back-to-editor each gained a button, so a controller can drive the game and its menus end to end.

The examples became a testable curriculum: twelve numbered examples, from controller PD through the full boot flow, each self-driving under BCS_AUTOPILOT with behavior assertions and a completion backstop. CI's example smoke suite is BLOCKING again now that the GitHub-runner-only taffy panic is gone, so those twelve examples gate every push. The smoke run now fails on ANY logged command error, closing the gap where handled remove/despawn warnings - the stale-entity teardown race - used to sail past the panic gate. And the weapon test ranges fire again: the weapons safety had silently disarmed both, so their scripts now raise the stance first, with new assertions pinning the fire-to-hit chain.

A handful of audio and teardown bugs got fixed too. Thruster hum now attenuates with distance per ship, so another ship's or a torpedo's burn no longer plays at full volume from anywhere in the map, while your own ship stays exempt. Scenario teardown no longer logs an "Entity despawned" command error when a ship despawns with autopilot engaged: the telemetry-cleanup observer now uses the fallible remove variant, pinned by regression tests. And the debug inspector's window-camera placement fix moved upstream into bevy-common-systems (rev 4a743b2), deleting nova's local workaround.