Players welded to each other causes lag?

A long time ago I made this ‘piggyback’ tool. I wanted to use it for a game, but was unable to because of some weird bug. Basically, the bug is this: If a player is carrying someone who spawned after him/her, he or she (the player who is carrying someone) will get laggy movement. However, if a player is carrying someone who spawned before him/her, he or she will not have any laggy movement.

The only reason I can think of why this happens, is that I weld the two players to each other and set the PlatformStand of the player on the back to true. But still, I think it’s weird how the order of spawning characters has something to do with this and therefore I think this is a bug within Roblox.I could be totally wrong though. Is there someone who knows more about this?

By the way, if you want to test it for yourself:

[spoiler]http://www.roblox.com/Broken-item?id=162936614
Controls:

  • e when not carrying someone: ‘pose’ (which enables a player to jump on your back)
  • e when carrying someone or being carried: cancel the piggyback ride
  • q: jump on someone’s back to start the piggyback ride

The code is probably a bit messy, as I made this a long time ago. At that time I was (obviously) less experienced.[/spoiler]

It makes sense, since the character physics are handled by the client what you have is a conflict of interests, however the thing with the computer is that to avoid the conflict, they’ll take the newest first.

Both clients are trying to control the physics and the server distributes the job to the newest character causing the other to witness laggy movement.

So is there a way I could fix this?

Not unless you’re willing to create a psuedo character that will interpolate the track of the other one.

Then I guess there’s no way for me. Thanks for clarifying the problem.

DAV TO DA RESCUUUU:
Put this code in a local script and insert an object value. Make the value of that object value the HRP of the target. Adjust the CFrame if you so desire. Copy the script into the [insert place where LocalScripts work], and then delete it when you don’t want to piggyback anymore. This will appear smooth on the person piggybacking, and fairly smooth on the person who is carrying.

local player = game.Players.LocalPlayer
repeat wait() until player.Character
local myHRP = player.Character:WaitForChild("HumanoidRootPart")
local otHRP = script.ObjectValue.Value --change the name of the O.V. however you wanna
game:GetService("RunService").RenderStepped:connect(function()
 myHRP.CFrame = otHRP.CFrame:toWorldSpace(CFrame.new(0, 1, 1)) --because z is backwards in roblox I think
end)
3 Likes