Any Good Ragdoll Systems/Modules?

Any decent & non-laggy ragdoll modules/systems?
I’m making a rogue-like game and a ragdoll on death script just won’t fill my needs.
I need a ragdoll module/system that is able to ragdoll & unragdoll, I’ve been looking for some but everyone I’ve seen has critiques about how it’s laggy or straight up doesn’t work.
I’m not asking someone to make a system or module for me but rather if anyone has something similar that works and is functional.
Thank you.


depends on whether you’re using r6 or 15.

i use r6, and no plans at all to use r15 (for simplicity and preference).
here’s the one i use

for r15 ive seen some ones out there, but obviously i didnt bother taking a good look.


I updated my post, but i’m talking about R6 specifically.

1 Like

I’m pretty sure I looked at that one awhile ago and people in the replies were talking about it be buggy? Does it work for you well? Another thing it has a seperate NPC version, anyway to combine both?

1 Like

You could set Humanoid.RequiresNeck to false, disable all Motor6Ds and create a BallSocketConstraint for each Motor6D and mess with its properties that will make its behavior less laggy. Something like

local function ragdoll(character: Model)
	for i,v in pairs(character:GetDescendants()) do
		if v:IsA("Motor6D") then
			local ballSocketConstraint ="BallSocketConstraint")
			local attachment0 ="Attachment")
			local attachment1 ="Attachment")
			attachment0.Parent = v.Part0
			attachment1.Parent = v.Part1

			ballSocketConstraint.Parent = v.Parent
			ballSocketConstraint.Attachment0 = attachment0
			ballSocketConstraint.Attachment1 = attachment1

			attachment0.CFrame = v.C0
			attachment1.CFrame = v.C1
			-- messing with the properties of a ballsocketconstraint I found these properties efficient for my game, you could try yourself
			ballSocketConstraint.MaxFrictionTorque = 200
			ballSocketConstraint.LimitsEnabled = true
			ballSocketConstraint.TwistLimitsEnabled = true

			v.Enabled = false
	character.Humanoid.RequiresNeck = false

and for unragdoll just reversing everything

local function unRagdoll(character)
	for i,v in pairs(character:GetDescendants()) do
		if v:IsA("BallSocketConstraint") then
		elseif v:IsA("Motor6D") then
			v.Enabled = true
	character.Humanoid.RequiresNeck = true

You would probably want to use RunService.Heartbeat to set CanCollide on the limbs to true.

Why would i use a heartbeat to set CanCollide to true? Can’t I just set it to true once?


For some reason Roblox constantly changes the collisions of the body parts. You could try changing it only once but I don’t think it will work

1 Like

Would the script you gave be something that’s laggy on the server or at all? I’ve had problems with a previous one even when setting humanoidstates to work with it.


I’m not sure, I don’t have problems with it in my game.
I just gave you an example you can try something else if you want


It’s alright thanks for your help, i’ll try it out.


This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.