Box3D 開源 3D 物理引擎發布

Box3D 開源 3D 物理引擎發布

Box3D 提供基於 Box2D 成熟架構的高效能開源 3D 物理解決方案

Box3D 是一款 3D 物理引擎,旨在將 Box2D 的設計哲學與效率帶入三維空間。由 Erin Catto 開發,該引擎使用 C17 編寫,提供 C API,適合整合到各種遊戲引擎與平台,包括用於網頁遊戲的 WASM。

核心技術規格

Box3D 保持與 Box2D 幾乎相同的架構,確保已使用 2D 版本的開發者能快速上手。主要技術特性包括:

  • 碰撞支援: 包含三角網格碰撞、高度場碰撞與預先烘焙的複合碰撞。
  • 求解器與碰撞邏輯: 採用子步進求解器、連續碰撞偵測(CCD)以及廣泛的 SIMD 接觸求解器。
  • 可擴展性: 使用圖著色法處理大型島嶼,並提供多執行緒掛鉤與可選的內部排程器。
  • 世界管理: 透過使用 double 精度的座標資料支援大型世界。
  • 實用工具: 內建錄製與回放功能。

開發起源:從 Rubikon‑Lite 到 Box3D

Box3D 起源於 The Legend of California(一款使用 Unreal Engine 開發的生存遊戲)的特定技術需求。開發者在使用 Unreal 原生物理引擎 Chaos 時,遭遇了多項限制,尤其是缺乏陀螺扭矩支援(導致細長物體旋轉不自然)以及在光滑三角網格上模擬大型膠囊下落時的異常行為。

為了解決這些問題,Catto 最初 fork 了 "Rubikon‑Lite"——這是 Rubikon 引擎(用於 Half‑Life: Alyx)的業餘版,由 Dirk Gregorius 維護。隨著時間推移,Rubikon‑Lite 的 fork 逐步以 Box2D v3.0 的 API、資料結構與演算法取代,確保 2D 與 3D 專案的一致性。雖然仍保留部分來自 Rubikon‑Lite 的凸殼生成與碰撞演算法,但最終產出的引擎即為 Box3D。

大型開放世界的最佳化

由於 Box3D 為具備數十萬實體的伺服器權威開放世界而設計,它包含了針對規模與複雜度的特定最佳化:

  • 複合碰撞系統: 為避免載入成千上萬個單獨碰撞網格(例如大型要塞)所帶來的記憶體與 CPU 開銷,Box3D 允許將多個形狀「烹飪」成單一優化的超大形狀。
  • 體素整合: 引擎針對使用中位數切分的即時碰撞網格建構進行優化,特別適用於類似格子狀的體素地形。
  • 寬相位效能: 實作快速的寬相位演算法,以管理伺服器端模擬布娃娃、體素與環境物件所需的高實體數量。

目前狀態與生態系統

Box3D 目前屬於 alpha 版軟體。開發者計畫盡快標記 v0.1,長期目標是達到 v1.0。未來的規劃包括改進關節求解器、加強幽靈碰撞緩解以及增強角色移動功能。

早期採用

即使仍處於 alpha 階段,Box3D 已被多個專案使用:

  • The Legend of California: 引擎開發的主要驅動力。
  • s&box: Facepunch Studios 的遊戲平台。
  • Esoterica: 開源遊戲引擎。
  • 千人太空遊戲: Glenn Fiedler 的多人專案。

社群見解

業界從業者與開發者指出,該引擎在特定使用情境下具備相當潛力。一位開發者強調此函式庫佔用空間極小(在 macOS 上約 916 KB),認為它是 Emscripten/WASM 編譯以供網頁遊戲使用的理想候選,因為較大的 3D 物理庫往往成本過高。其他開發者則將其與 Jolt、Rapier 等現有替代方案作比較,指出開源 3D 物理選項的多樣性正逐漸增加。

Sources