MikeMaximus / gbm

Game Backup Monitor - Automatically backup your saved games!
https://mikemaximus.github.io/gbm-web/
GNU General Public License v3.0
231 stars 10 forks source link

Feature Request: support multiple savegame paths #191

Closed NewRavenGer closed 5 years ago

NewRavenGer commented 5 years ago

So after I got my hands on 1.1.9 HF 2 and the chaining of multiple path variables works fine (thank you very very much for that!) I continued to add games from my library to GBM. The first time I struggled was with the Deathinitve Edition of Darksiders 2. The GOG version (and your official entry) has a complete different save path than my Steam Edition. I could workarround this by just adding a new entry: Darksiders 2: Deathinitve Edition (Steam) and while this isn't the most elegant way, it worked for me. However, as soon as I came to the official entry of Cities: Skylines I got confused. The path the official entry (steam version) uses is

%LOCALAPPDATA%\Colossal Order\Cities_Skylines\Saves

however, this path is only used for the autosaves (and maybe systems with disabled cloud option or offline mode). The real savegames are usually stored in

<Steam-folder>\userdata\<user-id>\255710

(PCGamingWiki is also partially wrong here, I double checked). So now we have the issue that if we want to have all savegames (which we probably absolutly want) we have to backup two directories. While we can get away with various distribution platforms using different paths (like I described with Darksiders 2 above) by creating just a new game entry, it won't work that way if one game installation itself already uses two different paths. It would be really helpful to be able to backup more than one save path for such cases and it would also be helpful in not cluttering the database with multiple entries depending on which store you got your game from.

Thanks for your hard work :)

Small edit: Dishonored (Steam) even has two different paths depending on what Package-ID you bought on Steam. The path can either be:

<Steam-folder>\userdata\<user-id>\205100\ or <Steam-folder>\userdata\<user-id>\217980\

and the "Art Of Murder"-series has various savegame paths depending on the language version you install the game in. This is a real mess to deal with when you can only use one save path :(

MikeMaximus commented 5 years ago

Handling multiple save paths per game is something that's been requested and something I'd like to get around to doing some day. However doing it properly will require redesigning the core of the application, which would balloon into updating and re-testing nearly every feature. I can't make any promises as to when or if it'll be done.

As a rule, official game configurations are created with the assumption Steam Cloud is disabled for that game. I also don't provide configurations for games that save only to Steam Cloud locations. It's just been my policy that if a game is built around using Steam Cloud that most users will stick with that, and others will be savvy enough to make their own config for it in GBM if they wish.

NewRavenGer commented 5 years ago

Yeah, I've read about your "no official configs will ever include custom path variables"-rule, which prevents Steamcloud backups anyway. Otherwise, I would already have offered you to send you my complete configuration (the game database and the custom save variables it requires) with about 100 extra games already. And I'm totally fine with your decision on that matter :)

However, the requirement for multiple savegame locations sadly not only concerns this use-case, so I hope at some point you'll able to implement such a multi-path-option. Even excluding any cloud saves, I already have found a handful of games who spread their saves in various directories for various reasons. It's not a function that is so important it could prevent the use of GBM, because for 98% of all games everything works fine (especially if you don't intend to share your game profiles), but for the few games where it is an issue, I still have to find a good way to work around this. :)

MikeMaximus commented 5 years ago

Yeah unfortunately for a few cases there just aren't any good work arounds. Sometimes you can be creative enough with includes and excludes to make things work. But both GBM's logic and 7-Zip itself can behave unpredictably when filters get too complex.

I'm going to close this issue but be assured it's a feature thats on the list and I hope to get to it eventually.

MikeMaximus commented 4 years ago

The upcoming 1.2.0 release will have the ability to "link" game configurations. Linked configurations will backup and restore other linked configurations when they are triggered. This might not be the cleanest solution, but it allows the backup of an unlimited amount of save locations, each with their own specific configuration. I'll go into more detail below.

Features:

  1. You can link an unlimited number of configurations, these links are a one-way chain. For example: Config 1 -> Config 2 Config 1 -> Config 3 Config 2 -> Config 4 Config 3 -> Config 5
  2. You can create two-way chain if you want to, but this is not done by default. Config 1 -> Config 2 Config 2 -> Config 1
  3. Only one instance of a configuration can exist in the same chain, if there's multiple links to the same configuration over a single chain they are ignored.
  4. The import/export supports the link feature. So linked configurations can be shared, however the user must be import all the configurations in the chain for it to work properly.

Limitations:

  1. When restoring linked configurations that use the "Save Multiple Backups" option, only the latest backup of each configuration in the chain can be restored. If an older backup is selected, GBM will allow you to proceed without restoring the linked configurations.
AdmiringWorm commented 4 years ago

@MikeMaximus just to make sure, this linking, is it creating two separate entries of a single game and link those two entries together to make a "single" backup archive?

MikeMaximus commented 4 years ago

Yes it's for creating multiple entries for the same game and linking them, such as "Game 1 - Saves" and "Game 1 - Registry". However it doesn't create a single archive, there will still be one archive per linked entry, but they will always be backed up and restored together as long as they're linked.

NewRavenGer commented 4 years ago

At first, after reading the way you want to implement this, I thought "well, its better than nothing, but it will clutter the games list like hell and, to be honest, wasn't very exited about your decision"... but then, it struck me like a lightning bolt and I began to see how much more flexible your way is. For example: I could play Skyrim and let my savegames backup (Config 1). At the same time I can link it to my Steam Screenshots Backup profile (Config 2), which I can link to any Steam game I have and reuse it to backup all my Screenshots. And as if this wasn't already enough, I can link it to Config 3, which saves my mod list into a folder on my FTP server. All without having to do anything manually. Actually, this sounds awesome and a probably a bit more cluttered games list is well worth the benefits. Can't wait for the new version.

MikeMaximus commented 4 years ago

@NewRavenGer I wasn't completely sold on this idea myself. I actually implemented it a few weeks ago and trashed the entire branch because I didn't think it was good enough solution. But then I was thinking about it again, and made some improvements to the idea. I think it ended up rather well and I'm glad you'll find it useful.