Every article tag can be clicked to get a list of all articles in that category. Every article tag also has an RSS feed! You can customize an RSS feed too!
We do often include affiliate links to earn us some pennies. See more here.

So it wasn't enough that Age of Empires 4 from Xbox Game Studios was now playable on Linux, Proton Experimental has once again been upgraded to get Forza Horizon 5 off the starting line. That's right, you can now play the latest (and greatest?) from Playground Games and Xbox Game Studios on Linux.

That was the single change noted in the update notes from Valve for Proton Experimental for November 11. It should work across both AMD and NVIDIA GPUs now too, although it's all still experimental of course and currently multiplayer is problematic. Buy at your own peril for now but hey — a couple days from release is pretty damn good for the latest title to begin working. Have to hand it to the developers at Valve and CodeWeavers working on Proton, they certainly know their stuff.


Screenshot - Steam.

See the Proton Experimental changelog to see all the current differences.

Need to know how to actually use Proton Experimental? Here's a simple HOWTO (as it's not complicated!). Make sure it's installed by searching for it in your Steam Library, then select it from the Compatibility menu in the Properties section of a game. See our quick video below:

For an explainer in text form:

  1. Search for Proton Experimental and install if not already.
  2. Right click any game on Steam and go to Properties.
  3. Select the Compatibility menu on the right side.
  4. Ensure the "Force the use of a specific Steam Play compatibility tool" is ticked.
  5. From the dropdown box that appears select Proton Experimental.

You can buy Forza Horizon 5 on Steam.

Article taken from GamingOnLinux.com.
Tags: Proton, Steam, Valve
27 Likes
About the author -
author picture
I am the owner of GamingOnLinux. After discovering Linux back in the days of Mandrake in 2003, I constantly checked on the progress of Linux until Ubuntu appeared on the scene and it helped me to really love it. You can reach me easily by emailing GamingOnLinux directly. You can also follow my personal adventures on Bluesky.
See more from me
The comments on this article are closed.
All posts need to follow our rules. For users logged in: please hit the Report Flag icon on any post that breaks the rules or contains illegal / harmful content. Guest readers can email us for any issues.
17 comments

NameHere Nov 12, 2021
I often see this sort of thing and wonder: are these general fixes to proton that have been missed?

Or is there now a line in proton something like:
if
Age of Empires 4 do these things,
else if
Forza Horizon 5 do these other things

Why are game specific fixes or hacks needed so often?
Liam Dawe Nov 12, 2021
I often see this sort of thing and wonder: are these general fixes to proton that have been missed?

Or is there now a line in proton something like:
if
Age of Empires 4 do these things,
else if
Forza Horizon 5 do these other things

Why are game specific fixes or hacks needed so often?
A lot of it is because Wine, DXVK and VKD3D-Proton are incomplete and chasing often moving targets. It's a matter of completing API support for Direct 3D, Windows APIs and so on. In some cases, there are specific fixes for certain games, like forcing your GPU to be shown as a specific vendor and stuff like this.
whizse Nov 12, 2021
View PC info
  • Supporter
I often see this sort of thing and wonder: are these general fixes to proton that have been missed?
It's mostly incomplete or unimplemented functions and libraries with a few hacks mixed in.

You can grep the changelog for FH5 to see what was needed:
https://github.com/ValveSoftware/wine/commits/experimental_6.3

Some of it will probably be merged in upstream Wine, some will not.
tgurr Nov 12, 2021
Did someone try this yet and can actually comfirm it works on plain "Proton Experimental"? I'm asking because https://github.com/ValveSoftware/Proton/issues/5285 is a huge mess with questionable workarounds and people throwing in all kind of non related and obsolete information in all over the place.

As the official ChangeLog is just saying it works I just want to ask if:

* Does it *really* work on NVIDIA?
* Does multiplayer work as well?
Beamboom Nov 12, 2021
I often see this sort of thing and wonder: are these general fixes to proton that have been missed?

Or is there now a line in proton something like:
if
Age of Empires 4 do these things,
else if
Forza Horizon 5 do these other things

Why are game specific fixes or hacks needed so often?
This has me confused too. People say it's just an API that's not fully implemented, but what are really the odds of this particular game using a part of a given API that NONE of the other hundreds of games, massive complex AAA included, has not used?
It just doesn't make sense to me. It doesn't add up.
whizse Nov 12, 2021
View PC info
  • Supporter
what are really the odds of this particular game using a part of a given API that NONE of the other hundreds of games, massive complex AAA included, has not used?
Pretty big.

Try grepping the Wine sources for things like "stub", "unimplemented" and "FIXME".

Edited to add:

