Update readme

This commit is contained in:
Chris Marsh 2017-11-29 10:36:14 -08:00
parent 8af28e46be
commit 8307a1ad83

View file

@ -1,35 +1,27 @@
# Discord RPC # Discord RPC
This is a lib and quick demos that implement the very minimal subset to show current status, and 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.
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 Included here are some quick demos that implement the very minimal subset to show current status, and
doesn't meet your needs. have callbacks for where a more complete game would do more things (joining, spectating, etc).
## Documentation ## Documentation
The most up to date documentation for Rich Presence can always be found in our [developer site](https://discordapp.com/developers/docs/topics/rich-presence)! The most up to date documentation for Rich Presence can always be found in our [developer site](https://discordapp.com/developers/docs/topics/rich-presence)!
## Usage ## Basic Usage
Zeroith, you should be set up to build things because you are a game developer, right? 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](https://discordapp.com/developers/applications/me) First, head on over to the [Discord developers site](https://discordapp.com/developers/applications/me) and make yourself an app. Keep track of `Client ID` -- you'll need it here to pass to the init function.
and make yourself an app. Keep track of `Client ID` -- you'll need it here to pass to the init
function.
### From package ### From package
Download a release package, extract it, add `/include` to your compile includes, `/lib` to your 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.
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](https://www.microsoft.com/en-us/download/details.aspx?id=48145) 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 ### From repo
There's a [CMake](https://cmake.org/download/) file that should be able to generate the lib for There's a [CMake](https://cmake.org/download/) file that should be able to generate the lib for you; Sometimes I use it like this:
you; I use it like this:
```sh ```sh
cd <path to discord-rpc> cd <path to discord-rpc>
mkdir build mkdir build
@ -37,27 +29,36 @@ you; I use it like this:
cmake .. -DCMAKE_INSTALL_PREFIX=<path to install discord-rpc to> cmake .. -DCMAKE_INSTALL_PREFIX=<path to install discord-rpc to>
cmake --build . --config Release --target install cmake --build . --config Release --target install
``` ```
Sometimes I use the generated project files. There are a couple of CMake options you might care about: 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.
There are some CMake options you might care about:
| flag | default | does | | 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. | `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`](https://cmake.org/cmake/help/v3.7/variable/BUILD_SHARED_LIBS.html) | `OFF` | Build library as a DLL | [`BUILD_SHARED_LIBS`](https://cmake.org/cmake/help/v3.7/variable/BUILD_SHARED_LIBS.html) | `OFF` | Build library as a DLL
You can also try the `build.py` script for an easy compile for whatever OS you are on. ## Continuous Builds
Why do we have three of these? Three times the fun!
| CI | badge |
|----|-------|
| TravisCI | [![Build status](https://travis-ci.org/discordapp/discord-rpc.svg?branch=master)](https://travis-ci.org/discordapp/discord-rpc)
| AppVeyor | [![Build status](https://ci.appveyor.com/api/projects/status/qvkoc0w1c4f4b8tj?svg=true)](https://ci.appveyor.com/project/crmarsh/discord-rpc)
| Buildkite (internal) | [![Build status](https://badge.buildkite.com/e103d79d247f6776605a15246352a04b8fd83d69211b836111.svg)](https://buildkite.com/discord/discord-rpc)
## Sample: send-presence ## Sample: send-presence
This is a text adventure "game" that inits/deinits the connection to Discord, and sends a presence This is a text adventure "game" that inits/deinits the connection to Discord, and sends a presence update on each command.
update on each command.
## Sample: button-clicker ## Sample: button-clicker
This is a sample [Unity](https://unity3d.com/) project that wraps a DLL version of the library, and This is a sample [Unity](https://unity3d.com/) project that wraps a DLL version of the library, and sends presence updates when you click on a button.
sends presence updates when you click on a button.
## Sample: unrealstatus ## Sample: unrealstatus
This is a sample [Unreal](https://www.unrealengine.com) project that wraps the DLL version of the This is a sample [Unreal](https://www.unrealengine.com) 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.
library with an Unreal plugin, exposes a blueprint class for interacting with it, and uses that to
make a very simple UI.