v0.11.0 - Ships come apart
For ten releases, Nova Protocol's ships have been assemblies of real sections. They carried local health, mass, weapons, thrust, and structural links. But when the shooting started, too much of that truth stayed behind the scenes. A hull looked healthy until a section disappeared. A thousand bullets were a thousand physics bodies. Point-defence mounts could all choose the same torpedo. The editor described parts in lists when the important fact was what those parts looked like together.
v0.11.0 makes the structure visible. Cracks deepen across wounded plating. Turrets spark and stop. A beaten hull tears itself apart from the outside in, leaving wreckage where the ship used to be. Derived skins turn bare assemblies into industrial, armoured, civilian, or salvaged craft. Gunfights move close enough to read, and every projectile type earns its identity through how it travels.
The same release also asks the engine to do less invisible work. Gun rounds leave the rigid-body simulation. Repeated visuals share their assets. Steady fixed-step work stops paying thread-pool overhead. A pristine fleet no longer renders through a damage pipeline for cracks it does not have.
v0.11.0 is the destruction and performance release
Play it in the browser or download the native build from the landing page. The complete compatibility notes are at the end of this post.
Ships come apart
Damage now has a visible grammar. A section's missing health drives surface cracks, smoke, sparks, and exhaust failure. Hit locations remain local: rounds and blasts mark the part they actually struck instead of tinting the whole ship as one abstract health bar.
Eight readable stages
Cracks use eight shared levels, from pristine paint to burnt-out plate. Eight is enough to show damage deepening without minting a unique material for every section and every health value. The first level is genuinely pristine: it keeps the source material and never enters the cracks render pipeline.
Damage is not only a shader. A crater records where a hit landed, nearby hits merge into one wound, and asteroid fire removes geometry from the rock itself. The surface can heal back to pristine if health is restored; the material and its performance cost heal with it.
Collapse is a process
A ship no longer waits to be deleted section by section. When its remaining structure falls below its authored collapse threshold, the outermost live parts start failing first. Detached sections inherit the ship's motion and tumble as wrecks. The peel continues inward until the root goes with it, including ring structures with no natural loose end.
The default threshold is deliberately low: five percent of the hull's as-built health. A scenario or mod can raise it for a ship that should break earlier, set it to zero for the old dismantle-everything rule, or keep a capital fighting deeper into its structure.
A collapsing ship is still the ship until it dies. Guns that remain attached can keep firing. Each section raises its own destruction event when it leaves, and the ship's defeat and destruction edges still happen exactly once. The visual sequence did not replace the scenario contract; it finally catches up with it.
Every shot has a purpose
The old damage-resistance table tried to make ammunition types distinct through invisible multipliers. v0.11.0 removes it. A damage type's identity is now what the projectile does on its way through the target.
Kinetic is a punch; Pierce is a rake
A Kinetic round carries one damage budget. It hits hard, continues only through a section it destroys, and spends that section's health from the budget. It can punch through weak layers, but it cannot deal more damage than it brought.
A Pierce round deals less damage to each section but applies that damage in full to every layer it crosses. Travel comes from a separate penetration budget based on each layer's full health, not its remaining health. Softening a heavy part first therefore does not make it cheaper to cross. A six-layer ceiling keeps one round from raking an entire capital hull.
Both types read closing speed. Charging a target makes Kinetic hit harder and Pierce carry farther; firing while fleeing does less. An indestructible obstacle stops either one.
Fights moved close enough to read
PDC rounds now live for two seconds and reach 200 world units. The scavenger gun reaches 180. AI standoff, engagement, and point-defence ranges moved with them, so ordinary gunfights happen around one to two kilometres on the HUD rather than four to five.
Muzzle speed did not change. The shot does not become weaker because the fight became closer; the empty distance before anything readable happened is what left.
Torpedoes attack; point defence answers
Torpedoes are decisive now. A standard warhead deals 750 blast damage, and its health sits above the hardest hit one stock PDC round can land. A lucky tap no longer erases it. The answer is sustained point defence - or destroying the bay before the salvo leaves.
Lance and Serpent
A bay launches a torpedo type. The Lance runs straight and faster. The Serpent cruises more slowly but corkscrews around its guidance line until the final approach, where the weave fades out so the fuze still arrives on target.
They carry the same warhead. The choice is entirely in the run-in. In the shipped comparison, one stock PDC spends about 116 rounds to stop a Lance and about 390 to stop a Serpent. It kills the Lance roughly 114 units out; the Serpent survives to roughly 40. The Lance arrives sooner and closes faster on a ship that runs. The Serpent makes the defence pay.
Every mount gets a threat
Point defence is assigned per turret, not once per ship. Each mount asks which inbound torpedoes it can physically bear on, holds its current assignment while it remains useful, and prefers an urgent target no other mount has claimed. A rival must be arriving in half the time before it tears a turret away from the track it already owns.
A mount with nothing reachable returns to the primary target. It does not join a ship-wide dogpile on a torpedo under its own hull.
Bays regenerate one torpedo every ten seconds. Saturation still beats a defence, but it comes from what the attacker carried into the fight rather than from waiting behind an endless four-second refill. The campaign uses the two types as a difficulty curve: the first torpedo fight throws Lances; the finale escalates to Serpents.
Ships have a visual identity
A modular hull can now wear a skin derived from its structure. Set one flag and the game samples the boundary of the assembled sections, builds continuous cladding over it, leaves firing lanes clear, and makes every plate destructible. No plate coordinates are authored. Neighbouring cells share their boundary samples, so their surfaces meet.
The skin is separate from the ship's structural health. Plates and decoration carry their own health, mass, and colliders, but they do not hold a severed hull together. Shoot one away and the hole exposes the parts beneath it.
Four authored looks
A style decides what the cladding says about the ship:
- Industrial puts corrugation, radiators, ducts, and warning paint outside.
- Armoured builds an unbroken belt with hatches, bosses, and sensors.
- Civilian uses pale satin plates, a cobalt rail, fairings, and lit windows.
- Salvage layers mismatched patches, weld seams, drums, chains, and whips.
These are not four colour swaps. Each style owns plate materials and a kit of physical greebles placed from the plate's shape, facing, run, depth, and distance to a fitting. Placement is deterministic: the same hull gets the same details every time, including while it changes live in the editor.
Greebles lie down on the surface they stand on instead of balancing upright in their cell. A fixture can require one whole plate surface or deliberately claim a ridge, cone, or tip. Density can be stated in cells of ship, so a style tuned on a generated capital hull does not vanish when applied to a small hand-built craft.
Build the ship you can see
The editor's component drawer is replaced by a full-screen parts gallery. Every
tile renders a live preview. Categories and text search cut the catalog down; a
focus card turns the selected part beside its stats. Drag rotates it, the wheel
zooms it, and Q takes the part straight back to the build view.
Placement itself now mates explicit link-point frames. The editor highlights free sockets, snaps the chosen socket onto the one under the pointer, opposes their normals, and preserves roll. Occupied, ambiguous, or intersecting placements are refused with a reason. The wheel reverses roll; Ctrl-wheel reverses the socket choice. The ghost is the real part mesh.
That change brings Racer, CargoA, and CargoB's semantic parts into the palette. Noses, engines, pods, and tails replace coordinate-named cube fragments, and parts from different craft can mate because the socket frame - not the source ship - defines the join.
Skin while you build
Ship Skin in the Tools block derives the cladding around the current assembly. Move a part under the pointer and the plates close around the uncommitted ghost; refuse the placement and they disappear with it. A ship built clad is the ship you fly clad, with the selected style taken from the merged base-and-mod catalog.
Flight and scenarios feel intentional
Size decides how a ship turns
Turn rate is derived from the ship now. The game compares what its flight computers can twist, given the hull's inertia, with what the structure can take, given an eight-G limit at its furthest face. The lower ceiling wins.
A short craft swings on a short arm and turns sharply. A long freighter handles like one. Losing the nose can make a wreck turn faster because its structural arm became shorter. Stacking computers adds torque and redundancy, but it cannot push a light ship past the limit of its own hull.
Turret tracking also stops depending on frame rate. Through v0.10.0 the servo closed a fixed fraction of its error per rendered frame, so a slow machine made guns lag and eventually stop firing. It now closes the same fraction per second. The target, not the display, decides whether a mount keeps up.
Scenarios get room to finish
Campaign chapters no longer cut from the killing blow directly to a modal Victory frame. A win locks, the live scene gets its outro comms, and only then does the outcome overlay take over. The sequence uses the same first-class scenario timers available to authored content.
The main menu becomes a backdrop carousel with four authored scenes and their own cameras. The editor sandbox becomes a real free-flight range: seeded rock belts, inert targets, dormant pickets, and skybox gates, with F1 always naming the way back to the editor.
A lighter battlefield
The largest performance change is structural enough to see without trusting one computer's frame counter. In v0.10.0, a thousand rounds in flight meant a thousand rigid bodies and a thousand colliders. In v0.11.0, gun rounds are swept math: they keep their visual entity, previous and current position, damage, and owner, but they never enter the rigid-body broad phase.
The measured scenes are not identical - shorter reach and lifetime leave 400 rounds in flight in the new fight where the old one held 1,000 - so this is not presented as a universal frame-rate ratio. The invariant is simpler: each old round added one body and one collider; each new round adds neither.
Less work around the work
Several smaller changes remove repeated presentation costs:
- Damage cracks share eight materials per source material instead of one material per damaged section.
- A pristine section keeps its ordinary material, returning the entire cost of cracks when nothing has been hit. In the driven comparison this reduced mean frame time by 8.6 percent and p99 by 12.2 percent, with all 24 paired metrics moving in the same direction.
- Thruster and torpedo materials are shared by type, and exhaust data changes only when the plume changes.
- The small fixed-step schedules run directly instead of paying parallel executor overhead larger than their work.
- Muzzle, blast, and launch-puff particle buffers are sized to their real bursts instead of all allocating 32,768 slots.
- Scenario hull art is requested during loading instead of by the first ship that needs it.
Those results do not collapse into one honest "the game is N percent faster." Different scenes bind on simulation, render preparation, or presentation. The post therefore reports the structural changes and paired subjects they actually measured. The final release probe will certify the finished tree rather than turn a development profile into a marketing frame rate.
More in v0.11.0
The feature story above is the release, but several shipped behaviors also got cleaner:
- Turret rounds apply their authored damage once. v0.10.0 could report one collider contact twice with the sides swapped and pay damage on both.
- A ship's HP bar stays tied to its as-built maximum. Destroying a section no longer shrinks the denominator and makes the bar fill while the ship dies.
- Neutralization means no weapons or no flight computer. A disarmed runner and a brain-dead gunship are both out of the fight; a bare emplacement with no computer still loses only when its guns are gone.
- Unlimited player ammunition is debug-only. Shipped scenarios and mods use their authored magazines.
- World debris expires. Sliced asteroid fragments leave after 30 seconds instead of accumulating until scenario teardown.
- Rounds identify themselves in flight. Kinetic slugs, Pierce needles, and Explosive shells have distinct silhouettes and use their HUD colours.
- Torpedoes fly nose-first. One shared coned body replaces the flat-ended pipe, with each type carrying its own tint.
Modding and compatibility
v0.11.0 deliberately carries no compatibility aliases for its format breaks:
Kinetic,Pierce, andExplosiveare the damage roster.Empis removed;ArmorPiercingbecomesPierce.SectionDamageClassbecomesSectionClass; the resistance table is gone.- The PDC prototype splits into Kinetic and Pierce variants.
- Kinetic and Pierce use the new travel rules and closing-speed model.
- Torpedo bays select a torpedo type; standard warhead health and blast values changed.
- Turn ceilings derive from torque, inertia, hull length, and the structural load limit.
- Ships accept an authorable collapse threshold and optional derived skin/style.
Styleis a new content kind with plate surfaces, fixtures, and scatter rules.- Menu backdrops must author
SetCamerainOnStart. - The editor's Components drawer is replaced by the parts gallery.
Run cargo run content lint against each bundle. The current /create/
reference owns the complete replacement vocabulary and the bundled content shows
the migrated forms.
Build a ship, then break it
v0.11.0 is available from the Nova Protocol landing page. Play in the browser, download the native build, or open the editor and watch a bare structure become a clad ship before taking it into the new sandbox range.
The terse list is in CHANGELOG.md. This post is the visible version: closer
fights, smarter ordnance, ships with an identity, and wreckage that tells you
exactly how the battle ended.