General Remarks¶
Project Structure¶
In our demo project, we use one main class called GalaxyManager, as well as 7 other classes, which we refer to as feature classes. Each feature class represents a separate functionality of the GOG GALAXY SDK.
The feature classes are:
- Friends
- Invitations
- Leaderboards
- Matchmaking
- Networking
- StatsAndAchievements
- Storage
GalaxyManager contains definitions for the most basic GOG GALAXY SDK methods, which can be used even if the SDK was not fully initialized, such as GetCurrentGameLanguage()
and IsDLCInstalled()
. It assigns its own instance to the GalaxyManager.Instance
static variable, which is accessible throughout the entire project. For ease of access, it initializes, terminates, and holds references to all feature classes.
Feature Class Structure¶
To improve the readability of the feature classes, we have structured them in accordance with a specific scheme outlined below — but this is completely optional.
In our scheme, every class is divided into 5 regions:
Region | Description |
---|---|
Variables | Contains all variables defined in the class |
Behaviors | Contains all MonoBehaviour methods used for script behaviour (e.g. OnEnable() , OnDisable() , or Update() ) |
Listener methods | Contains all methods related to listeners (in most cases, these are limited to methods, which initialize and terminate listeners) |
Methods | Contains all methods related to the particular feature class |
Listeners | Contains definitions of all listener classes related to the particular feature class |
Debug Menu¶
At any point during the game, you can open Debug Menu by pressing F9. Debug Menu allows you to call many of the Galaxy SDK methods from anywhere in the game. The result of the call will be shown in the Console, which is also available from Debug Menu. The menu was created for testing and debugging purposes, and contains several sections:
Section | Function |
---|---|
User | Allows you to monitor the current user’s status, which includes: ✔︎ checking if the SDK Init() method was successfully called, ✔︎ checking if the user is Signed In (the GOG GALAXY client is running and the game license is present on the user’s account), ✔︎ checking if the user is Logged On (the user is Signed In and the internet connection is available), ✔︎ displaying the user’s nickname. It also allows you to sign in or sign out a user, or check current user status |
Apps | Allows you to call the GetCurrentGameLanguage() which returns current game language (based on language set in the GOG GALAXY client), as well as IsDlcInstalled used to check whether a particular DLC is installed by passing its productID |
Utils | Allows you to show a website with a provided URL in the GOG GALAXY Overlay and set users rich presence |
Achievements | Allows you to set (unlock) game achievements by passing their apiKey, get the unlock statuses of achievements, as well as to reset all user statistics and achievements in the game |
Statistics | Allows you to set values for all user statistics in game by calling the SetStatFloat() and SetStatInt() methods, to get these values, and to reset all user statistics and achievements in the game |
Leaderboards | Allows you to request different scopes of entries (global and near the user) for a particular leaderboard, as well as to set the user’s score on a particular leaderboard |
Storage | Allows you to upload and download files from the GOG GALAXY Cloud Storage. The FileWrite method moves a file specified by its absolute path to the GOG GALAXY Local Storage directory. Files located in the GOG GALAXY Local Storage will be synchronized with the GOG GALAXY Cloud Storage automatically. FileRemove removes a file specified by its path relative to the GOG GALAXY Local Storage, FileShare will share the file to the GOG GALAXY Cloud Storage, while FileShareAll will share all files located in the GOG GALAXY Local Storage. Shared files can be downloaded by any GOG user in the game by using sharedFileID of a file, and this is exactly what the FileDownloadBySharedFileID method does. FileDownloadByNameAndUser adds a level of abstraction to this process that allows you to download a file by specifying its name and the user ID of its owner |
Game | Allows you to remove specific gameObjects (pool balls) from the scene to make the game easier, or to finish the game (yep, it’s cheating, but no one needs to know) |
Arguments | Displays all arguments that were used to start the game |
Console | Displays Unity debug logs on the screen |
Glossary¶
- GOG GALAXY Client — our optional gaming client developed for easy access to games and goodies. Required for most of the GOG GALAXY SDK features to work.
- GOG GALAXY SDK — a set of libraries that allow you to implement the GOG GALAXY features in your games.
- GOG GALAXY Peer — a working instance of the GOG GALAXY SDK.