JosefNemec / Playnite

Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games.
https://playnite.link
MIT License
9.46k stars 504 forks source link

Linking duplicate copies of games #408

Open Ianuarius opened 6 years ago

Ianuarius commented 6 years ago

I think it would improve my library greatly if I could manually link duplicates, expansions, dlc's, and episodes of a game together.

My Back to the Future Ep 1, Ep2, Ep 3... could all be linked into a single entry with launch buttons for each store item.

My Half-Life 2, HL2 Deathmatch, HL2 Episode One etc. could be all linked.

My Dragon Age: Origins regular and ultimate editions, as well as versions from Steam, Origin, and GOG could be all linked.

Linked games wouldn't show up in any of the lists unless you unlink them again. There would just be one Master version of the game with all the different editions, versions, episodes etc. listed in it.

JosefNemec commented 6 years ago

This is very similar to #217

Ianuarius commented 6 years ago

Well, yes, #217 is partly about the same thing. However...

I appreciate the fact that this would take a lot of work to implement. I don't want an automated system. I just want that there would be a way, any way, to do this. It's probably not important to everyone, but Playnite is the only software where I can collect all my games and be able to browse them. I hope you don't consider this type of feature useless. To me, it would be incredibly useful.

Maybe it doesn't have to be implemented right now, if there are issues with higher priority. Maybe this could be considered again at some point in the future. Or maybe I can try to find some time to work on it in a separate branch.

Thank you.

JosefNemec commented 6 years ago

I completely understand why people want this and I'm not against implementing it. It's just that there are features that would bring more value compared to how difficult this is to add right now. I don't work on Playnite full time so I have to choose carefully what to spend time on.

However if we want Playnite to be usable also as general game library organization software then this will be required feature for sure.

yatahaze commented 4 years ago

Instead of leaving the Series as None when it's not defined, if Playnite filled in the game title, would this not give us the same feature in a way? We could then go and tidy up anything that didn't group up nicely.

(The way it is now I can't see myself manually creating Series for every game just so it shows alphabetically when I group by series.)

...speaking of which, is there any way for me to get this done on the current build?

sytone commented 1 year ago

Did you consider making an interface for Game, then you can have the current Game interface across the code base and the current Game class as is.

Then a Virtual Game class could be made which can handle the merging of the games and backing meta data but still display and work as a normal game across the system.

Display can use the type to see if anything extra should be displayed for the virtual game and if the class does not match the type then everything would continue. This would allow the initial interface changes to go through and the virtual game could be added and refined over time until ready for release.

FlyMandi commented 1 year ago

This is 90% achievable with an extension called DuplicateHider. I understand people's preference of not wanting to bother with extensions, but this might be a temporary solution.

This extension allows you to hide all copies of the game except for one, which'll be the one that shows up normally. Depending on your theme, it can give you quick access to all other versions through buttons in various places: image

This is all you need for the same game on different platforms. I've been using it for months and it works great. The only downside is it uses game's name's to identify duplicates.

So, my solution is to use DuplicateHider in conjunction with Game Title Normaliser and a little bit of manual title matching here and there.

Drawbacks of my method: