Cheatsheet

Every key, flag, script and figure on one page, for someone who has already read the documentation. The full text lives on the site.

Controls

InputAction
W A S D or arrowsSteer
F or Shift (browser)Boost
SpaceFire pulse cannon
Q / EBarrel roll
PPause / resume
MMute toggle
C (browser)CRT scanline overlay
EnterLaunch / relaunch
EscMenu / quit
Ctrl+CQuit immediately (terminal)
Thumbstick / FIRE / BOOSTTouch: steer / fire or confirm / boost

Press-not-hold keys are P, M, Esc, Q and E. They fire once per press and take a short deadzone after a hold.

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

Browser URL parameters

index.html?debug                     Open the debug scenario menu
index.html?mode=chaos                Start a specific debug mode directly
index.html?mode=mines                Mine Field
index.html?mode=orbs                 Orb Harvest
index.html?mode=obstacleCollision    Collision Course
index.html?mode=mineCollision        Mine Sweeper

Debug modes

#ModeFlag / paramWhat it isolates
1Mine FieldminesPure evasion
2Orb HarvestorbsCollection
3Collision CourseobstacleCollisionObstacle impacts
4Mine SweepermineCollisionMine collisions
5Chaos ProtocolchaosEverything, permanent boost, auto-fire

Debug runs never record a best score.

Numbers

ThingValue
Obstacle collision25 shield
Mine collision35 shield
Mine hit points5 pulse hits
Orb pickup10 shield, 500 points
Obstacle destroyed200 points
Mine destroyed500 points
Powerup drop chanceabout 1 in 3 mines shot down
Shield Regen +25 shield
Rapid Fire !10 seconds, 3x cadence
Slow Motion ~5 seconds, half world speed
Combo window2 seconds, caps at COMBO x8
Barrel roll0.5 seconds invulnerable, then a cooldown
Warp stepevery 60 seconds, banner for 2 seconds
Grid floor60 columns by 20 rows

Scripts

npm run build      # Compile TypeScript to out/
npm run start      # Run the compiled game
npm run dev        # Build and run in one step
npm run debug      # Build and run in debug mode
npm run watch      # Watch mode for development
npm test           # Build, then run the test suite
npm run probe      # Build, then run a measurement probe

Probes

npm run probe with no arguments lists what there is to measure. Each probe takes a grid and a build:

npm run probe -- seen-versus-kill
npm run probe -- column --grid 205x50 --build browser
npm run probe -- free-flight --passes 2

A probe reports; it never asserts. Every walk is seeded, so the same command gives the same numbers every time.

Test grids

The pulse cannon checks run at three sizes, because the hit test is not size-neutral:

GridWhy
80x24What a terminal opens at
60x20The floor a small browser window is clamped to
205x50A full-screen window at the default font

Terminal requirements

Browser-only features

High score persistence, sound, the CRT overlay (C), light mode, touch controls, and a canvas-offset screen shake. The terminal build jolts the play area by a whole character column instead, and keeps a best score for the session only.