How does does the base level of server - client work?

Hello there,

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?

3 Likes

I think this documentation under “Exceptions” answers your question:

1 Like

Right, but I’m wondering if the replication is interpolated, or just hard-set every tick?

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.

2 Likes

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.

1 Like

You will see jitter if you’re setting cframe because it does not interpolate. Interpolation occurs when the physics engine updates the part.

So if you set the velocity (or use body movers), then proper interpolation will occur

2 Likes

Just what I was looking for - thank you!