In this update, I expanded the player's movement mechanics to include more advanced traversal options such as dashing, wall sliding, and wall jumping. I’ll walk through how each of these features evolved, why sprinting was replaced with dashing, and the reasoning behind specific decisions. These additions are meant to make the game more responsive and give players more freedom of movement, particularly in vertical platforming sections.
After implementing basic movement and combat, we felt that the player’s movement options were still quite limited, especially in terms of responsiveness and flow. To make the movement system feel more fun, we wanted to take inspiration from fast-paced platformers that have an emphasis mobility (think Super Meat Boy / Hollow Knight). Advanced movement mechanics like wall jumps and dashing add a skill ceiling to the game and make the level design feel more dynamic.
I initially started by implementing a sprinting mechanic. The idea was simple: if the player held down a sprint key, their movement speed would increase. While this did technically work, it didn’t feel good. Sprinting broke the game’s pacing - especially when transitioning into jumps or attacks. After testing it out for a while, I realized that sprinting didn’t give players any meaningful advantage beyond faster ground speed, and worse, it cluttered the control scheme.
So I scrapped sprinting entirely and replaced it with a dash - a quick, directional burst that works mid-run and mid-jump and adds an element of decision-making to movement. The dash temporarily disables gravity, propels the player forward, and then resumes normal physics. It’s more responsive, feels better, and fits the game’s tempo much better.
While tweaking the jump behavior, Ewan sent me a YouTube video that broke down the importance of responsive movement in platformers. One of the main takeaways I took from the video was variable jump height - allowing the player to jump higher the longer they hold the jump key, and immediately cut the jump short if they release early. This small change, which I implemented by doubling the gravity scale as soon as the jump button is released, improved how controlled and reactive jumping felt.
With the grounded movement improved, I moved on to vertical interactions. I implemented wall detection using overlap areas positioned on either side of the player. When the player is airborne and touching a wall, they enter a wall sliding state. In this mode, their fall speed is slowed down and their gravity is scaled up slightly, simulating friction and control while hugging a wall.
To build on that, I added wall jumping. When the player presses jump while sliding on a wall, they leap away from it in the opposite direction. I handled this using a coroutine so I could precisely control the direction, timing, and gravity during the action. The gravity is temporarily disabled during the wall jump burst, then restored after a short delay to keep it feeling snappy and responsive.
Combined, these features allow the player to chain dashes, wall slides, and jumps to scale terrain, escape danger, or reach hidden areas. They also make the core movement loop much more engaging to experiment with.
Replacing sprinting with dashing was a big improvement. Sprinting didn’t add anything that regular movement couldn’t already do - but dashing opened up a lot of movement possibilities and made the controls feel more modern.
The feedback I got from Ewan (especially the video he sent) was a good reminder that small changes to physics can dramatically improve how a mechanic feels. Variable jump height (something I never would’ve considered at first) gave players more control over their momentum and made movement feel much less floaty.
Wall-based mechanics like sliding and jumping required more careful tuning than I expected. I had to work with state conflicts, transition windows, and corner cases (like triggering a wall jump too quickly). But the end result felt worth the effort - the player now has movement options that reward timing.