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.
So old games with a dx9 to vulkan transition might actually run especially well on Intel GPUs compared to native OpenGL ports.
Last edited by Julius on 3 August 2019 at 1:04 pm UTC
Quoting: jensQuoting: LeopardQuoting: 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.
I guess you meant the Windows version of RotTR on Windows is nearly on pair with the native Linux version, right? :)
From what I know the native Linux version performs a lot better than the Windows version on Linux using DXVK. Which is kind of expected (and not meant as criticism towards DXVK) considering both are targeting Vulkan and the nature of how DXVK works vs the possibilities Feral has when porting a game.
Yes. I meant Feral port of this game on Linux performs nearly same as Windows version running on Windows. Windows vs Linux basically.
https://github.com/daniel-schuermann/mesa/issues/36#issuecomment-513079192
This guy did some comparision on this game with Aco + Feral port vs Windows DX12 renderer.
I set the native version fps limit at 120 and it's rock solid. 8700k/RadeonVII 3440x1440 everything maxed out. Without the fps limiter, it bobbed around the 200 mark.
Honestly not sure if I could tell the difference...
Quoting: dpanterHow many fps do you need in RL?Well, it's not just about how high it can go, it's also about smoothness. The native version without gl threaded drops down a bit too hard at times that you can see it. Thankfully, threaded opengl makes it pretty darn good.
I set the native version fps limit at 120 and it's rock solid. 8700k/RadeonVII 3440x1440 everything maxed out. Without the fps limiter, it bobbed around the 200 mark.
Honestly not sure if I could tell the difference...
Quoting: liamdaweThankfully, threaded opengl makes it pretty darn good.
That's a fine understatement. For me the frame rate almost doubles.
Which surprises me: My GTX 970 makes as many frames as your 980 Ti in RL. I use a 6700K. I don't know if this is the reason. There are probably more bottlenecks. In CSGO I have a constant 250 FPS with maximum settings.
In any case, thanks for the hint!
Last edited by 1xok on 3 August 2019 at 8:30 pm UTC
See more from me