CryoByte33 / steam-deck-utilities

A utility to improve performance and help manage storage on Steam Deck.
GNU General Public License v3.0
3.2k stars 79 forks source link

Sync Game Data: Not All App Data Synced #109

Closed InklingGirl closed 1 year ago

InklingGirl commented 1 year ago

When using Sync Game Data to move Proton prefixes & shader caches over to the microSD & symlink them back to their respective directories in ×/steamapps/, there are – not all, but – multiple prefixes & caches that didn't make the move at all & are still sitting (not symlinks, the originals) in their respective ×/steamapps/ directories rather than the respective equivalents in ×/cryoutilities_steam_data/ on microSD. Despite this, on successive sync/check attempts Sync Game Data always insists: 'None! Everything is synced in this direction.', which is incorrect. I'll list the stragglers below.

×/steamapps/compatdata/: /0/ GE-Proton7-43 /1493710/Proton Experimental /1887720/Proton 7.0

×/steamapps/shaders/: /283940/Freddi Fish and the Case of the Missing Kelp Seeds /322500/SUPERHOT /469790/Linelight /568040/Macbat 64 /1049890/Little Witch Nobeta /1289310/Helltaker /1554840/Toree 3D /1695830/Baldur's Gate: Dark Alliance /1722620/Toree 2 /1949960/Super Kiwi 64 /2207670/Super Beast Hunt /2615276786/ — I don't know what this is

Notes:

May not be important, but exactly half of these shaders are for native GNU/Linux games, which is disproportionate as that's almost all the native games I have installed (bar one, whose data did make the move).

For some additional background, many months ago I did manually move /compatdata/ & /shaders/ whole to the root of my microSD & symlink them back to ×/steamapps/, only recently did I move them back to ×/steamapps/ to use CryoUtilities' solution instead.

Log file: cryoutilities.log

CryoByte33 commented 1 year ago

Ahh, this is interesting. It seems that we're only syncing stuff that has compatdata AND shadercache, instead of treating them individually. This is a VERY good catch, thank you!

Out of curiosity, have you run the games listed in the shaders section above, or just installed them?

InklingGirl commented 1 year ago

have you run the games listed in the shaders section above, or just installed them?

I've run Freddi Fish, but I haven't gotten around to the rest yet.

CryoByte33 commented 1 year ago

Would you mind running SUPERHOT and trying to do the sync afterwards? I'm curious if the issue is that compatdata simple hasn't been generated yet.

InklingGirl commented 1 year ago

Can confirm that after running SUPERHOT, Sync Game Data can in fact find & move the game's data.

CryoByte33 commented 1 year ago

Ah yeah that makes sense. So I only move the data if both the compatdata AND shadercache exists on that drive. Without doing that you could synchronize the shaders and the compatdata would still be on the wrong drive until you ran a sync again.

As a user, would you prefer the current behavior that "guarantees" that all the data is moved, or a more incremental approach that might be a little misleading?

InklingGirl commented 1 year ago

a more incremental approach that might be a little misleading

This may give users a false sense of security & leave them w/ only half their game's data synced knowing none the wiser 'til they revisit the utility, unless of course you included some sort of disclaimer.

Here's an idea though, how about you write Sync Game Data so it will preemptively create & symlink shader cache directories for games that don't already have one? That way, they'll just be used at a later date on a per need basis. Assuming – once the game is actually run – that Steam will just honour & use the symlinks already there w/o overwriting them w/ real directories of its own making (I'm uncertain of what its behaviour would actually be in that instance). What do you think @CryoByte33?

CryoByte33 commented 1 year ago

how about you write Sync Game Data so it will preemptively create & symlink shader cache directories for games that don't already have one?

This is a really good idea in theory, and I actually already tried it. The problem is that if I pre-create the compatdata folder (the one likely to be missing) then Steam thinks that the prefix is all set up and ready to go. It seems to "dumb" to realize whether there's a valid prefix inside or not, and games will just fail to launch with that empty folder present 😓

InklingGirl commented 1 year ago

That's a shame. In that case, I think you should add an explanation/disclaimer & perhaps an option, but at least the former, to avoid any potential confusion cases like mine. I guess another idea could be, running it as (an opt-in) automated service?

InklingGirl commented 1 year ago

Well I guess that's all that needs to be said for now, so I'll close this issue. Thanks for the info @CryoByte33.