概要
- Box3D は、Box2Dをベースにした オープンソースの3D物理エンジン
- GitHub で無料公開、C APIや高機能な物理シミュレーションを搭載
- The Legend of California 開発のために誕生、他ゲームやエンジンでも活用
- カスタマイズ性と知識の蓄積 が主な開発理由
- 今後も機能追加・ドキュメント整備・コミュニティ支援を継続予定
Box3Dリリースのお知らせ
- Box3D は、 Box2D を基盤に拡張した 3D物理エンジン
- GitHub で公開、誰でも利用・貢献可能
- 主要な追加機能
- 三角メッシュ衝突判定
- ハイトフィールド衝突
- 複合衝突形状のベイク
- コアアーキテクチャは Box2D とほぼ同一
- C17 による実装、 C API を提供
- 主な技術的特徴
- サブステッピングソルバー
- 連続的な衝突判定
- 大規模アイランド向けグラフ彩色
- ワイドSIMD対応のコンタクトソルバー
- マルチスレッドフック、内部スケジューラ(オプション)
- ダブル精度 による広大なワールド対応
- 記録・リプレイ機能
Box3D開発の背景
- The Legend of California (Kintsugiyama開発)のためにBox3Dを開発
- Unreal Engine の標準物理エンジン(Chaos)に課題
- ジャイロトルク未対応(2024年末にEpicが追加)
- 木の倒壊などの挙動が不安定
- サーバー上で数十万のエンティティ管理が必要
- 既存物理エンジン(Jolt等) の利用も検討したが、自作エンジンを選択
- Dirk Gregorius (Valve)の助言で Rubikon-Lite をUnrealに導入
- ジャイロトルクや木の倒壊が正しく再現
- 独自スクリプトシステムやカスタムECSとの親和性
- Box2D v3.0 の最適化をRubikon-Liteに統合
- 2D/3Dのデータ構造・APIを共通化
- Convex hull生成や一部衝突判定はRubikon-Lite由来
- その他はBox2DやBox3D独自コード
カスタム物理エンジンのメリット
- 大規模オープンワールド やサーバー権限の設計に最適化
- 木の倒壊 や ボクセル地形 への高速最適化
- 複合衝突形状 の一括読み込みによるメモリ・パフォーマンス改善
- 例:5万個の衝突メッシュを1つの大形状として最適化
Box3D開発のもう一つの理由
- 知識の継承と維持
- 転職時に物理エンジンの知見が失われる課題
- Box2D は知識のオープンソース化の成功例
- 3D分野でも同様の資産化を目指す
- Kintsugiyama の協力で業務時間中もBox3D開発が可能
Box3Dの利用メリット
- Box2D の設計思想・APIが好きな人に最適
- オープンソース で商用・非商用問わず利用可能
- 競合製品との競争ではなく、 物理エンジン開発の楽しさ が動機
- Box2D/Box3D を基盤に多くのゲームが誕生
Box3Dの導入方法
- git と CMake をインストールし、Box3Dリポジトリをクローン
- README にビルド手順を記載
- サンプル実行で機能を体験可能
- サンプルコードや Doxygenコメント 付きヘッダーで学習
- HelloWorldテスト に最小限のサンプルコードあり
Box3Dの採用事例
- The Legend of California (Kintsugiyama)
- s&box (Facepunch Studiosのゲームプラットフォーム)
- Esoterica (Bobby Anguelov主導のオープンソースゲームエンジン)
- A 1000-player space game (Glenn Fiedlerによるマルチプレイヤーゲーム)
Box3Dの今後
- 現在は アルファ版 扱い、近日中に v0.1 をタグ付け予定
- 今後のタスク
- キャラクター移動機能の拡張
- ゴースト衝突の改善
- 各種最適化
- ジョイントソルバーの強化
- Box2D同様、長期サポートを予定
- 将来的には Pull Request を受け入れ予定(CLA利用)
- ブログや動画で継続的に情報発信予定
- 専用サイトやDiscordサーバーは設けず、 Box2D Discord でコミュニティ運営
The Legend of CaliforniaとBox3Dの今後
- The Legend of California の公式サイトやSteamページで進捗公開
- Box3D開発支援
- GitHub Sponsor
- Patreon での支援受付
- サポートへの感謝