Play a hopping game: guide a hedgehog across lanes of cars, vans and bikes, and later a stream of stepping stones, to its burrow at the top of the meadow.
Level 1
Score 0
Hearts 3
Best -
Hop with the arrow keys or W A S D, the four buttons, or by swiping on the picture (a tap hops up). Get the hedgehog to the burrow at the top: it is the dark hole in the top meadow. Cars, vans and bikes hurt, and so does a stream cell with no stone. You get three hearts; when one is lost the hedgehog rolls back to the start. Escape or P pauses. The game waits for your first hop. Calm is for the youngest players: three quiet roads, slow traffic, and no hearts to lose.
The picture is a grid of 7 columns and 9 rows. Each road lane has vehicles that loop around at their own speed, and the whole traffic pattern repeats exactly every few seconds. Before a level is shown, the game searches every moment the hedgehog could set off and checks that there is always a safe way to the burrow, so waiting for a gap always works. Each new row you reach scores 1, and each burrow scores 10.
As-is, no warranty. These apps are free under their listed license and run entirely in your browser. Use at your own risk — don't blame me if your PC catches fire, your dog runs away, or the math turns out wrong. Verify anything that actually matters. None of this is professional financial, medical, legal, or engineering advice.
The hedgehog starts at the bottom. Your job is to get it to the burrow, the dark hole in the top meadow. Between you and the burrow are roads with cars, vans and bikes, and sometimes a stream where only the stone cells are safe. The game waits for your first hop.
Hops come at most ten times a second. If you press faster, up to three hops wait their turn, so nothing teleports.
You have three hearts. If a vehicle runs over the hedgehog’s cell, or a hop lands on a stream cell with no stone, the hedgehog curls into a ball and rolls back to the start, and you lose one heart. When the last heart goes, the run ends and you see your level and score. In Calm there is no heart limit and no run end.
Every row you reach for the first time in a level scores 1, and a burrow scores 10. Going back and forth does not score twice, and neither does climbing again after a heart is lost. After a burrow, the next level starts at the bottom.
| Level | Roads | Stream | Traffic cycle | Vehicles per lane (at most) |
|---|---|---|---|---|
| Calm (little ones) | 3, always | never | 14 s | 2, with wide gaps |
| Normal | 3, growing to 5 by level 5 | 1 from level 3, never more (five roads leave room for one) | 12 s, getting 0.4 s shorter each level, down to 8.5 s | 2, then 3 at level 4, 4 at level 8 |
| Busy | 4, growing to 6 by level 5 | 1 on levels 2 to 4, none from level 5 (six roads fill every free row) | 10 s, down to 7.5 s | 3, then 4 at level 5 |
From level 4 on Normal (level 2 on Busy), some lanes run at double speed. Nothing changes after level 12, though the level number keeps counting. The middle row (row 5 from the top) is always safe grass, a place to stop and look.
Cars are 1.3 cells long, vans 2 and bikes 0.7, so you can tell them apart by size and shape as well as colour. Whatever the colour, every vehicle is dangerous.
The hop buttons have names such as “Hop up”, the canvas label reads out the level, score and hearts, and a message line says what happened after each hit, splash and burrow. When you ask your device for reduced motion, the traffic runs 20 percent slower, hops are instant instead of arcing, and the curl-up and the level banner are still pictures. Nothing flashes and there is no screen shake. There is no sound.
The engine is a set of pure functions: step(game, hop, rng) advances the game by one 1/60 second. The page feeds it whole steps from a fixed-step clock, so a 60 Hz phone and a 144 Hz monitor play the same game, and a stalled tab cannot fast-forward it (one frame is cut off at 50 ms).
Traffic. Each road lane is a circular track 10 to 13 cells long, longer than the 7 visible columns, so vehicles leave one side and come back on the other. Each lane runs a whole number of laps (one or two) per cycle, so the speed is laps times track length divided by cycle time, and after one cycle every vehicle is exactly where it started. A vehicle hurts the hedgehog when it overlaps the middle of the cell, which is the cell shrunk by 0.15 on each side. The overlap test looks at the whole stretch a vehicle sweeps during a step, so even a fast bike cannot skip over a cell between two steps.
Proof that a way across exists. Time is cut into slots, six per second of cycle, 45 to 84 in all. A state is a time slot, a row and a column. From a safe cell the hedgehog can stay or hop to a neighbour at the next slot. The generator runs the search backwards from the burrow, wrapping time round, and keeps a layout only if the start cell can reach the burrow from every one of the slots. A cell counts as busy if a vehicle touches it during the slot or within 30 ms either side. If a random layout fails, another is drawn; after many failures the layouts get emptier, so a level always comes out.
What the tests check. An independent check lives in the test suite. It rebuilds the traffic with its own code, without sweeping: it samples every vehicle’s position 200 times a second. It confirms the engine is never less careful than that sampling, and finds that it is more careful in under 2 percent of cases. Then it runs its own forward breadth-first search from the start cell at several start moments on each of 120 generated levels, on all three difficulties, and always finds a way across. Finally, it follows a found path through the real engine, hopping at the right steps, on every difficulty at levels 1, 5, 9 and 12: the hedgehog reaches the burrow each time without losing a heart. A deliberately blocked lane, with one vehicle as long as its whole track, is correctly rejected.
Given the same random numbers a game replays exactly. The page takes its random numbers from the browser’s secure random source.
Nothing is uploaded and there is no account. Your best score for each level setting (and for the slower pace used with reduced motion) is saved in your browser’s local storage under one key, as small whole numbers inside a small JSON object. The page address holds your level setting so you can share it. Clearing site data removes the scores.
For informational purposes only. Not financial, medical, or legal advice. You are solely responsible for how you use these tools.