Go to file
Michał Janiszewski 2af5adca3d Use simpler version of GetModuleFileNameW
As per
https://msdn.microsoft.com/en-us/library/windows/desktop/ms683198(v=vs.85).aspx,
the advised use for getting the file name of a module from `<current
process>` is to use the simplified version. Additionally, this clears
the confusion introduced in Win7's PSAPI which moved
`GetModuleFileNameExW` into the kernel, changing its signature to
`K32GetModuleFileNameExW`, effectively breaking pre-Win7 uses unless
actively mitigated with `#define PSAPI_VERSION 1`
2017-11-29 08:08:47 -08:00
documentation fix event names and add ACTIVITY_JOIN_REQUEST (#10) 2017-11-09 13:32:17 -08:00
examples Moved generated.h include to last position as it is required by UE4. 2017-11-19 17:26:33 -08:00
include Unity ajt fix 2017-11-02 11:59:45 -07:00
src Use simpler version of GetModuleFileNameW 2017-11-29 08:08:47 -08:00
.clang-format Update to clang-format 6, specify all the options, turn off sort includes. 2017-11-13 10:50:37 -08:00
.gitignore Register upgrade (#2) 2017-08-30 15:17:47 -07:00
.travis.yml Skip formatting on Travis 2017-11-17 10:53:59 -08:00
appveyor.yml Change appveyor artifacts 2017-11-22 08:51:37 -08:00
build.py wip build script, playing with buildkite logging 2017-11-28 10:58:10 -08:00
CMakeLists.txt wip more build script, add signing 2017-11-28 10:27:40 -08:00
LICENSE Adding MIT license. 2017-11-01 15:25:14 -07:00
README.md Provide link to info about BUILD_SHARED_LIBS 2017-11-15 11:35:55 -08:00

Discord RPC

This is a lib and 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. 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.

Documentation

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

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, extract it, add /include to your compile includes, /lib to your linker paths, and link with discord-rpc.

Note that the release packages were compiled using Visual Studio 2015, so the Visual C++ Redistributable for VS2015 will be a requirement for your game. If you wish to avoid this dependency, you should compile the libraries yourself using whatever dependencies are already in your game.

From repo

There's a CMake file that should be able to generate the lib for you; 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

Sometimes I use the generated project files. There are a couple of 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.
BUILD_SHARED_LIBS OFF Build library as a DLL

You can also try the build.py script for an easy compile for whatever OS you are on.

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.

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.