Image Update: Wall Run Overhaul - Omnidirectional Wall Run


A glimpse of combat in 《Drifting》

Itch.IO - Omnidirectional Wall Run
IndieDB - Omnidirectional Wall Run
UE4 Forum - Omnidirectional Wall Run

Wall Run Overhaul - Omnidirectional Wall Run
 
In the past week, I've been fixing and tuning various mechanics in my game, these tasks usually require only one or two condition checks or a small change to the coding architect, however, the same could not be said to the overhaul of my wall-running system.

Technically speaking, the reason for deciding to refactor the current wall-running system isn't due to any intrinsic flaw in the code base, in terms of functionality, the current mechanics works just as intended; the issue lies in the design of the mechanic - for some reason, when I was designing the wall-running system back then, I've deliberately made a clear distinction between horizontal and vertical movement, each has its separate rotation and movement update function and condition checks. 


Omnidirectional Wall Run

(although it still needs some time before the new wall run system is finished and fully tested, noticed the character is now moving toward where the camera is facing; the interpolation of character rotation and movement between different direction is smooth and almost unnoticeable)


This bidirectional design results in players incur a sudden movement change while titling camera upward or sideward - without any interpolation between the two states - giving players a somewhat unpleasant experience. I was urged constantly by another talented indie-dev (during a monthly playtest session) that I should make the wall-running movement respect the camera's facing instead of splitting the direction into either vertical or horizontal. Deep down I know what he said was on point, however, whenever I thought about refactoring the wall-running system, I thought about how much time it's going to take (how much it will delay my already tight schedule); how much painful design and testing phase I need to undergo before the new mechanics can function properly...after all these negative thoughts, I just feel lazy and gave up on the idea.

While I was recording gameplay for the game trailer, I felt these small flaws in the gameplay might not seem critical individually, however, if there are enough of them, it will quickly piled up and erode the overall experience. I could choose to let that tragedy happen, or go through this painful, time-consuming process once and for all and feel relieved that I've done all the best I can to give players a wonderful gameplay experience.

I hope you enjoy this week's update, feel free to leave a comment, and share your thoughts! 

Have a relaxing weekend! (●′∀‵)ノ♡  

Get 《Drifting : Weight of Feathers》

Download NowName your own price

Comments

Log in with itch.io to leave a comment.

Bro pls can u do a tutorial on how u achieved this wall running in ue or can u upload the wall running blueprint for download plsss, I've really tried finding a way to make wall running smooth buh what I could achieve was jankie wall running

(1 edit)

Hello, Levi090

After completing this project for 6 months and looking back, I observe there are some major flaws in this wall-run system:

1. Wall-run movement does not consider acceleration and gravity:

I simply put the movement code in a tick function and call SetActorPosition() every frame, this naive implementation causes the overall control to feel "stiff" and "bland" since the algorithm does not take the player's momentum before entering wall into consideration. 

2. The wall-run rotation does not respect delta time: 

Another major flaw is the interpolation of player's facing (while wall-running) does not respect the engine's delta time, this oversight will cause potentially wonky movements if the game runs below 60 fps. Ideally, I should take delta time into account when interpolating players' facing.     

It is sad that after my last overhaul, the wall-run system still has major flaws. 

Apology in advance - I don't think this wall-run system (at its current state) is a good reference material, however, I hope the mistakes I made can help you be more informative when designing your own wall-run system.

Thanks for the info, buh in my opinion, I think u did a better job than I did cause my wall running system is based off of inputs which makes it extremely stiff, it makes use of a blendspace and though it takes the acceleration and entry angle into consideration, it's still kinda difficult to freely move on the wall, I've played your game and so far so good, I prefer ur wallrun system to mine, so I don't mind the errors, maybe I could make a few modifications to it and see how that turns out, so pls, I humbly ask that u assist me with your wallrun blueprint 🤲🏼🤞🏼

Hello, 

Thank you for your interest in playing the game.

Please send me your e-mail (or your preferred way of receiving files).

The wall-run system is written with C++ as an actor component class contained in:

CPPComp_Player.h

CPPComp_Player.cpp

Search for the function: PC_UpdateWallRunOmniMotion() to see how the algorithm works per tick.

There are a lot of parameters that feed in the system via PC_SetWallRunOmniMotionInfo(), you'll need to calibrate your own set of magic numbers through trial and error - at least that is how I work with the system during development. 

I hope this can aid you in your project. 

thanks, my email is valentineezeani0@gmail.com

If I'm able to correct the errors u mentioned, I'll update you