What kind of range are you talking about here? A value of ~50? 250? 1000?
For a character with a mass of 1, a force of 20 goes from a velocity of 4 to ~0 (1e-10) in 12 frames of 1/60f each. At a force of 240, it takes a single timestep to go from 4 to ~0.
Contact normals are not identical to the surface normal right? So the surface normal could be vertical but in the case of a stair the contact normal would be on an angle? I'm fairly certain the mental visual I have is correct, but it's hard to explain what exactly I'm picturing.
The contact normal will be a
surface normal, but it may not be the normal of any face of a polygon. It could be on an edge or vertex of one shape. In the following, the normal is created by a vertex and the rounded capsule shape.
Based on the fact my velocity-controlled capsule was able to climb the steps this shouldn't be an issue, right?
Probably, unless the velocity was sufficient to shove it deeply into the step/wall. At that point, depenetration could shove it upwards instead of sideways, whichever direction is shallowest.
(Notably, using PositionLastTimestepper would avoid most external-velocity-caused penetration. Or using PositionFirstTimestepper with velocity modifications attached to a post-pose integration stage.)