SvitsGames

Jump Jump

A one-button endless runner. Jump the blocks, clear the towers, go as far as you can — one hit ends the run.

endless-runner / HTML5

Screenshot from Jump Jump

Open full screen (opens in a new tab)

Jump Jump is a one-button endless runner that runs in any browser — nothing to install and no account. Blocks and towers come at you at a rising speed, you jump, and one hit ends the run. It is deliberately small: the whole game is one button and how well you read what is coming.

What you do

Tap, click, Space or to jump. Hold the button for a higher jump; release early and the rise cuts short. Press again in mid-air for a double jump, one per airborne period.

The tall towers are the reason the double jump exists. They are set above the height a single jump reaches, so they cannot be answered any other way, and they start appearing 30% of the way up the difficulty ramp — once ordinary blocks have taught the plain jump.

Difficulty comes from speed rather than from new inputs. Obstacle spacing is timed rather than measured, so the rhythm survives the ramp and what shrinks as you get faster is your reaction window. There is no duck and no second control: flying obstacles would need a second direction of input, which is most of the way to being a different game.

How it’s built

Phaser 4.1.0, TypeScript and Vite, at 371 kB gzipped with Phaser included.

There are no assets at all — no images, no audio files, no web font. Every graphic is drawn at runtime and every sound is synthesised with Web Audio, which is most of why the build is that size.

The canvas is fluid: no fixed base resolution and no letterboxing. It fits whatever size the browser happens to be and re-fits when a phone rotates mid-jump, because the game is tuned in design units and a resize changes only how many device pixels one unit is worth.

The devlog has the working notes behind most of that: why Phaser’s Scale.RESIZE can’t use device pixels, what the canvas does mid-rotation, and why a loading screen can’t cover its own bundle.