5 個流行的 Rust 遊戲引擎

越來越多的開發者選擇 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 是一個跨平臺的遊戲引擎,支持以下平臺:

它使用原生的圖形非常有趣,讓我們來看一個簡單的例子,首先在 Cargo.toml 文件中加入 Macroquad 依賴項:

[dependencies]
macroquad = "0.4.4"

代碼如下:

use macroquad::prelude::*;

#[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 生態系統中,遊戲開發仍然是一個不斷增長的領域,許多現有的遊戲引擎和庫仍在積極開發中。根據你的需求,來選擇適合你項目的遊戲引擎。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/-GkOvLP6e3Tg_5kt9CIq-g