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

Hello Creators!

We’re thrilled to announce the Avatar Joint Upgrade Studio Beta, an exciting new step in expanding what Roblox avatars can do. With this update, setting up physical avatar interactions, like ragdoll effects, becomes significantly easier. This upgrade introduces force and torque-limited constraints directly into avatars, allowing you to create realistic, physics-driven movements effortlessly.

image11

:blue_book: Overview of the Upgrade

To enable the Avatar Joint Upgrade:

  1. Opt into the Studio Beta going to File > Beta Features and enable “Avatar Joint Upgrade”

  2. Set StarterPlayer.AvatarJointUpgrade to Enabled.

    image6

Once enabled, this feature will replace every Motor6D joint in spawned character models with several constraints:

  • A BallSocketConstraint to keep the body parts attached and apply cone limits during physics simulation.

  • A new AnimationConstraint to play animations on the parts, either kinematically (like Motor6D) or physically with forces and torques.

  • A NoCollisionConstraint only on certain body parts, to improve ragdoll fidelity across diverse avatar bodies.

:jigsaw: Key Components

AnimationConstraints

The AnimationConstraint is a new type of constraint designed replace Motor6Ds, with a few key enhancements:

  • Transform Property: This CFrame property allows animation control via an Animator or LocalScript.
  • IsKinematic Property:
    • When set to True, AnimationConstraints will perfectly align parts to animations without physics influence, or in other words, behave the same as Motor6Ds.
    • When set to False, AnimationConstraints will use physics to achieve its target transform, making it possible for animations to drive physical interactions. If the values specified in MaxForce or MaxTorque aren’t high enough, characters might not fully reach their target poses, enabling more dynamic, physics-based animation blending.

slept9

BallSocketConstraints

The BallSocketConstraints provide a foundation for physics-based interactions, enabling realistic ragdoll effects. The joints default to human-like limits, but they can be fully customized or disabled entirely.

In the example provided, a character entering a ragdoll state plays a defensive curl animation. The AnimationConstraints lack the strength to hold the pose, resulting in natural movement.

image1

Note: For ragdoll on character death, set Humanoid.BreakJointsOnDeath to False. See the example script provided.

BallSocketConstraint limits apply to IKControls. Note how this IKControl set to LookAt the red part no longer twists the neck 180° with the joint upgrade active. This can be disabled by setting the BallSocketConstraint.LimitsEnabled to False or disabling the Constraint.

Before (no BallSocketConstraint)

image8

After (with BallSocketConstraint LimitsEnabled)

image9

:hammer_and_wrench: What Can You Create?

This upgrade opens up a world of possibilities for physically-driven character interactions. To inspire you, we’ve released an uncopylocked example place.

This place includes features like:

  • Ragdoll on character death, upon falling, and when getting knocked out
  • Physics enabled on arms when holding tools

Get started by checking out this place and experimenting with the new capabilities.

image5

:question:What’s Next?

Once this Avatar Joint Upgrade exits Studio Beta, it will be rolled out in phases, similar to other major engine changes, to ensure a smooth transition across the platform. This phased approach allows eager developers to test the upgrade early and provides flexibility for those who may need additional time to adapt.

In Phase 1, developers can enable the upgrade in live experiences so players can use it. Once we move to Phase 2, the upgrade will become the default setting for all experiences. However, any developers who didn’t test the feature in Phase 1 can still disable it temporarily if it disrupts their experience, allowing them time to make necessary adjustments.

Finally, in Phase 3, AnimationConstraints will be the standard for all avatars across Roblox, ensuring consistent, high-quality character simulation. Motor6Ds will still be supported for legacy content, so any existing projects using them will continue to function as expected.

While we don’t have set dates yet for these phases, we will keep you all updated and share more early next year.

:rocket: Join the Studio Beta and Share Your Feedback

We’re eager to see the creative ways you’ll use this upgrade to bring avatars to life! Let us know your thoughts, feedback, and any issues you encounter.

Happy building,
The Physics Team


FAQ & Known Issues

Will enabling the joint upgrade change or break my experience? Do I need to update my scripts?

  • In most cases, your experience should behave the same. The AnimationConstraints in spawned players have IsKinematic set to True by default, so they will match Motor6D behavior. However, if your scripts access specific Motor6D properties, you may need to update them.

    • Scripts checking instance:IsA(“Motor6D”) will not detect AnimationConstraints.
    • Setting C0, C1, Part0, or Part1 properties will error. AnimationConstraints use Attachments instead.

    You can Ctrl + Shift + F search your codebase for references to these properties and update them to use Attachments.

    image3

    Before:

    image7

    After:

