Box2D とは?|商用でも無料で使える2Dの物理演算ライブラリ
Box2D は、2Dゲームの中で物を現実に近い動きにするための剛体シミュレーションのライブラリです。無料で、商用でも使えます。移植しやすい C17 で書かれています。
Box2D とは何か
Box2D(ボックスツーディー)は、ゲームのための2Dの剛体シミュレーションのライブラリです。公式ドキュメントは、プログラマーがゲームの中で物を現実に近い動きにし、ゲームの世界をより触れるものにするために使うと説明しています。
剛体とは
形が変わらない硬い物体のことです。物体のどの2点の距離も変わらない、という前提で計算します。
公式ドキュメントは、ゲームエンジンから見れば物理エンジンは手続き的にアニメーションを作る仕組みだと書いています。ドキュメントが対応する版は Box2D 3.1.0 です。
Box2D は、Game Developers Conference の物理のチュートリアルの一部として作られました。チュートリアルは box2d.org の publications の区画から入手できると案内されています。
公式ドキュメントは、Box2D は C で書かれているので C プログラミングの経験があることを前提にすると書いています。あわせて「Box2D should not be your first C project」と注意しています。
Box2D でなにができますか
剛体のシミュレーションのほかに、当たり判定の機能だけを使うこともできます。重なりの問い合わせ、投げかけ(キャスト)の問い合わせ、そしてゲームごとの空間の整理に使える境界ボリューム階層(動的木)が用意されています。
公式のソースコードの説明が挙げている機能は次のとおりです。
- 当たり判定 — 連続的な当たり判定、接触の出来事、凸多角形・カプセル・円・角の丸い多角形・線分・鎖の形、1つの物体に複数の形、当たり判定の絞り込み、レイキャスト・シェイプキャスト・重なりの問い合わせ、センサーの仕組み
- 物理 — Soft Step の剛体ソルバー、速く動く物のための連続的な物理、島(アイランド)ごとの休止、回転・直動・距離・マウス・溶接・車輪のジョイント、ジョイントの制限とモーターとばねと摩擦、ジョイントと接触の力、物体の移動の出来事と休止の通知
- 仕組み — データ指向の設計、移植しやすい C17、広範なマルチスレッドと SIMD、多数の物体に向けた最適化
型の名前の多くは b2 で始まります。公式ドキュメントは、これで名前の衝突を避けられるはずだと書いています。
見本のアプリ(samples)は OpenGL と GLFW で描き、画面は imgui で作られています。
対応する環境は Windows・Linux・Mac です。ライブラリを組み立てるには C17 に対応したコンパイラ、見本を組み立てるには C++20 に対応したコンパイラが要ります。Box2D は速度のために SSE2 と Neon の SIMD 演算を使っていて、BOX2D_DISABLE_SIMD を定義すると無効にできます。
Box2D の費用とライセンス
無料です。公式のソースコードの説明は、Box2D は Erin Catto が開発していて、MITライセンスを使うと書いています。
MITライセンスとは
著作権の表示とライセンスの文を残せば、商用も含めて自由に使い、改変し、配ってよいと定めたオープンソースのライセンスの一つです。
| 項目 | 公式の記述 |
|---|---|
| 費用 | 無料です |
| ライセンス | MITライセンスです |
| 開発 | Erin Catto が開発しています |
| 言語 | 移植しやすい C17 で書かれています |
| 動く環境 | Windows・Linux・Mac です |
| 支援の仕組み | GitHub Sponsors が案内されています |
公式のソースコードの説明には、変更の取り込み(プルリクエスト)は送らず、不具合や要望は Issue に出してほしいと書かれています。
Box2D を手に入れる場所
ソースコードは GitHub の erincatto/box2d にあります。組み立てには CMake と git が要ると案内されています。
公式ドキュメントは box2d.org にあります。手引き(Manual)と、古い版からの移行の案内(Migration Guide)が置かれています。
- Box2D を手に入れるhttps://box2d.org/
- Box2D の公式ドキュメントhttps://box2d.org/documentation/
- Box2D|ソースコードとライセンスhttps://github.com/erincatto/box2d
このページの情報源
- Box2D: Overview — 公式ドキュメント(何をするライブラリか・版・C の前提・当たり判定の問い合わせ)https://box2d.org/documentation/確認日 2026-09-12
- erincatto/box2d — GitHub(ライセンス・機能の一覧・対応する環境・組み立てに要るもの)https://github.com/erincatto/box2d確認日 2026-09-12