Released
One-button arcade · 2026-07

Spike Drift

A one-button arcade dodger built in a few evenings. Hold to rise, let go to fall, and thread the drifting spike gaps — no install, no download, no dark patterns. Just you, one input, and a high score to beat.

Hold anywhere / space to rise · release to fall

BrowserMobileCanvas 2DVanilla JSZero dependencies
Play
How to play

Hold anywhere on the screen (or press space) to rise. Let go to fall. That’s the entire control scheme — one input, two states.

A field of spikes drifts toward you from the right. Each row has a gap; your job is to be at the right height to thread it when it arrives.

There’s no timer and no lives system beyond the one hit — touch a spike and the run ends, your score locks in, and you go again immediately.

Works with mouse, touch, or keyboard, so it plays the same on a phone in a browser tab as it does on desktop.

Tips

Tap-hold in short bursts rather than long holds — Spike Drift rewards small corrections, not big swings, since overshooting a gap is as fatal as undershooting it.

Watch the next gap, not the current one. By the time a gap is on screen it’s almost too late to react; the read has to happen one row early.

The drift speed is constant, so your rhythm matters more than your reflexes — find a steady up-down cadence and the gaps start to feel evenly spaced instead of random.

Your best score is saved locally in your browser (no account needed), so the real game is beating your own last run, not chasing a global leaderboard.

The making-of

Spike Drift is the studio’s first shipped game — built in a few evenings as a single self-contained HTML file, no build step, no dependencies, so it can be dropped straight into a browser tab or handed to any web-game portal as-is. It was designed around one rule: if the game can’t be explained in one sentence, cut something until it can. The full build — including the headless bot that played the game thousands of times before any human did, to tune the difficulty — is written up in the devlog.

Read the full devlog →