What does it take to run Arkham Knight smoothly on PC?
Digital Foundry aims for console parity - or better - with the sorry PC build.
Is it actually possible to run the current, hobbled version PC of Batman: Arkham Knight at 60fps at any resolution? Indeed, is it actually capable of matching the 30fps performance profile of the console versions without investing a small fortune in hardware? Rocksteady and PC port developer Iron Galaxy are currently working on substantially improving the lacklustre performance, and the game itself is currently withdrawn from sale. But for those of us lumbered with the existing code, what can be done to get a decent experience?
The community is doing its part to improve matters, of course. This particularly impressive deep dive into the .ini variables offers up some improvements, but we still measure dips below 40fps in problematic areas, producing a sub-optimal experience that doesn't match the sheer consistency of the console versions. For those that aren't so sensitive to the stutter we experienced, Kaldaien's tweaks could serve you well, but it's fair to assume at this point that if the game could be fixed by replacing a bunch of .ini files, the developer would probably have done so. After all, easy fixes - like restoring the rain effects and ambient occlusion missing in the original release - were deployed in a patch released on June 27th.
Arkham Knight has severe problems on PC, which appear to derive from a sub-optimal approach to memory management. On console, developers have 5GB of memory that can be used at will for game and graphics. On PC, memory is split - divided between system RAM and your GPU's VRAM. The evidence suggests that the game struggles to effectively stream fast enough from one pool of RAM to the other, and clearly struggles with graphics cards with 2GB of memory or lower (spectacularly so when it comes to certain AMD cards, as you'll see later). On top of that, there are other issues: the CPU requirement is quite high despite relatively low measured utilisation, and transparent textures - smoke, explosions etc - inflict a heavier impact on GPU resources than we would expect.
But despite this, based on our experiences, Arkham Knight performance and visual effects on PC can match or even exceed the console versions - depending on your hardware of course. The game is clearly in need of radical improvement, but it can hand in an acceptable experience on some mainstream PC gaming hardware. You just have to bite the bullet and accept for now that 30fps remains the best bet for consistent performance. There's just one problem with that though: even Arkham Knight's in-built 30fps limiter needs to be fixed too.
The 30fps cap found in the console versions of the game is well implemented. The concept of getting this right is not difficult to grasp: a new frame is followed by a duplicate, and the cycle continues. Each frame should persist for 33ms - two screen refreshes on a 60Hz display - to ensure a stable update. On the rare occasions that the render doesn't finish a frame in time, the game drops v-sync and splats the new image on-screen as soon as it is ready. That'll be during a screen refresh, producing screen-tear. It only happens infrequently on both PS4 and Xbox One.
The PC version of Arkham Knight is hard-wired to produce 30 frames per second, but it doesn't particularly care how they are displayed. With v-sync engaged, frames are delivered at 16ms, 33ms, 50ms and sometimes even longer intervals. Even though you're getting '30fps', it looks significantly lower because of the lack of consistency. You can increase fluidity by turning v-sync off, but then you're lumbered with constant screen-tear that you simply don't get on console and that we'd prefer not to see at all.
The solution? First of all, we need to disable the ham-fisted 30fps cap the game ships with. Find the game install (look for Steam Apps\Common in your Program Files folder) and open BmSystemSettings.ini in the Batman Arkham Knight\BmGame\Config folder. From there, search for "Max_FPS=30" and change that to something like "Max_FPS=120". Now, for Nvidia owners, instigating a proper 30fps lock is very simple. Right-click on the desktop, select the Nvidia control panel, and under 3D settings, select the Arkham Knight executable. Under v-sync, select half-rate adaptive.
This solution engages pretty much the same rendering strategy as the console versions - you'll get full v-sync at 30fps, with tearing only present should the renderer dip below that target frame-rate. In terms of how that looks in terms of those troublesome Batmobile areas, check out the videos on this page. It's the only solution that gives us the same level 30fps as the console versions, and we got the same results whether we were using an SSD or a mechanical hard drive. Overall, we could get okay results using a Core i3 4130 and a GTX 750 Ti (our 'go to' budget PC configuration), but a Core i5 quad-core processor combined with a GTX 960 gave us a fluidity that matched and even slightly exceeded the PS4 version, and we could invoke two of the four GameWorks effects on top too.
However, PC gaming is about scalability - we want to see a return from more expensive hardware. If we're effectively limited to 30fps for something resembling stutter-free, consistent gameplay, what options are there to actually making use of higher end PC hardware? Obviously, resolution is a key differentiator - rather than spending GPU cycles on higher frame-rates, they can be utilised on running at 1440p or even 4K, assuming your hardware has the necessary capacity. Nvidia owners may be tempted to go for DSR - rendering at a much higher resolution at the driver level before scaling down to the display's native pixel count. This allows for more refined image quality, particularly in terms of anti-aliasing. Unfortunately, the bad news is that in our testing, DSR kills the effectiveness of half-rate adaptive v-sync, introducing judder.
Nvidia GameWorks features can be added, like enhanced smoke effects and additional paper debris. Bizarrely, these features appear to kick in a DirectX 10 variant of the code, and once again the half-rate adaptive v-sync option we use for even frame-pacing is nerfed as a result. Enhanced rain and light-shafts can be utilised though, and the good news is that these two GameWorks effects are also on the table for AMD card owners too. The bad news is that the impact on GPU load isn't really matched by any massively impressive leap in graphical quality.
So where does this leave owners of AMD graphics hardware? The remarkable specs released by Warner Bros suggest a 3GB minimum VRAM allocation for 720p (!) gameplay. Our tests across a range of different Radeon GPUs provided a somewhat more positive outlook overall, but there are still some fundamental issues to address. First up, our favourite £150 GPU - the Radeon R9 280 3GB - handed in decent-enough performance at 1080p with console-equivalent settings, with enough headroom left over for the enhanced light-shafts and rain. However, its direct replacement - the R9 380 (in both 2GB and 4GB iterations) produced some of the absolute worst stutter we had seen. Check out the analysis snapshot of Batmobile gameplay below, taken with the game running fully unlocked with v-sync disabled. The R9 380 has fundamental issues, and that extends to its predecessor, the R9 285 - based on the same Tonga processor.
Stutter also proved a noticeable - but less catastrophic - problem on the R7 265, based on the Pitcairn chip found in the HD 7850, 7870, R9 270, 270X and 370. This level of stutter extended to testing with the 260X too. We suspect that this actually is down to the 2GB of VRAM being a primary limitation, whereas something more sinister is going on with the R9 380 and equivalents (where even 4GB doesn't help). We also tested the Radeon R9 290X, based on the Hawaii processor - also found in the 290, 390 and 390X. Results here weren't bad, presumably down to the decent amounts of compute power paired with 4GB of memory.
The bad news is that we couldn't get any form of half-rate adaptive v-sync to work on AMD cards. It's not a feature in the driver, though it is present in a third party tool - Radeon Pro. Unfortunately, we couldn't get that to work at 30Hz with this game. That's a shame, because this is the only way we could get a consistency to in-game performance that matched the console versions of Arkham Knight.
What's clear from our testing is that the PC version of Batman: Arkham Knight is capable of handing in a performance profile on par with console, but you need higher specs than we would expect even to hit a consistent 30fps, and anything approaching a locked 60fps really is completely off the table (we even tried with an overclocked Core i7 4790K with a 12GB Titan X - no dice). And that's a problem. The allure of the PC is its inherent scalability, the ability to mould the gameplay experience according to your specific needs - and of course your chosen hardware. Arkham Knight is an assault on the appeal of the platform on several fronts: it's too demanding on CPU, it's extremely selective about the graphics hardware it chooses to work with effectively, and it severely limits the directions in which you can take the game in terms of scalability.
So where do Warner Bros, Rocksteady and Iron Galaxy go from here? On top of CPU optimisation, what is required is a fundamental rethink of the way VRAM data is streamed to and from the system memory. It needs comprehensive support for a range of graphics hardware, including 2GB AMD cards, along with robust QA to ensure that disastrous results - as seen with the R9 285 and 380 - are resolved. We've been promised further GPU tweakables: quite what we're likely to get when the console assets are apparently the top-end remains to be seen, but at the very least we'd like see support for improved texture filtering (the game is locked to 4x anisotropic filtering) and more refined anti-aliasing: the technique used in Arkham Knight could be better. And finally, if the developers want to retain the 30fps cap - and we do think that generally it is a nice option to have - even frame-pacing is a must.
There are some grounds for optimism. If we've proved anything, at least we've demonstrated that we have a serviceable bare bones port - something akin to beta code, if you like. It is feature-complete and functional, albeit on selected hardware. Outsourcing such an important title was clearly a fundamental error, but the good news is that Rocksteady is now directly involved and taking responsibility. While there were some problems with the DirectX 11 baubles added to Arkham City, the PC versions of the previous Arkham titles have been very good - the pedigree is there. However, based on the issues we have with the game, there's a long way to go before Arkham Knight on PC is ready for show-time. In the meantime, we can only hope that Warner Bros and other publishers are taking notice of what went wrong here, and that lessons will be learned.