Biggest issue in PC ports is usually microstutter/hitching -- why is this such a common problem?

Discussion in 'Games, Gaming & Game-demos' started by BlindBison, Apr 7, 2020.

  1. BlindBison

    BlindBison Master Guru

    Messages:
    425
    Likes Received:
    70
    GPU:
    RTX 2080 Super
    For some context, I have a pretty beefy rig. 3900X, 2080S, 32 GB 3200 MHz RAM, NVMe SSD, G-Sync 144 Hz panel (1440p, 1 ms latency). My drivers and windows are also consistently kept up to date with default settings used (generally speaking).

    But, I notice in many many PC ports that I've played microstutter/hitching/stuttering is common as day. But why? In my opinion, microstutter/hitching/stuttering is the single greatest evil in gaming -- input lag is probably the second great evil, but for me microstutter is just a nightmare that ruins my fun and it's just really jarring.

    In general, I see this most in open world games (Assassin's Creed Odyssey, Far Cry 5, Batman Arkham Knight, Outer Worlds), but it does also happen in other sorts of games (Battlefield V in DX12 mode is a stuttering mess of a game in my experience and even the more recent Control on its latest patch stutters occasionally).

    "Cap FPS" you might say -- oh, boy I do (I try in-engine/RTSS/new Nvidia limiter) -- I certainly try, but it often doesn't solve the problem.

    For example, Master Chief Collection (Halo Reach) if you cap to any value other than 60 with the in-engine limiter, the game stutters like crazy. RTSS doesn't work here.

    In Assassin's Creed Odyssey if you cap to any value with RTSS even with zero dips below your target on the frametime graph the game stutters seemingly at random in my tests. The in-engine limiter does the same thing.

    Battlefield V when capping FPS in DX12 mode has the rare, but present microstutter when capped with RTSS -- despite no dips on the frametime graph.

    Witcher 3 is also still a stuttery mess barring an aggressive fps cap in my experience to boot too (Novigrad thrashes the tar out of CPU and seems to microstutter noticeably quite a bit). Dark Souls 3 seems to stutter every now and then seemingly at random and even capping to 30 fps via RTSS did not solve this for me.

    Meanwhile we occasionally get GOOD PC ports like DOOM 2016 and DOOM Eternal which never ever stuttered once for me outside of checkpoints. Also, Hunt Showdown from Crytek is quite smooth in my experience as well for example so it's clearly possible (EDIT: eh, could be a driver issue or something, but this game does have a slight “jitter” with uncapped FPS for me even with Gsync — with capped FPS the game looks noticeably smoother now). Red Dead Redemption 2 and GTAV barely stutter for me ever if at all too so clearly it can be done with open world games.

    Anyway, all that to say, why can't devs seem to get this right? Why is it that so so so many PC ports stutter like crazy/have microstuttering as a problem? Meanwhile on console, those versions simply do not display this problem in my own tests at least.

    I've tested these games on three different PCs for what it's worth (my last desktop/my laptop/my new desktop) and the issue is always there for these example games.
     
    Last edited: Oct 18, 2020
  2. jwb1

    jwb1 Master Guru

    Messages:
    725
    Likes Received:
    156
    GPU:
    MSI GTX 2080 Ti
    Well with G-Sync/Adaptive Sync stuff, you can rule out the monitors.

    Stutter is still there even in console games. Most systems are still mechanic drives loading the data. Now that the new consoles are being built with faster memory based systems perhaps developers will be able to work past this limitation. Developers build things for lowest common spec. Many haven't even properly taken advantage of all the CPU cores available to them.
     
  3. Amaze

    Amaze Ancient Guru

    Messages:
    3,965
    Likes Received:
    1,110
    GPU:
    1070ti 2126/4350
    I didn't have any stuttering in W3, but maybe a later patch borked it? Haven't played any of the other games.
    But I think it mainly comes down to optimization, pc ports are often just easy money for companies with minimal effort. Hence the the term "lazy port".
     
  4. CrunchyBiscuit

    CrunchyBiscuit Master Guru

    Messages:
    273
    Likes Received:
    54
    GPU:
    AMD Radeon HD6950 2GB
    Why can't they get it right?

    Good question. I hate all forms of graphical stuttering with a passion. Missed out on many great games because of this.
     
    BlindBison likes this.

  5. ramthegamer

    ramthegamer Ancient Guru

    Messages:
    4,189
    Likes Received:
    307
    GPU:
    GTX 1070 G1 Gaming
    U should see the freezes in Sniper ghost warrior contracts, that thing.is a mess
     
    BlindBison likes this.
  6. Amaze

    Amaze Ancient Guru

    Messages:
    3,965
    Likes Received:
    1,110
    GPU:
    1070ti 2126/4350
    Another thing that bothers me about pc ports is the lack FOV options. Console games are made for TV's where you sit far away so the camera is cropped way closer. Can lead to headaches and motion sickness.
    Skyrim was one of the worst offenders there but luckily there was a console command for it.
     
    Repo Man likes this.
  7. Carfax

    Carfax Ancient Guru

    Messages:
    2,933
    Likes Received:
    465
    GPU:
    NVidia Titan Xp
    The number one reason for stuttering in games is shader compilation. In some games its more noticeable than others because of how the engine handles it. Some engines are just horrible at shader compilation, ie CDPRs Red Engine 3, and in others, it's practically seamless ie ID's Id Tech 7.

    In well parallelized engines it's not really a problem because shaders are compiled on worker threads, but in poorly parallelized engines it can become an issue because shader compilation is occurring on the same thread as the main rendering thread.
     
    cerebus23, ShadowDuke and BlindBison like this.
  8. BlindBison

    BlindBison Master Guru

    Messages:
    425
    Likes Received:
    70
    GPU:
    RTX 2080 Super
    @Carfax Honestly, Id Tech 7 seems like the greatest engine of all time in my experience at least. DOOM Eternal (and even DOOM 2016 for that matter) were just so so smooth (other than checkpoints which I can somewhat tolerate). Now, I expect Id Tech 7 might not be well suited to Open World games perhaps, but Rockstar's engine seems to stutter not much on my rigs at least so I appreciate the work they must have done there.

    As for Shader compilation, I have to wonder if something else is going on in some cases. So, in Battlefield V for example (DX12) levels stutter a ton but eventually "mostly" stop on a replay of that same level in my tests. Typically Shader Compilation stutter is reflected in the frametime graph in my experience (in that game at least), but some games that stutter do not drop frames in the frametime graph from RTSS, but still stutter.

    For example, in Assassin's Creed Odyssey, if I cap to 60 fps with RTSS or in-engine then simply pan the camera with no fps dips beneath the cap, stutters will happen seemingly at random. Wouldn't those shaders have already compiled at some point if you just keep moving the camera in a circle?

    Also, some game's stutter just because they have an uncapped framerate where capping the framerate greatly decreases stuttering in my experience. Makes me wonder if those games stutter because of bad framepacing or some such separate from shader compilation.

    DOOM 2016 and DOOM Eternal are smooth as butter in my tests variable fps or capped fps so doing it "right" is possible it seems. Rockstar games seem to stutter maybe a little bit from time to time with uncapped fps but look generally smooth to my eye so for open world game's should still be possible since they've been able to do it.
     
    Last edited: Apr 7, 2020
  9. cerebus23

    cerebus23 Ancient Guru

    Messages:
    4,342
    Likes Received:
    566
    GPU:
    evga 8800gts
    ureal games the worst offenders even unreal games that by the fps should be smooth seem to studder like mad.
     
    PhazDelta and BlindBison like this.
  10. Carfax

    Carfax Ancient Guru

    Messages:
    2,933
    Likes Received:
    465
    GPU:
    NVidia Titan Xp
    I think I replied to one of your threads in the driver forum. BF5 does most of the shader compilation when you're loading the level when using DX12, so it shouldn't be stuttering. That's the opposite of DX11 that does the shader compilation when you're actually playing the game. Did you delete the shader cache in Windows?

    From what you're describing, that doesn't appear to be shader compilation. That looks like frame time variation. Frame time is a much more accurate representation of performance than frames per second and whenever you have significant variations in frame time between frames, it can be perceived as stuttering.

    Yeah, bad frame pacing, aka frame time variance.

    Id Tech engine using Vulkan is highly parallel, so everything is running on worker threads. I don't even think it has a main rendering thread. That's the future of 3D rendering for games I think.

    It's taking a while to get there, but contemporary 3D engines are much more parallel than they were even compared to just a few years ago. You can expect this trend to continue with the release of the PS5 and XSX consoles which will both have SMT, and increasing adoption of DX12/Vulkan.
     

  11. ramthegamer

    ramthegamer Ancient Guru

    Messages:
    4,189
    Likes Received:
    307
    GPU:
    GTX 1070 G1 Gaming
    I agree idtech 7 for best engine out there
     
    BlindBison and Undying like this.
  12. AsiJu

    AsiJu Ancient Guru

    Messages:
    6,646
    Likes Received:
    1,715
    GPU:
    MSI RTX 2070 Armor
    Did you also set pre-render limit to 1 (or low latency mode to On) and force vsync from nv cpl?
     
  13. SerotoNiN

    SerotoNiN Ancient Guru

    Messages:
    3,689
    Likes Received:
    1,198
    GPU:
    EVGA RTX 2080
    PC ports still get this type of treatment by developers, "they should just be happy we even brought the game to pc". Even though pc gaming has been proving to be financially successful for several years now, the piracy scapegoat will never leave the platform. Minimal effort by devs. Sometimes can't be avoidable, but most of the time can be. Consoles don't suffer from this nearly as much. Why? They get more love and care.
     
    Undying and BlindBison like this.
  14. ramthegamer

    ramthegamer Ancient Guru

    Messages:
    4,189
    Likes Received:
    307
    GPU:
    GTX 1070 G1 Gaming
    by the way, i just reinstalled farcry 5, and i noticed how much better the game runs with a gtx 1070, on a 970 i was barely making the 50 fps at 1080p, now into 95 and 100 fps, plus, the sharpening option in nv control panel is a life saver, gets rid of the blur while using the TAA option, very happy
     
    Undying likes this.
  15. BlindBison

    BlindBison Master Guru

    Messages:
    425
    Likes Received:
    70
    GPU:
    RTX 2080 Super
    @AsiJu Regarding testing setting MPRF to 1, from what I've read "generally" this is actually not good practice going off of the CaptaPraelium write-up here which explains how FFR (future frame rendering) actually work/why it defaults to 3 usually (notably, if the GPU can keep up or is faster, then really we are only queueing 1-3 frames, not always 3 if I'm understanding correctly -- this aligns with Nvidia's comment as well I read where they say Low-Lag mode off means the game will queue 1-3 frames iirc): https://www.reddit.com/r/BattlefieldV/comments/9vte98/future_frame_rendering_an_explanation/

    Digital Foundry talked about this in their 2080S review iirc (one of their video's reviewing GPUs, can't remember, but think it's that one) and basically being CPU limited/having the CPU tapped out is one cause of stuttering where the flip queue/prerendering actually helps out the CPU/can keep you GPU limited from what I've read. Notably, in AMDs old tools I recall their "note" for the flip queue setting was that reducing it can cause stuttering also.

    So, generally I leave flip queue/max prerendered frames at default (low lag OFF). That said, I have seen some rather strange results -- so, in Overwatch I occasionally got random frametime spikes/stutters when capping to 141 in-engine with reduce buffering OFF. When I turned RB ON, that seems to have stopped, but perhaps something else changed.

    If a game is particularly stuttering and nothing else works, I try tweaking the flip queue (now the low lag setting in control panel), but "usually" it doesn't resolve the problem in my experience.

    Now, one place it can maybe help though I expect is if you're capping FPS very aggressively and have the headroom that you never dip maybe? (So, somebody using a 30 fps limit with half refresh double buffer v-sync might want low lag just to help them out with the lag I mean/might not result in any problems if they have the overhead).

    I'm not that knowledgeable about certain things though so if I'm wrong about anything here, hopefully someone will correct me -- just repeating what I've heard/read on the subject.

    For G-Sync (your other comment/point), I do enable V-Sync ON in the control panel along with a 141 fps limit or some limit beneath that if required for the game not to stutter (blurbusters guide for g-sync basically).
     
    Last edited: Apr 11, 2020
    cerebus23 likes this.

  16. mbk1969

    mbk1969 Ancient Guru

    Messages:
    9,866
    Likes Received:
    6,814
    GPU:
    GF RTX 2070 Super
    Have not seen any through the whole game.
     
  17. AsiJu

    AsiJu Ancient Guru

    Messages:
    6,646
    Likes Received:
    1,715
    GPU:
    MSI RTX 2070 Armor
    Yes but did you actually try setting pre-render=1 in Witcher 3 or just decided not to because of theory?

    Also remember that for lowest input lag this is always the optimal setting, or Low Latency On (Ultra goes even further than that).
     
  18. BlindBison

    BlindBison Master Guru

    Messages:
    425
    Likes Received:
    70
    GPU:
    RTX 2080 Super
    Just adding another comment since I just discovered this in Assassin's Creed Odyssey and have observed this behavior in other games as well.

    So, it seems like the following removes the microstutter from Assassin's Creed Odyssey for me (provided I don't dip beneath my target fps at least):

    1) Default Prerender Settings
    2) In-engine FPS cap of 30

    Notably, an in-engine cap of 60, even when I never dipped below my target on the frametime graph still microstuttered seemingly at random every now and then and the same behavior seemed to occur with an in-engine cap of 45 as well.

    With RTSS, didn't matter what I capped to for ACO -- even at 30 fps, the game would still microstutter occasionally despite a perfectly flat frametime graph.

    Notably, I've also seen this in a couple other games. iirc on my last PC, Arkham Knight would microsttuter like crazy if I dared cap it at any value other than 30. For that title, though RTSS worked fine while the in-engine limiter still stuttered.

    Sorta reminds me of Halo Reach / MCC collection as capping to 60 with RTSS will stutter occasionally (with no framerate drops beneath target) while the in-engine cap of 60 does not microstutter.

    All this makes me wonder if the games were "built" to output at a certain target with lots of stuff "hard coded" around that value, but I'm speculating (since ACO for example targets 30 fps on consoles).

    Interestingly the Dark Souls Remastered PC version can no longer be capped at 30 fps -- doing so externally will result in the game running at half-speed. Anyway, I understand developing/porting games is non-trivial, but just makes me wonder if due to consoles being the lead platform the PC port has these weird quirks where changing them would necessitate sweeping rewrites or some such. Of course I'm just speculating here.

    EDIT: Turns out I was wrong -- restarted the game and in-engine or otherwise, even at 30 fps, game still hitches occasionally seemingly at random despite no discernible drop in the fps graph. wtf Ubisoft.
     
    Last edited: Sep 13, 2020
    PhazDelta likes this.
  19. BlindBison

    BlindBison Master Guru

    Messages:
    425
    Likes Received:
    70
    GPU:
    RTX 2080 Super
    @AsiJu I did try on my last PC various flip queue values for Witcher 3, but it did not resolve the behavior in my tests -- only an aggressive fps cap around 30 did (and that was on a 1080 Ti + 8700K at 1440p). Otherwise, I would get occasional microstuttering.

    I have not tried retesting it on its latest patch on my current PC though.
     
    PhazDelta likes this.
  20. tsunami231

    tsunami231 Ancient Guru

    Messages:
    10,829
    Likes Received:
    645
    GPU:
    EVGA 1070Ti Black
    since when is W3 one of those game with stutter? all the video I Seen and reviews I read show it silky smooth at 60 fps? still have yet to install it let alone play it, Screw you skyrim why cant you stop sucking me back int
     

Share This Page