Switch to server and run this in command line:
local speed = false while wait(.15) do game.Workspace[“YOURNAME”].Humanoid.WalkSpeed = speed and 25 or 16 speed = not speed end
Walk around, notice the jerk, first person is more dramatic.
I promise this is not my custom camera system, but the default one. I disabled both the server/client entry points in my single entry point architecture in my game.
Turn off server authority, do the same process and notice how there’s no jerk.
When server authority is on:
I believe Roblox’s ground controller is sinking the player, because what I found is that AssemblyLinearVelocity.Y dips to roughly -1 to -3.3 studs/sec for 3-4 frames before recovering.
Hi there, this is expected. If you run in server authority, the code you run needs to run on both client and server. When you change the walk speed on the server, the server will authoritatively start walking faster instantly, then the client will receive the new walk speed (and new character position) a few milliseconds later. The client will detect that it’s character has not walked as far as the server one has (because the client was walking with a lower walk speed).
The client will rollback and resimulate with the new faster walk speed, and the new altered position, and that is causing the jerky behavior you see.
In non-server authoritative roblox, the client controls the character movement completely, so there is no need to synchronize changes to walk speed between client and server, becuase only the client uses it!
The server and client operate on two distinct timelines, and when you change one without properly synchronizing that change with the other timeline, you see this kind of sudden ‘network artifact’ behavior.
InputActions are currently the only mechanism to synchronize the timeline between client and server.
So it would be like
Client Fires input action → Client and server both read that input action and alter walk speed → client and server now change their walk speeds on the exact same frame.