ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
23.68k stars 1.03k forks source link

Directories for game settings and saves. #231

Open kgudalov opened 6 years ago

kgudalov commented 6 years ago

How to make all games launched with proton save settings in /home/user/documents instead of in separate prefixes? Is there now such a possibility or do I need to manually create links every time?

Mushoz commented 6 years ago

Since the games itself think they are actually running in Windows, they will also use the folder structures in said prefixes. The only way to get them to save into the Linux folder structures without altering individual games itself, would be by creating symlinks. This will probably never be automated because of the following two reasons:

1) symlinking requires root permission, so steam cannot do this. 2) since different games save into different file locations, this symlinking behavior would have to be implemented on per game basis.

kgudalov commented 6 years ago

@Mushoz What about the rights of root are not quite true, because the steam creates the prefixes in the Home, where the rights of root is not required. About variety of folders save probably true.Thank you for the comment, probably will have to create some script for renaming.

Mushoz commented 6 years ago

I stand corrected. I thought the ln command itself requires root privileges.

ShadowsFriend commented 6 years ago

It might be important to note that uninstalling a game launched via proton that uses personal folders like My Documents to store saves leads to those saves getting wiped as the prefix is deleted completely. This might be an unexpected behavior for some people as saves are usually preserved when a game is uninstalled in steam.

Zero86Sk commented 5 years ago

I think having a unified prefix for all game saves, that would get created might slove this, also this prefix wouldnt get deleted, maybe store it even in /home/user/steam/ instad of /home/user/.steam/

not sure how hard would it be to make it happen

basxto commented 5 years ago

Lutris also uses softlinks.

There are more paths which could be worth linking: https://pcgamingwiki.com/wiki/Glossary:Game_data#Windows_data_paths

Problem with AppData folders is, that there also exist folders like Microsoft and openvr. Therefore game specific links are maybe better.

Example for Lego Harry Potter: Years 5-7: steamapps/compatdata/204120/pfx/drive_c/users/steamuser/AppData/Roaming/WB Games/ -> ~/.local/share/WB Games/

Aerocatia commented 5 years ago

Can I just add that it would be best to keep these somewhere contained as some games can be quite messy and I'd rather not give them access to dump all over my home folder. Universally linking "My Documents" and "AppData" to some location should cover most cases.

legluondunet commented 5 years ago

I don't want all this games folder in my documents or home folder. I see more a dedicated location, that will match for all WIndows, Linux and Macosx games.

DanMan commented 5 years ago

I don't like to see potentially hundreds of folders to be added to my ~/home/Documents folder either. Especially not as non-hidden ones. No software should add folders there all by itself, period. It's a disease on Windows already, and I don't like to see it repeated on Linux.

Instead, I suggest using the $XDG_DATA_HOME directory as a base. That's:

the base directory relative to which user specific data files should be stored. If $XDG_DATA_HOME is either not set or empty, a default equal to $HOME/.local/share should be used.

Source: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html

So something like $XDG_DATA_HOME/steam/game_folder_goes_here, or …/proton/… or whatever. Some native Linux games already create their folders under $XDG_DATA_HOME, like games from Feral, THQ, Daedalic, Frictional, …

It's probably wise to group Proton games in a folder of their own as mentioned above though, in case they ever get a native port. Just to be safe, rather than sorry.

basxto commented 5 years ago

@DanMan: It's already in ${XDG_DATA_HOME:-${HOME}/.local/share}/Steam/steam/steamapps/compatdata/${SteamAppId}/pfx

DanMan commented 5 years ago

@basxto Is that a recent change? There is no ~/.local/share/Steam folder on my system. Ubuntu 18.04 LTS, Proton 3.7.3. But $XDG_DATA_HOME doesn't seem to be set either.

kisak-valve commented 5 years ago

@DanMan Debian's steam package uses a different folder layout with steam because reasons, and Ubuntu inherits the package in its repos from Debian.

DanMan commented 5 years ago

@kisak-valve Meaning? Should I report that problem to them then? I mean, it doesn't seem to happen for all the other games I have. Only the games I've used via Proton. For example, the PES 2019 demo which has no Linux version. Or maybe it's Lutris doing that, I should check that.

basxto commented 5 years ago

Then it’s probably in ~/.steam/steam. All games (proton included) get installed into your steam library <librarypath>/steamapps/common/<name>, so all steam games should end up in the same directories. Games using proton put their settings, savegames etc. into their prefix at <librarypath>/steamapps/compatdata/<appid>/pfx, because they think they are on Windows. Prefixes of lutris are placed somewhere in ${XDG_DATA_HOME:-${HOME}/.local/share}/lutris/runners/, not that different from what steam is doing. But the winesteam runner actually uses a prefix (game) inside of a prefix (steam). Native games put their savegames whereever they want and this includes ~/My Games, ~/Documents, ~/, ~/.local/share, ~/.config, ~/.appdata, ~/.local etc.

I don't like to see it repeated on Linux.

It’s too late … at least most games put hidden folders into ~/. Feral also created ~/feral-interactive/Life Is Strange in july…

DanMan commented 5 years ago

I take it back. It's actually Lutris that's putting the game config files in my ~/Documents folder, not Steam.

