BSP ファイル形式とは?
.bsp ファイルはコンパイル済みのバイナリ 3D ゲームレベルであり、効率的なリアルタイムレンダリングのために 3D 空間を再帰的に分割する Binary Space Partitioning(二分空間分割)アルゴリズムにちなんで名付けられました。この形式は 1996 年に id Software の Quake で導入され、その後、異なるゲームエンジンで使用される、密接に関連しながらも相互に互換性のないいくつかのバリアントに分岐しました。
このファイルはランプ(lump)ベースのバイナリコンテナを使用しています。固定ヘッダーにはマジックナンバー、バージョン整数、および番号付きランプのディレクトリが格納されています。各ランプは、BSP ツリーノード、頂点、面、エッジ、ライトマップ、可視性(PVS)データ、エンティティのスポーンポイント定義、テクスチャやマテリアルの参照など、特定のカテゴリのデータを保持する連続したデータブロックです。スポーンポイント、トリガー、アイテムのピックアップなどのエンティティデータは、専用のランプ内にプレーン ASCII のキー・値ペアとして保存されます。
主な互換性のないバリアントは以下の通りです:
- Quake 1 (BSP29): バージョン整数 = 29。id Software、1996年。
- GoldSrc / Half-Life 1 (BSP30): バージョン整数 = 30。Valve、1998年。
- Quake 2 / Quake 3 (IBSP v38/v46): ASCII マジック
IBSPの後にバージョン整数。 - Source Engine (VBSP): ASCII マジック
VBSP、ゲーム(CS:GO、TF2、L4D2)に応じてバージョン 17-21。 - Source 2 (VBSP2):
VBSPマジック、バージョン 29。CS2 および Half-Life: Alyx で使用。
.bsp ファイルはコンパイルされた出力であり、ソースファイルではありません。レベルデザイナーは .vmf (Valve Map Format) または .map ファイルで作業し、vbsp.exe (Source Engine) または q3map2 (Quake ファミリー) を使用して .bsp にコンパイルします。
セキュリティと安全性
リスク: MEDIUMBSP ファイル自体は静的データであり、コードを実行することはできません。ただし、脆弱性のあるゲームエンジンで悪意を持って作成された BSP をロードすると、バッファオーバーフローやヒープ破損のバグが引き起こされる可能性があります(Quake エンジン系のゲームには過去の CVE が存在します)。リスクは主に、マルチプレイヤーゲーム用に信頼できないソースからカスタムマップをダウンロードする場合に関連します。公式の Steam Workshop マップは一般的に安全です。
形式の詳細
概要- Quake 1 BSP (BSP29) - オリジナルの 1996 年 id Software 形式。ASCII マジックはなく、オフセット 0 にバージョン番号 29。
- Quake 3 / Quake Live BSP (IBSP v46) - Quake 2 と同様に 'IBSP' マジックを使用しますが、バージョンは 46。オープンソースエンジン(ioquake3、OpenArena)で使用されます。
BSP ファイルを開くプログラム
技術的詳細
詳細仕様| コンテナ | カスタムランプベースのバイナリ。ゲームエンジンごとに互換性のないバリアントが存在 |
| エンコーディング | バイナリ |
| バイト順序 | リトルエンディアン |
| マジックバイト | エンジンに依存:IBSP (Quake 2/3)、VBSP (Source/Source 2)、生の整数 29 または 30 (Quake 1/GoldSrc) |
| バージョンフィールド | ヘッダー内の整数:29=Quake 1, 30=GoldSrc/HL1, 38=Quake 2, 46=Quake 3, 17-21=Source Engine タイトル, 29=Source 2 |
| ランプの種類 | BSP ツリーノード/リーフ/プレーン、頂点、面、エッジ、ライトマップ、PVS 可視性、エンティティ定義、マテリアル参照 |
| エンティティデータ | entities ランプ内にプレーン ASCII のキー・値ペアとして保存(スポーンポイント、トリガー、ピックアップなど) |
| ライトマップ形式 | ルクセルあたり 24 ビット RGB (Source Engine)、ルクセルあたり 8 ビット モノクロ (Quake 1) |
| 座標範囲 | ±32,768 ユニット (Quake 1)、ジオメトリに使用可能なのは ±16,384 (Source Engine) |
| 圧縮 | ファイルレベルではなし。Source 2 はオプションでランプごとの LZ4 圧縮をサポート |
| 一般的なサイズ | 2 MB - 200 MB (Quake マップ 1-20 MB、Source マップ 5-100 MB、CS2 マップ 50-200 MB) |
| コンパイル済み出力 | BSP はコンパイラの出力。ソースは .vmf (Source) または .map (Quake) で、vbsp.exe または q3map2 でコンパイルされる |
| エンジン間互換性 | なし - 各エンジンのバリアントは相互に互換性がありません |
| 関連 OS | Windows, Linux, macOS |
| リリース日 | 1996 (Quake 1.0, id Software) |
| 最新バージョン | Source 2 VBSP2 (2020+, used in CS2 / Half-Life: Alyx); multiple incompatible lineages |
| 仕様書 | developer.valvesoftware.com |
BSP の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。BSP ファイルについて最初の質問をしてみましょう。