Disable physics throttling

Currently the roblox engine will throttle physics making it impossible to have games with custom character controllers that use physics.

This means for World // Zero that low end devices will experience “input lag” on their character, whereas the engine would normally continue doing humanoid calculations.

We don’t use humanoids as they have many bugs + performance issues, and we are aiming to support as many players as possible in a single place. That will not be possible with this limitation!

Developers need a way to disable physics throttling for specific parts so they can have custom character controllers, vehicles, etc.

36 Likes

There is a method which allows you to check how much physics are being throttled.
Workspace | Documentation - Roblox Creator Hub

2 Likes

very handy, I’ll be sure to employ that on later projects.

What if instead of being able to disable physics throttling (because that would cause all sorts of issues) you could set priority physics to something :thinking:

1 Like

There is also a method to switch throttling on and off, which was originally meant for plugins, but it doesn’t work anymore.

1 Like

We would need

  1. To work (above post reported it as broken)
  2. To work in live games, not just only in studio

or

A way to designate certain parts to be not throttled. Although this might not be possible if it is skipping the entire step.

This is still not a feature, here’s the prime example why this has to be implemented:

(unit movement speed being slowed down and ruining player experience when it kicks in)

4 Likes

the current game we’re about to release is also affected by this, the game would greatly benefit from this feature

1 Like

Can’t you use GetPhysicsThrottling to account for physics throttling?

I tried amplifying the unit’s speed according to that value and it did not help since it actually slows down how often physics are done, not the speed.

Note that the throttling --in extreme cases-- is applied to prevent physics from causing freezes, or crashes.

I think in your case, the best solution is to not use physics. You’re bound to have performance issues when pushing physics to it’s limits.

You can lookup the post about the Astroforce game, and how they optimized physics for their RTS game.

In my game I personally use a lot the AlignPosition and AlignOrientation to make my animals move. These animals are not updated when players are far away, and yet something is still causing the throttling of physics. I use LinearVelocity for the “vehicles” and HingeConstraint (objects using hinge are anchored when players are far away) to make some objects rotate. Is hard to find out what’s really causing it in my game.

The only thing I can say, is that they need to optimize more the physics engine at this point or add a new Instance that can serve as an universal mover for every game, like if it were to be an Humanoid, but react with physics in a different way. Like stopping before reaching a target (before colliding), staying above ground kind of like GroundController, have events to know when the npc reached the given Vector3 or CFrame, etc…

The huge amount of Constraint they have and now these huge number of Controllers for humanoid is making me crazy when all of the most needed feature could be exposed under solely one Instance from my point of view. (But anyways, probably what most games need is not actual physics but rather an object that interacts with the world without caring about velocity, gravity, and stuff like that)

I can’t go right now and do lerping for models or doing tweening for a bunch of welded parts if you think about it. Raycasting to find floor and keep npc above ground. Is also going to create some sort of lag.

1 Like

Our game also uses custom physics-based character movement. Haven’t noticed any issues with throttling for our use case.

But do note, that this is for player character movement. Each player calculates physics of their own character (they have network ownership). What I assume you’re talking about is NPC characters that are controlled by the server.

As you’ve mentioned you can try the new physics controllers. I’ve also seen in that thread that there will be an official release of the humanoid physics controls. Might be worth waiting for that.

But ultimately the issue is that the server has to calculate everything. This quickly adds up, hence the physics throttling kicks in as protection.

Another thing you can try is to disable far away NPCs, and only enable them if a nearby player can take network ownership of them.

1 Like

I’m not looking for a complete rewrite of the game, why can’t roblox fix the annoyances instead of developers? they have more control. I’d rather see instances lag than slow down since roblox states that they do it to prevent instances from going out of sync…

Disabling physics throttling should be a feature as soon as possible.

I had to rewrite attackers’ movement to use my custom movement system in Toilet Tower Defense, this meant I cannot use Humanoid:Move() and have to do lag compensation manually (to prevent attackers from stuttering).
Before the rewrite, the attackers are walking so slow that it takes a very long time for players to finish a match.

1 Like