DavidoTek / ProtonUp-Qt

Install and manage GE-Proton, Luxtorpeda & more for Steam and Wine-GE & more for Lutris with this graphical user interface.
https://davidotek.github.io/protonup-qt
GNU General Public License v3.0
1.16k stars 39 forks source link

Game saves backup function #376

Closed oemsysadm closed 2 months ago

oemsysadm commented 2 months ago

Older games and games that do not have Steam Cloud integration lose their save games (and configs) when changing the proton version. Presumably because the prefix gets deleted or changed. Steam does not seem to provide a way to back up save games or pin specific directory locations or file types for saving in the cloud.

The solution could be buttons in the Game List window of ProtonUp-Qt which allows you to back up and restore specific files/folders in the prefix to/from a pre-selected destination (via preferences in the application or the same way you select your steam folder in the main window) common for all backups managed by the application. Potentially with a way to determine/share which files and directories should be backed up (not sure if protondb or Steam itself provide this information), or at least a file browser that let you pick the directories and files (and save your selections so you don't have to do it again later.

An optional automated backup when the Proton version is changed for titles known to not support Steam Cloud could be nice too.

DavidoTek commented 2 months ago

Interesting idea. Isn't there a tool that can do this yet?

I'm not really familiar with the folder structure/configuration files of the game state in Steam. Can you provide examples? Is it the same for all games or are some games saving the state outside of the Steam folder (e.g., in Documents)?

sonic2kk commented 2 months ago

The folder structure is not consistent, talking from experience.

The solution could be buttons in the Game List window of ProtonUp-Qt which allows you to back up and restore specific files/folders in the prefix to/from a pre-selected destination

This sounds like the job of a file manager to me 😛 Some tools allow you to back up your prefixes.

An optional automated backup when the Proton version is changed for titles known to not support Steam Cloud could be nice too.

I wonder how to check if a title supports Steam Cloud. Maybe it's in appinfo.vdf? I would guess that's where the Steam Client pulls it from.


Seems a little much for ProtonUp-Qt to do, in my opinion, but it's probably not possible to do it in such a specific way as you've specified. The most ProtonUp-Qt or any tool without hardcoding per-game could do would be to backup and restore prefixes.

oemsysadm commented 2 months ago

I'd be fine with having to choose the specific files/dirs in the prefix, as well as the destination manually on a per game basis - ideally if ProtonUp remembers it for next time, with a backup and a restore button.

I am not aware of any other tool that does this, and since this is an issue that specifically happens when you update Proton (or make prefix changes - even within Steam), I think it's a shoe-in for a functionality in ProtonUp.

It would be nice if there was a way for people to share these though, via a config file/entry (QR?) or something similar.

Honestly game devs still supporting their older games (like Sims 4, basically any Fallout game, etc.) should enable cloud saves or work with Steam to ensure save games and configs are not wiped out when you change the Proton version, but that does not seem like it's happening as it's been an issue since the inception of Steam Play.

sonic2kk commented 2 months ago

You shouldn't be losing game data when changing Proton versions, you only lose it if the prefix gets utterly borked. Proton will even try to restore "user files" basically doing what your requesting here. I'm on my phone so forgive me if this is the wrong line but this section of the Proton script is aimed at migrating user files: https://github.com/ValveSoftware/Proton/blob/proton_9.0/proton#L742

It's not perfect but this should illustrate that Proton is meant to be doing it. On the other hand if ProtonUp-Qt does go the road of doing prefix management, this should give some insight into a potential implementation.

Losing data when you change Proton versions sounds like a Steam Client bug. I play a few older games with no cloud saves (Sonic Adventure 2 most recently) and I've been changing Proton versions a lot. I've also been using Steam Play for the better part of 5 years and haven't had this problem. I've even played a number of Bethesda games (don't remember which did and didn't have Cloud Saves) with constant changing of Proton versions and have never had any issues.

Actually, just last night I happened to do a Proton version runaround with Sonic Adventure 2 when testing an issue I was having with the Steam Client. I was juggling around between Proton 9.0, Proton 8.0, GE-Proton8-32, and Proton Experimental. I didn't lose my save data. If I'm understanding correctly, for you this would result in data loss, right?

I think you should report this to Valve as this shouldn't be happening

since this is an issue that specifically happens when you update Proton (or make prefix changes - even within Steam), I think it's a shoe-in for a functionality in ProtonUp.

I'm really not trying to argue semantics here but I don't think a tool for installing compatibility tools should be a catch-all for any and all Proton-related actions, delving into the realm of prefixes and prefix management it my mind seems like a big leap, and also in terms of development effort too. But that's not my call, that's just my view.

madscientist16 commented 2 months ago

Ludusavi can backup saves and config files that exist inside proton prefixes.

oemsysadm commented 2 months ago

Actually, just last night I happened to do a Proton version runaround with Sonic Adventure 2 when testing an issue I was having with the Steam Client. I was juggling around between Proton 9.0, Proton 8.0, GE-Proton8-32, and Proton Experimental. I didn't lose my save data. If I'm understanding correctly, for you this would result in data loss, right?

I think you should report this to Valve as this shouldn't be happening

Thank you, that's super interesting. I generally seem to lose save games when upgrading Proton. Sims 4, Fallout 4, CoCDCOTE, just to mention a few. This is across multiple machines, and even on the Steam Deck. Maybe it heavily depends on the game and how it stores save files?

EDIT: I just realized FO4 supposedly has Steam Cloud integration, I wonder if that's a new thing because it persistently lost save games when changing Proton versions. Maybe this is actually a Steam Cloud issue. Anyway, that's neither here nor there and not pertinent to ProtonUp-Qt.

oemsysadm commented 2 months ago

Ludusavi can backup saves and config files that exist inside proton prefixes.

Thank you, I'll be checking this out. If a robust solution already exist and it isn't a pain to install on various hardware, including the Steam Deck, this seems great.

sonic2kk commented 2 months ago

You couldn't pay me enough to touch Fallout 4 ever again so I can't comment on that game's behaviour, but Fallout 3 and New Vegas never lost any cloud saves from what I remember.

This is across multiple machines, and even on the Steam Deck

I've changed Proton versions a few times for games with no Steam Cloud support on Steam Deck as well, and it's also been fine. Once again an example that comes to mind is Sonic Adventure 2, I take advantage of the lack of Cloud Saves to play the game in different ways on my PC (running Linux ofc) and Steam Deck. I've changed from Proton 8.0 to Proton 9.0 Beta not that long ago and never lost any data on my Steam Deck.

If you think about it this way, it's definitely not supposed to happen:

This has also happened numerous times since the Steam Deck's release, because of the different Proton versions released since then.

I don't even think modding would come into this, as I played modded Oblivion going between different GE-Proton versions as well as then changing to a new major Proton version, and I didn't lose any saves.

I'm not saying that you're wrong and I really hope it doesn't come across that way, I'm just trying to illustrate the this behaviour shouldn't be happening and this it is likely a bug, and if possible you should report it to Valve.

DavidoTek commented 2 months ago

Ludusavi can backup saves and config files that exist inside proton prefixes.

Ludusavi seems to provide a solid solution. If there should be any game which isn't yet supported, it probably makes most sense to report it over there. I didn't check, but does it support exporting the state of individual games as zip file or folder?

I though about whether it would make sense to create a bridge between those two programs from ProtonUp-Qt's game list, but I couldn't think of anything.

I guess this issue can be closed for now then.