
2026/07/01 21:12
ボックス 3D、オープンソースの 3D フィジカルエンジン
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Box3D は GitHub で利用可能な新しいオープンソースの 3D 物理エンジンであり、Box2D から派生し、Valve の Rubikon-Lite(もともと Dirk Gregorius が Half-Life: Alyx のために開発)を基盤として構築されています。2D と 3D の取り組み間の互換性を維持するために、大半の API およびデータ構造は Box2D のコードに置き換えられ、コア部分は三角形メッシュおよび高フィールド(height-field)衝突検出機能を拡張して実装されています。そのアーキテクチャは C++17 API を維持しつつ、サブステップソルバー、連続的な衝突検出、大規模な島管理のためのグラフカラーリング、広範な SIMD 接触ソルバー、マルチスレッドフック、および大きな世界位置向けの倍精度サポートを追加しています。
Box3D は主に Kintsugiyama が開発した『The Legend of California』向けに作成され、Unreal Engine の Chaos プリシクスにおける制限に対処するために設計されています。これには、ギyroscopic トルクサポートの欠如(2024 年末まで)や不規則な木倒れシミュレーションなどの課題が含まれます。自前のエンジンを用いることで、サーバー権限を持つ倒れる木、平均値分割(median split)を使用したボクセルベースの衝突メッシュ構築、および最大で 50,000 のメッシュを持つ大規模要塞向けのストリーミング複合衝突など、さまざまな最適化を実現しています。プロジェクトは現在アルファ版であり、v0.1 リリースが差し迫っており、テストとドキュメントが完了次第 v1.0 への移行が計画されています。今後の作業には、キャラクター移動の改善、ゴースト衝突の軽減、さらなる最適化、そして改良されたjointソルバーが含まれます。
Box2D の閉鎖型コントリビューションポリシーとは異なり、Box3D はコントリビューターライセンス契約に基づきコミュニティからのプルリクエストを歓迎しており、GitHub および Patreon を通じてサポートを提供しています(更新は公式ウェブサイトと Box2D Discord を介して共有されます)。すでに Facepunch Studios の『s&box』、Bobby Anguelov が率いるオープンソースの Esoterica エンジン、Glenn Fiedler による 1,000 人同時接続可能な宇宙ゲームといった主要タイトルで稼働しています。開発者はリポジトリをクローンし、README に記載のビルド手順に従い、HelloWorld テスト内のサンプルコードを検査することで開始できます。Box3D は、メッシュベースの衝突検出およびマルチスレッド機能が必要な大規模シミュレーションに不可欠なアクセシブルな物理技術における重要な進化を体現しています。
本文
Box3D:オープンソース 3D フィジクスエンジンのリリース
Box3D(ボックス 3D)、という名前のオープンソース 3D フィジクスエンジンが正式にリリースされました。現在、GitHub で利用可能です。
本記事では、Box3D の概要、技術的特徴、開発の背景と動機、そして始め方についてまとめます。
Box3D の概要
Box2D のフォーク(派生)として、3D ゲームに対応した拡張版です。コアアーキテクチャは Box2D とほぼ同一を維持しつつ、以下の機能を追加しています:
- 三角形メッシュとの衝突判定
- ハイトフィールド(高度情報)との衝突判定
- ベイク済み複合形衝突判定
技術的特徴:C API と機能
Box3D のライブラリはすべて C17 準拠であり、以下のような高機能な要素を備えています。
- Sub-stepping solver(サブステップング求解器)
- Continuity Collision(連続衝突判定)
- Graph Coloring(大規模アイランド用のグラフ着色)
- SIMD ベクトル化されたコンタクト求解器
- マルチスレッド化のためのフック機能
- オプションの内部スケジューラー
- Dubbel 変数による位置情報(大規模ワールド対応)
- 決定論的挙動の実現(クロスプラットフォーム互換性確保)
- レコーディングおよびプレイバック機能
動画で動作を確認したい方へ
デモ動画は公式サイトよりご覧いただけます。
開発の背景:なぜ Box3D を作ったのか?
Box3D 開発の主な理由は 2 つあります。
理由 1:『カリフォルニアの伝説』というゲームのための必要性
開発元 Kintsugiyama が制作するサバイバルゲーム『カリフォルニアの伝説』のために作られました。Unreal Engine(UE)版 UE5.0 でも、UE 内蔵の物理エンジン「Chaos」には以下のような課題がありました。
ネイティブ Unreal フジクス(Chaos)の問題点
-
ジャイロスコピックトルクの欠落
- Chaos は回転慣性モーメントに基づく角速度の保存に対応しておらず、細長いオブジェクト(例:スピンするライフル)が異常に長時間回転し続ける現象が発生していました。
- 2015 年に開発者による「10 行程度のドロップイン式アルゴリズム」でこの問題は解決可能であり、Epic Games も後に対応を追加しました。
-
木伐採・落下挙動の不自然さ
- ゲームのメインシステムである「木を伐採し、不規則に転がって飛ぶ」演出において、Chaos の連続衝突判定フォールバック処理が原因で、物体が滑らかな面へ落ちるような非現実的な挙動を示していました。
-
大規模エントティ管理への不安
- サーバー上に数十万〜数百万のエントティを管理するため、高速なブラードフェーズ(広域判定)が必須です。
- 第三者ミドルウェアへの依存はリスクが高いと判断し、既存の物理エンジンでは「修正するか、置き換えるか」の決断に直面しました。
Valve の救援:Rubikon-Lite から Box3D へ
友人である Dirk Gregorius(Valve 系エンジニア)から、Half-Life: Alyx で使用されたカスタム物理エンジン Rubikon の軽量版(Rubikon-Lite)へのフォーク提案を受けました。
- Rubikon-Lite をフォークし、UE と連携させることに成功。
- ジャイロスコピックトルクや木の下り挙動が完璧に動作するようになりました。
- Box2D バージョン 3.0 の機能と親和性を考慮し、コードを 2D/3D で近接させる方針を採りました(Rubikon-Lite の API やアルゴリズムの多くを Box2D コードで置換)。
結果:現在の Rubikon-Lite フォークは Box3D と改名・進化しました。現在は凸包生成一部や衝突判定アルゴリズムにオリジナルコードを残しつつ、その他部分は Box2D コードベースで構成されています。
カスタマイズ性の優位性
『カリフォルニアの伝説』の大規模オープンワールドやサーバー権限制を実現するため、物理エンジンは以下の点で最適化されています:
- 落ちる木への高度な最適化:巨大なセコイアが高速でヴォキセル地形へ落下するシナリオでもメッシュ衝突判定と CCD を適切に動作。
- 即時構築の衝突メッシュ:グリッド構造のヴォキセルシステム向けに、Median Split 法など的高效な構築手法を採用。
- ストリーミング対応の「スーパー形状(uber shape)」:数千ものボディー・形状を単一のデータ構造に変換し、順次読み込みによるメモリ負荷やオーバーヘッドを解消。
理由 2:知識と精神の維持
- オープンソースとしての保存:開発者自身は長年物理エンジン制作に携わってきましたが、転職などで成果物を手放す必要があります。Box2D と Box3D は、知見と労力をオープンソース化し、将来の基盤として再利用する手段です。
- 車輪の再発明を防ぐ:3D 分野でも毎回ゼロから始めたくないという想いから、Box2D の設計思想を 3D に持ち込む形で Box3D を作成。Kintsugiyama の関係者への協力依頼により、本格的な開発とサステナビリティが確保されました。
なぜ Box3D を使うべきか?
- Box2D 信奉者に適している:Box2D の設計思想を好む方は、Box3D も同様に満足できるはずです(兄弟プロジェクトとして)。
- オープンソース:他のエンジンと競う目的ではなく、開発の楽しさとコミュニティへの還元が第一目的です。
始め方:インストールと設定
- 環境構築
Vanilla Git と CMake をインストールしてください。 - リポジトリのクローン
GitHub で Box3D リポジトリを clone。 - ビルド
ファイルに記載の手順に従ってビルドを行ってください。README - テスト実行
提供されたサンプルを実行し、機能を検証しましょう。
ドキュメントについて
ヘッダーには完全な Doxygen コメントが付与されています。マニュアルは現在執筆中で、ホストされたドキュメントは公式サイトより確認可能です。
Box3D を利用しているプロジェクト(実績)
- s&box:Facepunch Studios が提供するゲームプラットフォーム
- Esoterica:Bobby Anguelov 率いるオープンソースゲームエンジン
- 1000 人規模マルチプレイ空間:Glenn Fiedler 氏開発のシミュレーションゲーム
- 『カリフォルニアの伝説』(Kintsugiyama 製)
将来展望とロードマップ
現時点は Alpha ステータス ですが、機能セット自体は十分な完成度を持っています。近い将来 v0.1 タグ を付与し、基盤から v1.0 リリース へ向けて開発を進めます。
今後のタスク例
- キャラクター移動機能の強化
- ゴースト衝突(通過判定)の改善
- パフォーマンス最適化
- ジャイント求解器の改良
サポーポリシーの変化
- v1.0 以降はプルリクエストを歓迎。CLA(コントリビューターライセンス契約)を通じた受け入れ予定。
- Box2D と異なり、新機能開発から一旦引退する可能性もあります(機能成熟後の戦略)。
- ブログ記事や動画投稿も継続予定です。
注意:Box3D 専用ウェブサイトや Discord は設けず、最新情報は本サイトで確認ください。コミュニティ交流は Box2D の Discord をご活用ください。
アクセスと支援
『カリフルニアの伝説』をプレイしたい方
公式サイトまたは Steam ページから『カリフォルニアの伝説』へアクセスしてください。
開発への支援方法
- GitHub Sponsor
- Patreon
皆様のおかげで Box3D が生まれ、現在も進化しています。心より感謝申し上げます!