Parcour Controller

Introduction

This prototype was an experiment in making first-person movement as fluid and satisfying as possible. Since this was never supposed to be a finished game, I could use fun over balance as my leading design philosophy.

But what does fun movement look like? I drew inspiration from games like Titanfall and Shady Knight and combined carrying forward momentum with the ability to adjust your movement direction easily, even while in mid-air.

On top of the default controllers' basic directional movement and jumping, I implemented sprinting, crouching, sliding, wall-running, wall-jumping, and vaulting.

Crouching & Sliding

Crouching and sliding were relatively simple to create. While crouching, the player's collision capsule shrinks down, they are slowed, and their camera is lowered.

If the crouch button is pressed while sprinting, a slide is performed instead. It boosts in the current movement direction based on player velocity and the normal of the ground they are standing on.
This way, you can easily slide downhill but get stopped quickly when sliding uphill.

Through this system, you can also preserve your momentum by chaining together sliding and jumping, but maneuverability is sacrificed as you are briefly locked into the direction you are sliding.

You can also gain a big burst of speed after falling by translating vertical velocity into horizontal velocity with a slide.

Wall-running & Wall-jumping

Next, I would like to talk about wall running and wall jumping.

There is a collision capsule around the player. While it overlaps a wall, additional line traces are performed to check which wall is closest to the player and whether it is a valid wall to run on.

While the player is wall-running, their gravitational force is lowered, and their camera is shifted to the left or right, depending on where the closest wall is.

They can also jump again, just as they could on the ground. This has a short per-wall cooldown, but if you keep jumping from wall to wall, you can also use wall jumps to gain height.

Vaulting

Lastly, I added vaulting, based on the existing wall-running logic, as you need a wall close by to vault onto.

One of the additional line traces performed during wall-running goes straightforward. If there is a wall in front of the player, another line trace is performed from the top down to determine the ledge point.

If the ledge point is within a certain threshold of the player, their velocity gets canceled out, their inputs get disabled, and they are put into a vaulting montage that boosts the player upwards onto the ledge.

Conclusion

I had a really good time working on this project. With every improvement, I could feel the movement becoming more and more fluid. Obviously, there is still room for improvement, but I am very happy with where this project is at and what I learned along the way.

In the future, I will make more games that focus on movement, as this is one of the aspects I enjoy most about many games. It is also a skill-expressive action that the player performs at all times and, as such, of great importance.