dlss-swapper icon indicating copy to clipboard operation
dlss-swapper copied to clipboard

[Feature request] Install state indicator

Open bigusbeckus opened this issue 4 years ago • 4 comments

Is your feature request related to a problem? Please describe. As it currently stands, every game in the Steam (and Ubisoft Connect as of #27 ) library is being listed as if it's fully installed whether it's currently being worked on by the client or not. It would be nice to have an indicator in the app so users can be better informed on if the game is fully installed or not without opening the client.

Describe the solution you'd like Implementing an InstallState enum with Installed, Downloading, and Unknown states in the Game class, then detecting and assigning the states during the initial scan should do the trick.

These are the possible install states for Steam, and Epic puts copies of the manifest files for the incomplete downloads in the %ProgramData%\Epic\EpicGamesLauncher\Data\Manifests\Pending folder. I'm not sure how Ubisoft Connect handles this, but I'll try to find out.

Additional context The app currently lists incomplete steam game downloads as if they're fully installed and swapping out files on an incomplete download may cause annoying issues later on.

bigusbeckus avatar Sep 12 '21 17:09 bigusbeckus

Just tested it and you're correct. Shouldn't be too difficult to implement. Thanks for the report ;)

MorGuux avatar Sep 12 '21 17:09 MorGuux

I like the idea, but I don't like the lack of feature parity across the gaming libraries. I don't want to have a matrix that says Steam can detect installing but Epic GameStore can only detect of its installed or not, etc.

I think this filtering should be in the SteamLibrary class so it only returns fully installed games (and hopefully keeping that trough on all game libraries) would be ideal rather than pushing install state all the way up to the Game object.

Adding a way to expose this to the user in the UI may make things complicated. Plus if a game is in an Installing state I'd expect this to go to Installed when it is installed. This means DLSS Swapper now needs to be background checking games and their current state.

While none of this is impossible, it does add more complexity for a only a little bit of value add.

beeradmoore avatar Sep 12 '21 22:09 beeradmoore

I don't think feature parity will be too big of an issue since every launcher has a way of storing these states and it's just a matter of finding out how it works. Steam and Epic are simple enough. I'm looking into Ubisoft Connect right now and it seems possible even if it is a little annoying dealing with the binary .state files. I have no idea how Battle.net or Origin handle it but I can post here if I find anything.

When it comes to the actual implementation, you're right, simply ignoring the incomplete downloads may be better than trying to add those states to the Game object. So just getting the install states during the initial library scan but informing the user on the first run that the games are only automatically scanned on startup, that incomplete downloads are ignored, and to use the refresh button to recheck for changes/games that might have been skipped due to them being incomplete may be the way to go?

bigusbeckus avatar Sep 13 '21 14:09 bigusbeckus

every launcher has a way of storing these states Yep, but until we find that out for every launcher already listed in the issues list we don't know if they are storing it in some easy to read json, or some proprietary serialised binary files that are near impossible to read.

Side note on this is, the more we hunt through the library data (also see this), the more things will need to be fixed if a game library does change how it stores its data in a version update. Regardless of this issue or not we'll then have to also support versioning of the game library so Steam v1.0 library handles like this, Steam v1.1 does it slightly different like this. I hope this never happens because I am not looking forward to it.

Ideally we don't have to tell the user anything (I already am going to remove the initial two popups after the new downloader is in) and that the UI should speak for itself. I would hope not appearing in the games list would be adequate to let the user know the game is not installed.

I can see the possibility of game state coming through to the user in a sort of "games details" page, so we should continue to look into this data for all platforms. However for the initial steps of this I think we should just hide the installing games with plans to show install state as well as include it in the filter further down the track.

beeradmoore avatar Sep 13 '21 20:09 beeradmoore