Updates to Animation Throttling

Hello developers,

At the end of last year, we released a new property Workspace.ClientAnimatorThrottling to enable opt-in support for throttling animations. This week we released an internal update to our throttling algorithm. Our new technique aims to preserve visual quality for characters that occupy a larger share of screen space. In the gif below, you can see that the new throttler:

  1. Preserves animation fidelity for larger characters, even when they’re further away
  2. Decreases fidelity for smaller characters that are further away from the camera
  3. Increases the fidelity of animations for characters that are closer to the camera

side_by_side_blog_updated

The new throttler is live now for all places with the Workspace.ClientAnimatorThrottling property enabled.


Coming soon

Opt-out phase

We plan on switching the Workspace.ClientAnimatorThrottling property from opt-in to opt-out in the next month. This is your chance to enable animation throttling in your place and report any issues to us before the switch. If you don’t want throttling, you can still disable this property in your place during the opt-out phase.

LOD for more animation components

In the near future, we also plan on incrementally releasing LOD implementation for more animation components. Expect more announcements soon!

Please keep us posted on how these changes affect your games. Your feedback is integral for the development of these features!

196 Likes

This topic was automatically opened after 10 minutes.

I’ve always loved the sheer chaos of that example gif. Can’t wait for additional avatar optimization/technology for quantities of this nature in the future. Awesome work on this.

25 Likes

Awesome! This is much better than the old version and looks much cleaner!

6 Likes

Why was progression disabled anyway?
I mean, how long until it is re-enabled so we can progress to become a Regular?

Thanks.

9 Likes

Is this suppose to like make animations smoother while still having same FPS?

4 Likes

If you notice in the new picture, the smaller character models are throttled to a lower fps. Looks like 2-3 frames per second. In the old picture, this isn’t exactly the case with it having a lot more FPS. I think the major improvement here is that it more accurately throttles animations based on distance + size.

4 Likes

Ohh, okay. Is this recommended for me to use on a game you think?

2 Likes

If your game has a ton of animated NPCs for example, this would be ideal to use. Let’s say for example you had a town with walking NPCs or animated idle positions, this would work well and help manage performance on the client by throttling out any animations that are barely even visible to the player in question. It entirely depends on what type of game you intend on creating.

6 Likes

Wow this change looks amazing. Sorta off topic, but is there a reason that these behavior properties are still being added under workspace? The list of properties is growing and I’m just curious if it’ll ever get moved somewhere else? Maybe under a new service/settings tab?

3 Likes

Looking forward to trying this. When are the new animation priorities planned to be released?

3 Likes

Heyo, for the LoD in the future do you already have the option to disable throttling on specific models/AnimationControllers planned?

Due to this change, things like birds in the sky, butterflies and other decor controllers using animations are now abysmally throttled when either far away or on a smaller scale. I’ve had this option enabled since it first came out, before this change, and it appeared fine. Now however, a few players have reported the “laggy” decor changes to me thinking it was a bug.

Before: (Workspace.ClientAnimatorThrottling disabled.)

After: (Workspace.ClientAnimatorThrottling enabled.)

4 Likes

Hi Taratect_Queen,

Thanks for reporting this. Just for reference, what place are you using to test this? Looks like the throttling behavior of this bird is related to these updates. We’ll look into this and get back to you as soon as we have a fix.

We’re currently considering adding a property to disable throttling on specific Animators, but we’re first looking into making the throttler work generally without added properties.

4 Likes

Game Link

VIP Server: JoJo's Bloxxy Adventure - Roblox

4 Likes

Nil is correct. The new throttler’s performance in terms of FPS is roughly equivalent to the old one. However, the update ensures that characters that are closer to the camera, and occupy a larger screen space size, have smoother animations.

3 Likes

Hi BullfrogBait. That’s a great question/suggestion. For context, the throttling property was added in a previous update, not this one. To answer your question, place behavior properties that apply to the whole workspace will live inside the workspace for the foreseeable future…

4 Likes

Does Animation Throttling also reduce network bandwidth of the animation replication?

It would be nice to see this test with FPS unlocker for a more meaningful frame rate comparison that’s not just capped at 60 FPS.

3 Likes

Hi @jelloman, throttling works on clients only and does not affect network bandwidth.

1 Like

Hi @Crab_Wrangler, thanks for your patience as we solve this issue! After testing locally with the asset you provided me, I can confirm that the locomotion of the bird is applied to the “body” bone of the the model, using a KeyframeSequence animation. This type of animation does not apply its transforms to the PrimaryPart of the bird.

Since the position of PrimaryPart is what’s used to calculate LODs, this can cause issues when the bird is on screen while the part is off screen. One quick work-around for you is to remove the keyframes from the body of the bird, and instead programmatically move the bird using its primary part. (looks like the bird simply moves in a circle, which you can easily do with sin/cos functions.

I created a test place with the same bird model and a “fly” animation with the locomotion removed. Instead, I programmatically added locomotion with the “Fly” script inside of the bird model. Check it out!

bird_locomotion_throttling_fix.rbxl (41.7 KB)

This is a temporary workaround, but thought this would serve as a good example for everyone on how to solve these types of throttling kinks in your places :slight_smile:

2 Likes