Skip to content
Devlog

Release 0.14: ships and the city dogfight

Release notes card for 0.14, Ships and the city dogfight, over a ship flying above a city street

Release 0.14 is the first playable dogfight. The player flies a gunship through a city against computer-flown ships called Ravens, under a ceiling of about 2.5 stories that came out of flying low in play. The shields, missile locks and juke below came out of a play session on October 3 and were built that night.

Game

  • The gunship cruises at 30 m/s and boosts at 70 m/s for 2.5 s, then refills over 6 s. The ceiling is 10 m above the ground under it. The chase camera sits 12 m behind and 3 m above where the player aims.
  • A Raven decides ten times a second from what it senses. It sees only what it could see, along rays that pass through glass, so it can shoot through a window. Out of sight it heads for where the target would be by now, then searches, then patrols. In tests a patrolling Raven found a ship hiding behind blocks on 6 of 6 seeds, in 5 to 14.5 s.
  • One homing missile had taken a ship out about 90% of the time. Every ship now has a shield that holds 0.6 of its health, starts recharging 4 s after the last blow and refills from empty in 3 s. A missile that had taken up to 1.07 of a ship now leaves a whole ship at 0.53 or more.
  • Missiles home only after a 1.5 s lock, announced by a tone. The player can juke, a 40 m/s throw sideways that covers 7.7 m in 0.15 s, to shake one.
  • Ships take damage by part. A lost engine pulls the ship to one side and costs a fifth of its top speed, a lost cannon means no gun, and a lost canopy fills the HUD with static. A ship at zero health crashes, trailing smoke and fire, and leaves its parts on the street.
  • Ships jittered in the first duels, so decisions and turns are now eased, and how much a ship’s heading jerks fell from 76 rad/s² to 9 rad/s².
  • The tight city is Manhattan-like, with a regular grid, 1 and 2 story storefront strips, buildings of 5 to 10 stories behind them, and 3 or 4 towers.
  • Buildings gained precast facade panels that break away, dark-glass mid-rises, L-shaped and wedge-shaped footprints, twisting towers, and four ornamented towers inspired by real buildings. A raised street gives the ships 13 m of clearance, above the 10 m ceiling.
  • A teal forcefield wall follows the edge of the city, and each city draws its own sun between 20° and 55° up.

Engine

  • A boost smashes through buildings. A member breaks when the ship’s energy exceeds the energy needed to punch through it. Boosting, the final gunship goes through brick at 42 m/s and a concrete column at 46 m/s, and never through steel or a reinforced core wall.
  • Glass comes in three kinds, annealed, tempered and laminated, that crack and break differently. We set 4 or 5 autocannon rounds to break a pane, and rounds fly on through it.
  • Paved ground is a layer, so a crater shows asphalt, then the base under it, then soil. Cracks run out from craters and slabs of pavement are thrown.
  • The graphics page has Auto, Low, Medium, High and Custom presets, and a first antialiasing option.

Tools

  • Ships are files the game reads. We set up an asset studio, a separate tool that designs, checks and exports them, and picked the final gunship and Raven from its drafts.
  • A small trained decision model picks the Raven’s goals three times a second as a trial. We are trying it as the fast decision layer for the enemies. The first version beat the scripted pilot 43 to 17 in 60 headless duels, at 8.4 ms an answer. Three later versions each ended up favoring one goal, so the work moved to how the training examples are labeled.
Provenance

How this post was made

Drafted by
A Claude Code session in the trilithon.games repository, October 10, 2026, working from the game's changelog, docs and tracker.
What it did
Drafted this post from the game's changelog and roadmap, and checked each number against them.
Reviewed by
Alex van Rossum,

On the roadmap: Ships and the city dogfight

Linear MIP2-308, MIP2-343, MIP2-344, MIP2-345, MIP2-393, MIP2-396, MIP2-404, MIP2-411, MIP2-412, MIP2-413, MIP2-425