There might even be a bigger chance of this happening with big AAA releases. There's a bit of a mono-culture in gaming these days. Most games will use an existing engine like Unity or Unreal. This is good for Wine since adding support for one such game usually means many others will be supported inadvertently.

An AAA title might mean a totally new engine, or something very customized. It might very well use other, previously untested parts of an API or use it differently and trip up Wine.


Last edited by whizse on 12 November 2021 at 3:58 pm UTC
rustybroomhandle Nov 12, 2021
* Does it *really* work on NVIDIA?
* Does multiplayer work as well?

The issues reported there for nvidia look very similar to the same issues that still exist today in Forza Horizon 4. With that game it did a weird thing for me where it crashed a lot when I started, but then gradually got less crashy. Maybe related to shader compiling?
sulix Nov 12, 2021
I often see this sort of thing and wonder: are these general fixes to proton that have been missed?

Or is there now a line in proton something like:
if
Age of Empires 4 do these things,
else if
Forza Horizon 5 do these other things

Why are game specific fixes or hacks needed so often?

In the case of Age of Empires IV at least, none of the changes needed were game specific hacks. Only three changes were needed to get the game to work, and all of them were general fixes which could apply to other games:

First, a missing function needed to be added, or the game wouldn't start up:
https://source.winehq.org/git/wine.git/commit/06104aec963f827ddd4f9d41d1ae72983779859f

Then, all of the buildings and units were invisible due to a bug in how things were arranged in video memory:
https://github.com/HansKristian-Work/vkd3d-proton/commit/2a8b5471cadd379720cf383377bc78c44b78e7b9

Finally, a crash would occur as the game used some invalid printf() format specifiers, which windows would ignore, but wine previously didn't:
https://source.winehq.org/git/wine.git/commit/0c6bab9339d62c8952692911f055ccbc95d956f6
whizse Nov 12, 2021
View PC info
  • Supporter
I'm guessing most of you already knows this, but here's a simplified turn of events for Proton/Wine development that's hopefully not altogether incorrect:

The story of Game.exe

Game.exe is released but crashes on start in Wine. It requires Foo() and Bar() library.dll. Foo and Bar are implemented by someone reading the API documentation from Microsoft. Bar isn't really used by the game so a minimal version is added to fulfil the dependency for the game. The game works.

The sequel Game2.exe is released but crashes on start because it needs the full implementation of Bar. Bar is implemented in Wine, the game works.

An update to Game2.exe is released and crashes on start in Wine. Turns out that Game2.exe now calls Bar with NULL instead of the expected integer value. This is undocumented behaviour but works on Windows, so the behaviour in Wine is changed to match Windows. The game works again.

Game3.exe for Windows 11 is released. It crashes on start in Wine. It requires library2.dll to run. Someone figures out that if the game runs on Windows 10 the older library.dll is used instead, a game specific hack that reports version 10 for Game3.exe is added and the game works.

Now multiply this for all the dlls and functions a game need to run and things get complex fast.

(The movie rights to this original short story have already been acquired by Sony Pictures Entertainment™)


Last edited by whizse on 12 November 2021 at 2:33 pm UTC
14 Nov 12, 2021
View PC info
  • Supporter Plus
This is great news, because I was recently thinking that the game looked pretty sweet. Too bad I have an older GPU and would be sad to play on low settings.
TheRiddick Nov 12, 2021
It would be nice if one day Steam allowed you to addon other store API's like how Lutris works. They could then make it so dependencies install correctly and also fix all the issues with add non-steam game.

Allot of people add their non-steam games to steam in order to run via proton but often it won't work because steam doesn't install any requirements to even get the game running.

Also proton/dxvk is still not 100% launcher friendly. For example there are issues with Tarkov BSG launcher and PlanetSide2, the former appears to need some dotnet foolery which should be solved by Mono but isn't...

ONE DAY!
KohlyKohl Nov 12, 2021
I often see this sort of thing and wonder: are these general fixes to proton that have been missed?

Or is there now a line in proton something like:
if
Age of Empires 4 do these things,
else if
Forza Horizon 5 do these other things

Why are game specific fixes or hacks needed so often?
This has me confused too. People say it's just an API that's not fully implemented, but what are really the odds of this particular game using a part of a given API that NONE of the other hundreds of games, massive complex AAA included, has not used?
It just doesn't make sense to me. It doesn't add up.

As a developer who has worked with the Windows API before I can tell you it is very large.

Outside of the Windows API anyone can create their own DLL(this is just a shared library).

For instance, rust DLLs for Windows have been causing problems for Wine recently as that is a newer Language with its own DLLs.

