Adaptive Timestepping as Default

in my game Create Your Monster it still looks strange with the Adaptive option
(it’s just a character with collision using animation through Motor6D)

Adaptive:

Fixed:

(sorry for my bad English)

Thanks for sharing. DMd, would be interested in hearing more about this

I understand that this will appear simpler and easier for newer developers, although I think that if you guys plan to remove “Fixed” from PhysicsSteppingMethod, it would be a good idea to still allow developers to overwrite the simulation rate on assembly basis with a simple property to ensure that important assemblies like cars will get prioritized to avoid edge cases with the automatic system.


Bit off-topic but, can we expect a physics related feature to allow developers to run custom physics loop at fixed rate (eg. 50hz) independently from the frame rate? I am currently working on raycast based chassis and I am running into major issues when trying to ApplyImpulseAtPosition() every Hearbeat as it is inconsistent and gets effected by frame rate and because of it the car behavior becomes unstable due to lifting force being applied inconsistently.

Unity has FixedUpdate function that is called at fixed rate independently from the frame rate. Heartbeat seems to be to tied to the frame rate.

6 Likes

I don’t want adaptive timestepping. I want the static option. Why is this being forced?

2 Likes

They are not forcing this anytime soon, you can still use Fixed instead of Default option.

2 Likes

Yes. A callback loop that is synced with the physics rate (not the frame rate) is one of our projects we plan to be working on very soon. We understand that there is a need for this.

10 Likes

You can select the Fixed option and your game will run the same as before. The Fixed option isn’t getting removed anytime soon.

2 Likes

I point you to this section of the post.

Historically, the way these opt-in/opt-out betas go means that Fixed has anywhere from 6 months to 2 years left to live. That’s forced. @Hajimalago

1 Like

I hope that they implement my suggestion of having property SimulationRate (or something on the lines of it) that will allow us to overwrite the stepping rate for assemblies that are important or not working well with the automatic system. I think that it’s relatively good solution to this problem.

1 Like

Or they could just not force this downright goofy and painfully unnecessary change.

We promise that whatever that will be replacing Fixed will be stable as Fixed. Currently we only have 2 settings, Fixed and Adaptive (which is set to be slightly aggressive).

This doesn’t answer the obvious question: Why replace Fixed at all long term? What’s wrong with it? Why not keep it?

The phrase “if it ain’t broke, don’t fix it” may be of some use here.

Any timeframe we can expect to see this feature implemented?

I doubt that they can share the timeline, but I think the “soon” means somewhere this year.

Removal of Fixed will take a while, as there are other updates to the physics engine that will have to take place first. No fixed timeframe yet.

3 Likes

If people incist on using it, we can leave it as a legacy option. But when combined with the planned updates to our solver/physics system, running fixed 240hz will be overkill (unless you are making a racing-sim that requires ultra precise physics?) for most games.

2 Likes

To be clear, it’s the ‘Fixed’ option that can go away in the future, not the high-res physics. For example maybe we will add a UltraPrecise stepping mode that will run at 480~240hz.

2 Likes

It’s more like, nobody really wants Adaptive to replace fixed as the default setting, and the average ROBLOX developer may or may not know why suddenly their game doesn’t work the same as before. Even if all the physics messiness is hashed out, the reliability and relative consistency of Fixed timestep events in code is FAR superior to anything done with Adaptive. On the code side of things, physics is irrelevent when you have scripts that need to simply need update every frame with relative smoothness and you get really bad results and jitter due to inconsistent timestepping on Adaptive. I’m pretty certain from testing that even the default camera is affected by this, though that was more towards when Adaptive first came out. But I personally think it’s not a good look to enforce new changes that jeopardizes the behavior of runtime events which make up a large portion of systems in almost every game on the platform.

4 Likes

Also, so far I haven’t seen any advantages of using Adaptive over Fixed.

I’ve always been so disappointed that the higher the constraints in an assembly, the more bizarre it’s physics perform. Getting bridges, conveyor belts, etc, to work? Has always been near-impossible without a lot of careful tuning, so it does not surprise me at all that this is making it worse.