Is capping your game at 120 vs 141 actually better for stream quality?

SAKRAYx

New Member
Hey guys my very first post here been streaming for over an year now and having a blast with it.

I've read so many guides and watched so many videos to optimize my stream however lately it just feels like it isn't as fluid as it should be or has been.
My gameplay however IS really fluid however the stream seems kinda stuttery at times when I watch it back.

Now I play mainly Apex Legends which is a very fast motion FPS and I've adjusted my Nvidia CP and OBS accordingly to that.
I do however have a few questions which are hard for me to find on search or aren't clear enough.

One thing I stumbled upon people saying if you lock your game at 120 FPS instead of 138/141 (I have a 144hz Monitor) the stream quality becomes more fluid because it's a multiple of 60 (x2) where 138/141 some odd number has to generate odd frames and makes it stuttery? I have no clue if this is true only found a few topics about this but I found it really interesting if this actually is a thing or not.

Also to note does Gsync + NVCP Vsync + Low Latency kinda stuff affect how the stream fluidity is? I always had Gsync but lately ive been trying the combination of both G and Vsync (In Nvidia not in the actually game) for a very fluid experience which doesn't transfer to the stream which seems a bit choppier.

Also for the techies beyond OBS does one know if you play Stretch Res in the game do you go for Aspect Ratio scaling or Full Screen scaling in Nvidia CP both options give me the result of removing black bars but is one option better for input lag etc than the other? (I play the game in 1680x1050)

Here are my OBS Settings (I switched from Streamlabs to OBS yesterday actually because I kept hearing it gives better performances)

obs settings.png


I think my output settings should be fine read alot of things about psycho visual tuning in combination with apex also not giving great experiences how do you guys feel about the option?

And last one I saw there is a limit capture framerate option that's auto-checked in my capture game display settings. What exactly does this do do I uncheck or check this option for a smoother experience?

My PC Setup is:
RTX 2060
16GB
i7-9700k
Run on SSD


I know this is a long post but these are the last few things im trying to figure out and to just figure out how to get a really smooth stream experience hopefully anyone can give me insight on one of these things.

Greetings,
Wesley
 

SAKRAYx

New Member
Not sure how to edit this but is it also true OBS can cause stutters when ur main monitor is 144hz and your secondary is 60hz? Because that is how my setup is as well
 

koala

Active Member
There are many different sources of stutter. The 60/120/144/gsync thing is this:
A video consists of single frames. They are generated and later played back. Each frame is a snapshot of reality (or a game) at some point in time. Snapshot, pause, snapshot, pause, snapshot, and so on. This is the video. If the pause at playback is as long as the pause at recording, the video appears as smooth. If some pause is longer or shorter at playback, than means some image is shown too early or too late, the movement represented in that image is for this one frame faster or slower than expected, and this is perceived as slight stutter.

If you have a game that creates frames with exactly 60 fps, the delay between each frame is exactly 16.667 ms. If you record this to a 60 fps video, this delay is kept intact for every frame. If you play back this video at 60 fps, this delay is still intact for every frame, and the video is perceived as perfectly smooth.

If you have a game that creates frames with exactly 120 fps, the delay between each frame is 8.333 ms. If you record this to a 60 fps video, you drop every other frame, so the delay between frames is 16.667ms. The surviving frames were also generated with this delay, so at playback the video is perceived as smooth as well.

If you have a game that creates frames with exactly 144 fps, the delay between each frame is 6.944 ms. If you record this to a 60 fps video, you need to go from 144 to 60. If you drop every other frame,. you are still at 72 and need to drop 12 more. To get down to 60 from 72 in a second, you need to drop 1 frame every 5 frames. So you get this frame sequence from 144 to 60: (F is for a kept frame, d is for a dropped frame): FdFddFdFddFd FdFddFdFddFd FdFddFdFddFd FdFddFdFddFd FdFddFdFddFd etc. You see sometimes 2 frames are dropped, sometimes only 1. So the additional delay between surviving frames at generation time is either 6.944+6.944= 13.3889 (1 frame dropped) or 6.944+6.944+6.944 = 20.832 (2 frames dropped). However, since this is a 60 fps video, the delay at playback will always be 16.667 ms. So all the frames are displayed either too early or too late, and this is the source of a slight stutter. Not by everyone perceived as real bad stutter, but as unsmoothness. This is very subtle.

