How to play Sky Runner
| Keys | Action |
|---|---|
| ← → | Bank |
| A D | Bank |
| Drag | Steer |
| P | Pause |
| R | Restart |
| M | Mute |
On phones and tablets, use the on-screen tactile D-pad under the viewport.
About Sky Runner
Sky Runner is an endless flight game. Rows of shapes rush toward your aircraft across five lanes. The cockpit shows the signature you are carrying: a solid disc, a hollow ring, a triangle or a diamond. Fly through shapes that match it to score. Touch any shape that doesn't match and the run is over.
Every seventh row is a dashed gate that spans the whole corridor, so you always pass through it. It switches your signature to a different shape, and the rows after it are built for the new one. Shapes differ by outline and fill rather than colour, so colour-blind players can read them.
Scoring, levels and tips
- Your first matching shape is worth 10 points and each one after it 5 more, up to 100 per shape. Only a crash resets the combo, so letting a shape pass doesn't break it.
- Each morph gate adds 25 points.
- Over about two minutes the speed nearly doubles, rows arrive closer together, and the chance of a hazard in a lane grows from 32% to 60%.
- Every row has at least one safe lane, a matching shape or an empty gap, never more than two lanes from the previous row's.
- Your best score and number of flights are saved in your browser.
- Tip: since the safe lane moves at most two lanes per row, small early moves beat last-second swerves.
- Tip: after a gate, your old shape can come back as a hazard. Check the cockpit marker before the next row.
How it's built
The game is written from scratch in TypeScript on a 2D HTML canvas, with no 3D library or game framework. The depth comes from a single-point perspective projection: each object has a lane position and a depth, and its scale on screen is a focal length divided by its depth plus a near offset, so shapes grow as they approach a horizon about a third of the way down.
The simulation uses a seeded random number generator and steps at a fixed 120 updates per second. Collisions are checked only in a thin depth slice at the plane, so a lane change already underway doesn't clip a neighbouring shape. Sound is synthesized with the Web Audio API. You can steer by keyboard, on-screen buttons, dragging, or tilting your phone where supported.