A racing ship clamped to the construction deck of an orbital ring, the frozen gas giant Kesh filling the sky beneath it.

The Ledger · Span Nine

UmbraNine

Half of every lap rakes starlight and your hull cooks in it. The other half is inside the planet's shadow, and shadow is the only place heat leaves you. Boost, guns and shields all draw on the same rising number.

Grid
8 machines
Race
5 laps
Centreline
3,240 m
Peak
770 km/h
In eclipse
27.2%

The game

HEAT 000 / 100

Everything you do
comes out of the
same number.

There is no charge pool and no energy bar. Boost is heat. Every one of eight weapons is heat. The shield is heat. And the only place heat goes down is the dark side of the planet you are racing over.

01

Two resources.
Nothing else.

HULL and HEAT. Heat only leaves by radiating, and radiating only works in shadow. Hull only comes back in the Induction Lane — a 90-metre corridor bolted to the outside of the last complex — which makes repairing a strategic surrender rather than a free top-up.

The lane restores 14 hull/second, but only while you hold within ±1.2 m of its centre at 120 m/s. It costs 1.4–1.9 s and, usually, two places.

02

A lap is a light cycle

The star is fixed in world space. Day and night come from the planet occluding it, and Span Nine straddles the boundary. Twenty-two seconds of sunlit deck loading heat in, eight seconds of true night pulling it back out, and one frame in between where six ships ahead of you go pure black.

Eclipse arc t 0.4694–0.7414 — 27.2% of the lap. Passive heat is +5.0/s sunlit against −7.5/s in eclipse.

03

Heat is the ammunition

Every discharge is a thermal decision as much as a tactical one. QUENCH cools everyone caught inside it, including whoever dropped it. SUNDER announces itself for a full 2.4 seconds before it fires, so it is enormous and completely fair.

  • Lance
  • Scatter
  • Rebar
  • Hook
  • Quench
  • Anchor
  • Sunder
  • Rime

Every shot costs +7 heat. RIME does 8 damage and disables the victim's radiators for 4.0 s — harmless in the eclipse, ruinous fired into the sunrise.

04

Three ways to lose the deck

The Shear is 165 metres of nothing, and with 0.31 m/s² of residual gravity a jump is not an arc — it is a dead-flat precision test. The Inversion corkscrews 360° and runs you along the deck's underside. The Gauntlet splits into two 4.9-metre lanes around a cable trunk, and only one of them exits on line.

At 150 m/s the Shear crossing is 1.10 s and 0.19 m of fall. A 2.0° yaw error at the lip puts you 5.8 m off line at the far side. Ten landing lights fire toward you in a 120 ms sequence — that is the only aiming aid you get.

05

Eight machines, three classes

A converted cargo tug. A shipyard crew's bare structural keel. A research blade that has no business being here. Every silhouette reads as a 40-pixel black shape against the star, which is how you will mostly see them.

Speed class multipliers
ClassTopAccel
Tender0.83×1.12×
Lighter1.00×1.00×
Clipper1.18×0.92×

Clipper peaks at 214 m/s under boost. That is 770 km/h, on a plate ramp, 340 km above the cloud tops.

A long arc of the orbital ring seen from outside, cyan service lighting running the length of an unclad truss spine against black.
Span Nine · a 340 km arc of a 1,100 km spine · roughly 40 percent clad

The world

HEAT 000 / 100

It was never
built to be raced.

The Ledger is an orbital ring under construction: 1,100 km of triangulated spine, of which Span Nine is a 340 km arc, roughly 40 percent clad. Racing happens on the construction service deck — a 24 m ferrous plate ramp the rigs used to shift material along the span.

It climbs over completed pressure bays, dives under the spine, threads a smelting foundry that blows its crucible down every 14 seconds, and crosses a 165 m gap where a hull section was cut out and never replaced. No grandstands, no hoardings, no start-finish arch. Induction lighting and hazard chevrons, bolted on by somebody in a hurry.

Below it hangs Kesh, a hydrogen-ammonia giant at 118 K, blue-cyan and desaturated, filling 46 degrees of sky.

The umbra is the shadow. Nine is the span. The title is the lap.

Spine
1,100 km
Triangulated, under construction
Span Nine
340 km
The arc the race is held on
Clad
~40%
The rest is open truss and vacuum
Service deck
24 m
Ferrous plate. The rigs used it first
Altitude
340 km
Above the cloud tops of Kesh
Kesh
118 K
Hydrogen-ammonia, 46° of sky
A ship banked hard on the outside of the deck with the banded cloud tops of a blue-cyan gas giant filling the left of the frame.

Forty-six degrees of sky

The planet is not scenery. It is the clock.

Kesh does not rise or set. The deck runs round it, and the shadow it throws is the only cooling you will ever get. Where the plate gives way to open grating you can see straight through the floor to the cloud tops, 340 kilometres down, scrolling past at 162 metres a second.

Hydrogen-ammonia at 118 K. Blue-cyan, desaturated, and never lit brightly enough to compete with the deck: the mag strip under your skirt is the brightest thing in most frames, and that is deliberate.

