Unreal Engine 4.7.0-1-2-3-4 "64 Hz bug"

When I’m launching some project samples (fullscreen or windowed) in standalone mode, or even when I package it, it seems to have vsync forced on, which is not really a problem since that’s what I want, but it do have what I call the “64 Hz bug” that you can find in many games that does not support high resolution timer clocks for ramerate limits and such things.

I explain if you don’t see what I mean, even with a very smooth 60 frames per seconds, the game stutters at a very stable rythm, like 2 or 3 times per seconds, because it tries to render 64 frames in a round of 60 ( or something like that ). You can see it very clearly in Elemental, or in StylizedRendering to give concrete examples.

The weird part about it is that it does not have this bug when navigating in the editor, I also didn’t noticed it in projects like SwingNinja for example, even launched in standalone.

I have the very lattest official drivers for my GTX 770 and my graphics card configuration is set to the default values. No overclocking or such anywhere.

Yes, i totally confirm this, after running some tests with RivaTuner and lock the framerate to 60.0 FPS, the stutter is completely gone in all project samples.

Now you know where to dig :slight_smile:

Bug still present in 4.7.1

Hey Deu_sex -

Does the stutter appear at the beginning of the level and then disappear as the level progresses or are you seeing it throughout? If at all possible a video capture of what you are seeing would be helpful.

Thank You

Ketchum

the stutter apprears from beggining to end at the exact same timings ( I would say twice per seconds ) as long as you have smooth 60 FPS in standalone or shipped or developpement.
make sure to test little projects, StylizedRendering is a really good example, you should be able to notice the frameskipping effect.

if you want to compare with and without the bug, its a bit tricky, but not impossible, you have to package the game in shipping mode, then with a 3rd party software ( I personnaly use RivaTuner, I totally recommend it ) find the “UE4Game-Win32-Shipping.exe” of the project you just packaged and apply a 60 FPS limit on it. if you do that, when you launch the game, the game will be 100% smooth, then try to put a higher FPS cap like 70 and you will notice the stutter ( actually even at 61 you should notice stutter, but I didn’t test it so I wont speak ).

Unfortunately I can’t provide a video of it but they are plenty of people talking of this bug on the internet for games like Diablo, or Skyrim (most known one) :

Skyrim Stuttering 64hz Bug Fix at Skyrim Nexus - Mods and Community?

Limiting the framerate is not a fix, it’s a workaround, the really good solutions for this problems is to use a high resolution timer for framerate calculations/timings, I had this problem when I was creating very simple D3D9 applications, I was using basic windows timers to set an hardcoded framerate cap to my game, and had strange stuttering ( exaclty like this one ), then, I heard about high resolution timers, I replaced my global game clock which was a standard windows timer by that, and it worked flawlessly.

I think timings are well done in UE4, because before the 4.7.0 version, I was forcing vsync in my nvidia’s control panel and never had this stutter. Maybe something was unintentionally messed up in the process.

Hey Deu_sex -

Thank you for the additional information I was able to reproduce the stutter and have entered a bug report, for reference UE-11317, and will keep you informed as we continue to investigate a solution.

Thank You

Ketchum

Just chiming in to say I’ve also got this problem after limiting the framerate to 60 in ConsoleVariables.

Without limiting it’s fine (around 110 fps).

Limiting is absolutely necessary for our project (for now) to sync up physics properly

I don’t have time to investigate on this right now, do you need your game to be framerate dependant for the moment ? If it’s the case, try to disable framerate smoothing, and try to code an FPS lock of 60 with high resolution timers, I have no idea how to implement hi-res timers with UE but it should be in the doc :slight_smile:

Hey, I’ve not heard of high resolution timers but I’ll look into them this weekend, thanks.
I already disabled smoothing.

Framerate being locked to 60 is necessary because our vehicle’s physics change based on fps (due to lack of proper substepping, according to our coder).

Be careful if you want to lock framerate for your game, if it’s a global 60 ticks per seconds lock it will work, but if you’re trying to lock rendering at 60, maybe the physics engine will still not be locked.
What you can look at is a way to let the framerate free of fluctuations but lock the physics engine’s tickrate to a value (assuming it’s not synced to rendering tickrate, but it should not since it’s a well made engine, 30 ticks per seconds is good for a start), and this should be easily achievable since the Nvidia PhysX CPU engine code is now open to us :slight_smile:
But we are going off topic :wink:

Ok I’ve passed this comment onto our coder. I’ll get back to you with what he says.
Thanks for the replies so far :wink:

I got 144hz 3d monitor if i set my monitor to 144hz from windows8 screen advanced r.VSync ignores evry set 0 or 1 FPS dont change if i set it to 60hz ALL OK! :smiley: this issue is in 4.7.3…

Unfortunately I only have a 60 Hz monitor so I can’t test 144Hz Vsync, but as far as I’m concerned, the bug is still present in 4.7.3, I think they are still working to fix the issue, I hope it will be fixed with the next updates :slight_smile:

Our Developers are currently working on this issue, and because of the complexity we currently do not have an exact timeline as of yet. I will comment back here as soon as I know any further information.

Thank You

Ketchum