imLinguin / comet

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

Current compatibility #2

Closed purplebar0 closed 2 months ago

purplebar0 commented 1 year ago

Hi! I wanted to test Comet in its current state with games installed using nicohman/wyvern.

Obtaining access token, refresh token (using underscore in README.MD, please fix) and user ID was easy enough reading ~/.config/wyvern/wyvern.toml, which worked:

INFO:comet_main:started listening on port 9977

However, starting a game (Cyberpunk 2077) gave the same results as Comet not running. This leads me to believe the launcher is also involved in establishing a session.

Will it be possible to play without a launcher? Have I made a mistake in testing?

imLinguin commented 1 year ago

You need to make sure the tokens are refreshed (for example by using sync command). Is there any output after you run Cyberpunk? Keep in mind games establish the connection at the start or in the game menu, so comet needs to run beforehand.

purplebar0 commented 1 year ago

Update: Using the same token combination as in May 24th, making sure all games are Windows versions, I tested Cyberpunk 2077 (no console output from Comet), Firewatch (no console output from Comet, attempted to unlock an already unlocked achievement) and Absolute Drift.

Absolute Drift was the exception, I had an achievement successfully unlock. Leaderboards didn't work at all, but it isn't surprising considering the current progress.

imLinguin commented 1 year ago

That issue with SDK not connecting sounds new, I'll try looking into that. Maybe games look for some registry keys before initializing the SDK or just try different ports before.

For leaderboards in Absolute Drift, issue like this is to be expected since we are still missing LEADERBOARDS_BY_KEY request.

purplebar0 commented 1 year ago

As for Cyberpunk 2077, I took a look at a list of parameters extracted from the game executable and -gameServicesWrapper ? seems to be argument to look into for that specific game. What the value is supposed to be is currently unknown.

imLinguin commented 1 year ago

The parameter isn't used by Galaxy nevertheless, if you take a look at goggame-GAMEID.info, you'll see what's being passed in

purplebar0 commented 1 year ago

The parameter isn't used by Galaxy nevertheless, if you take a look at goggame-GAMEID.info, you'll see what's being passed in

True, but passing a dummy value makes a significant difference; just by looking at the main menu, "GOG rewards" actually work, and cloud sync doesn't report an error (even when it should, at least in case if authentication wasn't performed). I feel like it's worth testing.

Edit: If nothing else, that parameter makes the rewards actually work, that's fun.

imLinguin commented 1 year ago

Cross platform cloud sync in CP and the Witcher works, it's just not handled by SDK, but the game itself (only requiring authorization)

kevin-wijnen commented 1 year ago

Can +1 the issue of some games not interacting with Comet, illustrated with two other games on a system running Linux, playing the games through Valve's Proton tool:

Note: I did encounter this issue on a non-standard system (Steam Deck), running Comet through a PyInstaller-packaged version. I will make a Pull Request to have GitHub Actions auto-publish Steam Deck-compatible builds (as Steam Decks can't install Python-related dependencies etc. without unlocking the root filesystem, which in turn can get wiped after an update making unlocking it an unsuitable long-term solution to use Comet in combination with Heroic).

imLinguin commented 2 months ago

Going to close this now.. I'll look into having an automatic import of the auth from wyvern to further ease the usage with it.

In an event of compatibility issues with any games please make separate issues accordingly