Quote: "
But this isn't consistent between devices. When frame rates slow, the distance an object will move per frame will increase"
Right and it should, if player B frames take twice as long as player A frames, player B must move twice the distance of Player A each frame to keep up and bring them to the same final position over a given period of time.
Speed = 5 units per second
Player A 60 fps
Player B 30 fps
Elapsed time 2 seconds
Player A (2 * 5) / 60 = 0.066 units per frame = 10 units over 2 seconds
Player B (2 * 5) / 30 = 0.133 units per frame = 10 units over 2 seconds
Given the same start point, both players will reach the same end point over the same period of time even if they move different distances per step.
This can create visual jumping for player B if thier framerate is greatly lower which is unfortunate but is still a much better than the alternative which is to slow down player A to half his normal speed.
The visual jump for player B can be softened by tweening/interpolation putting them closer to where they should be and doing similar with player A predicted position instead of snapping them directly this is good for transitioning over a temporary lag spike, but can create the problem where something happens to a player that they dont feel should have based on where he thinks he is vs where other player /server/host etc thinks he is if it is a more constant low frame rate
http://games.joshkirklin.com/sulium
A single player RPG featuring a branching, player driven storyline of meaningful choices and multiple endings alongside challenging active combat and intelligent AI.