After chatting on Twitter with a fellow Rocket League enthusiast about the performance of the game, I decided to take a look.
Rocket League originally released for Linux back in 2016, using an older build of Unreal Engine 3 with OpenGL as the renderer. With that in mind, it's one of the older major Linux ports available to us. Age is just a number though, it's a fantastic game. It's not perfect though and there's plenty of room for improvements.
To demonstrate this (and see how far D9VK has come), I've taken a look at it three different ways:
- Firstly, there's the native Linux version of course.
- The next, is the Linux native version again, but this time using NVIDIA's threaded OpenGL optimizations (more info here) which NVIDIA rarely switch on by default (there's about 7 titles in their whitelist for it) and Rocket League doesn't tell the driver to turn it on. To use it, simply add:
As a launch option on Steam for any OpenGL game.
- Finally, there's Steam Play using the experimental D9VK (added in Steam Play Proton 4.11) which translates the Windows version into Vulkan to run it on Linux. Use "PROTON_USE_D9VK=1 %command%" as a launch option on Steam to use D9VK with Direct 3D 9 games.
For reference: The testing was on an up to date Manjaro Linux install, using an NVIDIA 980ti and the 430.26 driver with an Intel i7-5960X. Results will obviously vary based on CPU/GPU and more.
The results are pretty surprising, using the same replay of a crowded 3v3 match on probably the most demanding map in the game at 1080p with all settings maxed out:
Note: This map does have one issue where the area outside the playing field is rendered differently. The Linux version is too bright and shows too much, the Windows version with Steam Play and D9VK version is much more correct.
As an additional measure, here's another video during a 2v2 match on a different map using the exact same testing method:
As we can see, without NVIDIA's threaded optimizations the Linux version comes in dead last easily in both videos. With it, performance is much closer and it's smoother but Steam Play with D9VK comes out on top in both. There's a few moments where the Linux native build with threaded OpenGL beats Steam Play with D9VK but not many. Impressive really, since D9VK is classed as "experimental" and likely has plenty more optimizations still left to be done before it's ready.
So what's the takeaway here?
Well, Rocket League on Linux can be enjoyed quite easily and Psyonix (the developer) should absolutely enable NVIDIA's threaded OpenGL optimizations on Linux. They don't even need to update the game, they can just add the launch option themselves by default. If you do have some performance issues, Steam Play can likely make the experience even smoother again. The biggest difference is hitching, with Steam Play the game remains a lot more fluid overall. This doesn't mean Steam Play is suddenly better than native games of course, it all depends on how the game was ported to Linux. To be clear, with Steam Play it has its own issues that I've not seen in the native Linux version. Sometimes with Steam Play the game will repeat bits of audio, crash and hard-lock my PC (rare but it happens).
Also we are comparing OpenGL to Vulkan, that alone can make a big difference depending on the implementation. It's all about the time spent on the Linux version, with Steam Play (as shown) clearly Linux is a gaming platform that can perform well (and in many cases threaded OpenGL does great too). With enough time and a bigger market share, developers would spend more time on their Linux ports. First we have to get there.
The article was updated after publishing with a second video and some wording adjustments.