Rust全栈开发系列:游戏开发框架

1,798 阅读6分钟

Rust提供了高级别的抽象和并发性,以及与C++语言的互操作性,这使得Rust成为一个理想的选择来开发游戏引擎和游戏逻辑,Rust语言在游戏开发领域变得越来越受欢迎,有一些开发框架和库可以帮助你在Rust中进行游戏开发。

以下是一些常用的Rust游戏开发框架:

Amethyst

Amethyst是一款用Rust语言编写的游戏引擎,以高性能、可维护和灵活为特点。采用数据驱动设计,支持模块化和可插拔功能,拥有现代渲染引擎和丰富工具集成。适用于各种游戏项目,并有活跃的开发社区

官方网站:amethyst.rs/

bevy

Bevy是一个用Rust编写的游戏引擎,以非常符合人体工程学的实体组件系统而闻名。Bevy的API非常优雅,用户可以在Rust中编写常规函数,Bevy将知道如何通过类型签名调用这些函数,调度正确的数据。Bevy的实体是由组件组成的,这些组件在游戏世界中表现为对象。系统处理这些实体并控制应用程序的行为。Bevy有许多功能,如相机驱动的渲染、内置着色器模块化、聚光灯、可见性继承等。此外,Bevy还支持第三方脚本语言,通过指针直接与Bevy ECS内部交互。

Bevy使用实体组件系统(ECS)设计模式,允许模块化架构,以便组件可以重用甚至替换。对于刚开始使用Rust进行游戏开发的初学者来说,它很容易使用。

官方网站:bevyengine.org/

Comfy

Comfy是一个简单但强大且固执己见的Rust游戏引擎。它的灵感来自Macroquad、raylib和Love2D等游戏引擎。Comfy使用Rust wgpu和winit图形库,这意味着它是跨平台的。它目前支持从一个代码库为Wasm、Windows、Linux和MacOS构建游戏。

官方网站:comfyengine.org/

fyrox

Fyrox是一个成熟的,可用于生产的Rust游戏引擎,具有广泛的文档和资源,专注于2D和3D渲染。除了易于使用之外,Fyrox的一个受欢迎的功能是它的场景编辑器,它提供了一个场景预览。

Fyrox引擎最初被称为rg3d,但项目创始人根据社区投票改变了这个定名称。当前版本支持Windows、Linux、macOS和WebAssembly。与其他一些游戏引擎不同,Fyrox具有可靠的快速迭代编译功能。简单来说,你可以在Fyrox中快速制作和测试更改,而无需等待太长时间的编译过程。

官方网站:fyrox.rs/

ggez

ggez是一个用Rust语言编写的简单易用的2D游戏框架,专注于提供图形、输入和音频支持。ggez提供了一个框架来构建快速且最小的2D游戏,它的目标是实现类似于Lua Love2D游戏库的api。适合快速开发小型游戏,跨平台兼容

官方网站:ggez.rs/

macroquad

Macroquad是一个用于开发2D和3D游戏的开源框架,它使用Rust编程语言编写。Macroquad提供了一套全面的工具和库,用于创建游戏、处理输入、渲染图形、播放声音等等

Macroquad专注于简单性——没有语言干扰——使得用Rust构建游戏变得容易。Macroquad深受Raylib游戏引擎启发,即使对于Rust初学者,它完全抽象了Rust特定的语法,如生命周期和借用,使你能够专注于游戏开发的关键逻辑。

官方网站:macroquad.rs/

nannou

Nannou是一个仍处于早期阶段的开源游戏框架,但它仍然是一种流行的游戏引擎,目前被广泛使用,对于开发者来说,它也更容易上手。

Nannou包含一个完整的调色板,用于图形,音频,激光,照明等创意工具。在许多方面,它就像艺术家的工具包——它的许多工具允许有创造力的个人高效地工作。

Github 代码库:github.com/nannou-org/…

Piston

Piston是一个用Rust编写的探索性游戏引擎和应用框架,注重灵活性和功能丰富。它提供了窗口管理、输入处理和图形渲染等功能,适用于构建各种类型的应用和游戏,同时支持跨平台运行。有着活跃的社区和文档支持,鼓励开发者参与贡献,缺点可能包括更新速度较慢、文档相对不足、社区规模较小,不太适用于大规模项目,并可能缺乏一些高级功能。选择该引擎时,需权衡这些因素与项目需求之间的平衡。

Piston还使用了一种名为Dyon的动态脚本语言,这是专门为游戏引擎创建的,旨在与Rust一起工作,没有编程经验的人会发现它很容易上手和使用。

Piston的扩展库集合了包括2D,3D,图像处理,事件编程,GUI,声音和动画等功能,这些库可以根据正在处理的项目独立使用。

官方网站:www.piston.rs/

rend3

rend3是一个使用Rust和wgpu构建的3D渲染库。它由许多库组成,允许你使用Rust在屏幕上渲染3D图形。虽然从技术上讲它不是游戏引擎或库,但Rust游戏引擎开发者可以利用rend3在他们的游戏引擎中构建3D图像。在rend3官方网站上查看可以使用此库渲染的3D图形示例。

官方网站:comfyengine.org/

rendology

rendology是一个用Rust编写的3D渲染引擎,采用ECS架构,旨在提供高效的现代图形渲染功能。其专注于实时图形渲染,支持高级图形效果和技术,同时作为开源项目,鼓励用户参与贡献,具有良好的可扩展性和自定义性。适用于需要高性能和灵活性的游戏和图形应用项目,缺点可能包括相对较小的社区规模和相对不成熟的生态系统,可能导致文档和支持资源相对有限。此外,因为它专注于3D渲染,可能在其他游戏引擎中通用性方面略显欠缺。

Github 代码库:github.com/leod/rendol…

Veloren

Veloren是一款用Rust语言编写的开源多人合作角色扮演游戏,强调玩家之间的协作和共享体验。具备自定义的世界生成器,允许玩家探索独特的游戏世界。作为一个开源项目,Veloren得到了活跃的社区支持,鼓励开放开发,使得任何人都能参与并为游戏的不断改进贡献力量。

Github 代码库:www.veloren.net/

wgpu

wgpu 是基于 WebGPU API 规范 的、跨平台的、安全的、纯 Rust 图形 API。它是 Firefox、Servo 和 Deno 中 WebGPU 整合的核心。

wgpu 可以在 macOS / iOS、Android、Window 和 Linux 等系统上原生运行,也可以在 Web 环境运行。

WebGPU 是由 W3C GPU for the Web 社区组所发布的规范,目标是允许网页代码以高性能且安全可靠的方式访问 GPU 功能。它通过借鉴 Vulkan API,并将其转换为宿主硬件上使用的各式 API(如 DirectX、Metal、Vulkan)来实现这一目标。

Github 代码库:github.com/gfx-rs/wgpu