Inconsistent Physics With Player Spawn Order?

Can someone explain this strange phenomenon? The first example is obviously more desirable. This weird interaction is causing a massive roadblock in my game’s development. If I can pin down what is causing this, or how to consistently cause the 1st example, it would certainly help me and I’m sure others down the road.

Edit: I have figured out that when a player drags a player that spawns in after them, it produces result 1. When a player tries to drag a player that spawns in before them, it produces result 2. Very strange.

Hey, @1234caden I understand that you tested this option and it did not help in any way yes? I am convinced that it should help

workspace.Part:SetNetworkOwner() --SERVER will ALWAYS simulate physics of a part
workspace.Part:SetNetworkOwner(game.Players.Name) --YOUR computer will ALWAYS simulate physics of a part

Yep. In the video, you can see that the person being dragged is the network owner. I used

:SetNetworkOwner()

to accomplish this. However, although in both instances the network owner is the same, the physics behaves noticeably more choppy in the second example. I was hoping someone with a deeper understanding of the roblox engine could possibly explain why this happens.

Just going off a hunch but I feel like it would work better if the network owner was the other player instead (the one thats dragging the other). Right now your setup has it where if you’re dragging someone, they’re the one simulating your character’s physics even though you’re the one who’s actively in control (not ragdolled), which is probably why it’s janky.

If it were the other way around then you as the dragger would be simulating the physics of the one being dragged, who can’t move and is ragdolled anyways, so I think that should work better.

I did try that. Unfortunately, it just made the person who was being dragged see jittery physics lag.
In the video, the first example had the network owner set to the person being dragged and there were no problems. Since posting this article I have figured out that when a player drags a player that spawns in after them, it produces result 1. When a player drags a player that spawns in before them, it produces result 2. Seems like it might have something to do with spawn order.

Yeah thats odd, have you tried testing this in a live game with a friend as opposed to in studio? It could be the studio enviroment works differently since it’s all on your machine.

Other than that I got no ideas, best of luck!

I did actually try that. It produced the same results :frowning:

I didn’t know that character models belonging to players could relinquish network ownership.

In any case you can use Humanoid.PlatformStand to resolve this.

Thanks for your idea, although getting the player to ragdoll isn’t the problem here.

It does more than that. It actually has an impact on physics control. I use it for my rope swinging mechanic on shared unanchored swinging parts.

I went ahead and tried it on server, client and both. Didn’t solve the issue unfortunately.

Try it with a 3 player test and let me know the result.

On a 3 player test, the results stay the same.
following chronological spawn order(1-3):

Player 1 can drag players 2 and 3 without problem
Player 2 can drag player 1 with problem and player 3 without problem
Player 3 cannot drag any players without problem

Problem being:

Keep in mind that all 3 players are using the same exact scripts. The only difference between the 3 players (that i can think of) is their spawn order.