Ragdoll only works on client, breaks when done on server (R6)

I’m trying to make a slap ragdoll system in my R6 game. On the client, the ragdoll works perfectly. the player falls over and it looks smooth.

But when I try to do it on the server (so everyone can see it), it gets all messed up. Limbs clip through each other, physics are weird, and sometimes it doesn’t even fully ragdoll.

I’ve tried:

  • Breaking Motor6Ds and replacing with BallSocketConstraints
  • Transferring network ownership
  • Doing it in a ModuleScript
  • Using RemoteEvents to tell clients to ragdoll
  • Everything I could find

Client version works, but only the slapped player sees it
Server version works kind of, but it looks broken.

Client version :

Server Version :

Try making a RemoteEvent based system to visualize smooth ragdoll on all clients if you need it, which I highly recommend against…

To prevent limbs from clipping into each other, simply add one part to each of them, slightly reducing the size (I usually define it like this: limb size / 1.7) and weld it. To make physics and ragdoll work properly, set up attachments correctly and work on BallSocketConstraint properties such as LimitsEnabled and TwistLimitsEnabled. In your case, the ragdoll will always lag a little and freeze for a split second at the beginning. Just accept it, it’s normal.

If you want to know more about this, then check out my answer to one of the topics on implementing ragdoll: