Vertical Platformer
A vertical bouncing platformer, plus the measured reason wrapping the screen edges is what makes it winnable rather than a cosmetic touch.
Steer with ← and →, or A and D, or drag anywhere on the canvas. You bounce automatically on landing — there is no jump button. Fall a screen below your best height and the run is over. Switch to solid walls to feel the difference the tables below measure. Everything runs in your browser; nothing is uploaded.
What one bounce can reach
A bounce leaves at 780 px/s against 2000 px/s² of gravity. That rises v²/2g = 152.1px and hangs in the air 2v/g = 0.78s. Nothing above 152.1px can be landed on, however well you steer. Below it the jump crosses each height twice, and the crossing that matters is the one on the way down — which is why the sideways reach is as generous as it is.
| Rise to the next platform | How far sideways you can get |
|---|---|
| 0px | 233.8px |
| 40px | 219.5px |
| 80px | 202.2px |
| 120px | 179.0px |
| 152px | 135.0px |
The best it ever does is 233.8px, on a flat hop. Hold on to that number: the screen is 400px wide.
One honest caveat, since every number on this page is a continuous one and the game is not. Running at 120 ticks a second, the bounce actually tops out at 148.86px rather than 152.10px — short by 2.1%, because velocity is updated once per tick rather than continuously. Halve the tick and the shortfall roughly halves, which is what a first-order error does. It is small, but it is a real gap between the algebra and the thing you are playing.
Wrapping the screen is not a cosmetic choice
With solid walls the worst case is a platform at the far edge — a whole 400px away. The jump can manage 233.8px. So there is no vertical spacing that makes the game safe; you can always be handed a tower you cannot climb.
Let the player wrap around the edges and the worst case halves: nothing is further than 200px. Now the reach can cover it. Setting the reach equal to half the screen and solving gives 84.50px — and below that gap, being stranded is not unlikely, it is impossible.
| Largest vertical gap | Stranded with solid walls | Stranded with wrap |
|---|---|---|
| 50px — under the guarantee | 38.5% | 0.00% |
| 60px — under the guarantee | 65.8% | 0.00% |
| 70px — under the guarantee | 90.0% | 0.00% |
| 80px — under the guarantee | 98.3% | 0.00% |
| 84.5px — under the guarantee | 99.5% | 0.00% |
| 90px | 100.0% | 2.00% |
| 100px | 100.0% | 29.00% |
| 120px | 100.0% | 88.25% |
Every row under 84.50px reads exactly 0.00%, across 2,000 random towers — only the rows under the line count towards that. Above it stranding turns up — but gently rather than as a cliff, because just past the threshold you need a platform sitting almost exactly opposite you, which is rare. The line is a guarantee about the worst case, not a prediction about the average one.
The tempting read of that table is that a small enough gap would rescue the walled game too. It does not — the left column never reaches zero, and is still 38.5% at the tightest spacing measured. The problem is structural, not a matter of tuning.
The steering rule that quietly costs you everything
"Head for the nearest platform above you" sounds like the whole game. It is close to the worst rule available, and the reason is a nice one: at the top of the arc, the platform you were about to land on is below you. The rule drops it and aims at the next one up, so you sail straight past a landing you had already earned.
| Steering rule | Median height | Best of the runs |
|---|---|---|
| Nearest platform above, re-chosen constantly | 289px | 472px |
| Pick a target on the bounce and commit to it | 2,422px | 8,444px |
Same towers, same physics, one decision rule apart — a factor of 8.4. Committing is also what a person does without being told, which is why the game feels fair even though the obvious strategy is hopeless.
And the wrap result survives contact with the actual game loop rather than living only in the reachability graph: the same committing player reaches 2,422px with wrap against 1,265px with walls.
How to use
- Steer with the left and right arrow keys, or A and D, or drag on the canvas.
- You bounce automatically whenever you land — there is no jump button.
- Fall a full screen below your best height and the run ends.
- Switch the edges to solid walls to feel how much the wrap was doing.
- Pick a platform as you launch and commit to it rather than re-aiming mid-flight.
Frequently asked questions
How high can one bounce go?
Exactly v squared over 2g. At a launch of 780 pixels per second against 2000 pixels per second squared of gravity that is 152.1 pixels, and it hangs in the air 2v/g = 0.78 seconds. A platform higher than 152.1 pixels cannot be landed on however well you steer.
Why does wrapping the screen edges matter so much?
Because it halves the worst case. With solid walls a platform can sit a whole screen away — 400 pixels — and the furthest a jump ever carries you sideways is 233.8 pixels, so no vertical spacing makes the game safe. Let the player wrap around and nothing is ever more than 200 pixels away, which the jump can cover.
Is there a spacing that guarantees you cannot get stuck?
With wrap, yes: 84.5 pixels. That is where the sideways reach equals exactly half the screen. Below it, being stranded is not merely unlikely, it is impossible, and 2,000 random towers agree at 0.00%. Without wrap no such number exists at all.
Does stranding switch on sharply above that gap?
No, and it would be wrong to say so. The threshold is a guarantee about the worst case, not a prediction about the average one. Just past 84.5 pixels you would need a platform sitting almost exactly opposite you, which is rare, so the stranding rate climbs smoothly from zero rather than jumping.
What is the best way to steer?
Pick a target platform at the moment you bounce and commit to it for the whole jump. Aiming at whatever is nearest above you is close to the worst rule available, because at the top of the arc the platform you were about to land on is below you — so the rule abandons it and you sail past a landing you had already earned.
Do the physics formulas match the game exactly?
Almost. The game advances velocity once per tick at 120 ticks a second, so a bounce tops out at 148.86 pixels rather than the continuous 152.10 — about 2.1% short. Halving the tick roughly halves the shortfall, which is the signature of a first-order integration error.
Does this send anything anywhere?
No. The game runs entirely in your browser and nothing is uploaded.
🔒 This tool runs entirely in your browser. Nothing you enter is uploaded, logged, or stored.