Giter Club home page Giter Club logo

discord-rpc's Introduction

Discord RPC

This is a library for interfacing your game with a locally running Discord desktop client. It's known to work on Windows, macOS, and Linux. You can use the lib directly if you like, or use it as a guide to writing your own if it doesn't suit your game as is. PRs/feedback welcome if you have an improvement everyone might want, or can describe how this doesn't meet your needs.

Included here are some quick demos that implement the very minimal subset to show current status, and have callbacks for where a more complete game would do more things (joining, spectating, etc).

Documentation

The most up to date documentation for Rich Presence can always be found in our developer site!

Basic Usage

Zeroith, you should be set up to build things because you are a game developer, right?

First, head on over to the Discord developers site and make yourself an app. Keep track of Client ID -- you'll need it here to pass to the init function.

From package

Download a release package for your platform(s) -- they have subdirs with various prebuilt options, select the one you need add /include to your compile includes, /lib to your linker paths, and link with discord-rpc. For the dynamically linked builds, you'll need to ship the associated file along with your game.

From repo

There's a CMake file that should be able to generate the lib for you; Sometimes I use it like this:

    cd <path to discord-rpc>
    mkdir build
    cd build
    cmake .. -DCMAKE_INSTALL_PREFIX=<path to install discord-rpc to>
    cmake --build . --config Release --target install

There is a wrapper build script build.py that runs cmake with a few different options.

Usually, I run build.py to get things started, then use the generated project files as I work on things. It does depend on click library, so do a quick pip install click to make sure you have it if you want to run build.py.

There are some CMake options you might care about:

flag default does
ENABLE_IO_THREAD ON When enabled, we start up a thread to do io processing, if disabled you should call Discord_UpdateConnection yourself.
USE_STATIC_CRT OFF (Windows) Enable to statically link the CRT, avoiding requiring users install the redistributable package. (The prebuilt binaries enable this option)
BUILD_SHARED_LIBS OFF Build library as a DLL

Continuous Builds

Why do we have three of these? Three times the fun!

CI badge
TravisCI Build status
AppVeyor Build status
Buildkite (internal) Build status

Sample: send-presence

This is a text adventure "game" that inits/deinits the connection to Discord, and sends a presence update on each command.

Sample: button-clicker

This is a sample Unity project that wraps a DLL version of the library, and sends presence updates when you click on a button. Run python build.py unity in the root directory to build the correct library files and place them in their respective folders.

Sample: unrealstatus

This is a sample Unreal project that wraps the DLL version of the library with an Unreal plugin, exposes a blueprint class for interacting with it, and uses that to make a very simple UI. Run python build.py unreal in the root directory to build the correct library files and place them in their respective folders.

Wrappers and Implementations

Below is a table of unofficial, community-developed wrappers for and implementations of Rich Presence in various languages. If you would like to have yours added, please make a pull request adding your repository to the table. The repository should include:

  • The code
  • A brief ReadMe of how to use it
  • A working example
Rich Presence Wrappers and Implementations
Name Language
discord-rpc.jar Java
java-discord-rpc Java
Discord-IPC Java
Discord Rich Presence JavaScript
drpc4k Kotlin
SwordRPC Swift

discord-rpc's People

Contributors

arsenarsen avatar azoy avatar bluexin avatar couleeapps avatar crmarsh avatar devsnek avatar fades avatar fzwoch avatar intelorca avatar jagrosh avatar janisozaur avatar jasoncitron avatar judge2020 avatar k1-801 avatar max-kamps avatar minndevelopment avatar msciotti avatar sk83rjosh avatar sll552 avatar snowyote avatar yalter avatar

Watchers

 avatar  avatar  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.