I’m trying to work out how the low level replication between server and client works.
My understanding of Roblox currently is that a server or client has network ownership of an instance. When that instance updates, the network owner sends a packet to connected server / clients, and they update their data model to reflect the changes. Obviously the humanoid movement interpolates, but I’ve noticed BaseParts can jitter when moving - are their CFrames also interpolated by the clients / server receiving updates on them?
I believe parts update on the game’s Heartbeat (an event connectable from RunService), but I’m not entirely sure. There is no interpolation involved, client-controlled objects are simply smoother as they can afford to render more frames.
I believe the jitter occurs due to the small amount of time it takes to send that information from the client to the server. The reason anything client-controlled looks smoother on that client is because there is no delay.