A specific frustration has been building among PC gamers for the last couple years: despite the massive leaps in power from modern graphics cards, CPUs and SSDs, the biggest games in the world often still launch with persistent stuttering issues that faster hardware just can’t solve. It’s a game design—or game engine—problem, leading to threads on Reddit with titles like “The way shader compilation stutter is being overlooked makes it terrible to be a pc gamer right now.”
Just a few weeks ago, Redditor Hour_Thanks6235 wrote in that thread: “I have a RTX 4090, and I am getting so annoyed by this I think this might be me slowly going back to console gaming.”
Unreal Engine 4 is a common culprit in the new wave of stuttery PC games, with the Final Fantasy 7 Remake being a particularly high profile example. But it doesn’t have to be this way, and we have proof. Tango Gameworks’ rhythm-action game Hi-Fi Rush came out of nowhere on January 25, with a surprise release the same day it was announced. And an even bigger surprise awaited within: this Unreal Engine 4 game is smoother than a Chuck Mangione flugelhorn solo.
How did they do it? I had no idea, so I asked.
“First, we were careful in choosing performant tech that fits our gameplay and game aesthetics, so that we can have a great CPU/GPU performance base to work from,” lead graphics programmer Kosuke Tanaka wrote over email. “We also track CPU/GPU performance daily at the in-game checkpoints to make sure we aren’t introducing performance problems. We use standard UE4 functionality to adjust latency timings and analysis with profiling tools and careful in-game playtesting to make sure we are providing users with the best gameplay feel.”
Game director John Johanas added that so far since release, Tango Gameworks has gotten “an incredible amount of positive feedback on our work on optimization and how smoothly it runs on even very old hardware,” and I can attest that Hi-Fi Rush runs beautifully on the Steam Deck. But Tanaka’s explanation might make you wonder if other UE4 games just push hardware too hard, or if their developers aren’t noticing the kinds of spikes the Hi-Fi Rush team carefully watched for.
Likely no—many of today’s issues stem directly from the DirectX12 and Vulkan graphics APIs. “The problem is caused by DX12, Vulkan PSO (Pipeline State Object) compilation,” Tanaka wrote. “When a game loads a shader for the first time, GPU drivers begin compilation causing hitches. Devs spend a lot of time replaying the same scene, so tend to miss PSO compile related hitching.”
Here’s a very quick explanation of what a shader actually is, but the main thing you need to know for this problem to make sense is that your graphics card will compile and store shaders once a game uses them for the first time. This is why using a new ability or entering a new area is most likely to cause stuttering: the game’s basically caught off guard and takes a few hundred milliseconds to pull the new shader out of its pocket. There are other reasons games can stutter, but this is one of the most common culprits right now, and is why stuttering will be at its worst early in a game and lessen over time as you build up a shader compilation, like Tanaka mentioned.
Why is Unreal Engine 4 so notorious, then? The engine has a feature in place to cache shaders and prevent those stutter-causing in-the-moment shader calls, but it doesn’t cover everything.
“Hi-Fi Rush uses Unreal Engine 4’s PSO Caching functionality to avoid large hitches,” Tanaka wrote. “UE4 misses some cases such as certain lighting shader combinations, computer shaders, Niagara VFX, and these may still cause hitches. In Hi-Fi Rush, some hitches remain, but they are mostly during certain cutscene transitions that don’t affect gameplay. In another one of our UE4 titles, Ghostwire: Tokyo, we currently preload problematic assets in the title screen background to minimize hitching and try to provide a better gamer experience.”
Hi-Fi Rush uses DirectX12 (but unlike with FF7 Remake, you don’t have to switch to DirectX 11 to avoid stuttering). If there’s a secret to Hi-Fi Rush’s success, then, it’s simply going above and beyond how Unreal Engine 4 works by default to ensure that any shaders or assets that could come up during gameplay are cached before the game asks for them. Other developers, like The Ascent’s creative director Tor Frick, have previously lamented how the PSO caching misses Niagara effects and also doesn’t work for raytracing shaders.
Valve is actually doing something similar at the system level for the Steam Deck, which is why Elden Ring was actually less stuttery on the Deck than on PC when it launched last year. “We have a unique GPU/driver combination to target, and the majority of the shaders that you run locally are actually pre-built on servers in our infrastructure,” Valve’s Pierre-Loup Griffais told Digital Foundry. “When the game is trying to issue a shader compile through its graphics API of choice, those are usually skipped, as we find the pre-compiled cache entry on disk.”
More games, especially Unreal Engine 4 ones, need to make sure their shaders aren’t slipping through the cache. As for players—as frustrating as it can be to run into a lengthy shader compilation load when you boot up a new game, just grab a snack and remember you’re facing the lesser of two evils.