Then you have different version of Windows with different APIs and this all adds up to a constant moving target of things to implement.
fearnflavio Nov 12, 2021
View PC info
  • Supporter Plus
I personally don't like the idea of Steam attempting to install additional software. That's what a package manager is for - and if Steam ever attempts to override it, I'll burn it out of my system if I have to. Or am I missing something outside of that? I don't use Lutris, and I'm assuming the dependencies are installable packages rather than grab-another-flatpak type setup.

I think he is talking about windows dependencies that the game has. Using protontricks in case. Lutris use their own scripts.
Not linux libraries, windows packages like vcrun, dotnet, etc.
Beamboom Nov 12, 2021
Try grepping the Wine sources for things like "stub", "unimplemented" and "FIXME".

Oh I totally believe there's a *lot* of areas where Wine is lagging behind. It goes without saying, really.

But what are computer games?
It's a program that takes user input, writes a shitload of data to the screen and often utilise the network interface. What goes on from one game to another should in principle be pretty much the same, as far as the system libraries goes? Architecturally the programs should share far more than they diverge from each other. As far as I can understand...!

So what on earth could it be that this game used from a system library that all the other games don't?

I mean, I'm not sitting here claiming or pretending to know or understand more than what I do, I am merely asking based on my very limited experience with software development. It's not like we talk about some exotic hardware peripherals here. And it's hard to understand why it should utilise some fringe windows functionality no others do.

*shrugs*


Last edited by Beamboom on 12 November 2021 at 5:52 pm UTC
Purple Library Guy Nov 12, 2021
I'm guessing most of you already knows this, but here's a simplified turn of events for Proton/Wine development that's hopefully not altogether incorrect:

The story of Game.exe

Game.exe is released but crashes on start in Wine. It requires Foo() and Bar() library.dll. Foo and Bar are implemented by someone reading the API documentation from Microsoft. Bar isn't really used by the game so a minimal version is added to fulfil the dependency for the game. The game works.

The sequel Game2.exe is released but crashes on start because it needs the full implementation of Bar. Bar is implemented in Wine, the game works.

An update to Game2.exe is released and crashes on start in Wine. Turns out that Game2.exe now calls Bar with NULL instead of the expected integer value. This is undocumented behaviour but works on Windows, so the behaviour in Wine is changed to match Windows. The game works again.

Game3.exe for Windows 11 is released. It crashes on start in Wine. It requires library2.dll to run. Someone figures out that if the game runs on Windows 10 the older library.dll is used instead, a game specific hack that reports version 10 for Game3.exe is added and the game works.

Now multiply this for all the dlls and functions a game need to run and things get complex fast.

(The movie rights to this original short story have already been acquired by Sony Pictures Entertainment™)
This account underlines for me a major difficulty for Wine: Windows stuff tends to need not just Windows, but stacks of proprietary third-party libraries, which Wine also needs to duplicate.
whizse Nov 12, 2021
View PC info
  • Supporter
It's a program that takes user input, writes a shitload of data to the screen and often utilise the network interface. What goes on from one game to another should in principle be pretty much the same, as far as the system libraries goes? Architecturally the programs should share far more than they diverge from each other. As far as I can understand...!

So what on earth could it be that this game used from a system library that all the other games don't?
So, from a skim of the changes in git, one of the things Forza 5 needed was Performance Counters. These we're technically not required, but the stubs for the functions was changed to return true instead of false to make the game happy.

I have no idea if the game uses those for error diagnostics, or to adjust performance settings during runtime so the game is actually missing some feature?
https://github.com/ValveSoftware/wine/commit/ed0d3339339b397b305ef218c6dcec46f789101e

Another thing was speech synthesizer support. Again, not fully implemented but stubbed in Wine, and again, no idea if that's something the game actually uses. GPS directions maybe?
https://github.com/ValveSoftware/wine/commit/822c137a52117c03f205ad6b0af71d765983f724

🎵🎵 The APIs themselves keeps on expanding and expanding
In all of the directions they can whizz
As fast as it can be implemented, at the speed of light, I read
Twelve million lines a minute, and that's the fastest speed there is 🎵🎵
(Sorry MP


Last edited by whizse on 12 November 2021 at 9:16 pm UTC
Beamboom Nov 15, 2021
This account underlines for me a major difficulty for Wine: Windows stuff tends to need not just Windows, but stacks of proprietary third-party libraries, which Wine also needs to duplicate.

Surely any third-party library will be distributed with the game and not assumed already installed on the given system? It's the underlying layer that is handled by Wine? But it do need to provide the APIs used by those too, of course.


Last edited by Beamboom on 15 November 2021 at 8:26 am UTC
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
The comments on this article are closed.