The jump that went further than the glide, and a level wide enough to prove it
Two weeks of fixing what the first full playthrough turned up.
In plain words
Two weeks of fixing what the first full playthrough turned up. The big one: in the air, holding a direction pushed your orc forward without any limit, so just jumping off a ledge carried you further than the glide ability did, which made the glide pointless. Steering in the air can now only speed you up to the pace you could already roll at. We also built a brand-new wide-open level, Slackwater, to feel the glide properly. Level 2 could be won by holding forward the whole way; now you have to actually use the torches. The pad and menus got a tidy-up (a way back to the title, buttons that match your controller), an early death in the Flattening chase no longer traps you in a loop, and the credits roll got a proper font and music.
Under the hood
- Air steering is capped (
024d857). Holding a direction appliedair_force(12 m/s²) with no ceiling. Measured on the greybox: a 7 m dune-lip jump carried ~45 m, further than a held glide (capped at 11 m/s byFlightAbility). The stick may now only add horizontal speed belowmax_roll_speed(14 m/s); it can still turn and slow you, and wind/updrafts/speed pads still exceed the cap. After: no glide ~16 m, glide ~44 m. Newtests/air_steering; three trace expectations were re-recorded because their replays genuinely change. - Slackwater, level 9 greybox (
8a4556e). Generated bytools/levels/gen_slackwater.py: 240 m flats, two tide channels, five hulls, four masts with updrafts, dunes, 28 motes, restoration win. Release builds list greybox levels behind a "Levels in progress (preview)" button. It is a greybox, not a finished level. - Level 2 can't be won by holding forward (
73671f3). The igniter torch triggers were 13 m wide (the whole corridor) while the torch stood at the side; they are now torch-sized.tests/lazy_playerfails on the old level. - Chase death loop (
0b04f8e). The wall was reset only on its own catches, so a fall during the chase left you respawning behind it. The chase now listens to the player'srespawnedsignal, places the wallrespawn_clearance= 30 m back and holds it until your first input. - Menus under a real test (
4d02ae5,dd60508).--ui-test=res://tests/<name>/run_tests.gdruns a suite inside the live game (autoloads alive), which is why menu bugs previously reached a human before CI. Also: Quit to menu (held, not tapped, viaHoldConfirm), a title screen that omits Quit on web, and the accept badge following the last-used input device. - Web load (
823b75d,37e5e6a). Cold-load cost was shader compilation on first draw (~48 s on one frame in the measurement). Shaders are now compiled one per frame behind the Loading label, and giving every material emission merges variants so Level 1 compiles four programs, not six. - Crash reports (
7f14f72). Home-directory account names are scrubbed to<user>; export warns when the DSN points somewhere a player cannot reach, andREQUIRE_PUBLIC_DSN=1makes that fatal. - Squash & stretch (
2b4bb64). It had been applied to a hidden sphere since characters began wearing skins;CharacterVisualnow composes the basis fromPlayerBall::get_squash_basis(). - Credits: generated monospace vector face, credits bed music, column layout, ~1 minute roll.
- CI/toolchain: Android SDK/Gradle baked into the image, dated image tags, container deadlines, scons cache caps, Linux and release jobs pinned to one machine.