The star cresting the ring spine dead ahead, blowing out the deck and reducing the ships in front to black silhouettes with a one-pixel rim.

The moment

The terminator

Eight seconds of eclipse end in a single frame. The star crests the spine dead ahead at 6.5°, the deck goes from mag-strip cyan to one hard rake of white, and the anamorphic streak stretches the full width of the screen for about 0.8 seconds. Exposure is nailed at 0.85, so the blowout is real.

The lap, as a thermal cycle

HEAT 000 / 100
  • Sunlit · 72.8% · +5.0/s
  • Eclipse · 27.2% · −7.5/s
  • Heat carried
  • Cap 100
Drag the ring, or use the arrow keys
Lap position t 0.7414
The Break Leaving eclipse
Distance
2,402 m
Elapsed
22.3 s
Heat rate
+5.0 /s
Heat
9.2
  1. 01Foundryt 0.310
  2. 02The Inversiont 0.542–0.582
  3. 03The Shear165 m of nothing
  4. 04Terminator Bank42° at 110 m/s
  5. 05Induction Lanet 0.952–0.976

A lap you never cool on is a lap you lose on the third one.

Sunlight puts 5.0 heat a second into the hull and there is nothing you can do about it. Eclipse takes 7.5 a second back out, and eclipse is 27.2% of the lap. Do that arithmetic once and you get a net gain of 48.2 every time you come round. Do it three times and you are over the cap.

Which is why the interesting question in this game is never can I get past him. It is can I afford to.

  1. Lap 1 48.2
  2. Lap 2 96.4
  3. Lap 3 144.6
  4. Cap 100. Above the line the ship trips.

Frames

HEAT 000 / 100
The pack crowding a plate ramp at speed, hulls lit amber and the deck streaked with motion under them.
Traffic. Eight machines, one 24 m deck, no run-off
A ship in near-total darkness inside the planet's shadow, lit only by its own engine glow and a thin cyan line down the centre of the deck.
Eclipse. Eight seconds. The mag strip is the only light left
A ship laid over on a steeply banked section of deck, the structure falling away into black on the right of the frame.
Terminator Bank. 42° of bank, taken at 110 m/s
A ship holding a narrow repair corridor lit by a hard orange induction mast while the deck streams past on the right.
Induction Lane. +14 hull a second, and the position number ticks the wrong way
A ship running dead straight along open grating toward a lit gantry, a single cyan racing line down the centre of the deck.
Lattice Straight. 38 mm grating at 62% porosity, and the cloud tops are through it
The full in-race instrument panel: a heat column reading 82, a hull ladder reading 64, lap and speed readouts, and a route strip along the bottom.
The whole instrument panel. Heat 82, dark in 40.9 s, hull 64. There is nothing else to read

The build

HEAT 000 / 100

Nothing in this
game is a file.

There are zero binary assets under src/, and the production build contains one JavaScript bundle and one stylesheet. Every mesh, texture, material and sound is written in code and generated the moment the page loads.

It runs in a browser tab. There is no install and no launcher, and the numbers below are what it costs.

93,533Lines of TypeScript
1.80 MBEntire game, shipped
0Art files

Open in the log. A controller session on 2026-08-07 left three things unresolved: mag-lock sheds too easily and the respawn re-stages you divergently, the Foundry bore does not line up with the deck, and the Shear is not reliably makeable first time. None of them are fixed. The design above is what the build is aiming at.

Source 93,533 linesAcross 50 TypeScript modules; 96,113 including the UI stylesheet. The largest single file is src/fx/Effects.ts at 7,609 lines.
Comment density 49.0%45,854 of the 93,533 source lines are comment. They are load-bearing: several document guards whose removal has already reintroduced shipped rendering bugs.
Art assets 0Zero binary files under src/. dist/assets contains one JS bundle and one stylesheet, and nothing else.
Harnesses 62 files · 22,385 lines36 named benches — fps, drift, heat, weapon, invert, route, luma-histogram, touch-feel — plus 18 diagnostic probes.
Bundle 1,798,845 BPlus 28,788 bytes of CSS. Built with Vite against an es2022 target. That is the whole game.
Physics substep 1/367 sDistance-capped at h = min(1/120, 0.45/speed), so a 60 Hz frame at 165 m/s runs roughly six substeps. Capping on frequency instead tunnels a 1.6 m barrier at race pace.
Frame budget ≤220 draws · ≤2.2M trisScale comes from instancing rather than geometry. One 18 m truss bay instanced 4,800 times is a megastructure that costs a single draw call.
Exposure 0.85, fixedHard-set in src/render/Renderer.ts. Auto-exposure is banned outright — an adapting exposure would erase the terminator blowout, which is the best frame in the game.
Checkpoints 40 per lapRaised from 32. At 165 m/s a 32-point lap advances far enough in one dropped frame to skip a checkpoint, which reads to the player as a lap that did not count.
Roll channel +360° per lapA monotonic accumulator kept separate from bank, all of it spent in one 246 m section. Peak chassis roll rate is 338 °/s; the camera follows at 0.62× with a 0.18 s damped lag.

Five laps

Ten crossings. Start cold.

It runs in the tab you already have open. No install, no launcher, nothing to download.