PES2019 on Windows apparently stores its config files in the %UserProfile%\Documents folder, which in the Lutris Wine prefix is mapped to my ~/Documents folder (by default, as it seems - at least I can't remember setting it myself). -.-

Oh well, sorry for wasting your time. If you're already using ${XDG_DATA_HOME} then that's great IMO. Thanks for listening.

kisak-valve commented 5 years ago

Feture Request: Better drive defaults in prefixes, and several other links.

Issue transferred from https://github.com/ValveSoftware/Proton/issues/1407. @Ruedii posted on 2018-09-12T01:10:47:

Feature Request

I confirm:

Description

A quick link to place the game's directory on the D: virtual drivelink under "D:[game directory]" A unified user directory should be placed here as well, linking to $HOME/.share/local/SteamPlayUserFiles/[steamlogin] (or whatever you want to call it.) A second Quicklink under H: to the user's home directory.

Justification [optional]

This would make accessing the game directory and home directory when doing manual wine commands much easier. This is rather proton specific.

Risks [optional]

Moving the user directory means making a transition copy directory. It also means changing the instructions to purge that directory, and notifying everyone of the new directory structure.

Having a shared user directory for all SteamPlay games may introduce interactions between games, just like on Windows. This can also be a benefit.

Using a separate user directory changes presumes players want to use separate settings/game-play paths for instances of different steam users logging in under the same system username. This may not be a safe assumption.

Making it easier to access to files from the Wine execution environment might allow some users to do stupid stuff. Add a documentation on how to purge the two sets of data directories in order to fix it.

ritalat commented 5 years ago

I don't want games littering my documents folder with saves and config files like they do on windows but it would be nice if there was at least a shared user directory for the proton prefixes. This would make searching for specific saves easier if you are a normal human being who can't remember the appid for each game.

Maybe move "steamuser" to the root of compatdata and symlink c:\users\steamuser from each prefix to that (i.e. turn the current steamuser folder to a symlink to ../../../../steamuser). This would (probably) also prevent steam from nuking all your saves when you uninstall a game that's running on proton.

Edit: I ended up making a small bash script that does something like this if someone is interested https://github.com/ritalat/proton-shared-user-directory

Quix0r commented 5 years ago

Loosing your save-games is something what I didn't expect to happen. Maybe a "fix" (temporarily at least) would be to keep the pfx folder, then all is preserved?

daniel-j commented 5 years ago

Just lost my Fallout 3 saves when reinstalling the game. gg

petteyg commented 4 years ago

Bump this. More than a few games allow local mod development in "My Documents\GamePublisherOrTitle". Having to manually find and execute winecfg in each one to fix the missing "My Documents" -> $HOME/Documents mapping is annoying.

moozhub commented 4 years ago

@kisak-valve I feel the path to the user profile should be a configurable environment variable that you pass to steam. In my case, I'm installing my steam library onto a NFS mount with a Users/ directory inherited from a previous Windows 10 install that has all my saves and configuration in it, I moved the directory of my previous Windows 10 user to "steamuser", which is the emulated user that Steam saves all it's data into, I then recreated a couple symlinks, such as My Documents, Local Settings, and Application Data so they're pointed to the correct spot.

After installing a game that uses proton and starting it for the first time, it's default prefix is what I assume being read from .steam/steam/steamapps/common/Proton X.X/dist/share/default_pfx, so the resulting prefix that would be created would be for example /mnt/nfsmount/SteamLibrary/steamapps/compatdata/<app_ID>/pfx which contains drive_c/users/steamuser -- this path gets initiated I believe either upon first start or when you choose which compatibility version you want to use in the steam interface for the game you're wanting to start. What I've been doing is navigating to /mnt/nfsmount/SteamLibrary/steamapps/compatdata/<app_ID>/pfx/drive_c/users and deleting the stock steamusers profile and symlinking it to my inherited Windows profile.

The legwork of removing the default profile directory from my steam library only comes into play because it would appear that when some unknown event occurs in steam, the .steam/steam/steamapps/common/Proton X.X/dist/share/default_pfx and possibly everything under it is being reset to default. So setting a default profile directory by symlinking the steamuser directory to my inherited directory in the default prefix at the moment doesn't appear to work. However, this isn't the case when you use custom compatibility versions installed under the .steam/steam/compatibilitytools.d directory, if installing a symlink under the custom versions, the symlink will survive and automatically link to my inherited steamuser directory and I haven't experienced a single issue restarting a saved game as of yet.

Because these are symlinks, they also won't get wiped out when uninstalling the game. If the default_pfx information above is true, a environment variable should be used to where you want the profile to be stored and proton should accept it and not wipe out everything that's under default_pfx when steam appears to realize that the content under the common/Proton X.X isn't what was installed.

LukasDoesDev commented 3 years ago

There is no AppData/Roaming folder. Anyone have hints to where my game files might be?

Ruedii commented 3 years ago

The paths are configurable by the same ways as Wine. It would be nice to add a passthrough of this to the config files and command line options.

On Tue, Mar 16, 2021, 3:10 AM Lukas Does Dev @.***> wrote:

There is no AppData/Roaming folder. Anyone have hints to where my game files might be?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ValveSoftware/Proton/issues/231#issuecomment-800013439, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAYFL2P5EELM74SOS5AHA53TD3755ANCNFSM4FRDXAYQ .

LukasDoesDev commented 3 years ago

Finally found the path for it: ~/.steam/steam/steamapps/compatdata/387990/pfx/drive_c/users/steamuser/Application Data/Axolot Games

dubiousgit commented 1 month ago

@kisak-valve thanks for pointing to this thread. Is there a roadmap for this? As it stands it's a pretty big difference between playing on Windows and playing on Linux; specifically where Linux lags behind because of the lack of seamless import for games.

The same is also true on the Steam Deck, where it's arguably more important because I don't think you expect customers to have to navigate through two prefixes for their save files, just to play an import from the BG1 in BG2. Windows, and console releases, already solve for this very neatly.