Crate discord_game_sdk

Source
Expand description

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.

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 Aliases§

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