One-Button Dash

About this game One-Button Dash

Development notes

One simulation for page and server

Course generation, physics and collisions live in one file that the browser and the server both load. It runs on a fixed 120 Hz tick with plain arithmetic, so every machine gets the same result. Ranked runs send only press and release ticks; the server replays them and refuses runs under one second or input after the run ended.

A bot has to finish every course

Tests run a beam-search bot that branches at every other tick where it can jump into no jump or a 100, 150 or 250 ms hold; courses must be passable with those human-length presses, not 8 ms flicks. Stairs killed a bot with ±33 ms input jitter most often, so since rule version 2 the first 150 m has no stairs, high or moving saws, or spiked blocks, and tall pieces are followed by about 0.35 s of flat ground.

Rhythm instead of noise

With single random obstacles the course looked the same after about 300 m, with no build-up or release. Rule version 3 adds zones, five rhythm sets and rests. Stars use a separate random stream, so they cannot move an obstacle. In bot runs to 1,300 m, hazards per 100 m fell from 12.4 to 9.9.

Seeing far enough ahead

On wide screens the shared buttons on the right (about 84 px) hid incoming obstacles, so the tile size now fits 21 tiles to their left. Portrait phones get larger tiles and still see about 13 tiles, 0.9 s at top speed. As speed rises the camera zooms out by up to 12%.

Updated:

Play now →