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.
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.
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.
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.
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.