Hello everyone,
We will be launching a new option on the Workspace - PhysicsSteppingMethod
You will now be able to choose between physics stepping methods: Default, Fixed, and now Adaptive!
What’s the difference between these methods?
For now, default and fixed are identical options, and they will give you identical physics behaviour compared to what we have before. The new option (Adaptive) will automatically throttle the Stepping Frequency of the simulated physics on your game.
What do you mean by “Stepping Frequency?”
Every non-anchored assemblies in our engine are physically simulated. Even a single part that is seemingly doing nothing (think about a Part just sitting there on top of a baseplate) is physically simulated.
Our LDL-PGS solver solves the equation of motions on all simulatable assemblies 240 times per second with super-precise accuracy, either on the client or the server. This is great for hard-to-simulate situations such as fast moving objects, parts undergoing multiple contacts, stiff constraints, and so on!
Generally speaking, the more frequently you solve the equation of motions on the bodies, the more accurate and stable they become - but you may pay in terms of performance since you will be using more frame time to do the physics.
In some cases, solving the equation of motion on this part 240 times per second might be overkill; if the movement of the simulated parts are mild, or if we only care about just some Humanoid running around, it is possible that we can get away with solving the system only 60 times per second. This reduces the simulation time, freeing up CPU time for other operations.
- The engine will take lower frequency rates whenever it considers it to be “safe”.
- If high-freq. Bodies and low-freq bodies interact, the stepping rate will follow the higher rate of those two bodies.
- We will support 60hz, 120hz and 240hz stepping frequency of the bodies within our engine.
What are the drawbacks?
This obviously comes at a cost - the physics won’t be as accurate.
To deal with this issue, our engine will try its best to optimize the stepping frequency of a simulated assembly. For example, if something is moving or rotating quickly, this means we will need a higher stepping frequency. If the constraint graph of the mechanism is considered too stiff, we might want to assign a higher stepping rate for stability. If you think your game requires high physical accuracy / stability, you might want to stick to the default option for your game (at least for now!).
Would my game benefit with this option?
How “physics-intense” is your game? Consider these two aspects: the amount of physics your games has, but also the intensity of the physics your game is trying to simulate. Best improvements will come for games with Large amount of phyiscs + Low Intensity simulations.
How can I test this feature?
This feature is available now as a beta feature in studio for everyone. Simply turn on “Adaptive Timestepping” in beta features, and select “Adaptive” for the “Physics Stepping Method” on the Workspace.
If you encounter any strange behavior with this feature turned on, let us know so we can look into the issue. Any feedback will be greatly appreciated!
P.S.
Currently this is only open for use inside Studio (you can’t have this turned on for live games). If you would like to participate in testing out this new feature for a live game, please contact me so I can have that set up for you!