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:
"__GL_THREADED_OPTIMIZATIONS=1 %command%"
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:
Direct Link
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:
Direct Link
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.
If you wish to join me in adoring Rocket League like a second child (it really is my #1 game), you may find it on Humble Store and Steam.
The article was updated after publishing with a second video and some wording adjustments.
Great project, linux gaming goes from strength to strength. Back a couple of years ago, never thought I'd see the day when a compatibility layer was this good. Thanks to the hard work put into dxvk and now d9vk, amazing.
Last edited by lejimster on 2 August 2019 at 10:10 pm UTC
Is it different for AMD?
D9VK shows absolutely nothing..... of course it is faster
just look at the 1 second..... its just dark... nothing to render
But I've never heard of opengl_threaded_optimizations before, when was it implemented, would it work in 390.87? Or does it require a newer driver?
Last edited by Grifter on 3 August 2019 at 1:02 am UTC
Quoting: mylkaam i the only one looking at the background?That is actually how it is supposed to look. The D9VK version looks almost the same as it does on Windows. The Linux version is way too bright and has no fog apparently.
D9VK shows absolutely nothing..... of course it is faster
just look at the 1 second..... its just dark... nothing to render
Edit: Added a second video to also compare, on a different map, along with some slight adjustments to the wording in places to accommodate it.
Last edited by Liam Dawe on 3 August 2019 at 10:18 am UTC
And nice work you did on this, Liam. All I ever wanted for Rocket League on Linux is to have some freaking AA. Going from Windoze to Linux it was just glaring, starting right in my face. NO AA. Took some time to get used to the looks of that...
Quoting: officerniceFirst off: Great thumbnail, hehehe.Hey, someone noticed :D
Quoting: officerniceAnd nice work you did on this, Liam.Thanks for the kind words!
Quoting: officerniceAll I ever wanted for Rocket League on Linux is to have some freaking AA. Going from Windoze to Linux it was just glaring, starting right in my face. NO AA. Took some time to get used to the looks of that...Yeah, I'm honestly amazed they still haven't fixed AA in the Linux version after years.
d9vk average: 250FPS
(250FPS is the max the game goes to, so it might actually be able to go higher)
Ryzen 5 2600 and RX 570
Quoting: PikoloDoes __GL_THREADED_OPTIMIZATIONS=1 %command% make a difference on AMD GPUs?
no
there is
mesa_glthread=true
D9VK translates from the optimized original version directly to Vulkan, which is (even single threaded) much more efficient than OpenGL.
The "missing" parts in the background on the first video is clearly due to the haze in the water, witch is intentional and is not being rendered at all in the native version, try googeling "rocket league aquadome" and then go to pictures, they all look like the D9VK version!
The second video shows this difference on the smaller details on the goal net, look at time 1:10 in the video, they are there on the D9VK version, but not on the native versions.
Or am I completely off the mark here? :)
Quoting: ZigZagHmm looking more closely I think the D9VK version is rendering everything right and it is the native version that is still filled with render bugs.You are actually correct. I've gone back and checked the Windows version on Windows 10 and looked at some other videos, the D9VK version is actually rendering correctly. With that in mind the note about it was removed :)
The "missing" parts in the background on the first video is clearly due to the haze in the water, witch is intentional and is not being rendered at all in the native version, try googeling "rocket league aquadome" and then go to pictures, they all look like the D9VK version!
The second video shows this difference on the smaller details on the goal net, look at time 1:10 in the video, they are there on the D9VK version, but not on the native versions.
Or am I completely off the mark here? :)
Quoting: appetrosyanIs there a Linux native game that uses Vulkan? I wonder if all the wins are due to OpenGL being bad, or because of something else...Yes. Lately pretty much all Feral ports are on Vulkan. An excellent example on that is Rise of The Tomb Raider.
That is nearly on par with Windows version at performance terms.
Quoting: liamdaweQuoting: mylkaam i the only one looking at the background?That is actually how it is supposed to look. The D9VK version looks almost the same as it does on Windows. The Linux version is way too bright and has no fog apparently.
D9VK shows absolutely nothing..... of course it is faster
just look at the 1 second..... its just dark... nothing to render
Edit: Added a second video to also compare, on a different map, along with some slight adjustments to the wording in places to accommodate it.
but it still explains why native is slower
and imho... i think native looks much better
See more from me