Welding or unwelding a part to a humanoid can cause a speed glitch

Welding or unwelding a part (even if it is massless) to the limb of a humanoid that is not in its default position (default position being the position it would be in without animations) causes a speed glitch 100% of the time. The further the limb is from its default position, the greater the effect is. I expect that massless parts should not affect the character but it does. This works with anything that gets welded, including tools, meaning that in any game with a tool that has a handle you can get a speed glitch (some games have fixes for it, however).

This happens in both studio and live games and with both R6 and R15.
I am unsure how long this glitch has existed, but definitely for a long time. I remember this glitch was prevalent years ago in certain games.

Simple repro using a tool

  • Join a game with a massless tool (there is a provided place file below).
  • Play any animation that results in your right arm moving (the more, the better). I recommend the R6 dance2 emote. When your arm is offset, equip the tool.
  • Jump around with shiftlock or first person, your movement will be affected and you can go faster when holding certain directions, depending on the animation.

SpeedGlitchReproFile.rbxl (23.4 KB)

Here is a video showing what it looks like. I can do a 13 stud jump, something normally very difficult as you can see at the start, with ease when using the speed glitch:

Tip for seeing if you have a speed glitch

It can be hard to tell if you have a speed glitch sometimes, especially when it is small, however, there is an easy way to tell. If you jump backward with a speed glitch, you will start to move sideways randomly. Thus, if you perfectly align your camera to 90 degrees (the place file has a script that lets you do this using the , and . keys) then you can jump backward, and if you move sideways at all then you know you have a speed glitch. Here is a video showing this:

Workaround

There are ways to fix this with a script, but they are hacky. The best way I have found is that disabling then enabling the root joint creates the same effect as welding a part to the humanoid, thus if you force the joints to return to their default position for a frame before doing this you can remove any speed glitches. Here is a model where I do this upon tool equip, note that this model only works for tools.

8 Likes

Thanks for the report! We’ve filed a ticket to our internal database and we’ll follow up when we have an update for you.

4 Likes

Over 2 years after reporting, and many more since this glitch first existed, and this is still an issue. The worst part is that, unless a developer specifically implements a fix, this issue affects almost every game, as it is very likely something will be attached to the character at some point. Even your accessories loading in can cause it, though it is typically so minimal that you can barely notice it.

Since the RunningNoPhysics state was disabled a while ago, it is slightly easier to fix by disabling and enabling the Root/RootJoint every frame, but this could have unforeseen performance implications and is absurd to have to do.

Edit: I should also mention some time after posting the bug report I discovered that it can also be triggered by changing the C0 or C1 of a Weld/Motor6D. Changing the Transform doesn’t cause it, but there are cases where a developer may want to dynamically change the C0 or C1 of one, but this bug makes it impossible to do so.

5 Likes

This problem is pretty much ruining my game: have you found a solution possibly?

1 Like

Still experiencing this issue in 2024, except I’m using a RigidConstraint instead of a weld. This allows players to speed across the world, which is something that we really do not want in our game!

If you really need it fixed for your game, my best recommendation would be to disable then immediately enable (no delay necessary) the root (RootJoint in HumanoidRootPart on R6, Root in LowerTorso on R15) every frame on the client. This may have performance implications (I haven’t tested), but it is the simplest and most effective way of fixing this bug that I know of.

2 Likes