How to Make Ragdoll Physics Look Smooth for All Clients?

Hi everyone,

I’m working on a Roblox game where one player hits another, and the hit triggers a ragdoll effect — kind of like in Slap Battles. The idea is that when a player gets hit, their character goes limp and falls to the ground realistically.

Right now, I’ve created a ragdoll system that works by replacing all Motor6D joints with BallSocketConstraints. The ragdolling is done locally on the client, and it looks great — smooth and realistic — but only on the local player’s client.

The problem is: other players see the ragdolled character glitching or teleporting slightly, like the limbs are jittering or not syncing correctly. I assume this is because the physics are simulated locally and not being replicated properly.

I’d like to know:

  • How can I make the ragdoll look smooth for everyone, not just the client who triggered it?
  • Is there a way to replicate or synchronize the client’s ragdoll physics to other players?
  • Or should I be handling the ragdoll physics entirely on the server?

I want to keep the responsiveness and smoothness of client-side ragdoll, but I also need all other players to see the same thing accurately.

Any advice or best practices from people who’ve done this kind of physics syncing would be greatly appreciated!

Thanks in advance!

2 Likes

It’s quite hard to synchronise the ragdolls, but you can make it smooth by creating a copy of the character on the client instead of replacing the joints, since the local player already has network ownership, it’s going to look funky when they’re controlling a much more randomly moving ragdoll. Maybe you could attach a new ragdoll to their actual character which gets flung?
I’ve been working a lot with ragdolls recently, trying to solve a very similar problem. Let me know if that’s helpful at all!

Ill try it today or tomorrow and Ill let u know if it worked :DD

1 Like

Hello. I love Slap Battles as much as you do. I understand you want to make ragdoll, like in the bossfight with Guide? It’s smooth for all clients and quite well synchronized!
But first I would like to ask you if you have tried to enable Massless on the root part or on all limbs of the character, and also disable RootJoint on the root part too on the server side? This should solve your smoothness issue, but will cause another issue with freezing when ragdoll is activated.

If you want to make your ragdoll smooth and not freeze, then, I would like to answer your questions to make it easier for you to work and decide on the ragdoll system that you need.

  • How can I make the ragdoll look smooth for everyone, not just the client who triggered it?

You can easily do this with RemoteEvent, which fires all other clients and creates a ragdoll for some player on them, making the player real character completely invisible… The signal will be transmitted instantly and it will look smooth to everyone… Also disable the collision of this ragdoll with the real character.

  • Is there a way to replicate or synchronize the client’s ragdoll physics to other players?

The hardest part of this system is that it can be unstable sometimes. Let’s look at a few cases where a player is in ragdoll:

Without knockback force

You need to make sure that the ragdolls on each client repeat (follow) the movements of a real character. To do this you need the client ragdoll position with a real character. I used AlignPosition and AlignOrientation, I can assume that the original game did the same. Where Mode is on TwoAttachment, Attachment0 is located at the root part of the ragdoll, and Attachment1 is at the root part of the real character. RigidityEnabled is on. You can set them up as you like and better, but this is what you need to start from.

With knockback force

Here things are a little more complicated. The thing is that when the player character is knockbacks by various forces (or by changing his Velocity directly. I haven’t tested it) then he will always lag on other clients. There is no perfect way to fix this. A lot of people thought about this and didn’t find a 100% solution…
So, since your ragdoll on the client is repeating the character’s movements, it will also lag. In order to fix this, I knockbacked the ragdoll itself, and then attached our real character to it, just like in the first case. And I did all this on the player client, which is knockbacked!

There may be problems with synchronization of actions…

When the ragdoll is done, I raise the real character to a standing position on the server side, by changing the root part CFrame, and not just by turning off PlatformStand.

  • Or should I be handling the ragdoll physics entirely on the server?

Absolutely do just that! If you are making a ragdoll on clients, then you need to take into account many nuances that appear during the development of the game. The most banal one is that for realism it will be necessary to transfer all changes from the real character to the ragdoll that may happen to him at this time. Another big problem is exploiters who can abuse ragdoll and use it for their own purposes. Just don’t pay much attention to the visual lag and freezes in ragdoll and do everything from the server side…


In conclusion, I would like to say that ragdoll replication on clients is usually used by games like Ragdoll Engine, but definitely not Slap Battles. I hope my tips helped you. I spent a lot of time trying to figure this out myself.
If you need more help, then DM me and I can provide you with files of my unfinished game, where I tried to do what I just told you)

1 Like

This is how implementing ragdolls in my game was a huge success. Swapping out the actual character of a player with a client-side copy gives you full control over the visual effects.