越来越多的开发者选择Rust而不是C++作为游戏开发的首选语言,让我们来看一下五个流行的Rust游戏引擎。在Rust发布之前,C++是游戏开发的首选语言。像C++和C这样的语言在过去几年里提供了可靠的性能和速度。许多开发者仍在使用这些语言进行游戏开发。然而,Rust社区是强大的,活跃的,并且正在成长,特别是在游戏开发领域。由于其并发性,Rust也具有很大的游戏开发能力。Rust中的并发性可以防止数据竞争,并提供强大的内存管理,使应用程序几乎不可能崩溃。
下面,让我们看一下流行的Rust游戏引擎。
一,Bevy
Bevy是一个简单的,数据驱动的游戏引擎。虽然它仍处于发展的早期阶段,可能会发生重大变化,但这并不妨碍它成为最流行的Rust游戏引擎之一。Bevy使用实体组件系统(ECS)设计模式,允许模块化架构,以便组件可以重用甚至替换。对于刚开始使用Rust进行游戏开发的初学者来说,它很容易使用。你可以使用Bevy进行2D和3D渲染,或者使用图形数据结构组成自定义渲染流。另一个伟大的特性是Bevy UI,它可以帮助你在代码或使用场景中动态地组合UI。
我最喜欢的Bevy特性是hot_asset_reloading,它允许你查看资源的变化,并自动输出更新后的结果,而无需手动重新编译代码。如果你认为Bevy适合你的项目,请查看文档以获得更好的理解。目前,Bevy仍处于开发阶段,可能每隔几个月就会引入突破性的更改。
地址:
https://bevyengine.org/
二,Fyrox
Fyrox是一个成熟的,可用于生产的Rust游戏引擎,具有广泛的文档和资源,专注于2D和3D渲染。除了易于使用之外,Fyrox的一个受欢迎的功能是它的场景编辑器,它提供了一个场景预览,如图所示:
Fyrox引擎最初被称为rg3d,但项目创始人根据社区投票改变了这个定名称。当前版本支持Windows、Linux、macOS和WebAssembly。与其他一些游戏引擎不同,Fyrox具有可靠的快速迭代编译功能。简单来说,你可以在Fyrox中快速制作和测试更改,而无需等待太长时间的编译过程。
地址:
https://crates.io/crates/fyrox
三,Piston
Piston项目由一组活跃的贡献者维护,由于这种维护和资源的共享,它成为一个模块化的开源游戏引擎。Piston的扩展库集合了包括2D,3D,图像处理,事件编程,GUI,声音和动画等功能。这些库可以根据你正在处理的项目独立使用。除了它的模块化库,Piston的公共API允许访问外设输入,如游戏手柄,鼠标或键盘。另一个伟大的Piston功能是事件循环。既可以将游戏逻辑传递到事件循环中,也可以为它创建一个单独的线程。
Piston还使用了一种名为Dyon的动态脚本语言,这是专门为游戏引擎创建的,旨在与Rust一起工作,没有编程经验的人会发现它很容易上手和使用。
地址:
https://www.piston.rs/
四,Macroquad
Macroquad是一个简单的跨平台Rust库,用于游戏开发。它专注于简单性——没有语言干扰——使得用Rust构建游戏变得容易。Macroquad深受Raylib游戏引擎启发,即使对于Rust初学者,它完全抽象了Rust特定的语法,如生命周期和借用,使你能够专注于游戏开发的关键逻辑。Macroquad是一个跨平台的游戏引擎,支持以下平台:
Windows/Linux/macOS
HTML5 browsers
Android
iOS
它使用原生的图形非常有趣,让我们来看一个简单的例子,首先在Cargo.toml文件中加入Macroquad依赖项:
[dependencies]
macroquad = "0.4.4"
代码如下:
use macroquad::prelude::*;
# 堆代码 duidaima.com
#[macroquad::main("BasicShapes")]
async fn main() {
let mut x_position = 0.0;
loop {
clear_background(ORANGE);
draw_rectangle(x_position, 100.0, 120.0, 60.0, BLACK);
x_position += 2.0;
if x_position > screen_width() {
x_position = 0.0;
}
next_frame().await
}
}
上面的例子将显示一个移动的矩形,如图:
地址:
https://macroquad.rs/
五,nannou
Nannou是一个仍处于早期阶段的开源游戏框架,但它仍然是一种流行的游戏引擎,目前被广泛使用。对于开发者来说,它也更容易上手,在撰写本文时,nannou crate的下载量已超过97,944次。Nannou包含一个完整的调色板,用于图形,音频,激光,照明等创意工具。在许多方面,它就像艺术家的工具包——它的许多工具允许有创造力的个人高效地工作。
这个项目也是学习Rust语言的一个很好的工具包。它的目标是只使用Rust库,并要求您使用cargo build进行编译。但是,请记住Rust与其他语言具有互操作性,特别是与C和C++。如果你正在寻找的功能没有可用的Rust库,你可以使用像bindgen这样的工具来访问另一个库。
地址:
https://github.com/nannou-org/nannou
其他游戏引擎
ggez
ggez是一个Rust游戏开发库,它提供了一个框架来构建快速且最小的2D游戏。它的目标是实现类似于Lua Love2D游戏库的api。ggez提供api,让你可以在2D游戏中添加2D绘图、声音、资源和事件处理。
Comfy
Comfy是一个简单但强大且固执己见的Rust游戏引擎。它的灵感来自Macroquad、raylib和Love2D等游戏引擎。Comfy使用Rust wgpu和winit图形库,这意味着它是跨平台的。它目前支持从一个代码库为Wasm、Windows、Linux和MacOS构建游戏。
rend3
rend3是一个使用Rust和wgpu构建的3D渲染库。它由许多库组成,允许你使用Rust在屏幕上渲染3D图形。虽然从技术上讲它不是游戏引擎或库,但Rust游戏引擎开发者可以利用rend3在他们的游戏引擎中构建3D图像。在rend3官方网站上查看可以使用此库渲染的3D图形示例。
总结
在Rust生态系统中,游戏开发仍然是一个不断增长的领域,许多现有的游戏引擎和库仍在积极开发中。根据你的需求,来选择适合你项目的游戏引擎。