v0.8.0 - The campaign finds its voice
For seven releases Nova Protocol grew systems: flight, combat, scenarios, mods, and in v0.7.0 the stakes that let a scenario be won or lost. v0.8.0 is the release that takes all of that and makes it land. No new headline system this cycle - instead the base campaign got its two missing chapters and learned to talk to you, both campaigns learned to breathe between their beats, the story mod on the portal grew a stealth run and a reward finale you have to earn, and the tooling underneath grew a run-harness that watches an autopilot playthrough and reports whether the game is still correct, not just still running.
It is a polish release, and polish is the whole point. The fights, the story, and the checks all got slower where they needed room, sharper where they were mushy, and much harder to break. Here is the whole of it.
The base campaign is finished
For the first time the New Game storyline runs a full arc end to end: five scenarios, a beginning, a middle, and a real ending. Shakedown Run -> Broadside (two parts) -> Lifeline -> Final Tally. Two of those are brand new this release, and the Scenarios picker now groups them together as one ordered campaign instead of scattering them in the list - so the arc reads as a sequence you can see, not a menu you have to decode.
Lifeline: hold the line for the convoy
Lifeline (chapter three, part one) is the first ally content in the game. The Tallyman's raiders hit the belt's supply convoy in revenge for the Rust Tally, and the job is to keep two stalled haulers - the Ceres Queen among them - alive through three telegraphed raider waves until the relief wing arrives.
A live RELIEF mm:ss countdown runs on the HUD so you always know how long you
have to survive. The wave gates ride both the scenario clock and the previous
wave's clears, so a slow, careful run never gets two waves stacked on top of it,
and an aggressive one that clears fast earns an early win. The convoy is real:
unpiloted haulers flying on your side, genuinely hunted by the raider AI, so
"keep the convoy alive" means exactly what it says - screen them, or watch them
die.
Final Tally: the gravity-well finale
Final Tally (chapter three, part two) is where the trace ends and the campaign closes. The gang's claim is a cracked megahauler anchorage berthed deep in a planetoid's gravity well - the base campaign's first combat gravity well, ringed by a scattered belt. Three beats, escalating: survey the anchorage by holding a travel lock on its bow, break a two-ship orbital picket flying guard on rails, then finish the gang's flagship when it casts off with an escort - the campaign's only simultaneous capital-plus-escort fight.
The flagship kill opens a paced epilogue - a confirmation line, the guild's close, then the banner - and the campaign completes properly: "End of the base campaign - for now." It is the first base scenario to end the way a story should, not just stop.
It briefs you now instead of dumping on you
The single biggest change to how the base game feels is that it finally paces itself. Across the whole mainline, an objective now appears a beat after the comms line that introduces it, never in the same instant, and completing one objective no longer pops the next one on the same frame - there is a short breathing beat between them. Beats no longer trip over each other.
Shakedown Run shows this best. Instead of dropping you straight onto the first objective, you now drift off the dock while Capt. Halloran briefs you over the comms panel - a five-line back-and-forth (the campaign's first player voice, simply "You") that plays over about forty seconds before objective one even posts. Between the later beats she keeps talking, a line landing after each objective, and the objective texts shrank to the bare goal ("Burn to Beacon 1.") with the story moved into her voice. The old "stand by" holding line is gone; the opening panel just stays quiet while she talks.
Broadside got the same voice. Halloran's distress call opens the chapter - the same call the Shakedown banner promised - she calls the ambush and the first corvette kill, the Rust Tally taunts on arrival, and Belt Relay reports the Ceres Queen's beacon going dark. Objectives shrank to imperative goals ("Find the hauler Ceres Queen."), and the Victory banners now check whether the Ceres Queen actually survived the fight and pick the matching line.
Under all of it is one shared scenario-pacing toolbox - a clock-deadline "mark and wait" the whole mainline uses instead of each scenario carrying its own copy, pinned by cross-scenario invariants so no future beat can ever post an objective on top of a conversation again.
Rules that make ally and neutral ships behave
Two quiet engine rules make all this new convoy-and-bystander content play fair:
- Unarmed AI ships are non-combatants. A ship with an AI pilot but no turret or torpedo never acquires a target, chases, or shoots - it just flies its patrol or orbit. It stays targetable, so an escort or convoy on your side is still hunted and must be defended; it simply cannot fight back. Any unarmed AI craft, yours or a mod's, gets this for free.
- Gravity wells pull only piloted ships. A scripted bystander with no pilot has no drive to resist a well, so it now floats where it sits instead of being dragged in - a guaranteed rule authors and mods can rely on.
The Ledger: a story mod that grew up
The story campaign on the portal, The Ledger, went from a solid four-chapter arc to a genuinely deep one this cycle - version 1.5.0 all the way to 1.12.0. A salvage crew in over its head, one sealed crate everyone in the belt wants, and now a stealth run, a forking finale, and a reward chapter you only see if you earn it. Install or update it from Mods > Explore.
A campaign that breathes
Every chapter now opens with a briefing over the comms before the objective drops, and the story lines land a beat apart - announce, arrive, confirm, breathe - holding long enough to actually read instead of flashing past. No objective ever shares a frame with a conversation anymore. The same pacing discipline the base campaign got, applied end to end across the mod.
Chapter three is a real stealth run
The quiet channel is the standout. It is no longer a corridor with an ambush at the end - it is a stealth run you can pass clean or blow wide open, and there are now five distinct ways to give yourself away.
The two channel Magpies are present from the first frame as neutral pickets patrolling the flanks of a debris pinch, not hostiles that spawn on a trigger. A debris pinch between the first two nav drops squeezes the lane down to a single threadable gap between two wrecks the size of houses - the one line the pickets' watch does not cover. Thread it slow and dark and you slip past for Vesh's "nothing on their scopes" payoff and a clean Victory with the pickets still asleep. Stray into a picket's watch bubble, red-lock one, or burn too hot through the narrows and both flip hostile at once, and it becomes the same fight it always was.
That last one - overspeed - got its own careful design. Running over 8 u/s through the channel is noise the pickets hear, but it is warn-then-trip, not a hair trigger: the first breach just gets you Vesh calling it and telling you to throttle down. Push past again after slowing and a 3.5-second countdown starts - a real last-chance window with a shouted warning - and the Magpies only wake if you hold the burn past it. Ease back under the band in time and the countdown cancels. The trip is a sustained mistake, not a twitch of the throttle.
The finale actually forks
Chapter four's two endings are genuinely different games now, not two flavors of the same one. Sell the box at Vesh's berth and the sale calls the Auditor down - a military gunship you have to break for the payday, now telegraphed with a warning line and an engage grace so it reads before it turns lethal. Burn the box at the buoy and there is nothing left to collect: the Auditor never comes, no fight - but no payout either. Payday at a price, or clear and broke. Each path reaches its own terminal Victory.
A reward for fighting: The Raid
And if you took the fight - broke the Auditor on the sell path - the campaign no longer just ends. It opens into a fifth chapter you only reach by winning that fight. Your payday buys a gunship, and for the first time in the whole story you fly a capital ship with torpedoes: guns on the left mouse, torpedo tubes on the R key. With two of Vesh's wing flying escort, you raid the Magpies' forward base among the asteroids and planetoids - a real multi-section station and four fighters - and crack it to close the account for good. The burn ending stays terminal at chapter four; the raid is what fighting earns.
A look for each chapter
Every chapter now picks its own sky, and the sky shifts at the beats that matter
- the moment the fourth ping shows up on the manifest in chapter one, the channel
narrowing in chapter three, the Auditor arriving on the sell path in the finale.
Built entirely on
SetSkyboxaccents over deliberate per-chapter cubemaps, no new art required.
Gauntlet Run is a time-trial
The Gauntlet Run mod (bundle 1.3.0) is now a proper time-trial. A live mm:ss.s
run clock shows from the START gate and freezes at your final time behind the
Victory banner, and a clean-run bonus rewards a flawless line: graze a hazard
zone and a crash counter ticks up; cross FINISH with a clean sheet and you earn a
CLEAN RUN banner where a grazed run gets the plain finish.
It is built entirely on a new HudReadout scenario action - show a live
scenario variable on the HUD in number, integer, or mm:ss.s time format. It is
the display half of the variable vocabulary, and any mod can use it: a countdown,
a score, a distance, a lap clock. No new engine machinery, just a readout bound
to a variable that updates every frame.
Under the hood: the run-harness
The biggest single investment this cycle is invisible in the game and load-
bearing for everything that ships in it. The old nova_perf crate grew up into
nova_probe, a run-harness that drives an autopilot example end to end and
reports whether the run was correct, not just whether it survived to the end.
One command - cargo run -p nova_probe -- run <example> - plays the example
under a headless renderer and assembles whatever the run captured into a single
self-contained report.html plus a machine-readable checks.json:
- an ordered timeline of state transitions, fired scenario events with their payloads, and variable changes, with the section examples emitting outcome markers right at their assertion sites (turret fired, gate damaged, the torpedo fire-arm-detonate-hit chain) so the timeline shows the feature working, not just the process surviving;
- continuous per-frame invariant assertions - health bounds, finite velocities plus an absurd-speed bound, no entity-count leaks - that warn (or, in strict mode, panic at the moment of corruption) and land on the timeline;
- frame-time percentiles with the backend, GPU, resolution, preset and git SHA recorded in every row, an optional Perfetto profile and samply flamegraph from separate passes so tracing overhead never touches the clean numbers;
- an OK/WARN/FAIL/NO_DATA verdict with
measured: n/totalcoverage and a reviewer checklist that owns the final call.
It runs whole fleets (probe run gameplay, probe run --all) with an aggregated
index, regression-checks a group against a prior capture with --baseline, and
hardens itself for unattended use - a hung or crashed run still produces a
failing report instead of no report at all. The examples themselves moved into
purpose directories (sections, gameplay, ui, screenshots, perf) with a
single catalog in the root Cargo.toml as the source of truth, and every
cataloged example is now probe-evaluable. Harness runs also mute themselves, so a
headless smoke test no longer plays the game through your speakers.
Tooling that pinpoints the mistake
content lint is now the single content-validation command. The balance
audit folded into it (balance is a kind of lint), so one pass runs the
reference and geometry checks, the combat-fairness audit, and a new flight-rig
input-overlap check that flags a mod binding a key the always-on flight rig
already drives - the silent double-drive behind a real "guns on Space" bug.
lint --target <mod> --report <path> writes a per-mod document - Markdown, or
HTML for a .html path - that pinpoints, for every finding, the source file, the
offending element, an explanation, and a suggested fix, instead of a bare stdout
line you have to go hunting from.
A local cargo fmt --check pre-commit hook (armed once with
scripts/setup-hooks.sh) now makes formatting drift impossible to land rather
than merely flagged by CI after the fact. And docs/ became ephemeral
scratch: a release-time step moves durable reference into the wiki and the
folder wipes to only its README, with a release guard that fails the tag if
anything else is left behind - so the repo can never ship a junk-drawer of
stale notes again.
Fixes
- Destroying a sectioned ship no longer crashes. When a ship exploded, its section damage-tint could try to colour a section the explosion had already destroyed that same frame, panicking the game (seen killing the Rust Tally gunship). The tint now tolerates a section that vanished mid-frame.
- The mouse cursor is hidden while flying, in dev builds too. Flight always
captured the cursor in a shipped build, but the whole grab was compiled out
under the
debugfeature, leaving a stray cursor floating over every--features devplaytest. Flight now hides it unconditionally; the F11 inspector defaults off and hands the cursor back only while its panel is up. As a consequence a--features debugbuild now boots with the whole debug layer off - gizmos, inspector, physics debug, wireframe, ammo number - and F11 raises and lowers all of it together, instead of the toggles falling out of phase. - The Asteroid Field sandbox is back in the Scenarios picker. It had been hidden as "a mid-story stage reached by chaining" - a premise that was never true, so hiding it just made finished content unreachable. Its relay continuation stays hidden as before.
Point releases
v0.8.1
- Per-OS download buttons on the landing page. The hero now offers direct Windows, macOS and Linux download buttons that deep-link the matching release asset for the latest version, falling back to the releases page when a build is not available. No more hunting through the releases list to grab the game.