Humanoid.MoveDirection is not synced between client and server in :BindToSimulation (server authority)

Reading from Humanoid.MoveDirection on the client and server on the same frame in a :BindToSimulation loop doesn’t return the same value. They are very close but are off by ~0.005, which is enough to cause mispredictions in certain scenarios where physics objects depend on it. If you continue walking in the same direction they never match up and stay only to the accuray of 3 decimal places.

Expected behavior

Just like other physics properties, Humanoid.MoveDirection should be synced on the client and server and not be off by a tiny fraction

2 Likes

Great find. Can you share repro steps and how you’re getting these values? Feel free to DM me if you’re willing to share a place file. Sorry you’re having issues!

Heres the place file test.rbxl (78.2 KB)

If you start walking in a diagonal direction, it will print the move direction every second, and they are not the same on the client and server even on the same frame.

After more testing it seems to only happen if the priority of the :BindToSimulation is less than 2000.