How do Roblox Constraints and FilteringEnabled relate?

To be more specific, I have some client-side physics that will be applied to the local character. But the localscript creates new attachments and new constraints to use for it.
I was wondering, before I finished and started testing, if using the new Roblox constraints created locally will be applied to the character, considering that the character is network owned by the client?

Notes:
it is FilteringEnabled, PGS Enabled, and StreamingEnabled
Character is R15

It should, as far as I’m aware.

The client has full control over their own character, so if you have client-side constraints that move the character’s joints around, that should be fine.

1 Like

Unfortunately, when it came time to test, this was proven false. The RopeConstraint was the primary constraint that I was worried about.

The character freezes whenever you shoot the line (RopeConstraint) and stays like this when the RopeConstraint is attached. (Tested with FE off, and it worked correctly)

No, clientside constraints will not work.

I had a similar issue a few months ago and @Khanovich helped me work it out. If I get anything wrong, please correct me but this was pretty much the gist of it.

It’s a bad idea to create clientside constraints that connect to objects that also exist on the server. This is because of the way Roblox handles assemblies(or it might be mechanisms) and physics packets. The server has one representation of the assemblies that exist, and the client has a mutated version because of the locally created constraints. When the client tries to send the server physics updates, it fails because the server doesn’t recognize the mutated assembly, so it doesn’t know which physics object the client is trying to update. The result is physically simulated objects that appear correct on the owning client, but you get unexpected behavior on the server and other clients.

So even if the client has physics ownership, clientside constraints won’t update the server as you expect.

In order to do this, you need to create and hook up the constraints on the server, and you can modify them on the client. For a rope, disabling it on the server and reenabling it on the client may work, or you can set the length to very long on the server, and reset the length on the client once it has ownership.

6 Likes