[][src]Crate discord_game_sdk

This crate provides a safe interface to the Discord Game SDK.

This crate is not official, it is not supported by the Discord Game SDK Developers.

The Discord Game SDK provides features such as, but not limited to:

  • Activities (Rich Presence)
  • Users, Avatars and Relationships
  • Lobbies, Matchmaking and Voice communication
  • Faux-P2P Networking on Discord's Infrastructure
  • Cloud Synchronized Storage
  • Store Transactions
  • Achievements

Version requirement: Rust 1.37 and up.

Release Notes

Usage

Add this to your Cargo.toml:

[dependencies]
discord_game_sdk = "1.0.1"

Read up on potential bindgen requirements.

Download the Discord Game SDK and set the following environment variable to where you extracted it:

export DISCORD_GAME_SDK_PATH=/path/to/discord_game_sdk

If you're also planning on using the default link feature, keep reading below.

Features:

Enabled by default, delegates to discord_game_sdk_sys/link.

Provides functional linking with the caveat that libraries are renamed and some additional set-up is required:

# Linux: prepend with `lib` and add to library search path
cp $DISCORD_GAME_SDK_PATH/lib/x86_64/{,lib}discord_game_sdk.so
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}$DISCORD_GAME_SDK_PATH/lib/x86_64

# Mac OS: prepend with `lib` and add to library search path
cp $DISCORD_GAME_SDK_PATH/lib/x86_64/{,lib}discord_game_sdk.dylib
export DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH:+${DYLD_LIBRARY_PATH}:}$DISCORD_GAME_SDK_PATH/lib/x86_64

# Windows: change `dll.lib` to `lib` (won't affect library searching)
cp $DISCORD_GAME_SDK_PATH/lib/x86_64/discord_game_sdk.{dll.lib,lib}
cp $DISCORD_GAME_SDK_PATH/lib/x86/discord_game_sdk.{dll.lib,lib}

This allows for cargo run to function.

image

Optional crate.

Provides a conversion from our Image to image::RgbaImage.

Safety

This crate relies on the SDK to provide correct data and behavior:

  • Non-null pointers to valid memory
  • UTF-8, NUL-terminated strings
  • No mutation of memory it should have no ownership of
  • No use of pointers after destroy is called

Some of these are tested when compiled with debug_assertions.

Legal

You MUST acquaint yourself with and agree to the official terms of the Discord Game SDK.

The code of the Rust crates discord_game_sdk and discord_game_sdk_sys are licensed at your option under either of:

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Communication and Support

I can be reached via Discord twiikuu#0047, on the Official Game SDK Server (nicked as ldesgoui (rust wrapper)), as well as twitter and email. I reserve myself no obligation to support you, although I'm generally nice.

Structs

Activity

Activity (also known as Rich Presence)

Discord

Main interface with SDK

Entitlement

Proof that user has made a purchase

FileStat

File Metadata

Image

Image with pixel data

ImageHandle

Image Handle

InputMode

Input Mode

Lobby

Lobby

LobbyMemberTransaction

Lobby Member Transaction

LobbyTransaction

Lobby Transaction

OAuth2Token

OAuth 2.0 Token

Presence

User Presence

Relationship

Relationship

SearchQuery

Lobby Search

Sku

SKU (stock keeping unit)

User

User

UserAchievement

User Achievement

UserFlags

User Flags

Enums

Action

Activity Action

ActivityKind

Activity Type

Cast

Lobby Search Cast

Comparison

Lobby Search Comparison

CreateFlags

Discord Creation Flags

Distance

Lobby Search Max Distance

EntitlementKind

Entitlement Type

Error

Discord Error

FetchKind

Image Fetch Option

ImageKind

Image Type

InputModeKind

Input Mode Type

LobbyKind

Lobby Type

PremiumKind

Premium Type

RelationshipKind

Relationship Type

Reliability

Network Channel Reliability

RequestReply

Activity Join Request Reply

SkuKind

SKU Type

Status

User Status

Traits

EventHandler

Trait providing callbacks for the SDK.

Type Definitions

ClientID

Client ID of an Application

LobbyID

Unique ID of a Lobby

NetworkChannelID

ID of a Network Channel

NetworkPeerID

ID of a Network Peer

Result

Alias for a Result with the error type discord_game_sdk::Error

Snowflake

Unique ID across Discord

UnixTimestamp

UNIX Timestamp, number of seconds since 1 January 1970

UserID

ID of a User