Does the joint upgrade affect R6?

  • Currently, no. R6 is structurally different from R15. We’re open to adding support in the future.

Are upgraded joints applied to all characters?

  • Currently, upgraded joints are only added to characters from the Player spawning flow. We plan to extend this to all character-creation flows, like from HumanoidDescription, in the coming weeks. Upgraded joints will not be added to existing character Models, like NPCs already in your place.

Do AnimationConstraints work with the Animation Editor?

  • Yes. However, the editor currently does not preview animations on joints that have IsKinematic set to False. We plan to enable this soon!

Does enabling the joint upgrade impact performance?

  • No, the base joint upgrade has little to no effect on performance. Further explanation in this reply.
249 Likes

This topic was automatically opened after 10 minutes.

Finally we can make gangbeast like game! thank you roblox!

20 Likes

Yoo official ragdoll engine?? This is sick!
Time to put the GMod back in Roblox :sunglasses:

30 Likes

Excited for this update for when it finally comes out!

7 Likes

This is awesome. I did not anticipate animated ragdolls to be possible as easily as this. The constraint using attachments is really nice and simple too, compared to C0 and C1 on Motor6D’s. What does the C even stand for?? And what is 6D referring to? So many questions!

So, additive animations when? I feel like this would be a perfect time to implement them.

12 Likes

Cool to have ragdoll support, but this is going to eventually break all current ragdoll systems. Old games are gonna need some work.

7 Likes

This update is fire🔥
I think it would make some scripts much easier

6 Likes

6D would be referring to three individual positional axis and three rotational axis, right?
I just always assumed C0 and C1 just meant something as simple as CFrame0 and CFrame1.

9 Likes

how this can effect the performance ? , this is many constraints !

6 Likes

RARE W, they are open to supporting R6 in an R15 feature? I wonder if they went back on deprecating it :thinking:

People are gonna use it anyway, so it would make sense to add support.

14 Likes

I noticed that emote animations don’t move the character away from the center. Is that intended?

Speaking of animations, when will we have root motion? I’m an animator, and this new update seems like it could be used to implement root motion since it’s not moving the players in the emotes that are supposed to move.

1 Like

is Ragdoll humanoidstate will be un deprecated ?

3 Likes

holy peak
This a huge update, with perfect timing too. Was just about to start a project that’s going to use physically simulated anims like this.

5 Likes

There’s little to no impact on performance.

  • While the AnimationConstraints are in kinematic mode the performance is actually slightly better than Motor6Ds. The additional instances will not add any runtime cost in kinematic mode.
  • When physically simulated (IsKinematic is false), the cost is the same as any other traditionally made ragdoll character. Generally, this is fine on all platforms as each client simulates only their own character.
  • The additional instances only increase the average avatar’s memory usage by 2%.
  • Our tests showed this has no impact on join times or out of memory crashes.
20 Likes

YEEEEESSS YES YES YES LETS GO I’ve been waiting for this since RDC I am so excited. This is going to drive all of my characters ASAP, so much emergent gameplay comes from physics toys.

What’s the timeline for being able to turn this on in live? I want this ASAP.

7 Likes

Emergent gameplay designer chads keep winning :trophy: :trophy: :trophy:

5 Likes

@Homeomorph
Tangentially related:

Since the avatar constraints use the motor6d’s positions, that means some avatar packages with incorrect / broken motor6d’s will have physics problems when animating. With the package I use on my avatar, various limbs will straight up detach from the body with some types of animations!

I filed a bug report about this 2 years ago, but I haven’t been able to get it actioned on. Now that joints are going to become physically simulated instead of CFramed, would it be possible to get this looked at?

3 Likes

Question about niche humanoid behavior. In our platformer game, we directly modify the humanoid rootpart’s root motor6d C0 rotation every frame to rotate based on the slope the avatar is standing on. This essentially rotates the avatar on sloped surfaces, making them stay “flat” relative to what they are standing on. One thing I’ve observed with this behavior, is that doing this does not affect physics in any way. The avatar visually rotates, but does not physically rotate. Jumping etc still works as expected as if the avatar was upright.

Will switching to these new animation constraints change that behavior at all? If so, how can we get that effect back where we visually rotate the character, without causing all kinds of physics sideeffects? The slope tilt is mean to just be a visual polish, not something that impacts the avatar’s ability to move.

4 Likes

This is great! Opens up many possibilities. Like this floppy guy:

12 Likes