Skip to content
← Back to Work
Visual Polish Phase v0.14.1 Godot 4 GDScript Cross-Platform

A precision platformer where the only thing between you and the top is your own timing.

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.

Levels
25
Acts
5
Boss chases
5
Test suites
18

What it is

One idea: the only thing between you and the top is your own timing.

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

Live captures from the shipping web build.

Project Ascent — Level 1, Act I Introduction. Player silhouette standing on a starting platform beneath a large rising sun against a night sky, HUD showing run timer top-right.
Level 1 · Act I — Learn
Project Ascent — player mid-air between two floating platforms in Level 1, run timer reading 0:00.81, second attempt underway.
Mid-air, Level 1
Project Ascent — the expanded controls panel, listing move, jump, dash, slide, grapple, ability, spin, ground pound, air dash, wall run, and ledge grab with their keyboard and controller bindings.
Full controls reference
Project Ascent — pause menu with a glowing neon panel, listing Resume, Restart Level, Settings, Progress, Levels, and Reset Progress. No Quit to Desktop option on the web build.
Pause menu (web build)

Moveset

Full kit from level one.

Run

Acceleration, deceleration, and real air control, not an instant top speed.

Jump

Coyote time, jump buffering, and variable height baked in from the start.

Wall slide + wall jump

Run into a wall with speed to catch it.

Dash

Air dash with landing refresh and momentum handling.

Spin

Double-tap jump in mid-air for brief hazard invulnerability on a cooldown.

Slide, ground pound, wall run, ledge grab, grapple

Six more verbs, only three of which claim their own key: the rest derive from inputs the player already knows.

Campaign

Five acts, twenty-five handcrafted levels.

Act I — Learn L1–L5 Introduction to movement. Jump, dash, precision. Ends with the first boss chase.
Act II — Master L6–L10 Longer levels, tighter precision, movement combinations. Second boss encounter.
Act III — Survive L11–L15 Environmental pressure, demanding routes. Shadow Chase boss.
Act IV — Endure L16–L20 High difficulty, complex combinations. Tempest 2-phase boss.
Act V — Ascend L21–L25 Maximum challenge, endurance, final escalation. Dawn 3-phase final boss.

Boss encounters

Every chase runs on a visible countdown.

Letting the timer expire speeds the chase up. It never kills you outright.

LevelBossMinionsSpeed
L5First Chase4170 px/s
L10Master Escape5220 px/s
L15Shadow Chase5200 px/s
L20Tempest6250 px/s
L25Dawn (Final)6300 px/s

Testing

18 automated suites, including a full 25-level reachability sweep.

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, macOS, Linux, and browser from one codebase.

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.