https://github.com/imlinguin/comet
Open Source implementation of GOG Galaxy Communication Service for SDK bundled with GOG games.
https://github.com/imlinguin/comet
gaming gog-galaxy sdk
Last synced: about 1 month ago
JSON representation
Open Source implementation of GOG Galaxy Communication Service for SDK bundled with GOG games.
- Host: GitHub
- URL: https://github.com/imlinguin/comet
- Owner: imLinguin
- License: gpl-3.0
- Created: 2022-05-09T16:50:32.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2025-04-19T09:21:35.000Z (2 months ago)
- Last Synced: 2025-04-19T15:30:49.046Z (2 months ago)
- Topics: gaming, gog-galaxy, sdk
- Language: Rust
- Homepage:
- Size: 780 KB
- Stars: 285
- Watchers: 11
- Forks: 10
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Comet
[](https://github.com/imLinguin/comet/actions/workflows/build.yml)
[](https://github.com/imLinguin/comet/releases/latest)
[](docs/steamdeck/USAGE.md)Open Source implementation of GOG Galaxy's Communication Service
This project aims to implement calls made by game through SDK.
Note: that means it can't and won't replace Communication Service in official clientThis will provide minimal and platform-agnostic SDK. For use in game launchers like Heroic or Lutris
Project is continuation of Yepoleb's work https://gitlab.com/Yepoleb/comet/ but in
~~Python~~ [now in Rust](https://github.com/imLinguin/comet/issues/15)## Supported Requests
> [!NOTE]
> The following list excludes calls that aren't made by the game- [x] LIBRARY_INFO_REQUEST
- [x] AUTH_INFO_REQUEST
- [x] GET_USER_STATS_REQUEST
- [x] SUBSCRIBE_TOPIC_REQUEST
- [x] UPDATE_USER_STAT_REQUEST
- [x] DELETE_USER_STATS_REQUEST
- [x] GET_USER_ACHIEVEMENTS_REQUEST
- [x] UNLOCK_USER_ACHIEVEMENT_REQUEST
- [x] CLEAR_USER_ACHIEVEMENT_REQUEST
- [x] DELETE_USER_ACHIEVEMENTS_REQUEST
- [x] GET_LEADERBOARDS_REQUEST
- [x] GET_LEADERBOARDS_BY_KEY_REQUEST
- [x] GET_LEADERBOARD_ENTRIES_GLOBAL_REQUEST
- [x] GET_LEADERBOARD_ENTRIES_AROUND_USER_REQUEST
- [x] GET_LEADERBOARD_ENTRIES_FOR_USERS_REQUEST
- [x] SET_LEADERBOARD_SCORE_REQUEST
- [x] CREATE_LEADERBOARD_REQUEST
- [ ] GET_GLOBAL_STATS_REQUEST
- [ ] OVERLAY_STATE_CHANGE_NOTIFICATION## How to use
Comet integration in game launchers
- Heroic - ✅ an experimental feature enabled by default (as of 2.15.0)
- Lutris - ❓ planned, no ETA
- Minigalaxy - ❓ open for Pull RequestsFor manual instructions see [running](#running)
Some client SDK versions require Windows service to be registered, refer to [dummy service](./dummy-service/README.md)
### Authentication
You need to obtain `access_token`, `refresh_token` and `user_id` either manually, or by importing them:
#### Via [Heroic Games Launcher](https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher)
Log in to GOG within the launcher.
Use `--from-heroic` for automatic import.#### Via [Lutris](https://github.com/lutris/lutris)
Log in to Lutris's GOG source.
Use `--from-lutris` for automatic import.#### Via [wyvern](https://github.com/nicohman/wyvern) (CLI)
Log in to GOG in wyvern
Use `--from-wyvern` for automatic import.#### Via [gogdl](https://github.com/Heroic-Games-Launcher/heroic-gogdl) (CLI)
If GOG authentication has never been performed in Heroic on the current user, create the expected directory:
```
mkdir -p $HOME/.config/heroic/gog_store
```Then, run the command:
```
./bin/gogdl --auth-config-path $HOME/.config/heroic/gog_store/auth.json auth --code
```Obtain the code by logging in using this URL, then copying the code value from the resulting URL:
https://login.gog.com/auth?client_id=46899977096215655&layout=galaxy&redirect_uri=https%3A%2F%2Fembed.gog.com%2Fon_login_success%3Forigin%3Dclient&response_type=code
### Running
```
comet --token "" --refresh_token "" --user-id --username
```Or if you are using Heroic/gogdl
```
comet --from-heroic --username
```Or Lutris
```
comet --from-lutris --username
```Or wyvern
```
comet --from-wyvern --username
```Or use the shortcut script provided for non-Steam shortcuts. See the [Steam Deck Usage Guide](docs/steamdeck/USAGE.md).
## Contributing
Join [Heroic Discord](https://discord.gg/rHJ2uqdquK) and reach out to us on
special [thread](https://discord.com/channels/812703221789097985/1074048840958742648)[Here](https://imlinguin.vercel.app/blog/galaxy-comm-serv-re-setup) you can find a blog post about setting up
environment for tracing the Communication Service calls (involving Proxifier and custom mitmproxy)Reverse engineered protobuf definitions are available here: https://github.com/Yepoleb/gog_protocols
## Debugging SDK Client
In order to dump logging from SDK client (the game) download [GalaxyPeer.ini](https://items.gog.com/GalaxyPeer.zip),
when placed next to game .exe it will write GalaxyPeer.log when the game is running.> [!WARNING]
> Proceed with caution, the log may contain sensitive information,
> make sure to remove such data before sharing the file with others.## Sponsoring
If you want to contribute financially you can do so via my [Ko-Fi](https://ko-fi.com/imlinguin).
You can also use any of the options to [support Heroic](https://heroicgameslauncher.com/donate)