protonscr

Native Linux depot always downloads first even when compatibility tool is forced for all games

protonclosed
ValveSoftware/Proton#6635 · opened 2023-03-22 by aclist · updated 2023-03-23 · 2 comments · github
Aaclist 2023-03-22 github

Games affected: all games
Proton version: any
Third-party compatibility tool: any
Steam client: stable, latest

The client is designed around the premise that if using Linux and a native version of an app is available, that depot should always download first. It's increasingly the case that a user would prefer to force Proton (i.e. Windows depot) for any game, rather than defaulting to the native version first.

To reproduce:

  1. Select "Enable Steam Play for all other titles" in Settings and select a mainline Proton or third-party compatibility tool, and restart if necessary
  2. Request to install a game with a native Linux depot (e.g., Super Hexagon, 221640) with no compatibility tool previously set for that game
  3. Observe the local files downloaded, launch the game, or explore the game's manifest to see that the Linux depot was installed
  4. Right-click the game and select "Compatibility" > "Force the use of...", and select a compat tool
  5. Observe that immediately upon clicking "Force the use of...", the game queues an update
  6. Steam downloads the Windows depot after the game is launched a second time

The problem this is twofold:

  1. If the user intends to always download the Windows depot for a game (e.g., for compatibility reasons, better performance in Proton than native, personal preference), the client will instead attempt to download the native build. Only after the user forces a compatibility tool for the game will it stage updates and redownload the Windows build. This can be especially taxing if both depots are very large, forcing the user to download (effectively) the same data twice, making the first pass pointless.

Even if a specific compatibility tool (mainline Proton or third-party) was set for "Enable Steam Play for all other titles," the native build always gets downloaded first until explicitly set otherwise in the game's submenu.

  1. The "Enable Steam Play for all other titles" setting is not sticky or erroneously named, because it does not in fact apply to these native games. The expectation is that Proton should be used to run any arbitrary game, but in practice, the user has to explicitly enable a compatibility tool on native games to trigger downloading the Windows depot.

As a result, there is no way for the Windows depot to be automatically preferred by default, meaning that these games must be micro-managed each time.

Native builds are increasingly less prevalent for games, and Proton is increasingly performant, making it not unreasonable to use Proton for every game, but the client exposes no way of doing so automatically. If keeping the functionality to fall back to native if available is considered preferable for legacy compatibility purposes, then a second configuration parameter or sub-toggle ("Also apply to native games") should be added to the "Enable Steam Play for all other titles" option so that it functions the way it is described.

This problem dovetails with another issue relating to non-Steam games (NSGs), in that NSGs have no depot to speak of, so the expectation is that "Enable Steam Play for all" should force them to launch out of the box with the Proton version/tool selected by the user. However, NSGs also have to be forced to use the desired Proton version via the right-click menu. Presumably, the NSG feature was also designed to accommodate running native Linux programs (indeed, you can see some system tools come up via automatic discovery when opening the Add a NSG dialog), but in practice it is frequently used to run arbitrary executables for Windows games or utilities, so the design assumption that "Linux client = NSGs are native utilities" is not necessarily correct.

Overall, falling back to native is a sane enough default, but it also feels like a vestige of when Proton was in its infancy, and the client should expose a way of letting the user choose to force Windows as the expected depot for all applications.

Kkisak-valve maintainer 2023-03-22 github

Hello @aclist, downloading and managing game depots is a Steam client issue, not a Proton issue.

That said, using the native linux variant of a game by default when it is available is the current intended behavior of the Steam client and https://github.com/ValveSoftware/steam-for-linux/issues/7877 is a near match to this issue report.

Aaclist 2023-03-23 github

Thanks for clarifying. I have consolidated my original comment as a set of bullet points on that thread and hopefully clarified my point a bit better.