Run
Acceleration, deceleration, and real air control, not an instant top speed.
Computed live in your browser via the Performance API. Nothing here is sent anywhere: check DevTools → Network yourself.
View this page's source →A 25-level, 5-act 2D precision platformer built in Godot 4: full moveset from the start (run, jump, wall-jump, dash, slide, ground pound, wall run, ledge grab, grapple), five boss chases on a visible countdown, and a shared cyberpunk UI across every screen. Offline-first: no accounts, no backend, no ads, no network runtime beyond an optional signed update check. Ships for Windows, macOS, Linux, and browser (playable on itch.io) from one codebase.
What it is
Project Ascent gives you the full moveset from the start. Nothing is locked behind progress. The levels get harder because they ask more of the same tools, not because they hand you a new one every ten minutes.
Offline-first: no accounts, no backend, no ads, and no network runtime. The only thing that ever touches the network is an optional update check over HTTPS with a required checksum.
Screenshots
Moveset
Acceleration, deceleration, and real air control, not an instant top speed.
Coyote time, jump buffering, and variable height baked in from the start.
Run into a wall with speed to catch it.
Air dash with landing refresh and momentum handling.
Double-tap jump in mid-air for brief hazard invulnerability on a cooldown.
Six more verbs, only three of which claim their own key: the rest derive from inputs the player already knows.
Campaign
Boss encounters
Letting the timer expire speeds the chase up. It never kills you outright.
| Level | Boss | Minions | Speed |
|---|---|---|---|
| L5 | First Chase | 4 | 170 px/s |
| L10 | Master Escape | 5 | 220 px/s |
| L15 | Shadow Chase | 5 | 200 px/s |
| L20 | Tempest | 6 | 250 px/s |
| L25 | Dawn (Final) | 6 | 300 px/s |
Testing
Two of these suites exist because an earlier gate proved the wrong thing. test_level_rhythm.gd checks that no jump demands more rise than the player can actually deliver, using an envelope measured from the real controller rather than assumed from a config value: the reachability suite once passed two levels despite both shipping impossible final jumps, because a bot could reach the ledge by wall-jumping off that ledge's own face. That proves a bot can get there, not that the jump is fair.
test_chaser_ledges.gd asserts a chaser stops at a cliff instead of walking into it. Three previous fixes for "enemies falling" addressed collision layers and a recovery teleport; none of them checked whether there was ground ahead, which was the actual cause.
The runner also fails a suite on any GDScript parse or compile error, not just a non-zero exit code, since a script that fails to compile otherwise reports zero failures while having asserted nothing at all.
Platforms
Windows ships with a standalone launcher that checks for updates over a signed HTTPS request. macOS and Linux are real, boot-tested export targets, unzip and run. The web build is playable directly on itch.io. Controller support covers Xbox and PlayStation pads, with on-screen prompts that match whichever is connected. Touch controls for mobile are planned next.