How to write Player Controller

I want to write my one player controller, but I am not sure that basic CharacterController good enough for me. Can some one propose good tutorial of writing player controller based on rigidbody physics.
Base movement logic are easy , but when I start thinking about different types of collisions or moving up/down slope shapes etc. things become more complicated.

P.S. CharacterController not good enough , because I want to learn by myself how to create this kind of controller.

Rigidbody physics movement is quite easy to make. WASD adds force in the desired directions, OnJump, you could set the y velocity of the player, and to prevent the player from falling over, you could lock the x and z axis rotation in the constraints menu of the rigidbody component.

I don’t understand why moving up slopes would cause issues, since rigidbodies use physics. I also don’t know what you mean by ‘different types of collisions’. Could you elaborate please?

I don’t know of any tutorials, but I can send you some scripts if you need? @Chedrila