luxtorpeda icon indicating copy to clipboard operation
luxtorpeda copied to clipboard

Potential integration with GameHub?

Open neuromancer opened this issue 4 years ago • 3 comments

Luxtorpeda is closely integrated with Steam, since it requieres its database and runtime. However, it could be nice to allow the integration with other (open-source) game managers. I recently proposed to have support for custom Steam Play compability tools in GameHub. I think it is a good candidate for Luxtorpeda (and Boxer and Roberta) to easily reach other game platforms like GOG, Humble Bundle and itch.io.

neuromancer avatar Sep 04 '19 22:09 neuromancer

That's very cool idea :) I would be happy to cooperate with GameHub devs to make this happen.

Some initial thoughts:

  • This feature should be probably split into 9 smaller tasks (3 installation sources times 3 compatibility layers (GOG/Boxtron, Steam/Boxtron, Humble/Boxtron, GOG/Roberta, … etc) - and each task discussed separately
  • I would start with GOG/Boxtron first, as it seems that GameHub download feature will work really nice with install-gog-game script and Boxtron itself, so it seems to provide a lot of value for small amount of work. I would need to do few tiny adjustments (Boxtron expects GOG DOS games to be extracted to ~/.local/share/games/ right now).
  • As for GOG/Roberta - ScummVM does all heavy lifting of game detection already, so it might be easier to simply reimplement this tool inside GameHub directly. I can share all the necessary knowledge; installation part could be handled using install-gog-game functionality.
  • Steam/Luxtorpeda - I had problems with enabling Steam inside GameHub, so can't say for sure, but it seems like GameHub could handle it the same way they already handle Proton
  • GOG/Luxtorpeda - it's a bigger topic - there are multiple ways to approach this and integrating other tools first would resolve a lot of blockers
  • For Boxtron (as it is the closest to being packaged) - we could discuss integrating it directly in GameHub, but better idea would probably be to agree on interface for the tool, making Boxtron an (optional) dependency for GameHub and pushing for inclusion in repositories. This would actually make Boxtron legit candidate for inclusion directly in distribution repositories (as opposed to rpmfusion/nonfree repos), so we wouldn't be blocked by ValveSoftware/steam-for-linux#6310 any more

dreamer avatar Sep 05 '19 02:09 dreamer

install-gog-game

GameHub already is able to extract GOG games (and even Humble Bundle ones) using innoextract / file-roller, so it could be a good idea to let that code working as it is?

As for GOG/Roberta - ScummVM does all heavy lifting of game detection already, so it might be easier to simply reimplement this tool inside GameHub directly. I can share all the necessary knowledge; installation part could be handled using install-gog-game functionality.

GameHub already has a ScummVM compatibility layer that works fine. There is one remaining issue with GOG games that has game data in some subdirectory. I implemented this (hacky) fix, but it was never merged. Anyway, if Roberta starts to grow to include specific fixes or patches or even more compatibility tools for adventure games (ResidualVM?), it could be a good idea to have it integrated directly, instead of relying on the naive approach of GameHub.

GOG/Luxtorpeda - it's a bigger topic - there are multiple ways to approach this and integrating other tools first would resolve a lot of blockers

I'm very excited about this, there are a good amount of GOG/Humble games that could work in Luxtorpeda but are not available in Steam. GameHub can already solve the issue of connecting/downloading/extracting the games.

neuromancer avatar Sep 05 '19 11:09 neuromancer

install-gog-game

GameHub already is able to extract GOG games (and even Humble Bundle ones) using innoextract / file-roller, so it could be a good idea to let that code working as it is?

Except it does not work for all games on my system - innoextract is not able to unpack every kind of GOG installer (there are like 3 different formats). Using/reimplementing install-gog-game would result in better user experience. Also, there's a step needed post-install to transform GOG metadata generated by their installer to .bat file. Personally, I think reimplementing install-gog-game in GameHub would be the easiest way to go - it works the same as installing game using Wine, but with several options hardcoded and an extra post-installation cleanup step.

This applies to GOG/Boxtron and perhaps GOG/Roberta.

GameHub already has a ScummVM compatibility layer that works fine. There is one remaining issue with GOG games that has game data in some subdirectory. I implemented this (hacky) fix, but it was never merged. Anyway, if Roberta starts to grow to include specific fixes or patches or even more compatibility tools for adventure games (ResidualVM?), it could be a good idea to have it integrated directly, instead of relying on the naive approach of GameHub.

How do I use ScummVM through GameHub? It does not show up for me (using 0.14.2).

Using --recursive is not hacky, it's the correct way to go. But to make it work, you need predictable location of game installation (hence need for install-gog-game again). Also, it's not going to work when game installation bundles several titles (which is often the case for Sierra games); Roberta handles it by splitting game run into 3 steps:

  1. if game-specific config file is missing, then generate it using scummvm -p <path> -c <config_file> --recursive --add (flags need to be passed exactly in this order)
  2. look into config file and either make corrections (renderer, resolution) or report error if no game was found
  3. run scummvm -p <path> -c <config_file> with some SDL env variables to trigger ScummVM interface and work around SDL1.2 bugs - user can adjust more options in that interface; future ScummVM releases will use SDL2, so no workarounds will be required.

I don't plan to include game-specific tweaks in Roberta (unless we will find some SDL1.2-related bugs) - if we'll need some, then I'll send them to ScummVM project directly as an Issue or PR.

GOG/Luxtorpeda - it's a bigger topic - there are multiple ways to approach this and integrating other tools first would resolve a lot of blockers

I'm very excited about this, there are a good amount of GOG/Humble games that could work in Luxtorpeda but are not available in Steam. GameHub can already solve the issue of connecting/downloading/extracting the games.

I have several games in my GOG library, that are not available on Steam and could benefit from it :)

dreamer avatar Sep 05 '19 14:09 dreamer