"You have been setting C0/C1 on [Motor6D] very frequently" warning when attempting to tween character-size

Note: This warning only appears in Studio and only started appearing very recently, hence why I believe it to be a bug. It was not observed behaviour previously and it is impacting my development-flow.

Reproduction Steps:
Create a script in-experience that uses TweenService to tween any one of the following NumberValues up or down by a large value (IE: more than ~0.5 difference) under a Humanoid on the server:

  • BodyHeightScale
  • BodyWidthScale
  • BodyDepthScale
  • HeadScale
  • BodyTypeScale
  • BodyProportionScale

For example, you can run the following code-snippet in the console on the server (in Studio) to reproduce this issue:

game:GetService("TweenService"):Create(game.Players:GetPlayers()[1].Character.Humanoid.BodyHeightScale, TweenInfo.new(1), {Value = 2}):Play()

Observe how you receive a lot of warnings in your output:


These warnings were previously not emitted and have only now started to clog up the ‘Output’ of any experiences relying on tweening character sizes.


System Info:
CPU: Intel(R) Core™ i5-8400 CPU @ 2.80GHz
GPU: NVIDIA GeForce GTX 1050
Memory: 16GB

I am accessing Studio through my normal account and have the following beta features enabled:

  • Terrain Editor Improvements
  • Tags in Properties
  • Material Generator

Expected behavior

I expect no warnings to be emitted as it impacts my development flow when I am spammed with these pointless warnings that I cannot fix and previously were not an issue. I cannot simply “use the transform property” as suggested because Roblox is internally setting C0 and C1 when tweening character-size, not me! If there is a valid performance impact of tweening character size (on a specific axis, not on all axes), some valid alternative should be provided as this is a somewhat common mechanic in experiences!

51 Likes

I also started getting this warning this week. They are coming from a local script in my game that changes the C0 of a Motor6D when a player walks onto an uneven surface to tilt their character model. This script is on a 0.3 second loop and changes the C0 frequently on the client, but it has been in the game for a long time and I just now started to get this message.

I changed the script to use Motor6D.Transform instead of Motor.C0 like the warning was suggesting, but Motor6D.Transform does not work for Server scripts, only local scripts.

21 Likes

Yes, the fact that the suggested alternative (transform) is not replicated is also problematic because it requires entirely remaking systems from scratch. It’s concerning that such a rapid and annoying change was pushed without a valid alternative while the internal scripts still rely on the ‘old way’ of doing it!

29 Likes

I’ve had this appearing in my game as I use C0, C1 to make the players head move realistically, This warning isn’t exactly helping with anything, as I know the consequences of using C0, C1. So its more of an annoying thing to look at in the console.

23 Likes

This warning is super annoying. My project is older than the transform property, and changing from C0/C1 sets to Transform isn’t as trivial was the warnings makes it sound. Was there really no better way to broadcast this?

As others have pointed out it’s not a very complete PSA. Transform is not a replacement for all the uses cases of C0/C1. What is the context behind this anyways? What have I been doing so wrong for all these years that required this much urgency. That information seems far more important than letting me know editing the C0/C1 of “Right Shoulder” might cause “slowdowns or errors”.

Something more informative like a guide page on the creator hub or a big PSA devforum post seems far more appropriate than an output spammy and uninformative warning.

33 Likes

I have been having this issue as well.

The problem with the transform property is that it does not work well with animation instances at all. It seems that animation tracks also use .Transform internally, so most of the time they will just override your changes to the .Transform property.

For now I’ll still stick with changing C0’s until we have a better solution than just “using .Transform”.

21 Likes

The problem with using Transform is that it doesn’t work on models with an Animator inside of them. The Animator overrides the Transform function, making it so Transform doesn’t do anything when I use it, which is the reason why I use C0 instead.

17 Likes

As far as I know, character size was never meant to be tweened. We can always go back to the previous Motor technology which does not have this issue.

16 Likes

You can use Stepped in RunService, it’ll completely overwrite the animation.
If you intend to combine both, then just multiply the transform to the additional cframe you were originally doing with the C0.

I would like to know if there’s any significant difference in performance between doing this and just changing the C0 property though. I’ve been using the C0 property for quite awhile and it’s been doing fine.

EDIT: I did not read the the rest of what you said about server side while writing this. My bad. It seems really a hassle to move over to Transform. I don’t get why this warning pops up now.

21 Likes

Considering Roblox likes breaking stuff using animations, we might as well switch to Weld instead of Motor6D.

To me, it does not seem like it is solved.

21 Likes

I love how the world-class comedian that pushed this update expects .Transform to be used when

  • the property is hidden from the api
  • the property is read-only

image

1984 meme

23 Likes

Hi everyone, apologies for the annoying warning. We’ve disabled it for the time being.
We’ll provide a page that documents how to deal with the use cases mentioned above and provide a way to disable it for good if you wish to continue using C0/C1 directly. Thanks

28 Likes

Thank you

There’s so many devs (myself included) who are all-in for these smaller optimizations because it’s the small things like this that will eventually lead the engine to become a more performant one, but at least give us the allowance to make the appropriate changes…

19 Likes

Thank you for the fix, but it appears that there’s some other issues with Motor6D that are being neglected, such as the one I’ve previously linked. It causes this issue:


It did not look like this before AnimationWeightedBlendFix (the left arm is supposed to hold the gun). I cannot overwrite the animation’s Transform with C0 and using Transform didn’t work either.

So, the best solution was completely removing animations, and possibly in the future switching to Weld instead of Motor6D. As of now, animations completely overwrite C0 and ignore any CFrame of the Transform not corresponding to the animation lower in the root hierarchy. It’s hard to explain but has been an ongoing bug since AnimationWeightedBlendFix.

12 Likes

I get this error when I scale a Roblox rig. Kinda annoying. Thanks for sending the bug report.

6 Likes

Try this in a server script

game.Workspace.Retargeting = Enum.AnimatorRetargetingMode.Disabled
1 Like

A Roblox Staff member told me to do the same thing, and unfortunately it did not work.

1 Like

Seems as if the issue is fixed for now, I recall seeing this exact message when testing my group’s TD game, but now the console is empty.