Light-speed delay is the mechanic, not the bug.

Two ships, alone in empty space, far enough apart that light takes a noticeable while to cross. You never see where your opponent is, only where their light says they were. Closing range buys you truth and costs you time to react.

Play in the browser Download the portable build

The download is the same build as a single file: bot and hotseat run from it anywhere, including a phone. Online play needs a relay; the menu says what to do.

One exchange

Spacetime diagram of one exchange at 300,000 km. Light takes 1.00 s each way; the Lance takes 5.00 s; the target gets 4.00 s of warning between seeing the muzzle flash and being hit.
At 300,000 km their light is a second old. Your shot, the Lance, crosses at 0.20 c and lands five seconds after you fire. They see the flash a second after you fire, which leaves them four seconds to not be where you aimed.

Where they can be

Top-down plot at 250,000 km: the enemy's last-seen mark, their extrapolated position, the disc of everywhere they can reach by impact time, and two ways to spend one shot: a thin cut or a full wash.
The orange disc is everywhere they can reach by the time your shot arrives. Focus the beam and you cut a thin, lethal line across it; spread it and you wash the whole disc for a fraction of the damage. Expected damage is the same either way. What you are choosing is variance.

How it plays

First-person cockpit. The Lance is locked to the centre of the view, so to aim you turn the ship, and the ship turns at 60° per second: a reversal is a three-second commitment. WASD thrust in the ship's frame at full power from the first tick. Heat gates the weapon; venting clears it and venting is what gives you away. Run dark and you widen their picture of you, and yours of them, because the array you shut down is your own.

Four modes: against the bot, hotseat on one machine, the bot over the network, and online between two browsers with a paste-code invite. The simulation is deterministic and lockstep, and a replay-hash gate keeps it that way.

Read the design

design.md is the spec and every number in it matches the shipped constants. netplay.md is the netcode and the plan for the relay. concepts.md is the eight-concept round this came out of, and why it won.