35个版本
0.4.0 | 2020年10月14日 |
---|---|
0.4.0-alpha0.5 | 2020年6月4日 |
0.4.0-alpha0.2 | 2020年2月4日 |
0.3.20 | 2019年10月17日 |
0.1.1 | 2018年1月16日 |
#479 in 游戏开发
444 每月下载量
在 4 crates中使用
245KB
3K SLoC
quicksilver
一个用于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
- 库
- Lenscas: Silver_Animation - 动画系统
- Lenscas: Mergui - 简单的GUI系统
- johnpmayer: quicksilver-utils-async - 任务、计时器和网络代码
- johnpmayer: quicksilver-utils-ecs - 实体组件系统集成
- 游戏
版本 0.3
- 文档 / 教程
- 游戏
- 库
想要添加您的项目?请随意提出问题或提交PR!
构建和部署Quicksilver应用程序
Quicksilver应该在Rust的最新稳定版本上编译和运行,无论是Web还是桌面。
请确保将所有资产放在crate顶层文件夹中的static/
文件夹中。 所有 Quicksilver文件加载API都期望从static文件夹开始的路径,因此static/image.png
应引用为image.png
。
Linux依赖
在Windows和Mac上,构建Quicksilver只需要最新的稳定版本的rustc
和cargo
。Quicksilver的一些依赖项需要Linux包来构建,具体为libudev
、zlib
和alsa
。要在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默认尝试提供二维应用程序可能需要的所有功能,但并非所有应用程序都需要这些功能。
可用的可选功能包括:
- 简单的日志记录(通过log,simple_logger和web_logger)
- 游戏手柄事件生成(通过gilrs)
- 保存(通过gestalt)
- 字体渲染(通过elefont)和TTF解析(通过rusttype)
这些默认启用,但您可以指定您实际想要使用的功能。
支持的平台
该引擎支持Windows、macOS、Linux,以及通过WebAssembly支持的Web。
移动支持将是未来的可能性,但可能只能通过外部贡献来实现。
依赖项
~16–28MB
~285K SLoC