Is it possible to create active ragdolls on Roblox? How might I approach that?

Unsure if this fits the category, but…

I want to create an active ragdoll system. I’m using this video as a general guide:

https://youtube.com/HF-cp6yW3Iw?t=22

I’d like to know, is it even possible to accomplish on Roblox? If so, how could I do it? Any tips or suggestions on how to do it?

most ragdoll systems just replace Motor6D’s with ballsocketconstraints, you could just log all the Motor6Ds in a script and then when you wish to undo a ragdoll, deleted all ballsocketconstraints and reparent the Motor6Ds

1 Like

That would be unable to achieve what I want. I want the ragdoll to be able to play animations while being simulated realistically. There’s a clip of that somewhere here:

This is the link in the post, but it looks like the one in the post broke. Sorry about that :slight_smile:

i feel like with the amount of physics updates roblox have applied its possible in some way shape or form, MAYBE? but not to the degree of other game platforms (unity, unreal, etc) atm. it’d be something you’d have to tinker with and its a lot of toying with roblox physics and body movers trying to apply forces to an object to keep it upright whilst ragdolled. however playing anims on a ragdolled rig, to my knowledge currently, i think is entirely impossible unless u hardcode it into the ragdoll movement system

Try:

for index, joint in pairs(script.Parent:GetDescendants()) do
	if joint:IsA("Motor6D") then
		if joint.Part1.Name == "HumanoidRootPart" or joint.Part1.Name == "Torso" or joint.Part1.Name == "Head" or joint.Part1.Name == "Right Leg" or joint.Part1.Name == "Left Leg" then
            warn("Skipped: "..joint.Part1.Name)
		else
			local BS = Instance.new("BallSocketConstraint")
			local A0 = Instance.new("Attachment")
			local A1 = Instance.new("Attachment")
			BS .LimitsEnabled = true
			BS .TwistLimitsEnabled = true
			BS .TwistUpperAngle = 0
			A0.Parent = joint.Part0
			A1.Parent = joint.Part1
			BS .Parent = joint.Parent
			BS .Attachment0 = a0
			BS .Attachment1 = a1
			A0.CFrame = joint.C0
			A1.CFrame = joint.C1
            wait() --Im not sure how long roblox default wait is but i like to include it before deleting something
			joint:Destroy()
		end
	end
end

and just add some kind of animations when player is meant to hold an item or “Part”
im not sure if this will help but when i recreated Ragdoll Universe it worked well for me, of course you still need to edit it alot…

If you wanted to start i would recomend keeping the ragdolls rotation locked up so it stays standing and make it a ragdoll that may work!

Make the actual player invisible and make a copy of the player and replace all motor 6d With ballsocketconstraints and like try to make it like mimic the actual player and make the actual player invisible and put them in different collision groups so they don’t collide with each other because I have experience and that looks really weird and finally like use a align position and align rotation to mimic the player I I’m working on a system like that right now but yeah I’m not making much progress right now it’s it works but it hits very buggy and I like try to make this crime a little bit yes so experiment with it and try different things and like be creative you can’t do it like it’s perfect as like games like fall guys And like other big record games because like roblox yes it has physics but yeah they are not so good I hope I could help you and yes try it out 0 and it would be nice if you like take me if you like have some questions because like I’m working on it but I’m not the most experienced programmer because I’m only 13 and yes what should you expect but I think I’m doing pretty good maybe so try it out!

Sorry for all the typos I’m using The speech to text tool from Windows and it’s improving but it’s not understanding me as well as I’m just typing it, ok just sorry

Sounds interesting, you should really make a post about this, it would help developers a lot!

i am trying a new system out because the old one looks way to chunky
i can explain you how it works if you want

here an example

i hope you have an google acount if not just tag me

I need access to your drive to be able to see it😅

fixed it :smile: [cahr limit loooooooooool]

Interesting! How did you make it balance?

this makes the ragdoll keep balanced

local function getdecandantsmass(target)
	local mass = 0
	for _1 , decandant in ipairs(target:GetDescendants()) do
		if decandant:IsA("Part") or decandant:IsA("MeshPart") then
			mass += decandant:GetMass()
		end
	end
	return mass
end
local function setupdollconstraints() -- makes the doll ragdoll
	local upforce = getdecandantsmass(doll)*workspace.Gravity 
	local downforce = upforce/-2
	local headforce = doll:WaitForChild("Head"):GetMass()*workspace.Gravity
	local vecforceleftfoot = Instance.new("VectorForce")
	vecforceleftfoot.Parent = doll:WaitForChild("Left Leg")
	vecforceleftfoot.Attachment0 = doll:FindFirstChild("LeftFootAttachment",true)
	vecforceleftfoot.RelativeTo = Enum.ActuatorRelativeTo.World
	vecforceleftfoot.Force = Vector3.new(0,downforce,0)
	-------------
	local vecforcerightfoot = Instance.new("VectorForce")
	vecforcerightfoot.Parent = doll:WaitForChild("Right Leg")
	vecforcerightfoot.Attachment0 = doll:FindFirstChild("RightFootAttachment",true)
	vecforcerightfoot.RelativeTo = Enum.ActuatorRelativeTo.World
	vecforcerightfoot.Force = Vector3.new(0,downforce,0)
	-------------
	local vecforcehead = Instance.new("VectorForce")
	vecforcehead.Parent = doll:WaitForChild("Head")
	vecforcehead.Attachment0 = doll:FindFirstChild("HairAttachment",true)
	vecforcehead.RelativeTo = Enum.ActuatorRelativeTo.World
	vecforcehead.Force = Vector3.new(0,headforce,0)
	-------------
	local vecforcetorso = Instance.new("VectorForce")
	vecforcetorso.Parent = doll:WaitForChild("Torso")
	vecforcetorso.Attachment0 = doll:FindFirstChild("NeckAttachment",true)
	vecforcetorso.RelativeTo = Enum.ActuatorRelativeTo.World
	vecforcetorso.Force = Vector3.new(0,upforce,0)
end

I am working on making the ragdoll able to move like walking jumping and a few more other things

1 Like

but it has to be made out of ballsocketconstraints

I think there actually is a way to do this but it might be a bit clunky at best.

So in Roblox, have your player in a state where they’re always ragdolled, always have ball socket contraints active.

But underneath their rig (on the client of course because otherwise it would lag too much)
have a invisible dummy rig that plays the actual animations.

And you can weld the player’s limbs to the invisible animation dummy using position / orientation aligners and whatnot or manually apply force to the player’s body parts so their ragdoll tries to align and follow along the movements of the invisible dummy.

i’ve tried that at first but there are some problems that are to dificult to explain

1 Like

Ah, unfortunately this method does not allow you to walk properly or smoothly atleast in a realistic manner, i’d suggest trying to hook up an Inverse Kinematics module to calculate limb manipulation to be able to correct to nodes that will guide the foot where to place.

So when stumbling the character will actually use the foot to stabilise itself of jittering around and relying on its torso.