Client-Sided Ragdoll System Does Not Work Properly

Hey there!

I recently implemented a ragdoll system into No-Scope Sniping (a game of mine), that is 99% run from client. This includes constraints and blood.

While it works fine on solo play in studio, the constraints don’t hold together when actually playing NSS in-game. Is there any possible explanation? Do constraints have to be treated differently on client?

Thanks! :slight_smile:

3 Likes

I think I need a bit more info here. When you say 99% run from client, what operations are performed on the client, and what operations are performed on the server?

SERVER:

  • Detects when a player dies, gets killer information, and gives killer points like XP and kills.
  • When a player dies, it sends a request through all clients.

CLIENT:

  • Does everything that a player sees, such as ragdoll, blood, etc.
1 Like

So the server tells every other client to ragdoll the character who died?

1 Like

That’s correct. It may also help you to know that the client always properly gets the information, and no errors are produced from any of these scripts.

Why not just ragdoll the character on the one client that died?

Doing so makes the character look broken to other players.

You mean broken into pieces? The client should have physics ownership over their own character, so that shouldn’t happen.

1 Like

I think it is new updates causing this.
See my test here: https://youtu.be/tPF7CHMYLRQ

2 Likes

Why not just ragdoll the character on the server?

This makes gameplay look choppier. The ragdolls often will have network/physics lag due to the number of contraints (for R15 character).

5 Likes

Have you found out why this issue was happening?

This is a very old post of mine, glad you asked for a solution.

In short, all of my projects recently use a ragdolling method that clones a character, creates collision data, creates constraints, and parents to the client-sided workspace. To do this a remote informs all clients that a player has died, passing on the player name to minimize packet size.

Here is your bucket list for creating a cloned-character ragdoll

  • On the server, disable Humanoid.BreakJointsOnDeath
  • On the server, set Player.Character.Archivable to true
  • On the server, inform the players that there has been a death
  • On the client, clone the character and apply the ragdoll to the new clone
  • On the client, if you would like, apply velocity, blood, gore, and/or any other effects to the clone.
  • On the client, parent the cloned ragdoll as a descendant of workspace
4 Likes