The free-to-play vehicular combat MMO has shown hints that Vulkan support has a work in progress for some time now. It’s still not officially supported but, with some tinkering, you can see how it’s coming along for yourself.
War Thunder [Official Site] has had a long and interesting development cycle. It started life as a airplane-focused combat game and has since expanded to include ground forces and, soon, naval combat. It’s been almost four years since it was ported to Linux and performance has been hit or miss depending on your hardware configuration. That’s why it’s been exciting to hear that the Vulkan API may eventually replace both OpenGL and DirectX 9, especially as we've been stuck with OpenGL 3.3 while the OSX port has gotten Metal support already.
It’s unknown how much longer we’ll have to wait for that to happen but, in the meanwhile, users have figured out how to try out the in-development Vulkan renderer. This post details the steps needed and I went ahead and tried it out for myself.
Here’s a summary:
1) Navigate to the installation directory and then the content subdirectory and create an empty file named pkg_vulkan.rq2
2) Run the War Thunder launcher and let it update
3) Close the launcher and open the config.blk file in the main installation directory with a text editor
4) Change the lines renderer2:t=”auto” and driver:t=”auto” to renderer2:t=”vulkan” and driver:t=”vulkan”
5) Launch the game from the binary named "aces" in the linux64 directory as using the launcher will overwrite config.blk with default settings
Since I’ll be talking a little about performance I should mention that I turned up option including FXAA and every slider I could beyond the maximum preset except for SMAA which was disabled. These results are also at 1080p.
I’m not going to bother with very detailed benchmarks since the in-game benchmarks are poor for judging actual performance in matches and the random selection of maps during online play makes consistency nearly impossible. All the same, here are my results from the most demanding benchmark map:
As you can see, Vulkan about doubled my results. Actual in-battle performance is even better than that benchmark. I played a few rounds of ground forces and, depending on the map and the building density, I was at an average of 75-90 FPS with the minimum always being over 60 and the maximum easily exceeding 120. Playing around with planes produced even more striking results, with the average being in the 170-200 range save for when I was either too close to buildings or in the middle of a large dogfight. The framerate would drop to about 70-90 frames per second in those cases whereas OpenGL would stay in the 35-60 range.
It’s clearly a huge difference, especially when it comes to minimum framerate but the Vulkan implementation is not perfect yet. In forum posts and elsewhere I’ve seen comments that claim that there are rendering issues; some people running Nvidia GPUs have encountered only a black screen on startup. It’s not a universal experience and it seems that certain Nvidia driver versions work better than others.
My own testing with my AMD card only showed a few issues. First, when switching to sniper mode in a tank, smoke effects are rendered incorrectly and become blocky. The sky sometimes also renders incorrectly depending on the weather conditions on the map. The noticeable issue is the occasional microstutter here and there. The latter isn’t too surprising as the developers have previously commented that their biggest stumbling block in doing Vulkan and DirectX 12 was dealing with shaders and multithreading. Other than that, the game was stable and bug-free for the serveral PvP and PvE matches that I played.
Still, all in all, it’s an amazing leap in performance. Granted, it may be less dramatic for Nvidia users but I've seen some comments claiming at least a solid 20-30% performance improvement. It should go without saying that if you do decide to try out War Thunder with Vulkan, you're on your own support-wise as this isn't something that the developers have planned to expose to the masses yet.