[Studio Beta] Avatar Joint Upgrade: Enabling Physically-Simulated Characters

it breaks the VR module (that roblox provides with their avatar gestures

We’ll fix this.

in the future, will animations still support being played with motor6d rigs

Yeah, we have no plan to stop supporting Moto6D animated rigs.

We’re not dropping support for spawning avatars with Motor6D’s any time soon. In a month or so we’re planning to let you opt-in to spawning with new joints in-experience. Then roughly a couple months later we’ll start looking at making this the default and how easy people are finding the migration.

3 Likes

Are AnimationConstraints set to supercede all that can be done with Motor6Ds? For example, animating parts on assemblies (that arent rigs) would be easiest done with Motor6Ds—is this something that AnimationConstraints could easily fill in for as well?

Ragdoll Death in AvatarJointUpgrade Beta

Hey everyone. Yesterday we added a StarterPlayer.ClassicDeath property that lets you control whether avatars ragdoll when they die without any scripts! We want to enable high-fidely content that mimics the real world and heard setting up ragdolls was a pain. So, today (currently in Studio Beta), you can disable ClassicDeath to have your players ragdoll when they die.

  • ClassicDeath = true: Avatars will continue to break apart on death, just like they always have.
  • ClassicDeath = false: Avatars will spawn with Humanoid.BreakJointsOnDeath = false, and will ragdoll when they die.

image

Note: Since ragdolling requires the new joints, it requires the AvatarJointUpgrade to be active. Otherwise the ClassicDeath property will be hidden and you’ll always break apart on death.

The Future of Avatar Death

The classic death style is extremely important for the feel of many Roblox experiences. It has cultural significance, and we respect that! At the same time, it can look odd on higher fidelity avatars. (Why do you go bald when you die?) We want to respect how all styles of avatars look when they die, and ragdolling does that. It works well on classic bodies, high-fidelity humanoids, and everything in-between.

Classic Death

ragdoll7

Ragdoll Death

ragdoll6

Our plan is to leave all existing experiences using classic death. We WILL NOT change them automatically! If you want, you can disable ClassicDeath yourself. At some point in the future we will start initializing ClassicDeath = false in newly created experiences so avatars ragdoll there. You will always be able to re-enable ClassicDeath for any experience if you prefer it.

As always, please let us know what you think!

8 Likes

You might notice a slight hitch at the moment of death. It happens because Humanoids transfer physics ownership to the server on death. We do this by default so exploiters can’t manipulate dead body parts. We expect this to look better if/when we have client side prediction and full Server Authority.

1 Like

Lovely! Thank you :smiley: !! This will make developing ragdolls so much easier haha. No more funky ragdoll code.

Is there any new information for when phase 1 might commence? It’s been a while and we are about to head into the second half of this year.

We’re expecting to have this available in-experience within 2 months!

This is the last large bug we want to fix before phase 1.

3 Likes

What would be the best way to return the character to its-pre ragdoll state? IE if I’m using proxy parts to move the joints to simulate the collision. I’d like to unragdoll the character, and return the transforms to their Original WorldCFrame.

1 Like

It might depend on your proxy part setup. I can try to give a suggestion if you can explain that more.

In my tests I usually don’t have any proxy parts, so I can just run some code like this and it will restore all the joints to be enabled and kinematically animated. (For example I’d run this when a Humanoid gets up from a fallen down state). Does this work for what you’re trying to do?

for _,joint in character:GetDescendants() do
  if joint:IsA("AnimationConstraint") then
    joint.IsKinematic = true
    joint.Enabled = true
  end
end

Getting some really strange results when rotating the attachments. (That’s what we’re supposed to do instead of Motor6D C0s, right?)

Here’s a video of what I’m running into. If you change the orientation of a rig attachment & either 1. add something to the character or 2. change any animationconstraint properties, you start getting some very weird results. Setting the orientation back to (0, 0, 0) doesn’t fix it. Here’s an example video, using the uncopylocked place file (unedited):

1 Like

Are we able to utilize the ragdoll system on NPCs and not the actual player? So far it doesn’t look like the ragdoll works on NPCs, I am getting errors.