The same if you use gsync. With gsync the delay between frames at generation is arbitrary. Gsync goes down to 40 fps and up to 144 fps, so the delay is somewhere between 25 ms to 6.944 ms, every delay different. But played back with a media player, it's forced into the 60 fps schema, so it appears as stutter.

There has been a cure invented for this: it's called timestamp. In mkv and mp4 format (but not with *.avi), there is always a timestamp recorded with each frame, so the actual delay between frames is recorded, and knowledgeable media players can adapt and show the frames not at fixed 16.667 ms schema but with the actual delay recorded at recording time. Such a video will appear as smooth, regardless of varying delays.

However, this isn't always working out perfectly. For example, there might be a delay of unknown length between a game engine creating a frame and OBS reading the finished frame buffer. In this case the timestamps are inaccurate. Or timestamps get mangled by postprocessing tools. Some still assume totally fixed delays between frames, regardless of the timestamps. Or between remuxing/recoding to other container formats.

So to make absolutely sure you get the least stutter, use a fixed fps schema. So let the game generate the frames at the same fixed rate a media player will display them. Since you usually intend to create 60 fps video, let the game create frames at 60 fps. Not a frame less, not a frame more. Or 120 fps, then OBS will drop every other frame and it's still perfectly smooth. But with 144 fps or with gsync in general, or with vsync off in general, you start to rely on the timestamping, and this isn't secure enough to ensure stutter free videos. Especially if there is some intermediate processing step that insists on using fixed fps.

The stutter that can show up if you have one monitor on 144 fps and the other on 60 fps is something completely different. It's plaguing users for years and it seems to have to do with some kind of locking or synchronizing issue within the desktop compositing manager of Windows. It's still unsolved, as far as I know.
 

SAKRAYx

New Member
Thanks for your detailed explanations actually tried locking my Apex to 120 FPS and yes it def did appear smoother however the game itself feels tad less smooth compared when I play it on 138 FPS (gsync+reflex makes it 138 some reason)

Also did some more research on the monitor thing where if you have OBS open in the monitor of 144hz it should be better not sure if its true but going to test that today a bit.

For the most smoothest looking stream Gsync+NVCP Vsync is actually the way to go? To keep steady frames? And does things like River Tuner make it even better all though Apex already has a build in frame limiter?
 

D-Crypt

