Unsynced data on Macs due to Distributed Physics

[strike]I’m [strike]pretty[/strike] sure this is a Mac only related bug.

Reproduction Place: http://www.roblox.com/games/245348395/Weld-Issues-Place-For-Mac-Users

Repro Video:[/strike]

[strike]
Steps to Reproduce:

  1. Create a Weld from a Part to a Character by having the player touch the Part.
  2. Swing the Part into a second Character to break the weld
  3. Notice that sometimes weird things happen such as the Part showing up in 2 different spots for each Client.

It seems when the Part is switching physics owners it causes the Part’s Position to become un-synced, and takes a while for it to resync.

This is a Huge issue for my Hockey games since the part being seen in the video is like the Puck in my Hockey game. So when I knock the puck off an opponents stick I have to wait like a full second before the Puck teleports back to the Spot it is at on the Server, while others know Exactly where the puck is. [/strike]

Just found out an easier way to reproduce the Problem, also it has nothing to do with Welds, the real issue is distributed physics on Mac machines.

I updated the Repro Place: www.roblox.com/games/245348395/Weld-Issues-Place-For-Mac-Users

Repro Video

Repro Steps:

  1. Run a Server with 2 users (On a Mac)
  2. Place one player on the Ice away from the Part on the Ice
  3. Place the other Player next to the Part on the Ice
  4. Equip the Tool on both Players.
  5. Wack the Part to the other Player so that the physics owner is given to the other Player.
  6. Strange Things Happen.

using these steps it happens 99% of the time.

Edit: if it helps I’m using Direct for PhysicsReceive under the Network settings.

I would hate to bump this, but it is a huge issue for Mac users especially for my game as I break and reapply welds constantly.

Also this bug occurs with FE and non FE games.

I uncopylocked the game, so if if you want to try and reproduce it by yourself you can

My soccer game also suffers from some new physics bug. Where when the ball is de-welded from the player, it goes back to where it originally was, then ROBLOX lerps it to where it should be now. (But by the time that’s happened, it’s already gone in the goal etc).

Hopefully these lerps can be made more instantaneous.

Thanks for reporting this with a good repro. We’ll implement a fix in the following weeks.

Just found out an easier way to reproduce the Problem, also it has nothing to do with Welds, the real issue is distributed physics on Mac machines.

I updated the Repro Place: www.roblox.com/games/245348395/Weld-Issues-Place-For-Mac-Users

Repro Video

Repro Steps:

  1. Run a Server with 2 users (On a Mac)
  2. Place one player on the Ice away from the Part on the Ice
  3. Place the other Player next to the Part on the Ice
  4. Equip the Tool on both Players.
  5. Wack the Part to the other Player so that the physics owner is given to the other Player.
  6. Strange Things Happen.

using these steps it happens 99% of the time.

Edit: if it helps I’m using Direct for PhysicsReceive under the Network settings.

Hate to Bump again, but this bug is still persistent and it has been 4 weeks.

You can pretty much ignore the OP and look directly at my Post Above.

Bump, I moved the 100% Repro to the OP. It’s been over a month and it is still broken :confused:

Just thought maybe you haven’t seen the new Repro steps yet, so I bumped.

Sorry for lack of update. We did implement a fix for this issue, but unfortunately another bug was discovered right before release. I’ll work on a better fix and post here when I have more updates.

Any Status Update? I noticed this bug is like 2 to 3 times more common when the Physics OwnerShip API is Enabled, and I think it is effecting not just Mac users (although I can not confirm this yet, however, a lot of players are complaining about teleporting pucks).

Using the new Physics OwnerShip API, I was able to update the Repro Place a bit, so now all you need to do is have one player stand on one side of the Part and have the Other player stand on the other side. It should just continue to Fling the Part back and forth using Locally created BodyPositions, reproducing the Bug whenever the ownership is transferred, and no force is being applied to the part after it switches owners, other than it’s momentum.

You need to have a Player named Player1 and Player2 for the repro place to operate correctly, or you can just disable the script in the Part named “Slide” to get the old repro place.

We turned on a flag just an hour ago at 11:58 that should mitigate some of the issue you were seeing. Can you try again.

It’s a miracle :woohoo:! I was not getting the bug at all at the Repro Place. Gonna see if I notice it at all at my hockey game.

Edit: was working great at my hockey place also.

Well most of the minor cases are fixed (the short delay and puck is teleported back to original spot cases), however, there are still some severe cases which have been popping up, where the puck is in one spot for pretty much everyone on the server except for 1 person, and for that 1 person is where the puck really is to the Server. Although, this severe case might just be an error with how I have my game setup, yet I have never seen this severe case before and I haven’t touched the code for my game in over a month.

Edit: I’m pretty sure this is an error with my Game, so disregard this post.