Local parts causing physics weirdness/desync

I am working on a game where players will be walking around inside of a large battleship. For the most part this works fine, however sometimes something glitches causing the client and server physics to seemingly desync. This recording is taken from the SERVER perspective. The part has ownership on the client (red), after 6 seconds I set the part’s ownership to the server. You can see that when I do that, the part stops gliding. The battleship is not moving, yet the part is gliding as if it is.

It’s as if the client’s floor is holding some kind of invisible velocity property causing this to occur. The velocities of the ship on the client are all 0 and the ship isn’t moving on the server. The only form of replication step I have managed is if the battleship gets created in a location on top of the client’s local parts (bullet shells, etc). That seems to kick off the physics desync for some reason.

This next clip (taken from the CLIENT perspective) is the result of when the battleship spawns on top of bullet casings (local parts) from the previous round. You can see when I anchor the battleship on the client, the jittering stops, and resumes when I unanchor it. Again, 0 linear and angular velocity for all parts of the battleship both client and server.

So what can be done to fix this? Why do the collisions act as if the battleship floor is moving/shaking when according to both the client and server it isn’t? Is this something I can even fix or is this a roblox bug?

Some more notes:

  • Printing out the AssemblyLinearVelocity and AssemblyAngularVelocity for all parts on both the client and server is 0,0,0. The battleship is definitely not moving.
  • The game does NOT use StreamingEnabled
  • The ship is controlled with BodyVelocity, BodyGyro, and BodyAngularVelocity on the SERVER
  • Anchoring the battleship on the client stops the jitter. Unanchoring it resumes it
  • Moving the battleship on the server does no ‘resync’ the physics. Parts still drift and jitter around.
1 Like

I don’t have any great ideas; just a couple of thoughts in case you haven’t tried them yet.

  • If workspace.InterpolationThrottling is enabled, see if the strange behavior still happens with it disabled.
  • Is the floor part of the ship really huge? Does it make any difference if you use multiple smaller parts?

With interpolation throttling enabled, the issue persists. The issue also persists throughout the entire assembly. Here is another clip (client perspective) of it occurring one the deck of the ship, which is an entirely different mesh but still part of the same model/assembly.

The ship is not moving on either the client or the server, but the local part continues to drift like it’s on a conveyor belt.
Here is another clip of the same location on the same ship with a server-owned part. The part doesn’t jitter and remains still like expected.

I was thinking that disabling interpolation throttling might help if it was already enabled (I’ve observed some surprising lack of client->server replication with it enabled, even when the network traffic wasn’t high enough for anything to be throttled). Sounds like it was disabled already though.

The only other thing I could come up with is rounding error. I assume the deck is perfectly horizontal, but maybe if the mesh is large enough the physics sim isn’t accurate enough to see it that way? It’s a long shot, but maybe try temporarily reducing everything to 10% of the current size.

Also, I’m assuming you have CollisionFidelity on the mesh part set to PreciseConvexDecomposition, but if not that’s something else you could try.

Very weird. I’ve seen this happen before, but I’ve never found a solution. One thing you can try is increasing the Density of the parts which seems to do something.

1 Like

I am getting this issue again, it is very strange. Cycling the maps and loading in the battleships has a chance for their physics to completely desync locally, causing players who interact with them to be teleported into nan space. Just touching one of the ships will fling you into nan space unless I anchor them on the server. I have zero idea what causes this. Here is a clip of it happening to one of our players. Changing height/jumping just instantly breaks the sync of the physics and shoots the camera off into space.

Has anyone else experienced this physics issues at all? I wish I had easy to reproduce steps but it seems incredibly random.

Nope. Usually, it’s the game’s fault whenever my character disappears.

But I have experienced seemingly random times where physics appears to locally go in slow motion. Have you experienced this?

Yes, I believe that is caused by physics performance throttling on locally-owned objects.

Weird. It goes away when my character jumps. Though, I have no idea what causes it and have never experienced it outside of Roblox Studio.