Forums

Unified Linux Wine Game Launcher

When will this be implemented in PlayOnLinux?

Auteur Réponses
DrM1173 Lundi 17 Juin 2024 à 7:57
DrM1173Anonymous

At https://github.com/GloriousEggroll/wine-ge-custom/releases/tag/GE-Proton8-26 I read about implementing ULWGL (Unified Linux Wine Game Launcher), now called UMU:

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:

lutris/lutris@c16242b
lutris/lutris@abd8d9c

Heroic-Games-Launcher/HeroicGamesLauncher#3480

For tracking further information and changes ongoing ULWGL all repositories can be found here:

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

 

Now that other Wine frontends such as Lutris and Heroic have begun implementing this, when will PlayOnLinux follow? Because it would be very great when using an unified wine game launcher.

Edité par DrM1173

This site allows content generated by members, and we promptly remove any content that infringes copyright according to our Terms of Service. To report copyright infringement, please send a notice to dmca-notice@playonlinux.com