Expand description
This crate provides a Bevy plugin for integrating with the Steamworks SDK.
The underlying steamworks crate comes bundled with the redistributable dynamic libraries a compatible version of the SDK. Currently it’s v153a.
§Usage
To add the plugin to your app, simply add the SteamworksPlugin
to your
App
. This will require the AppId
provided to you by Valve for initialization.
use bevy::prelude::*;
use bevy_steamworks::*;
fn main() {
// Use the demo Steam AppId for SpaceWar
App::new()
// it is important to add the plugin before `RenderPlugin` that comes with `DefaultPlugins`
.add_plugins(SteamworksPlugin::init_app(480).unwrap())
.add_plugins(DefaultPlugins)
.run();
}
The plugin adds Client
as a Bevy ECS resource, which can be
accessed like any other resource in Bevy. The client implements Send
and Sync
and can be used to make requests via the SDK from any of Bevy’s threads.
The plugin will automatically call SingleClient::run_callbacks
on the Bevy
every tick in the First
schedule, so there is no need to run it manually.
All callbacks are forwarded as Events
and can be listened to in the a
Bevy idiomatic way:
use bevy::prelude::*;
use bevy_steamworks::*;
fn steam_system(steam_client: Res<Client>) {
for friend in steam_client.friends().get_friends(FriendFlags::IMMEDIATE) {
println!("Friend: {:?} - {}({:?})", friend.id(), friend.name(), friend.state());
}
}
fn main() {
// Use the demo Steam AppId for SpaceWar
App::new()
// it is important to add the plugin before `RenderPlugin` that comes with `DefaultPlugins`
.add_plugins(SteamworksPlugin::init_app(480).unwrap())
.add_plugins(DefaultPlugins)
.add_systems(Startup, steam_system)
.run();
}
Modules§
- networking_
messages - The non-connection-oriented interface to send and receive messages (whether they be “clients” or “servers”).
- networking_
sockets - networking_
utils
Structs§
- Account
Id - A user’s account id
- AppId
- An id for a steam app/game
- Apps
- Access to the steam apps interface
- Auth
Session Ticket Response - Called when generating a authentication session ticket.
- Auth
Ticket - A handle for an authentication ticket that can be used to cancel it.
- Callback
Handle - A handle that can be used to remove a callback at a later point.
- Client
- A Bevy compatible wrapper around
steamworks::Client
. - Create
Query Error - Download
Item Result - Floating
Gamepad Text Input Dismissed - Friend
- Friend
Flags - Friend
Game - Information about a friend’s current state in a game
- Friends
- Access to the steam friends interface
- GameId
- A game id
- Game
Lobby Join Requested - Game
Overlay Activated - Gamepad
Text Input Dismissed - Input
- Access to the steam input interface
- Install
Info - Invalid
Error Code - Item
State - Leaderboard
- Leaderboard
Entry - Leaderboard
Score Uploaded - Lobby
Chat Update - A lobby chat room state has changed, this is usually sent when a user has joined or left the lobby.
- Lobby
Data Update - LobbyId
- Lobby
Key - A wrapper for a lobby key string.
- Lobby
KeyToo Long Error - Lobby
List Filter - Filters for the lobbies to be returned from
request_lobby_list
. - Matchmaking
- Access to the steam matchmaking interface
- Micro
TxnAuthorization Response - Near
Filter - A filter used for near-value sorting in lobby filtering.
- Networking
- Access to the steam networking interface
- Number
Filter - A filter used for numerical attribute comparison in lobby filtering.
- P2PSession
Connect Fail - P2PSession
Request - Called when a user wants to communicate via p2p
- Persona
Change - Persona
State Change - Published
File Id - Worshop item ID
- Query
Handle - Query handle, to allow for more filtering.
- Query
Result - Query result
- Query
Results - Query results
- Remote
Play - Remote
Play Connected - A remote play session was established
- Remote
Play Disconnected - A remote play session was closed
- Remote
Play Session - Remote
Play Session Id - Remote
Storage - Access to the steam remote storage interface
- Server
- The main entry point into the steam client for servers.
- Server
Manager - Manages keeping the steam api active for servers
- Steam
File - A handle for a possible steam cloud file
- Steam
File Info - Name and size information about a file in the steam cloud
- Steam
File Reader - A read handle for a steam cloud file
- Steam
File Writer - A write handle for a steam cloud file
- SteamId
- A user’s steam id
- Steam
Server Connect Failure - Called when the connection to the Steam servers fails.
- Steam
Servers Connected - Called when a connection to the Steam servers is made.
- Steam
Servers Disconnected - Called when the connection to the Steam servers is lost.
- Steamworks
Plugin - A Bevy
Plugin
for adding support for the Steam SDK. - String
Filter - A filter used for string based key value comparisons.
- Ticket
ForWeb ApiResponse - Called when generating a authentication session ticket for web api.
- UGC
- Update
Handle - A handle to update a published item
- Update
Watch Handle - A handle to watch an update of a published item
- User
- Access to the steam user interface
- User
Achievement Stored - Result of a request to store the achievements on the server, or an “indicate progress” call.
If both
current_progress
andmax_progress
are zero, that means the achievement has been fully unlocked. - User
Restriction - see Steam API
- User
Stats - Access to the steam user interface
- User
Stats Received - Callback type after calling
request_current_stats()
. - User
Stats Stored - Callback triggered by
store()
. - Utils
- Access to the steam utils interface
- Validate
Auth Ticket Response - Called when an authentication ticket has been validated.
Enums§
- AppIDs
- AppID filter for queries. The “consumer” app is the app that the content is for. The “creator” app is a separate editor to create the content in, if applicable.
- Auth
Session Error - Errors from
begin_authentication_session
- Auth
Session Validate Error - Errors from
ValidateAuthTicketResponse
- Chat
Member State Change - Flags describing how a users lobby state has changed. This is provided from
LobbyChatUpdate
. - Comparison
Filter - Distance
Filter - File
Type - Floating
Gamepad Text Input Mode - Friend
State - Gamepad
Text Input Line Mode - Gamepad
Text Input Mode - Leaderboard
Data Request - Leaderboard
Display Type - Leaderboard
Sort Method - Lobby
Type - The visibility of a lobby
- Notification
Position - Overlay
ToStore Flag - Published
File Visibility - Send
Type - The method used to send a packet
- Server
Mode - Used to set the mode that a gameserver will run in
- SteamAPI
Init Error - Steam
Device Form Factor - Steam
Error - Covers errors that can be returned by the steamworks API
- Steamworks
Event - A Bevy-compatible wrapper around various Steamworks events.
- Steamworks
System - A set of
SystemSet
s for systems used bySteamworksPlugin
- String
Filter Kind - UGCContent
DescriptorID - Users can control what user-generated content they want to see under the Mature Content Filtering section in their preferences. This filtering is done automatically by Steam servers, but first, user-generated content must be tagged appropriately. Developers can use AddContentDescriptor and RemoveContentDescriptor calls to manage content descriptors a piece of UGC has. These can be retrieved from the result of a query via GetQueryUGCContentDescriptors.
- UGCQuery
Type - UGCStatistic
Type - Available published item statistic types.
- UGCType
- Workshop item types to search for
- Update
Status - Upload
Score Method - User
List - Available user-specific lists. Certain ones are only available to the currently logged in user.
- User
List Order - Query result sorting
Constants§
Traits§
Functions§
- restart_
app_ if_ necessary - Returns true if the app wasn’t launched through steam and begins relaunching it, the app should exit as soon as possible.