Inconsistent speed when adding velocity per tick (Ex-Unity Dev)

Hey everyone.

I have been baffled at how hard it is to achieve consistent speeds in Unreal Engine. Coming from Unity, it was never recommended to process anything physics related in the Update() function (which is Tick() in Unreal). Instead, all physics was to be processed in FixedUpdate() which ticked a consistent amount of frames. You’d still multiply by Time.fixedDeltaTime, but the results were consistent because the amount of updates you’d get was pretty reliable.

But in Unreal… the suggestion for adding velocity over time seems to be in Tick()?? And no, multiplying by delta time doesn’t fix it.

I’ve tried everything to get consistent speeds in Unreal using Tick(), and I can’t get anything to be consistent. I’m making a 3D platformer, so I need certain constant-movement abilities to be consistent at all framerates and variable framerates. I can use the jump system from CMC for jumping, but I need other abilities to add constant motion over a period of time.

Let me share an answer I saw on reddit (not my post)


Source: https://www.reddit.com/r/unrealengine/comments/13qwxw5/inconsistent_physics_with_add_force/

The closest I’ve gotten is adding actor world offset per tick. Results are more in the same “ballpark” at low and high framerates. At lowframerates, the final position is very consistent. At high or inconsistent framerates, theres a wider margin of variation.

But again, that’s outside the physics system…

What do you all do to achieve consistent speeds when adding motion over time?