Heroic-Games-Launcher / HeroicGamesLauncher

A games launcher for GOG, Amazon and Epic Games for Linux, Windows and macOS.
https://heroicgameslauncher.com
GNU General Public License v3.0
8.31k stars 440 forks source link

Cloud saves are not deleted when local files are. #1978

Open Bitwolfies opened 2 years ago

Bitwolfies commented 2 years ago

Describe the bug

If you have saves A + B, and you delete B locally and upload, B remains in the cloud.

  1. Find a game that supports multiple saves, and upload at least two to the cloud.
  2. Delete a save, and force an upload
  3. Download from the cloud, notice the deleted save is restored.

Expected behavior

For the save to be removed from the cloud, If i've locally deleted a file, it probably means I wish to have it be removed from the cloud as well, not redownloaded on next sync. To my Knowledge, GOG's client takes a snapshot of the folder it uploads, and replaces the one in the cloud with it. Steam Auto-cloud games also works this way.

System Information

imLinguin commented 2 years ago

I didn't implement deleting just to be safe but you are right it's something we need to do

wbrtm commented 2 years ago

Not sure if this is what I would expect. Can someone else confirm that Galaxy and Steam work this way? With cloud save sync I would expect my game saves to be safe, no matter what I do on my PC.

imLinguin commented 2 years ago

Well, GOG API is just a OVH instance that stores files posted by clients, so literally mirroring the directory is the only way. I don't know how Steam handles it but it's probably similar.

Bitwolfies commented 2 years ago

Not sure if this is what I would expect. Can someone else confirm that Galaxy and Steam work this way? With cloud save sync I would expect my game saves to be safe, no matter what I do on my PC.

I mean, the idea of being unable to erase a save I want is infuriating, and typically these services make it hard as hell to do so.

In the case of Steam cloud native games, the only way to erase from the cloud is if the game makes a specific call to do so, but you can use a tool like steamcloudmanager to spoof it and do it manually. This means if you simply erase the file externally, steam will restore it.

Next we have steam auto cloud/GOG, a “dumb” method of syncing files. These don’t rely on any code being added to the game, and simply scan and and upload selected files and folders 1:1, replacing whatever is in the cloud. It does not check if deletions were intentional or not, it simply snapshots. These can be annoying to remove from the cloud as if a game lacks a specific in game way to erase a save, you’ll have to shut the game down, and delete the file quick enough before the sync happens. It’s actually insanely hard to lose files by accident.

This is the behaviour I’d prefer from Heroic, if I delete a save, I don’t want it stuck in my cloud till the end of time. Maybe they can add a toggle to disallow file deletion from the cloud, but it absolutely needs a delete method.

szszoke commented 1 year ago

Steam will also mirror the directory but you have to have the game running while you delete the saves. I had to do this many times with games like Witcher 3 or Cyberpunk 2077 where I make a lot of saves to the point where it fills up my cloud storage.

If I delete the saves while the game is running, then exit the game then Steam will just mirror that and delete the saves in the cloud.