How to get absolute Physics tick rate / calculations independent of fps?

I am making a game in which few things are dependent on physics steps. On testing early “grey box” version that only contains player and vehicle controls I noticed strange things with how the engine (UE 5.2.1) interpolates or calculates physics simulation internally. Whenever I test game I do it at different fps and I noticed that at low fps the physics changes a lot and at high fps the physics work as expected. Not an issue, coming from Unity I know about Fixed Update calls and I tried to achieve similar thing.

So I did some searching and turned on the “Tick Physics Async” option. It made physics behave how it would at 30fps - by that I mean turning on Tick Physics Async didn’t actually make the physics engine to give accurate expected output regardless of fps, it instead (as per my observation) simply calculated physics at 30 steps/frames/calculations (sync Fixed Time Step Size default value 0.03333 * 30 it gives 0.9999 which is closes value possible to the max value that can be inputed in Max Physics Delta Time). The calculation step/frame/rate remains variable dependent on fps as I observed at 15 fps with Tick Physics Async on the physics get even jankier.

I need physics to be calculated at fixed steps so that at any fps or in the moment of fps jitter the outcome of physics action remains the same. I know its possible because Assetto Corsa Competizione uses UE4 engine which is very physics heavy game that needs absolute calculations to give predictable vehicle behavior at any fps. I expect UE5 to be able to do it or improve it however trying different settings with Async Physics Time Step Size and Max Physics Delta time gives different results and it seems that physics is still dependent on fps. If someone can help to get absolute steps/frames/ticks/calculation on the physics in UE5 I would much appreciate it.

{ Long story of me trying different settings: I placed a simple box of 1 scale on all axis, with mass of 75 KG and angular damping at 1.0 and pushing it around with my character at different settings. With the Tick Physics Async off and the fps uncapped, the box behaves as expected, it feels heavy, it doesn’t spin easily. When capping the fps to 30 fps the box feels light weight and angular damping does nothing, the box goes spinning and sometimes flying when pushed.

Now if I turn on Tick Physics Async with default settings and leave fps uncapped, the physics of box behave exactly like it does at 30fps cap and Tick Physics Async off. And if we calculate Async Fixed Time Step Size default value 0.03333 * 30 it gives 0.9999 which is closes value possible to the max value that can be inputed in Max Physics Delta Time. Great not a problem (yet) lets reduce Fixed Time Step Size and Max Physics Delta Time to 0.016667 which would mean the physics runs at closest to 60frames/tick/calculation. I confirmed this by running the game with fps capped to 60 frames and Tick Physics Async off, and then running with Tick Physics Asyn on and removing the fps cap. In both instance the box behaved the same and it felt like a good middle ground between radically spinning/flying box and a very accurate representation of a 75KG box. Even setting Max Physics Delta Time to 0.03333 and setting Fixed Time Step Time to 0.01667 give same results as previous two setting because the physics is ticking at 0.01667 regardless of 0.03333. Then I did testing at different fps.

With the above settings (Tick Physics Async on and both values set to 0.016667) at 15 fps the physics breaks again. The box goes spinning floating and even the character rotation sometimes takes time to update. When capping frames at 30fps some level of normalcy returns but the box is still spinning and floating. At 60fps and above the box behaves as intended. Hence I think that Tick Physics Async setting simply caps the physics calculation to whatever value you give (default being 0.03333 hence max 30 ticks) instead of calculating at absolute 30 ticks regardless of fps. }

Still need input regarding this issue of variable Physics tick at different fps even when Tick Physics Async is on.

Solution: Turn On Async Physics Tick Enabled on the BP component of each BP that uses Async Physics Tick. Truning it on Project settings is not enough (UE 5.2.1). Avoid Event Tick if possible.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.