For any given game and platform, there are multiple ways of launching it. For example, a Steam game might be installed and launched through all these means:
- Local Steam client (the regular way)
- Locally installed Wine emulator
- Remotely played via Steam Link
- Streamed from the cloud through services like Vortex or GeForce NOW
All these ways of launching the game are all backed by the same library, but each has a different availability or platform support, and obviously a different way of running the game.
Currently the GOG Galaxy API only allows for each plugin to implement running a game in a single way. However, allowing access to playing games in an alternative way would be desirable (or the only way to play them - e.g. a Windows game on a Mac computer). This could also allow an emulated game to be launched through a number of different emulators a user might have installed.
Therefore, I propose that the plugins be split in two: a "library" plugin which would check which games you owned, and retrieve stats; and a "launcher" plugin which would implement one of the ways of launching the game (also checking if it's possible).
This way, two possibilities become available:
- A single plugin could offer a single "library" plugin and multiple "launcher" plugins
- Each plugin only offers a single "library" and "launcher" plugins, but the user has the possibility of adding more independent "launcher" plugins for a given library.
This is indeed a complex subject UX-wise, but it definitely would be an advanced feature that only people familiar with these topics would seek out; so IMO it's allowed to be a bit obscure.
The current way the API is structured, multiple plugins providing the same platform would have to be installed, adding confusion, duplication of code and having to log in to the same website multiple times. I'm not even sure if the client allows loading multiple plugins for the same platform id, or how it deals with them.
This would be quite an elaborate architecture change probably, but just wanted to pitch it.
Thanks for the awesome app!