bartok765 / galaxy_blizzard_plugin

GOG Galaxy 2.0 plugin for Blizzard
MIT License
35 stars 15 forks source link

Galaxy plugin for Battle.net

This plugin allows you to install and launch your Blizzard games via the GOG Galaxy 2.0 launcher.

Installation

Use build-in Search engine from GOG Galaxy 2.0 Settings

Note: The actual code in build-in Search is a reviewed fork https://github.com/FriendsOfGalaxy/galaxy-integration-blizzard prepared by FriendsOfGalaxy

From source (tested on windows 10 and macos 10.14 with python 3.7)

Note on playtime

Currently we only support displaying the total playtime of your quickplay matches in Overwatch. Playtime might take some time to update after you quit the game.

Important: Make sure your Overwatch profile is set to public in order to show your playtime. To do that, start up Overwatch and navigate to the Options. From there click the "Social" tab and toggle the option "Career Profile Visibility" to "Public".

Note on Classic Blizzard Games not detected as installed or launching

If you have classic Blizzard games which are not properly detected as installed or don't launch when clicking 'play' you can contribute to the project to improve it! Please open an issue and provide the name and values of the game's key which can be found as below:

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\

Windows registry path (by opening Run-> regedit)

If on MAC please provide the games bundle_id which can be found by calling

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump | grep {game_name}

Uninstallation (remove all data)

Click Disconnect button in GOG Galaxy Settings. If you see Connect instead of Disconnect (this may happen on plugin crash or accessing from different machine) you need to connect it again and then disconnect.

"Soft" disconnect (advanced)

If you want to keep imported data (owned games, play time), but do not need to sync more and play with local games, you can "turn off" local plugin:

Help us with game detection

Unfortunately, games' details must currently be hardcoded for detection, and are kept in definitions.py

Blizzard games must be added to the map of title IDs with their UID, game name, and product family

Type of Blizzard ID: Product family UID Title ID Game name
Use in plugin: Launching Installation Ownership detection Proper display in Galaxy
Example: Pro prometheus 5272175 Overwatch

Game name

The game name should match the name in Battle.net exactly, including special characters

Product family

Product family may be found in configs (in C:\Users\<user>\AppData\Roaming\Battle.net) as e.g.

{
    "User": {
        "Client": {
            "PlayScreen": {
                "GameFamily": {
                    "WoW": {                <-- Family
                        "CustomTabOrder": "1"
                    },
                    "D3": {
                        "CustomTabOrder": "2"
                    },
            ...
UID

UID may be present in Battle.net.config in configs directory (C:\Users\<user>\AppData\Roaming\Battle.net) if the game was installed, as e.g.

{
    "Games": {
        "osi_beta": {
            "ServerUid": "osi_beta",        <-- UID
            "LastActioned": "1632131669",
            "Resumable": "true"
        }
}

This may also be helpful in determining UIDs:

https://wowdev.wiki/TACT#Products (Agent Product is our UID here)

As visible in these tables, multiple versions of a game correspond to different UIDs, but in current plugin architecture it is not possible to set ownership for multiple game versions at once.

Title ID

Title ID can be checked for your games by checking the https://account.battle.net/api/games-and-subs endpoint in a browser while logged in to your Battle.net account

Further notes

Battle.net client logs, which can be found in e.g. %LOCALAPPDATA%\Battle.net\Logs may be helpful in providing this information. You may be able to find some information in logs for unowned games.

Development

Install required packages for building and testing:

pip install -r requirements/dev.txt

You may want to install the pacakges in a virtual environment:

pip install virtualenv
cd galaxy_blizzard_plugin
virtualenv .venv
.venv\Scripts\activate.bat
pip install -r requirements/dev.txt

Run tests:

inv test

Build package

inv build [--output=<output_folder>] [--ziparchive=<zip_package_name.zip>]

Shortcuts:

Build to local plugins folder

inv install

Build zip package with name indicating current version:

inv pack