Major server-client desync with AlignPosition and AlignOrientation objects

I am currently having major desync issues with the AlignPosition and AlignOrientation body movers.

Here’s a preview of the issue. On the left is the client and on the right is the server:

https://gyazo.com/a617b8e6c68ab4a95c0a66e338f891ca

The pink part is anchored and non-cancollide and is being tween-cframed server-side. The brown platform is unanchored and can-collide and being aligned to the pink part with AlignPosition and AlignOrientation objects.

As you can see, the gif shows that the behavior of the body movers is accurate client-side, but completely inactive server-side.

Also, the body movers only seem to be active server-side for a few seconds when the platform that contains those body movers is dragged with studio tools.

Note that the player character’s position is relative to the floor board because of the Characters on Moving Platforms update.

Configuration of the AlignPosition object:

Configuration of the AlignOrientation object:

BUG REPRO PLACE FILE (Use the Local Server testing feature to see the desync of the platform on both hosts)

AlignPositionDesyncBug.rbxl (37.6 KB)

Any feedback would be appreciated.

Is your brown platform being moved locally

It’s not. Nothing is affecting the movement of the platform except the two body movers that are created server-side.

You could try using SetNetworkOwner and set it to nil for the platform, which will make the server own the part’s physics (currently it looks like the client owns the part’s physics automatically).

Example: Platform.PrimaryPart:SetNetworkOwner(nil)

3 Likes

The network owner of the platform is already the server.

EDIT: It seems like GetNetworkOwner returns nil, but calling SetNetworkOwner(nil) completely reverses the desync issue. Now the platform is moving properly server-side, but stays completely frozen client-side.

It looks like the body-movers can only be active on one host at a time: either the server or the client, but never both at the same time. Here’s a gif of me switching the network ownership of the board from server to client and vice-versa multiple times.

https://i.gyazo.com/4c96e9534e93d51b2c106b37110c05fd.mp4

The board is correctly positioned on the server when the network owner is the server, but is frozen in place on the client. The situation is reversed when I set the network ownership to the player.

Something similar is happening to me. I have a part that has AlignPosition + AlignOrientation, and it seems to forget to stay still every second-ish, then goes right back (usually).

Setting the network owner to nil like @harule said fixes it.