GithubHelp home page GithubHelp logo

kevin-wijnen / comet Goto Github PK

View Code? Open in Web Editor NEW

This project forked from imlinguin/comet

0.0 0.0 0.0 429 KB

Open Source implementation of GOG Galaxy Communication Service for SDK bundled with GOG games.

License: GNU General Public License v3.0

Rust 97.86% C 1.94% Batchfile 0.21%

comet's Introduction

Comet

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 client

This 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

Supported Requests

Excluding Overlay, and Cloud Sync related.

  • LIBRARY_INFO_REQUEST (unstable)
  • AUTH_INFO_REQUEST
  • GET_USER_STATS_REQUEST
  • SUBSCRIBE_TOPIC_REQUEST
  • UPDATE_USER_STAT_REQUEST
  • DELETE_USER_STATS_REQUEST
  • GET_GLOBAL_STATS_REQUEST
  • GET_USER_ACHIEVEMENTS_REQUEST
  • UNLOCK_USER_ACHIEVEMENT_REQUEST
  • CLEAR_USER_ACHIEVEMENT_REQUEST
  • DELETE_USER_ACHIEVEMENTS_REQUEST
  • GET_LEADERBOARDS_REQUEST
  • GET_LEADERBOARD_ENTRIES_GLOBAL_REQUEST
  • GET_LEADERBOARD_ENTRIES_AROUND_USER_REQUEST
  • GET_LEADERBOARD_ENTRIES_FOR_USERS_REQUEST
  • SET_LEADERBOARD_SCORE_REQUEST
  • AUTH_STATE_CHANGE_NOTIFICATION
  • GET_LEADERBOARDS_BY_KEY_REQUEST
  • CREATE_LEADERBOARD_REQUEST
  • OVERLAY_STATE_CHANGE_NOTIFICATION

How to use

Currently service supports small amount of calls, but these are enough to play Gwent for example.

Check running

Some client SDK versions require Windows service to be registered, refer to dummy service

Authentication

You need to obtain access_token, refresh_token and user_id either manually, or by importing them:

Log in to GOG within the launcher.

Via Lutris

Log in to Lutris's GOG source.

Via 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 <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 "<access_token>" --refresh_token "<refresh_token>" --user-id <user_id> --username <USERNAME>

Or if you are using Heroic/gogdl

comet --from-heroic --username <USERNAME>

Or Lutris

comet --from-lutris --username <USERNAME>

Or use the shortcut script provided for non-Steam shortcuts. See the Steam Deck Usage Guide.

Contributing

Join Heroic Discord and reach out to us on special thread

Here 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 download GalaxyPeer.ini, 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.
You can also use any of the options to support Heroic

comet's People

Contributors

imlinguin avatar kevin-wijnen avatar purplebar0 avatar jonboylecoding avatar commandmc avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.