fufexan/nix-gaming

Migrate to umu?

Closed this issue · 11 comments

Looking at the release notes for Wine-GE-Proton8-26 it appears as if the wine-ge builds are soon coming to an end due to work put in to UMU. Unsure what this means for the future of this flake.

looks like future proton builds are in Open-Wine-Components/umu-launcher

We should look into integrating ULWGL into nix-gaming. Not sure yet whether we should remove wine-ge, perhaps once we establish that ULWGL can replace its functionality in most (or all) usecases it has in this flake.

Project has since been renamed to umu-launcher. A flake input is now available as well, version pinning using npins is blocked by andir/npins#46

So far I have confirmed that umu is fully capable of replacing wine-ge for star citizen but umu now just uses proton and can't be used outside of umu-launcher or steam.

Can we set games declaratively for umu?

I'm not sure I understand the question. Can you reword the question or provide some mock code?

Currently we provide games that can be installed declaratively in any Nix environment. When installed, you simply run them from any application launcher.

If we're to use umu, would we be able to modify the games so that they appear in umu, as if the user manually installed them? (I haven't had time to look into umu, so this is just a hypothesis)

Don't believe it is a launcher with a gui, it's more like steam-run but for games to allow a similar environment as steam proton. It'll be integrated into lutris, bottles, and Heroic launcher.

umu project recommends using umu-run command for starting games, there are a bunch of parameters that can be passed to this command to specify wine-prefix, proton-path, game id (from the umu database for protonfixes), the store, and many more. I tested it with Rocket League and managed to get it to work, but I believe it may not be so simple to introduce umu to existing games in this repository, there might be some necessary refactoring.

The reasoning is that the recommended way to use the project is to use the umu-run script, it is not just another wine fork (which then will use proton but with appropriate env vars and necessary settings I believe). So I believe we can't just get away with introducing umu to the existing games here and just changing the wine executable with the umu-run executable because it will expect different parameters.

In the case of Rocket League we already use the legendary launcher, so we can maybe run it with a command like this;

GAMEID=umu-252950 STORE=egs legendary launch Sugar --no-wine --wrapper "umu-run"

This command will;

  • specify the gameid which is from the umu-database
  • (optionally) specify the store
  • tell legendary to don't use wine
  • use the wrapper argument to make it run with umu-run

Then umu will create a prefix under ~/Games/umu/umu-252950 if it does not exist, will use the Umu-proton by default (but can be changed via parameters as well, I believe it manages the download of it). Legendary will provide the necessary auth parameters to the Rocket League, and finally, it will run the game.

If we want to ditch wine fully, then we can just work on refactoring current packages to use umu-run instead of wine, but if we prefer to keep wine and all available wine forks around, then we can perhaps introduce a new set of packages like umu-rocket-league or pass in a parameter to the existing packages like useUmuRun ? false

I currently have an experimental package for star citizen using umu. I have found that it was rather simple to move things over, but I'm unsure about actually merging them and adding additional complexity. The wine versions are different if you use the current version of GE which doesn't appear to have any updates planned which makes reverting the change require nuking the prefix(GE is on wine 8).

I'm all for this if you think it's worthwhile. Unification sounds like a good idea, especially knowing we can utilize protonfixes and not adapt the packages ourselves manually.

I have submitted a rough draft PR for a reference for what this would look like