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:

  1. 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.

  2. 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.

  3. 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:

  1. 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

  2. Launcher then passes the ULWGL ID to the ULWGL launcher

  3. 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:

https://github.com/Open-Wine-Components

  • @JDubbleu@programming.dev
    link
    fedilink
    1311 months ago

    This feels like when the Mighty Morphin’ Power Rangers combined to make the Megazord.

    I’m cautiously optimistic because despite their solution being simple in nature it will still take a fuck ton of work and community effort to get the proposed Protonfix DB going. With that said I have no doubt this will be awesome once it’s completed, and I cannot wait to try this out! Stuff like this makes me wish I was a systems/OS dev and not backend/API/cloud.