imLinguin / comet

Open Source implementation of GOG Galaxy Communication Service for SDK bundled with GOG games.
GNU General Public License v3.0
246 stars 10 forks source link

Support *extremely rare* games using the GOG Linux SDK #33

Closed cybik closed 3 weeks ago

cybik commented 4 months ago

Is your feature request related to a problem? No, it is only to bring attention to a very rare edge-case: some GOG games obtained through GOG may be bunding the "steam runtime" native Linux variant of the Galaxy libraries.

The ONE example I have of this is Indivisible. I know of it because I'm the one who bundled it for all platforms, and I insisted on having the Linux native libraries in place "just in case CDPr ever launched Galaxy on Linux". We can all guess how that turned out.

Describe the solution you'd like If necessary, a native GalaxyCommunication "service" binary for Linux would be nice.

Describe alternatives you've considered This ticket is only to raise the issue. I haven't considered anything.

Additional context The current state of the Linux Native bits will require someone to have access to GOG DevPortal.

kevin-wijnen commented 4 months ago

Hey there - have you seen the current (for Windows version of games) solution here already?

This seems similar to your raised issue - except for this case focusing on Linux-native binaries. Some Windows games (i.e. Cuphead) rely on a very old SDK of GOG that needed a dummy Communication Service binary to get Comet working. Although most Windows games (and even few Linux native ones - like Stardew Valley and Crypt of the NecroDancer) work fine without the dummy service at the moment.

Not sure if there's any way to adopt the information @imLinguin learned for the Windows dummy binary could be used for a Linux native binary.

Are there any other known games that have the same situation as Indivisible?

(Also - thanks for packaging Indivisible back then for all platforms and keeping Linux support in mind. 🫡)

imLinguin commented 4 months ago

Thanks for bringing this up!
Like @kevin-wijnen said we had some luck with native games here. To the mentioned list I'd like to add Streets of Rage 4.

I've researched this topic a bit, the requirement for having a GalaxyCommunication service. In fact the feature of SDK actually checking for that service was introduced in newer versions and is there to reduce delays in game launch when there nothing listens on the communication port.

As far as I know it's no longer possible to access Linux native stuff through DevPortal.
Out of curiosity I'll test the Indivisible

cybik commented 4 months ago

Hey there - have you seen the current (for Windows version of games) solution here already?

@kevin-wijnen I pointed it out in the ticket description, but basically, yes it would:

If necessary, a native GalaxyCommunication "service" binary for Linux would be nice.

@imLinguin re:

As far as I know it's no longer possible to access Linux native stuff through DevPortal.

That's not what I'm seeing. Somehow my creds are still valid, and going under "GOG Galaxy Components" and into SDK, steam-runtime is present. It's quirky and they're being VERY coy about Linux binaries, like, existing, but the binaries are there. The issue here is whether they do anything at all or are mere shims - I never tested that.

cybik commented 4 months ago

For the record (can't believe I'm opening the data after all this time), the GOG variant was intended to be DRM-free.

In other words, if the GOG Galaxy desktop client (or its replacement) isn't there, the game code goes "meh" and plays the game all the same, but it does try to initialize GOG via the galaxy library.

So in a way, we don't need the shim service (I updated OP to point out if necessary just now); I mostly opened this ticket to make sure that the rare instances of native Linux games with native Linux Galaxy libs would not be forgotten.

imLinguin commented 4 months ago

For the record (can't believe I'm opening the data after all this time), the GOG variant was intended to be DRM-free.

In other words, if the GOG Galaxy desktop client (or its replacement) isn't there, the game code goes "meh" and plays the game all the same, but it does try to initialize GOG via the galaxy library.

Yes, that makes sense, that's the whole idea behind GOG after all. Such failure needs to be treated differently for games that involve any type of multiplayer to disable/limit it.

So in a way, we don't need the shim service

That's right, I can't imagine how would they replace the logic for finding and running GalaxyCommunication service on Linux.

cybik commented 4 months ago

Came back to add:

At the very least, comet as it is right now can actually yell achievements back to GOG and Indivisible successfully hooks up to it. I just checked!

kevin-wijnen commented 4 months ago

That's great! Definitely consider filling out a Game Compatibility form to get it on the list!

imLinguin commented 4 months ago

Checked that as well, was able to unlock 2 achievements obraz

cybik commented 4 months ago

On my side it didn't manage to track play time. Not sure why.

imLinguin commented 4 months ago

Playtime isn't handled by comet unfortunately. At the moment Heroic Games Launcher does the tracking

imLinguin commented 1 month ago

Created a wiki page for game developers to refer to in regards of Linux native SDK
https://github.com/imLinguin/comet/wiki/For-Game-Developers

cybik commented 3 weeks ago

All right then, at this point I think I can consider this closed.

And good stuff on the presentation at Ubuntu Summer '24!