Skip to content

Traverse-Research/steamworks-rs

This branch is 4 commits behind Noxime/steamworks-rs:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Feb 24, 2025
5fc8ef1 · Feb 24, 2025
Sep 15, 2024
Sep 15, 2024
Feb 24, 2025
Sep 15, 2024
Jan 13, 2024
Sep 15, 2024
Sep 6, 2017
Feb 27, 2018
Sep 15, 2024
Mar 19, 2022
Sep 6, 2017

Repository files navigation

steamworks

crates.io Documentation License

This crate provides Rust bindings to the Steamworks SDK.

Usage

Add the following to your Cargo.toml:

[dependencies]
steamworks = "0.11.0"
Crate SDK MSRV
git 1.60 1.73.0
0.11.0 1.58a 1.71.1
0.10.0 1.54 1.56.1
0.9.0 1.53a 1.56.1

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.

Help, I can't run my game!

If you are seeing errors like STATUS_DLL_NOT_FOUND, Image not found etc. You are likely missing the Steamworks SDK Redistributable files. Steamworks-rs loads the SDK dynamically, so the libraries need to exist somewhere the operating system can find them. This is likely next to your game binary (.exe on windows). You can find the required files in the SDK release ZIP, under lib\steam\redistributable_bin. See #63 for further details

About

Rust bindings to the SteamWorks SDK

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 78.6%
  • C++ 15.0%
  • C 6.4%