Advice with making a custom player control system without using vanilla controls/physics?

Hello.


I'm starting a new project which involves using a custom character with custom controls, and my goal is to not use physics to control it, and not use Humanoid at all. I want to achieve something similar to a kinematic body instead of a physics body for the controls, such as in most games.

I’ve tried looking for a solution to this, and I found two ways. One uses ray-casting in many angles, and I’m not really wanting to use it. The second uses GetTouchingParts(), but I might have to use some math to move the character away from solid objects that are intersecting with it, and I am still not good in geometry yet (I might still consider this, but not for now). What I’m trying to aim for is a cylindrical/capsule collision detection.

I would consider using a hybrid system of physics and CFrame to move the character (e.g. simulate a cylinder (with spheres for capsule) hitting an obstacle in physics, CFrame custom character to cylinder with only position) but I am not sure if physics can be abused in client (network ownership i guess?)

Why do I not want to use physics for character control?


There are some things from the default system that I don't like to be present in my project. I really want my character to be rigid when walking forward in some places.

With the vanilla player controls, when I move forward to a low ceiling that is sloping down, my character’s legs sink into the ground as my head gets pushed down too by the ceiling. Then, when I walk against a forward leaning wall, my character slants too. Lastly, I don’t want my character to get flung by something. First two problems seen in this video:

I have no experience with making custom character controls so any help and advice would be greatly appreciated.