#graphics #audio #gamedev #2d-game #game

quicksilver

一个用于纯Rust编写的2D游戏的简单游戏框架

35个版本

0.4.0 2020年10月14日
0.4.0-alpha0.52020年6月4日
0.4.0-alpha0.22020年2月4日
0.3.20 2019年10月17日
0.1.1 2018年1月16日

#479 in 游戏开发

Download history 169/week @ 2024-03-11 169/week @ 2024-03-18 71/week @ 2024-03-25 413/week @ 2024-04-01 60/week @ 2024-04-08 149/week @ 2024-04-15 168/week @ 2024-04-22 127/week @ 2024-04-29 68/week @ 2024-05-06 108/week @ 2024-05-13 229/week @ 2024-05-20 248/week @ 2024-05-27 126/week @ 2024-06-03 59/week @ 2024-06-10 112/week @ 2024-06-17 85/week @ 2024-06-24

444 每月下载量
4 crates中使用

MIT/Apache

245KB
3K SLoC

quicksilver

Quicksilver Logo

Crates.io Docs Status dependency status

一个用于Web和桌面平台的简单2D游戏框架,纯Rust编写

维护状态

我在我的网站上发布了一篇关于Quicksilver的更新。长话短说: Quicksilver已不再积极开发。 目前我将继续处理bug和pull请求,并(可能)修复一些小bug。

Alpha公告

Quicksilver的这个版本目前正处于alpha阶段!API和bug修复方面还有工作要做,同时还在等待音频支持的上游库。请随时使用这个版本,并提供反馈! 如果遇到bug或想对API决策提供反馈,请提交issue。

快速示例

创建一个Rust项目,并在你的Cargo.toml文件中的[dependencies]

quicksilver = "0.4.0-alpha0.6"

然后将src/main.rs替换为以下内容(quicksilver的examples/01_square.rs的内容)

// Example 1: The Square
// Open a window, and draw a colored square in it
use quicksilver::{
    geom::{Rectangle, Vector},
    graphics::Color,
    run, Graphics, Input, Result, Settings, Window,
};

fn main() {
    run(
        Settings {
            title: "Square Example",
            ..Settings::default()
        },
        app,
    );
}

async fn app(window: Window, mut gfx: Graphics, mut input: Input) -> Result<()> {
    // Clear the screen to a blank, white color
    gfx.clear(Color::WHITE);
    // Paint a blue square with a red outline in the center of our screen
    // It should have a top-left of (350, 100) and a size of (150, 100)
    let rect = Rectangle::new(Vector::new(350.0, 100.0), Vector::new(100.0, 100.0));
    gfx.fill_rect(&rect, Color::BLUE);
    gfx.stroke_rect(&rect, Color::RED);
    // Send the data to be drawn
    gfx.present(&window)?;
    loop {
        while let Some(_) = input.next_event().await {}
    }
}

学习Quicksilver

开始学习Quicksilver的一个好方法是阅读并运行示例,这些示例也充当教程。如果你有任何问题,请随时提交issue或在Rust社区Discord中向其他Quicksilver用户和开发者寻求帮助。

使用Quicksilver制作

版本0.4

版本 0.3

想要添加您的项目?请随意提出问题或提交PR!

构建和部署Quicksilver应用程序

Quicksilver应该在Rust的最新稳定版本上编译和运行,无论是Web还是桌面。

请确保将所有资产放在crate顶层文件夹中的static/文件夹中。 所有 Quicksilver文件加载API都期望从static文件夹开始的路径,因此static/image.png应引用为image.png

Linux依赖

在Windows和Mac上,构建Quicksilver只需要最新的稳定版本的rustccargo。Quicksilver的一些依赖项需要Linux包来构建,具体为libudevzlibalsa。要在Ubuntu或Debian上安装这些,请运行以下命令:sudo apt install libudev-dev zlib1g-dev alsa libasound2-dev

桌面部署

如果您正在为桌面平台部署,请以发布模式构建(cargo build --release)并复制生成的可执行文件(位于“target/release/”)以及您使用的任何资产(图像文件等),并创建一个存档(在Windows上为zip文件,在Unix上为tar文件)。您应该能够无问题地分发此存档;如果有任何问题,请提出问题。

Web部署

如果您正在为Web部署,请确保您已经安装了cargo web工具。然后使用cargo web deploy构建您的应用程序以进行分发(位于target/deploy)。

如果您想在本地测试您的应用程序,请使用cargo web start --features quicksilver/stdweb,并打开您喜欢的浏览器到它提供的端口。

对wasm-bindgen的支持

Quicksilver最近获得了对wasm-bindgen的实验性支持,在web-sys功能下。当前这里没有记录工作流程,但它应该与使用任何其他具有wasm-bindgen的库相同。

可选功能

Quicksilver默认尝试提供二维应用程序可能需要的所有功能,但并非所有应用程序都需要这些功能。

可用的可选功能包括:

这些默认启用,但您可以指定您实际想要使用的功能。

支持的平台

该引擎支持Windows、macOS、Linux,以及通过WebAssembly支持的Web。

移动支持将是未来的可能性,但可能只能通过外部贡献来实现。

依赖项

~16–28MB
~285K SLoC