#steam #gamedev

steamworks

Provides rust friendly bindings to the steamworks sdk

15 releases (8 breaking)

Uses new Rust 2021

0.9.0 Apr 22, 2022
0.8.0 Nov 23, 2021
0.7.0 Feb 27, 2021
0.6.1 Jan 25, 2020
0.3.0 Mar 1, 2018

#35 in Game dev

Download history 64/week @ 2022-04-21 162/week @ 2022-04-28 129/week @ 2022-05-05 273/week @ 2022-05-12 90/week @ 2022-05-19 83/week @ 2022-05-26 153/week @ 2022-06-02 28/week @ 2022-06-09 42/week @ 2022-06-16 39/week @ 2022-06-23 64/week @ 2022-06-30 43/week @ 2022-07-07 46/week @ 2022-07-14 106/week @ 2022-07-21 49/week @ 2022-07-28 100/week @ 2022-08-04

322 downloads per month
Used in 4 crates (3 directly)

MIT/Apache

1.5MB
37K SLoC

steamworks

crates.io Documentation License

This crate provides rust friendly bindings to the steamworks sdk.

Usage

Add the following to your Cargo.toml:

[dependencies]
steamworks = "0.9.0"

Example

You can find more examples in examples.

use steamworks::AppId;
use steamworks::Client;
use steamworks::FriendFlags;
use steamworks::PersonaStateChange;

fn main() {
    let (client, single) = Client::init().unwrap();

    let _cb = client.register_callback(|p: PersonaStateChange| {
        println!("Got callback: {:?}", p);
    });

    let utils = client.utils();
    println!("Utils:");
    println!("AppId: {:?}", utils.app_id());
    println!("UI Language: {}", utils.ui_language());

    let apps = client.apps();
    println!("Apps");
    println!("IsInstalled(480): {}", apps.is_app_installed(AppId(480)));
    println!("InstallDir(480): {}", apps.app_install_dir(AppId(480)));
    println!("BuildId: {}", apps.app_build_id());
    println!("AppOwner: {:?}", apps.app_owner());
    println!("Langs: {:?}", apps.available_game_languages());
    println!("Lang: {}", apps.current_game_language());
    println!("Beta: {:?}", apps.current_beta_name());

    let friends = client.friends();
    println!("Friends");
    let list = friends.get_friends(FriendFlags::IMMEDIATE);
    println!("{:?}", list);
    for f in &list {
        println!("Friend: {:?} - {}({:?})", f.id(), f.name(), f.state());
        friends.request_user_information(f.id(), true);
    }

    for _ in 0..50 {
        single.run_callbacks();
        ::std::thread::sleep(::std::time::Duration::from_millis(100));
    }
}

Features

serde: This feature enables serialization and deserialization of some types with serde.

License

This crate is dual-licensed under Apache and MIT.

Dependencies