Baldur's Gate 3 Act Three massively hits CPU performance - but why?
And is there anything you can do about it?
Shortly after our main Baldur's Gate 3 content 'dropped' last week, I noticed a range of comments suggesting that the further you played into it, the more the performance characteristics changed. Early access veterans wanted more specific testing of the third act in particular and thanks to a game save bestowed upon us by Twitter user DarknessFX, we had access to a 99-hour save and were ready to dive into some stress test performance testing.
So, what's so special about the third act? Put simply, it's all about density, with the action shifting to the city of Baldur's Gate itself, a large city in the series lore, with many NPCs. In my core review last week, I noticed that mid-spec PCs struggled in more populous areas and just running through the city demonstrates that the NPC count here is significantly higher. The density here adds considerably to the CPU burden - and I think it amplifies other issues as a result, not visible in our initial work.
One of the quirks of this heavier performance in Act Three is that movement makes the game visibly heavier on the CPU. In one particular static scene, I noted a 90fps frame-rate on a Core i9 12900K, but just moving the character around in mini-circles hit performance by 20 percent, even though the view and amount of objects on-screen is essentially the same. The frame-rate is lower, but more pertinently, frame-times are spikier.
Another issue found in the third act arises from camera transitions into cutscenes or conversations, something which happens consistently in areas in this area. Transitioning into cutscenes normally causes high CPU usage anyway, but with a generally higher CPU burden in the third act, these pauses to get into conversation are now visibly and noticeably worse. However, the biggest effect you will notice in taxing scenes found in the third act comes down to general frame-time stability - or 'frame health' as I call it. This is better explained visually in the embedded video, but when frame-times can increase by anything from 50 to 100 percent, this presents as stutter. Compounding this are the earthquakes in the city - each earthquake also coincides with multiple large spikes to frame-time, which present like noticeable stutters.
Choice of rendering API can play a part too. Under Vulkan, the game runs NPC-laden areas in a similar - or worse- manner than DirectX 11. So, even though Vulkan can technically be faster in empty areas on Nvidia or AMD hardware without NPCs, it actually runs worse in areas with many NPCs - around 10 percent worse on my 12900K.
This is a top-tier processor but the impact to performance is frankly disastrous on something like the mainstream Ryzen 5 3600. Performance drops by 50 percent off the bat, but frame-times are so, so much worse. While the 12900K definitely has some frame-time spikes and some jitter to it, the Ryzen 5 3600 is much worse off, where nearly every other frame rendered shows a variance in length that is visible to the naked eye. It runs around at 30fps on average at times, but won't look smooth at all, much in the way Bloodborne on PlayStation consoles never looks smooth, as the per-frame variance is far too high. If one frame to the next shows a 40 to 50 percent increase in frame-time, that can't be smoothed over, meaning the FreeSync and G-Sync are not going to help you here.
And it can get worse too. What if you are a sorcerer in Act Three and use a number of summoned creatures? On a 12900K, performance drops by 10 percent, with more erratic frame-times. Every few frames, one is more expensive than the others - which may be a path-finding, animation or AI update. It's hard to know of course, but on an older mid-range chip like the Ryzen 5 3600, this AI update every few frames is amplified and leads to disastrous results. The frame-rate number suggests a drop of a mere six percent, but frame-times can increase by 50 percent, leading to jerky movement that never looks smooth. Act Three truly is a monster then, and older Zen 2 chips just don't seem to be up to the task.
So, the calls to examine Act Three in particular were justified. Baldur's Gate 3 just runs plain worse - but it is explainable worse as there's a lot more AI on-screen, amplifying CPU limitations. And there's not much you can do about it either. At the absolute lowest settings, one can see how the average performance is lifted by just around 14 percent. Frame-times are a bit less erratic, but all those earthquakes still cause big frame-time spikes, and now you're losing a lot of the visual splendour thanks to the hit to level of detail. Can Vulkan help here? Not really, I was a seven percent performance hit - DX11 remains the best way forward.
A 30fps cap, perhaps? The inbuilt frame-rate cap produces inconsistent frame-pacing with v-sync active, while even Nvidia's steadfast half-rate adaptive v-sync control panel option still sees some spikey frame-times due to CPU limitations. It is more consistent though, so an option like this, or Kaldien's SpecialK limiters may be worth looking into.
Is this performance justified and can it be fixed? To answer that, I think we can look at how the performance scales with the amount of cores and threads. When looking at the Core i9 12900K, we see some interesting data when examining how the game runs across different amounts of cores and threads. The best performing combination here is actually eight cores without hyperthreading on. Eight cores only performs four percent better than six, while the fully enabled 12900K is just two percentage points better than the six-core result, despite doubling threads and available cores. Eight p-cores with hyperthreading enabled is the worst result of all, a touch slower than the six core result.
As I see it, that scaling shows me that Baldur's Gate 3 needs some more work, with better utilisation of many-core processors (and perhaps an understanding that users are unlikely to turn off hyperthreading at the BIOS level). A focus on reducing stutter caused by earthquakes and camera positional changes would also be welcome.
Vulkan remains a question mark. Its purpose seems void if it does not improve CPU performance when you need it most, and a good, performant Vulkan implementation could be the basis needed to help the CPU-limited issues. With all of this in mind, it'll be fascinating to see how the PlayStation 5 version stacks up, bearing in mind it's using the same Zen 2 architecture as the Ryzen 5 3600 that struggles so much in the Act 3 environment.