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.
§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:
§link
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
- File
Stat - File Metadata
- Image
- Image with pixel data
- Image
Handle - Image Handle
- Input
Mode - Input Mode
- Lobby
- Lobby
- Lobby
Member Transaction - Lobby Member Transaction
- Lobby
Transaction - Lobby Transaction
- OAuth2
Token - OAuth 2.0 Token
- Presence
- User Presence
- Relationship
- Relationship
- Search
Query - Lobby Search
- Sku
- SKU (stock keeping unit)
- User
- User
- User
Achievement - User Achievement
- User
Flags - User Flags
Enums§
- Action
- Activity Action
- Activity
Kind - Activity Type
- Cast
- Lobby Search Cast
- Comparison
- Lobby Search Comparison
- Create
Flags - Discord Creation Flags
- Distance
- Lobby Search Max Distance
- Entitlement
Kind - Entitlement Type
- Error
- Discord Error
- Fetch
Kind - Image Fetch Option
- Image
Kind - Image Type
- Input
Mode Kind - Input Mode Type
- Lobby
Kind - Lobby Type
- Premium
Kind - Premium Type
- Relationship
Kind - Relationship Type
- Reliability
- Network Channel Reliability
- Request
Reply - Activity Join Request Reply
- SkuKind
- SKU Type
- Status
- User Status
Traits§
- Event
Handler - Trait providing callbacks for the SDK.
Type Aliases§
- ClientID
- Client ID of an Application
- LobbyID
- Unique ID of a Lobby
- Network
ChannelID - ID of a Network Channel
- Network
PeerID - ID of a Network Peer
- Result
- Alias for a
Result
with the error typediscord_game_sdk::Error
- Snowflake
- Unique ID across Discord
- Unix
Timestamp - UNIX Timestamp, number of seconds since 1 January 1970
- UserID
- ID of a User