We have a football (soccer for 'Muricans) minigame, where the ball is controlled by the engine’s physics.
When a player touches the ball (this is done from server side only) or when they use a power to ‘kick’ it - the ball switches its network ownership manually to that player.
The problem: if 2 or more players keep constantly switching ownership for some time - the physics split which makes it look to at least 2 players like the ball is at different positions.
I have tried automatic ownership, which is even worse than manual. Tried limiting the amount of switches per time unit - and still we are able to reproduce this issue again and again.
Any of you can help with a solution to this?
I don’t think this falls under ‘engine bug’ as this is intentional behavior per documentation.
Nope, it makes it worse. Per documentation: If a client's character is near an unanchored part, then the ownership of that part transfers to the character's client.
and physics computations can be split up among individual clients, allowing the server to prioritize other tasks.
This is the behavior when set to auto (server).
That is the same as setting it to the server, the behavior as defined by Roblox is when a client physically is nearby an unanchored part it will automatically shift the ownership to the client, if the ownership was set to server (nil).
The issue is that even if I set it manually, multiple shifts per a time unit would still result the engine to split the physics and “desync”.