Player networkownership physics inconsistency

Working on my buoyancy system, i have encountered this network ownership problem (or engine bug) where the physics break when switching to Player ownership.

Details:
The player root has the following forces applied to it:

  • Buoyancy and Drag of class VectorForce
  • AngularDrag of class Torque

While floating the Character humanoid.PlatformStand property is Enabled

Issue:

in the video submitted below, i toggle the network ownership debug visibility. The player character floats as intended when the server is the network owner (white color). When i equip a tool, the network ownership switches to the player (color green) and the physics become jittery.
The players character network ownership is set to Server while floating only. Keeping the players character networkownership to server all the time is not a solution for me !

I might be wrong but I believe this happens because you are running multiple physic simulations at the same time and the way that the physics engine handles this is by splitting the load between the server and the client but by setting the networkownership to the client it means the client does all the physical calculations, therefore causing glitching.

You are right. The physics ownership is passed onto the player, which is one of the reasons why one might encounter small “freezes” during ownership change, the question is, why do the physics break? The physics should run faster and smoother on the client that is network owner. And if the ownership switch may cause some temporary physics glitches, why does it not go back to normal soon after?