Proper Fixed Timestep for 30 FPS

Hello.

I am having this issue, where my whole game jitters (Small fast jumps every few seconds).

The game runs on iOS device with about 40 FPS, but i’ve decided to limit it to 30FPS with Application.targetFrameRate.

The problem is that if i leave the fixed Timestep to 0.2 or 0.25 the game jitters all the time. It’s pretty tiny jitterring and barely noticeable, but it’s there.

So i’ve decided to set the Fixed Timestep to 0.033333, which shoud be for 30 fps. Anyway, the game now runs super smooth, but these jitters occurs at some point, (Like every 4, 5 seconds).

I am reading from 2 days, what’s been discussed in the forums the jitter camera problem, from the LERP, but there’s no clear answer on that. My player moves with FixedUpdate and the camera follows it with FixedUpdate…

So my questions are:

What is the proper Fixed Timestep for 30FPS?

If the game can run with 40, 45FPS, shoud i limit it to 30, or leave it on it’s own?

What coud be causing the jitter if the game runs with good FPS? When i limit the game to 30FPS and when i monitor the FPS, its allmost perfectly staying on 30FPS (It goes from 29.94 to 30.05). So coud these variations cause the jitter every few seconds, if the Fixed Timestep is 0.033333 ?

Any advice will be appreciated, to stop that jitterring…

Thanks

Never, ever move your camera in FixedUpdate. FixedUpdate will never be in sync with the visual update. You should move your camera in LateUpdate in most cases. Increasing the fixed timestep (so lowering the fixed framerate) will just increase the possible jitter (the amplitude of the jitter). When you use FixedUpdate i guess you use rigidbodies and the physics system. If not, get your code out of FixedUpdate and move it to Update. However if you use the physics system only keep stuff in FixedUpdate that is really physics related. Everything else should be in Update or LateUpdate.

Since we don’t know very much about your project it’s difficult to give any more precise advices.

(Some time ago i made this FixedUpdate simulation to show how it’s actually working)