How to make dynamic spline based movement?

I recently started using the spline tool in Unreal Engine but I notice that you are really only using a duration value to augment how quickly your character/object traverses the curve. Is there a way to make the character move along the curve and adjust the velocity of the character? Ideally I would like to make a mechanic similar to grinding in most skating games. But I want the characters speed on the rail to be influenced mostly by natural physics. In other words, if they are on a downward slope they should move faster than if they are on a flat one. I’ve considered changing the duration value on the fly but I am having trouble coming up with a good solution. Not much code yet as this is mostly a thought experiment right now. Secondly, how would I start the character moving on a spline at some point that isn’t the start or end? How could I detect what is essentially the nearest point on the curve to my character? Then How could I starts moving my character along the spline but starting at that point? Sorry for the long question and thanks in advance!