Changes:
-
Update wine bleeding edge
-
Rebase staging patches
Additional notes:
I won't outright say this is the last wine-ge build, but we are getting close. The reason is that myself, alongside the other devs for lutris, heroic, and bottles, have begun working together on ULWGL (https://github.com/Open-Wine-Components/ULWGL-launcher?tab=readme-ov-file#what-is-this).
Essentially ULWGL will allow you to run your non-steam games using Proton, Proton-GE, or other Proton forks using the same pressure vessel containerization and runtime that Valve use to run games with Proton. This means your games will run the exact same way as proton runs games, but outside and independant from Steam.
A vital part of this is that we've begun to build the ULWGL database (https://github.com/Open-Wine-Components/ULWGL-database), which provides various existing launchers and related tools a way to get unified game fixes (winetricks, dll overrides, environment variables, etc) for non-steam games.
To explain it briefly, the current path for running games in wine is like this:
-
some installer with a custom script (lutris, heroic, bottles, etc) starts the install via wine. This custom script may contain things the game needs like winetricks, dll overrides, environment variables and so on.
-
when the script runs, it starts wine using either a custom runtime (lutris and bottles currently have their own, heroic uses system libraries if i recall) or native system libraries. It calls winetricks or sets overrides or environment variables as directed by whatever script is running. Keep in mind the install script solely depends on who made it (lutis, bottles, heroic,?) and they can all differ or be completely missing fixes altogether.
-
wine then runs the game using either native system libraries or whatever custom runtimes are configured for whatever launcher is being used (lutris,bottles, heroic)
That's a lot of points of failure between different launchers. The script could differ between launchers. Scripts could have different winetricks or overrides or environment variables between launchers. Runtimes could differ or not exist at all.
With ULWGL -- all of that is handled under one unified roof. So the way to run wine games changes:
-
Launcher passes 'codename' and 'store' to the ULWGL database. The database then provides a ulwgl ID for the game based on the codename and store it received
-
Launcher then passes the ULWGL ID to the ULWGL launcher
-
ULWGL launcher then launches the game using proton + valve's runtime + pressure vessel environment (the same thing used in proton in steam), and uses the ULWGL ID to identify protonfix scripts and apply them. Protonfix scripts essentially replace the install scripts various launchers use.
This way all games have the exact same running environment and the exact same protonfix scripts, and work can be done in unison to fix any problems on the protonfix script instead of each and every individual launcher script or other external files.
This is why Wine-GE will eventually no longer be needed, because ULWGL makes its need obsolete by allowing non steam games to run with Proton in a unified runtime environment with unified fixes. The original purpose wine-ge was created is because at the time there was no way to run non-steam games with Proton PROPERLY. Sure, you could hobble some scripts together and do it, but the biggest part of the problem at that time was nobody was using Valve's runtime or pressure vessel, which by not doing so heavily breaks parts that Proton relies on to run properly. Now that ULWGL is created, it creates an almost mirrored way to run non steam games the way steam runs steam games in proton. I say almost because of course we've added tweaks and things like protonfixes into the mix.
Lutris and Heroic have already begun implementing ULWGL, with bottles soon to follow:
https://github.com/lutris/lutris/commit/c16242bccadf9e4de691e975013e03924494607e
https://github.com/lutris/lutris/commit/abd8d9c5cdd2dacad2968d63975bddd43953a23b
https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher/pull/3480
For tracking further information and changes ongoing ULWGL all repositories can be found here:
Hell yeah! That containerization sounds nice!
I've been using Bottles for that purpose. It works okay, but not exactly lightweight (in fact far from it).
I do have a question about GloriusEggroll's work. I know it's supposed to iron out corner case bugs for a lot of games, but what is it exactly, a bunch of patches? Why is it not mainlined?
Why is it not mainlined into Proton, you mean? It uses proprietary (not open source) components. Proton is a fully open source project, and therefore cannot incorporate GE's tweaks. But GE is free to continue making his special fork, and it's a great option for most users that don't mind using closed source software.
What proprietary stuff are you talking about? I'm aware that the stuff we'd be running on Proton-GE would be closed-source, but same goes with Proton & Wine.
Codecs for one.
This makes sense. Where can I read more about this?