Tutorial to override functions in Character Movement component?

I would really love to get rid of this undesired functionality of the CMC:

(credit to this thread for the images, but the tutorial it links to is now dead)

The character deflects off walls on seemingly all axes if the sloped sides of the capsule collides with a corner. This really messes with character control and most modern third person games don’t have this feature (on jumping or just walking into an edge), and I’d like to be able to make a copy of the default CMC then modify the parts of the code that cause it to happen. Ideally, I would still be able to use the new CMC in blueprints like usual, just with the behavior modified! My problem is I don’t know where to start, and can’t find any good tutorials about something like this… (most people seem to just tell you what you should do as if you already know how and it’s the most obvious thing in the world, or they will focus only on very small, not useful bits like adding a sprint() function so it can be replicated)

Any help would be greatly appreciated!

Bump? I’m not asking for a complete handhold here, just a little help understanding.

A capsule is made off two spheres.
You either lock x,y movement while jumping or change physics code.

Yes, I intend to change the physics code. Problem is, I don’t know how to clone the CMC and set it up properly. I know the lines I need to change, and I know the method I need to override (physfalling()) it’s just doing it that i’m clueless on.

The function is virtual.
You just have to create a subclass of movement component, override the function, then override the class used by your character class to make it use your custom CMC.

AMyCharacter::AMyCharacter(const FObjectInitializer& ObjectInitializer) :
        Super(ObjectInitializer.SetDefaultSubobjectClass< ***UMyMovementComponent ***>(ACharacter::CharacterMovementComponentName))