This project provides Java bindings for the Discord GameSDK.
To be honest I'm not sure if people even need this, because Discord apparently discarded its game store idea.
But maybe the activity, overlay, user, and relationship features could be useful to some people.
If you are just looking for an alternative to the deprecated Discord Rich Presence SDK, head over to the ActivityExample.java!
Some of the features are deprecated by Discord as of Wed, 09 Nov 2022 and will be decommissioned and stop working on Tuesday May 2, 2023. They are marked with 💔 in the table. Those already implemented will most likely continue to work until Discord decommissions them. Those not implemented will remains such, as putting work into features which will end working in less than a year does not seem worth it to me.
Feature | State | Example |
---|---|---|
Achievements | ❌ not implemented 💔 | |
Activities | ✔️ implemented | ActivityExample.java |
Applications | ❌ not implemented 💔 | |
Voice | ✔️ implemented 💔 | VoiceExample.java |
Images | ✔️ implemented 💔 | none yet 😢 (see imageTest() for now) |
Lobbies | ✔️ implemented 💔 | LobbyExample.java |
Networking | ✔️ implemented 💔 | NetworkExample.java |
Overlay | ✔️ implemented | none yet 😢 (see overlayTest() for now) |
Relationships | ✔️ implemented | RelationshipExample.java, FriendNotificationExample.java |
Storage | ❌ not implemented 💔 | |
Store | ❌ not implemented 💔 | |
Users | ✔️ implemented | none yet 😢 (see userTest() for now) |
I will try to work on features that are not implemented yet soon, but the remaining ones are quite difficult to test, so I don't know how much progress I can make on them.
There are pre-compiled builds on JitPack together with instructions how to use them for all common build tools.
For projects not using any build tools, download a pre-compiled JAR-file (discord-game-sdk4j-<version>.jar
)
from the releases page.
If you want, you can also download the JavaDocs (discord-game-sdk4j-<version>-javadoc.jar
) or
the sources (discord-game-sdk4j-<version>-sources.jar
).
You do not need to download the .dll or .so files! They are packed in the JAR and will be automatically extracted.
After downloading those JARs, just add the main JAR to your project's classpath and optionally attach sources or JavaDocs.
To install the library from source first of all clone the repository:
git clone https://github.com/JnCrMx/discord-game-sdk4j.git
To obtain the native libraries you can build them from source too (see below) or just download them:
sh jitpack-download-natives.sh
Finally build (and install) the library with Maven:
mvn install -Dmaven.antrun.skip=true
If you want to skip the tests (sometimes they fail for really weird reasons), add -DskipTests
to the command arguments.
To build the native libraries from source make sure you have CMake, a compiler that works with CMake (e.g. gcc) and a JDK11 installed and properly set up.
Then download Discord's native library
and extract it to ./discord_game_sdk/
.
The CMake build system is integrated in Maven, so just execute to following command to build and install the Java and native library:
mvn install
To use the library, you first need to download Discord's native library. Extract the ZIP file and remember where you put it.
In code the first step is initializing the Core. To do this you need to pass the path to Discord's native library as an argument.
You can find this library in the directory you just extracted the ZIP file at lib/x86_64/discord_game_sdk.dll
(for 64-bit Windows)
and lib/x86_64/discord_game_sdk.so
(for 64-bit Linux):
Core.init(new File("<path to the native library>"));
Now you are ready to use the library!
try(CreateParams params = new CreateParams())
{
params.setClientID(<your application ID as a long>);
params.setFlags(CreateParams.getDefaultFlags());
try(Core core = new Core(params))
{
// do something with your Core
}
}
For real examples see the examples/
directory in this repository.