#steam #gamedev #bindings #sdk #client #friendly

steamworks

提供对 Steamworks SDK 的 Rust 友好的绑定

17 个版本 (10 个重大更改)

0.11.0 2024年2月7日
0.10.0 2023年3月25日
0.9.0 2022年4月22日
0.8.0 2021年11月23日
0.3.0 2018年3月1日

#21 in 游戏开发

Download history 194/week @ 2024-04-23 234/week @ 2024-04-30 117/week @ 2024-05-07 129/week @ 2024-05-14 182/week @ 2024-05-21 159/week @ 2024-05-28 267/week @ 2024-06-04 215/week @ 2024-06-11 129/week @ 2024-06-18 182/week @ 2024-06-25 321/week @ 2024-07-02 426/week @ 2024-07-09 204/week @ 2024-07-16 353/week @ 2024-07-23 287/week @ 2024-07-30 217/week @ 2024-08-06

1,163 每月下载量
9 个库 中使用 7 个直接使用

MIT/Apache

14MB
96K SLoC

steamworks

crates.io Documentation License

此库提供了对 Steamworks SDK 的 Rust 绑定。

用法

将以下内容添加到您的 Cargo.toml

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

示例

您可以在 示例 中找到更多示例。

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));
    }
}

功能

serde:此功能通过 serde 使一些类型的序列化和反序列化成为可能。

许可

此库在 ApacheMIT 许可下双许可。

帮助,我的游戏无法运行!

如果您看到类似 STATUS_DLL_NOT_FOUNDImage not found 等错误,则可能缺少 Steamworks SDK 可分发文件。Steamworks-rs 以动态方式加载 SDK,因此库必须存在于操作系统可以找到它们的地方。这通常在您的游戏二进制文件(Windows 上的 .exe)旁边。您可以在 SDK 发布 ZIP 文件中找到所需文件,在 lib\steam\redistributable_bin 下。有关更多详细信息,请参阅 #63。

依赖项