New Member
I tackled this issue myself; I have a 240Hz G-SYNC monitor and a 144Hz secondary monitor that OBS is running on. Here are the key takeaways that I learned after a lot of painful try and error:
  • You do not need to disable G-SYNC for OBS to have smooth playback; I was erroneously given some bad advice in this regard when I first asked about it, as a few people had the impression that simply having G-SYNC itself enabled is problematic for smooth recordings.
  • Always run OBS as admin! Doing so allows OBS to use as much of the GPU as it requires.
  • The actual issue that some may attribute to G-SYNC is simply having a variable/uncapped frame rate. I play all of my games with G-SYNC on, VSync off (unless it's an older game that simply breaks with VSync disabled), but always ensure that every game is capped at a multiple of 60 FPS (i.e. 60/120/180/240). You can ease up on this requirement with more options if you're only aiming for 30 FPS recordings (e.g. 30/60/90, etc.).
  • If the game has its own frame-limiting option, use that. Otherwise, use Nvidia's own built-in frame limiter (Manage 3D settings -> Program Settings -> Select the game in the drop-down menu -> Scroll down to Max Frame Rate and select your desired max).
  • Capping the frame rate will also avoid the issue of high GPU utilisation (unless it's an inherently demanding game); running at an uncapped frame rate will guarantee that your GPU is running at full power constantly, as it is simply rendering as many frames as possible.
  • The differing monitor refresh rate issue on Windows has been patched for a decently long time now; if your Windows 10 is up to date, you're fine. You can double-check this by going to Help -> Log Files -> Upload Current/Last Log File -> Analyze.
 

koala

Active Member
A very interesting testing video generation site is this: https://testufo.com/stutter#demo=smooth&foreground=ffffff&background=000000&pps=720
It can also simulate issues, so you will see what is "stutter" actually.

You can record one of the smooth sequences it generates and see how it will look in playback. For testing purposes, it's better than recording some game, because it's guaranteed to have no stutter at image creation. If you record a resource heavy game, you can never be sure if stutter is introduced by your recording or by the game itself.
You will be surprised how much different it will look with playback, even if you play back on the same system it was recorded.
Also try different media players.
 

SAKRAYx

New Member
I tackled this issue myself; I have a 240Hz G-SYNC monitor and a 144Hz secondary monitor that OBS is running on. Here are the key takeaways that I learned after a lot of painful try and error:
  • You do not need to disable G-SYNC for OBS to have smooth playback; I was erroneously given some bad advice in this regard when I first asked about it, as a few people had the impression that simply having G-SYNC itself enabled is problematic for smooth recordings.
  • Always run OBS as admin! Doing so allows OBS to use as much of the GPU as it requires.
  • The actual issue that some may attribute to G-SYNC is simply having a variable/uncapped frame rate. I play all of my games with G-SYNC on, VSync off (unless it's an older game that simply breaks with VSync disabled), but always ensure that every game is capped at a multiple of 60 FPS (i.e. 60/120/180/240). You can ease up on this requirement with more options if you're only aiming for 30 FPS recordings (e.g. 30/60/90, etc.).
  • If the game has its own frame-limiting option, use that. Otherwise, use Nvidia's own built-in frame limiter (Manage 3D settings -> Program Settings -> Select the game in the drop-down menu -> Scroll down to Max Frame Rate and select your desired max).
  • Capping the frame rate will also avoid the issue of high GPU utilisation (unless it's an inherently demanding game); running at an uncapped frame rate will guarantee that your GPU is running at full power constantly, as it is simply rendering as many frames as possible.
  • The differing monitor refresh rate issue on Windows has been patched for a decently long time now; if your Windows 10 is up to date, you're fine. You can double-check this by going to Help -> Log Files -> Upload Current/Last Log File -> Analyze.
I was hoping that is the case because Apex just feels ALOT smoother with Gsync ON but I also read around that could be the cause of microstutters in the stream but it isn't then? It's just save to keep using Gsync?

I do run OBS in admin always yes an old trick that actually helps out alot (Same that I always disable my preview while streaming for more performance)

But for most games you stream you have Gsync ON + Vsync OFF and what is your Low Latency at? OFF / ON / ULTRA ?
Would it be advised to just play Apex in 120 FPS instead of the 138 cap Gsync gives me on my 144hz? Wouldn't I notice a lack in smoothness in game because of the 18 frames loss?

BTW just used that analyzer and it said I had to disable my windows Hardware Accelerated GPU is that correct? I thought that would actually give me performance how about the variable refresh rate option under that do I tick or untick that one as well?

@koala
Thanks for the tip man Ill def try out few different settings recording that generator thingy smart!
 

FerretBomb

Active Member
OBS is not compatible with GSync. It's a monitor-side sync method that OBS cannot detect or use, and stutter is a common symptom of using gsync. It absolutely is a problem, and should be disabled.

Running at 120hz on your monitor means that if you stream at 60fps OBS can just take every other frame, resulting in smooth frame pacing. Same, if you stream at 30fps OBS would take every fourth frame. 144hz, it takes every second, or every third frame with an offset, leading to unsmooth motion. GSync makes this worse as the sync rate actively shifts.
 

SAKRAYx

New Member
Hmm I see how about NVCP Vsync? Do you use that at all or also not? Also does Low Latency do anything if you dont use Gsync or should I keep that at ON ? Ill be running some tests tomorrow with all these new inputs hopefully it gets smoother.

Another thing do I need to run my monitor at 120hz? In Apex i can just cap my FPS couldnt I just cap it at 120 while still using 144hz?
If I put it to 120 wouldnt it be capped at 119? Never really played around with the hz
 

SAKRAYx

New Member
Sorry I have no clue how to edit but is there a way I can actually test my settings without going actually live and see it back like a offline stream if you know what I mean hahah sucks if viewers keep coming in and im like sorry 5min testing other settings real quick
 

FerretBomb

Active Member
Sorry I have no clue how to edit but is there a way I can actually test my settings without going actually live and see it back like a offline stream if you know what I mean hahah sucks if viewers keep coming in and im like sorry 5min testing other settings real quick
You can record locally using 'same as stream' for the recording encoder settings.
You will not visually notice the difference running the monitor at 120hz vs 144hz. Anyone who says they can see the difference is a bald-faced liar and numbers-wanker. Just run the hardware at 120hz.
No, if you run it at 120hz with vsync-on, it will be capped at 120, not 119. No idea where you'd get that idea.
 

SAKRAYx

New Member
Yea I was probably thinking about Gsync which always cap ur FPS under ur 120hz so if I would use Gsync on a 120hz setting it would get to like 117 fps or so right? Also do you actually use Low Latency Mode ON or ULTRA and or NVIDIA Reflex? Because Apex does support NVIDIA Reflex in game to either ON or ON+BOOST should I have that enabled as well?

Thanks for all the tips so far guys! I really appreciate it Ill be doing some recording tests now haha
 

SAKRAYx

New Member
I think it's the Apex FPS limiter when I put fps_max 120 it gives me 119 fps in game if I put it on 121 it becomes 120.. So should I turn it to 121 so its 120 in game or 120 in the command but get 119 on the performance display hmm gsync and vsync are both off low latency is at on is that effects anything
 

FerretBomb

Active Member
I think it's the Apex FPS limiter when I put fps_max 120 it gives me 119 fps in game if I put it on 121 it becomes 120.. So should I turn it to 121 so its 120 in game or 120 in the command but get 119 on the performance display hmm gsync and vsync are both off low latency is at on is that effects anything
If I were in your shoes, I'd set the monitor to 120hz, turn on Fastsync (actually classic triple-buffered vsync) and then set the in-game frame limiter to 150fps.
At that point the GPU will limit refresh to 120hz, the in-game limiter will prevent it from 'running away' on an internal rendering loop (some run unchained and can hog GPU cycles as a result). You should get smoothest on-stream frame pacing at that point, with a degree of rendering margin to minimize drop-outs from the higher game-limiter cap (assuming it doesn't self-lock to the hardware 120 automatically with fastsync on).
 

D-Crypt

New Member
I was hoping that is the case because Apex just feels ALOT smoother with Gsync ON but I also read around that could be the cause of microstutters in the stream but it isn't then? It's just save to keep using Gsync?

I do run OBS in admin always yes an old trick that actually helps out alot (Same that I always disable my preview while streaming for more performance)

But for most games you stream you have Gsync ON + Vsync OFF and what is your Low Latency at? OFF / ON / ULTRA ?
Would it be advised to just play Apex in 120 FPS instead of the 138 cap Gsync gives me on my 144hz? Wouldn't I notice a lack in smoothness in game because of the 18 frames loss?

BTW just used that analyzer and it said I had to disable my windows Hardware Accelerated GPU is that correct? I thought that would actually give me performance how about the variable refresh rate option under that do I tick or untick that one as well?

In my experience, I tested out various games with G-SYNC and Vsync on/off in different combinations. The only consistent thing that caused stuttering was uncapped framerates.

I have G-SYNC on and Vsync off for 99% of games, with the one exception being older or less-optimised titles that literally break if Vsync is turned off, so I keep it on for those. Low Latency I've never touched, so it's off by default. I do recommend playing Apex at 120 FPS instead of 138, as it not being evenly divisible by 60 is guaranteed to cause frame pacing issues. You shouldn't notice that much of a difference between 120 and 138 frames, and even if you do you'll either have to just stick with it for the smooth recordings or go with choppy ones instead.

I'm not sure about the Hardware Accelerated GPU tip the log gave you.
 

SAKRAYx

New Member
In my experience, I tested out various games with G-SYNC and Vsync on/off in different combinations. The only consistent thing that caused stuttering was uncapped framerates.

I have G-SYNC on and Vsync off for 99% of games, with the one exception being older or less-optimised titles that literally break if Vsync is turned off, so I keep it on for those. Low Latency I've never touched, so it's off by default. I do recommend playing Apex at 120 FPS instead of 138, as it not being evenly divisible by 60 is guaranteed to cause frame pacing issues. You shouldn't notice that much of a difference between 120 and 138 frames, and even if you do you'll either have to just stick with it for the smooth recordings or go with choppy ones instead.

I'm not sure about the Hardware Accelerated GPU tip the log gave you.
Been testing with things on and off gotta say it feels smoother with Gsync+NVCP Vsync both On but I def notice like increased input delays or things just register later on my screen and yea about the 120 fps thats what im gonna test tonight so what's the best way to approach this?

Do I just use fps_max 121 in the Steam Command line (In Apex it always caps 1 under the cap so fps_max 120 would turn out 119 in game hence the 121) or is using the Nvdia Frame Limiter better for this?

As @FerretBomb said in his post setting my 144hz to 120hz seems like the most obvious one but I had some questions about that because stuff like Vsync in NVCP caps a few frames under your hz no? So it would become 118 or something like that and on another note if I cap my game at 150 FPS @ 120hz does the game feel smoother than just 120 fps @ 120hz?

Sorry that im asking so many questions that want to find the best possible way to do this right haha also Merry Christmas everyone <3

edit: About the hardware source acceleration it said to turn it on but I imagine that would only take more resources no? Cant really find much info about it its off on my side for now though not sure if that's bad
 

SAKRAYx

New Member
Apparently there is an edit timer on this sorry for the double post I also wanted to ask what the difference is in stream quality 144hz 120 FPS cap vs 120hz 120 (or 150) FPS cap?
 

SAKRAYx

New Member
If I were in your shoes, I'd set the monitor to 120hz, turn on Fastsync (actually classic triple-buffered vsync) and then set the in-game frame limiter to 150fps.
At that point the GPU will limit refresh to 120hz, the in-game limiter will prevent it from 'running away' on an internal rendering loop (some run unchained and can hog GPU cycles as a result). You should get smoothest on-stream frame pacing at that point, with a degree of rendering margin to minimize drop-outs from the higher game-limiter cap (assuming it doesn't self-lock to the hardware 120 automatically with fastsync on).
Actually tried this today putting my monitor to 120hz and fastsync but gotta say it delivered alot of stutters in stream also a bit in game.
Now im testing on Gsync Off so Fixed Refresh then with normal vsync on at 120hz while framecap is set at 140 it delivers a pretty smooth experience.

Still need to test a bit more with Gsync on however I feel like where it does make your game alot smoother I feel like everything in my game just takes a bit longer (a lot more getting shot while I close the door) maybe its an apex server thing those arent always as stable as well but maybe its some delay as well? Not sure tho still testing away.

Did found at when I do 120hz and set fps to 120 its somehow less smooth then 120hz with like 140 fps or unlimited fps is that normal?
 

D-Crypt

New Member
@SAKRAYx https://blurbusters.com/gsync/gsync101-input-lag-tests-and-settings/14

In a nutshell:
  • Have your refresh rate be the maximum your monitor supports (144Hz).
  • Have both G-SYNC and Vsync ON in NVCP.
  • Turn Vsync OFF in-game.
  • Frame limit to either 3 FPS below your max (potentially choppy recordings) or ideally 120 FPS for OBS to work with an evenly divisible factor of 60.
It should really be that simple, give it a try on multiple games and let us know how it goes.
 
Top