Usage (CLI)

space-rider                          Start in normal mode
space-rider --debug                  Open the debug scenario menu
space-rider --mode <mode>            Start a specific debug mode directly
space-rider --help                   Show help

Controls

InputAction
W / A / S / D or Arrow keysSteer ship
F or Shift (browser)Boost
SpaceFire pulse cannon
Q / EBarrel roll
PPause / resume a run
MMute toggle
C (browser)CRT scanline overlay on / off
EnterLaunch / relaunch
EscReturn to menu / quit
Ctrl+CQuit immediately (terminal)
Thumbstick / FIRE / BOOST (touch)Steer / fire or confirm / boost

M silences the browser version and shows a MUTED indicator in the footer. The terminal version has no audio, so there the flag only raises the indicator.

The keys that act on the press rather than the hold — P, M, Esc, and the Q and E roll — fire once per press. Holding one down does not repeat it at any of the repeat rates the standard OS sliders offer.

That costs a short deadzone after a hold, because a terminal has no key-up event and silence is the only thing that can stand in for one. P, M and Esc take it flat: having held one, the next press of it is ignored for a beat, so a deliberate second tap needs a moment between them. Nothing is competing for those keys, and a beat is cheap.

The roll is the escape move, so Q and E do not pay that flat rate. Their deadzone is measured off the repeat stream instead, which lasts about twice the gap between repeat characters — a fifth of a second on a normally configured keyboard. Let go after a long hold and the next press rolls, with the roll cooldown left to decide whether it lands. What cannot be recovered is a re-press inside the repeat rate itself: arriving exactly as soon as the next repeat character would have, it is the same stream, and nothing tells them apart.

Silence only counts against a key while the game is listening for it. A terminal that cannot keep up with the repaint blocks the write the game hands it, and the loop with it, so keystrokes queue up and land together when it clears. That pause is the game's, not the player's, and it is discounted rather than read as the key having been let go — so holding the roll on a terminal falling behind still rolls once. A press made inside such a pause is the one thing lost: it cannot be told from the hold carrying on, and the game was frozen for it anyway.

Gaps that pause leaves are not the repeat rate either, so they are not measured as it. On a terminal that blocks on every frame there is no gap left that was timed against a loop actually reading, nothing is measured, and the roll falls back to the same flat deadzone P, M and Esc carry. That is the wide end rather than the narrow one, and on a loop ticking that slowly it is about three frames.

Gameplay

Debug Modes

Access via --debug (CLI) or ?debug (browser):

#ModeCLI flag / URL paramDescription
1Mine FieldminesOnly mines. Pure evasion.
2Orb HarvestorbsOnly orbs. Collect them all.
3Collision CourseobstacleCollisionHit obstacles. Track every impact.
4Mine SweepermineCollisionRam mines. Log collisions.
5Chaos ProtocolchaosEverything at once with permanent boost and auto-fire.

Navigate the debug menu with arrow keys or number keys, then press Enter to launch.