When looking at the state of PC releases in 2023, it’s easy to start pointing fingers. The game isn’t optimized (whatever that means), or the publisher rushed it out too quickly, or the graphics cards Nvidia has been selling us come with too little VRAM. But these accusations, in most cases, are half-baked and presumptuous, and although they hint at reality, they don’t tell the full story.
I wanted to know what was actually going on, so I sat down with a few developers to understand the state of PC games and why so many releases have arrived with such big problems. More importantly, I wanted to know what developers and publishers could do to solve these issues, and although the path forward isn’t clear, it’s becoming obvious that developers know there’s a problem.
First, we need to identify the core issue with the PC, especially when games ship in playable (if not perfect) states on consoles but arrive horrendously broken on PC. At a high level, the problem with the PC as a platform is exactly what makes it so enticing in the first place: flexibility.
Marc Whitten, senior vice president and general manager of Unity Create, says that “the sheer diversity and variability of PC configurations that games will be played on … can definitely expose unexpected issues.” Whitten also points to “different operating systems and new driver updates, heat and latency, and user customization” as factors that can play into the problem.
That’s the answer, I’m sure, that most people assume is the explanation.
But the issue, according to Whitten, is not a lack of testing itself. He asserts that games are “generally tested extensively throughout development.” The problem comes down to the scale of different configurations that developers need to test, as well as variables they can’t account for.
As a thought experiment, let’s say a developer pinned down 100 different PC configurations to test, varying the CPU, GPU, RAM, and hard drive between them. For the record, this is a number I’m just pulling out, not something a developer actually referenced as a realistic goal. Now, take all of those configurations and multiply it by dozens of additional factors: What OS are you using? What version of that OS? How about the driver version? What BIOS settings are enabled? Do you have any software running in the background like Razer Synapse or Corsair iCue?
The scope of possible configurations goes far beyond just what CPU and GPU you have in your system, and these factors can easily multiply into tens of thousands of scenarios that developers simply can’t account for. In an ideal world, developers can fix the biggest problems for the most popular PC configurations with the newest driver and OS updates, leaving only small, specific issues to address after launch.
Whitten isn’t alone in this sentiment, either. John Johanas, game director of Hi-Fi Rush and The Evil Within 2, says that “it’s pretty unrealistic to think that you can make a product that will run flawlessly on what feels like an unlimited configuration of CPUs, GPUs, memory, and more likely, what is running in the background.”
Hideyuki Miyashita, systems programmer on Hi-Fi Rush, agreed, but specifically pointed to the cost of optimizing a game for every possible configuration: “In terms of PC performance, making each graphics feature scalable for different configurations would be ideal; however, development costs put an upper ceiling on realistic scalability support.”
This isn’t a new story. The large swath of PC configurations is the common culprit in everything from how difficult it is to optimize games on PC to why we haven’t seen Xbox’s Quick Resume show up in Windows. The question is what developers can do despite the limited time and money they have. Because PCs aren’t getting any simpler, and games are still arriving on the platform broken.
We have a lot of examples of games doing PC support wrong this year. One prime example is Star Wars Jedi: Survivor, which currently sits at a “Mixed” review status on Steam despite being one of the most widely acclaimed games of the year. The top review reads: “A single crash corrupted my 140-hour 99.8% NG+ save file.” Yikes.
I reached out to the development team to get an idea about what went wrong, and although they were initially receptive, EA stepped in and stopped returning my emails. So, instead of looking at what games do wrong on PC, we need to look at what developers do right.
Hi-Fi Rush is a prime case study. It’s a new game from a AAA studio, and it uses the infamous Unreal Engine 4. You might think it’s comparing apple to oranges between Hi-Fi Rush and a game like Star Wars Jedi: Survivor, but they have more in common than you might suspect. As Johanas points out, “… the fact that the game has a cartoon aesthetic will give some users a perception that the game shouldn’t be a problem to run on anyone’s PC. Realistically, the game does a lot of things to achieve the look we went for and the constantly moving world that is very taxing … I knew that going in and made sure we tried to hit those expectations.”
Setting that goal from the start seemed important to Hi-Fi Rush‘s stability. The developers note that it was a design goal from the beginning to maintain at least 60 frames per second (fps) due to the fact that it’s both a rhythm game and an action game, where falling short of that mark would cause “hiccups [that] could result in a desync from music and a perceived poor gameplay experience,” according to Johanas.
How did the team at Tango Gameworks pull it off? It widely boils down to three main points: careful VRAM monitoring, asynchronous operations, and PSO caching.
According to Kosuke Tanaka, lead graphics programmer for Hi-Fi Rush, the team monitored VRAM usage throughout every step of development. That includes monitoring each level, of course, but also each art section’s VRAM usage, asking artists to lower texture or mesh memory usage to fit within the game’s budget. This isn’t uncommon in game development, either.
What works in Hi-Fi Rush‘s favor is its strong artistic direction. As Tanaka points out: “Our art style helped us a bit because we don’t require traditional PBR textures such as normal maps, roughness maps, or metallic maps.” It’s a testament to working with creative limitations, and how that can influence the stability of the final product. Johanas says that it wasn’t a matter of a smaller scope — it was a matter of having “no need to go big for no reason.”
I asked the team what it learned from Hi-Fi Rush that it could carry into larger, wider projects, but that’s not exactly how Tango is taking lessons from the game. In fact, the development team told me it learned much more about optimization from Ghostwire: Tokyo, which fits into more of the traditional AAA mold, and it carried those ideas into Hi-Fi Rush, not the other way around.
“We learned a lot of our knowledge about how to deal with in-game stuttering in Hi-Fi Rush from our experience optimizing Ghostwire: Tokyo,” Miyashita told me. A big part of that was Pipeline State Object(PSO) caching. This is a feature available in Unreal Engine 4 that helps reduce stuttering by precompiling shaders before you run the game.
The main problem is that Unreal Engine 4 doesn’t do this automatically, leading to situations where the shaders need to compile while you’re playing the game, which causes a stutter. Miyashita says “this resulted in some post processes and VFX to cause stuttering.” The programmer also says that PSO caching is optional, so it needs to be a specific focus for the developer.
Caching doesn’t solve every issue, though, and that’s where asynchronous operations come in. The Hi-Fi Rush team used asynchronous compilation — where shaders are compiled separately from the game thread — but it was also a big focus considering the game ran on Unreal Engine 4.
As we’ve seen with other Unreal Engine 4 games like Star Wars Jedi: Survivor and Redfall, the engine isn’t very good about scaling to the many threads available on modern CPUs. As Miyashita explains: “How difficult supporting multi-threading can be is highly dependent on the used engine’s architecture. Unfortunately, UE4 falls a bit short in this respect.”
In particular, Unreal Engine 4, according to the developer, places actor (objects/characters) and widget (UI and overlay) creation on the same CPU thread as the game. That means that whenever the game wants to, for example, load a new character in, it takes priority on the thread. Miyashita says “this can result in complex actor and widget creation blocking the game thread for a long time.” That’s a stutter.
The solution is asynchronous operations. Miyashita says the team uses analysis tools to pinpoint what the CPU is doing as objects are brought in, and that they make an effort to move those tasks to different threads so the game doesn’t slow down. This specific targeting can help with resource loading as well. Moving those operations into a parallel structure can avoid the pitfalls of streaming stutter present in games like Dead Space.
The games that are coming out in disastrous states today began their development years ago, so although I’m hopeful that PC releases will improve as the year continues, it may be several years before we see these core issues addressed.
Whitten says that “developers are as concerned about performance as players,” and that’s a sentiment I’ve heard several times. There are ways to optimize PC releases, from pre-caching shaders to asynchronous operations to validation on a wide variety of hardware. But the reality is that developers can’t account for everything, due to time or money, and usually both.
The way forward here is simple. First, let the publishers of these games know that you’d rather see a delay than a broken game. Shouting at developers won’t do much — they already know the problem, and they’d probably like it solved just as much you. Second, be cautious about picking up a new PC game on release day. It’s hard being patient when you’re looking forward to something (believe me, I know), but waiting to buy a game until the issues have been fixed sends a strong signal to publishers to invest more time and resources into making sure games are polished on PC.
It’s easy to forget that this is still uncharted territory. Now more than ever, games are arriving on PC the same day they arrive on consoles, much unlike a few years ago where PC ports arrived months (or even years) later. Two console generations ago, most games only shipped on the same day to one platform; in the previous generation, it was two. Now, developers are expected to ship to three platforms at minimum on the same day, and sometimes upwards of five if they have a last-gen version.
It’s not hard to see why there are issues on PC given that context, but hopefully more polished releases are on the way.
This article is part of ReSpec – an ongoing biweekly column that includes discussions, advice, and in-depth reporting on the tech behind PC gaming.
The worst PC ports of all time — and why they were so bad
Star Wars Jedi: Survivor is being review-bombed on Steam as a ‘total crap’ PC port
How Unreal Engine 5 is tackling the biggest problem in PC gaming
I built a couch gaming PC that puts the PS5 to shame — and you can too
We’re not in a GPU shortage, but it sure feels like one