XNB ファイル形式とは?
.xnb は、XNA Game Studio コンテンツパイプラインによって生成された単一のゲームリソースを格納するコンパイル済みのバイナリファイルです。.xnb はバイナリ形式であり、画像、オーディオデータ、3Dモデル、フォント、その他多くのリソースを含むことができます。.png テクスチャや .wav オーディオクリップなどのソースアセットは、ビルド時にプラットフォームに最適化された .xnb ファイルにコンパイルされ、ゲームの実行時に Content.Load<T>() を介してロードされます。
すべての .xnb ファイルは ASCII タグ XNB で始まり、その後にターゲットプラットフォームのバイト(Windows は w、Xbox 360 は x、Windows Phone は m)とフォーマットバージョンのバイトが続きます。オプションの LZX または LZ4 圧縮フラグも同じヘッダー内にエンコードされています。
XNA は、Microsoft Windows、Windows Phone、および Xbox システム向けのゲームを作成するための開発ツールセットです。XNA 開発環境は Visual Studio Express をベースにしており、無料で利用可能で、ゲーム開発者向けに豊富なツールと機能を提供していました。Microsoft は2010年のバージョン 4.0 をもって XNA を終了し、2014年頃にサポートを終了しました。オープンソースの MonoGame および FNA フレームワークは、引き続き同じ .xnb 形式の読み書きをサポートしており、*Terraria*、*Stardew Valley*、*Celeste* などのタイトルがアートやオーディオを .xnb ファイルとして配布しているため、現在も重要な形式です。
xnbcli や XnbExtract を含むサードパーティ製ツールを使用すると、.xnb コンテンツを編集可能なソースアセットにアンパックできます。関連する XNA オーディオバンクファイルには .xsb および .xwb 拡張子が使用されます。
セキュリティと安全性
リスク: LOWXNB は、テクスチャ、サウンド、データテーブルなどの不活性なコンパイル済みゲームデータであり、スクリプトや実行可能なコンテンツは含まれていないため、ファイルを開いたり抽出したりすること自体に危険はありません。実用上の注意点が2つあります。ゲームのアセットを抽出または再配布することは、そのゲームの著作権/EULAによって制限されます(個人用の改造は問題ありませんが、再配布は不可)。また、正当なスタンドアロンのダブルクリックビューアは存在しないため、広告や不要なプログラム(PUP)の罠である可能性が高い「xnb opener」サイトではなく、公式リポジトリ(GitHub)から XNB ツールをダウンロードするようにしてください。
形式の詳細
概要XNB ファイルを開くプログラム
技術的詳細
詳細仕様| ファイルエンコーディング | バイナリ、リトルエンディアン・バイトオーダー |
| マジックバイト | オフセット 0 に 0x58 0x4E 0x42 (ASCII «XNB») |
| ヘッダーレイアウト | 3バイトの ASCII タグ «XNB» + 1バイトのプラットフォームコード + 1バイトのフォーマットバージョン + 1バイトのフラグ + 4バイトの総ファイルサイズ (リトルエンディアン uint32) |
| プラットフォームコード | «w» (0x77) = Windows, «x» (0x78) = Xbox 360, «m» (0x6D) = Windows Phone/Mobile - すべてのヘッダーの3バイト目にエンコード |
| フォーマットバージョン | バージョン 1-5。バージョン 5 は XNA Game Studio 4.0 に対応し、MonoGame および FNA がターゲットとするバージョンです |
| 圧縮 | オプション - LZX (XNA 4.0) または LZ4 (一部の MonoGame ビルド)。ヘッダーのフラグバイト内のビットで示されます。ペイロードは非圧縮で保存されることも多いです |
| サポートされるコンテンツタイプ | テクスチャ (DXT1/DXT3/DXT5/Color RGBA)、オーディオ (PCM/ADPCM)、3Dモデル、ビットマップフォント、コンパイル済みエフェクトシェーダー、スプライトシート |
| タイプリーダー・マニフェスト | ランタイムがアセットオブジェクトグラフをデシリアライズするために使用する ContentTypeReader クラス名のシリアライズされたリストがヘッダーに埋め込まれています |
| ファイルあたりのアセット数 | 1つの .xnb ファイルにつき1つのプライマリアセット。共有サブリソースは同じファイルのシリアライズされたオブジェクトグラフ内にネストされます |
| テクスチャサーフェス形式 | Color (32ビット RGBA)、DXT1 (不透明 4:1 ブロック圧縮)、DXT3、DXT5 - ロード時の VRAM フットプリントを削減する GPU ネイティブ形式 |
| 典型的なファイルサイズ | 小さなフォントやスプライトの場合は数 KB、高解像度テクスチャや非圧縮オーディオトラックの場合は最大数十 MB |
| 整合性チェック | 基本的な検証用に、総ファイルサイズがヘッダーに4バイトのリトルエンディアン・フィールドとして格納されています。暗号化チェックサムやハッシュは含まれません |
| 暗号化 | 暗号化されていません。コンパイル済みアセットはプレーンなバイナリデータとして保存され、正しい ContentTypeReader を提供する実装であれば読み取り可能です |
| MIMEタイプ | application/octet-stream (.xnb 専用に登録された MIME タイプはありません) |
| コンテンツパイプラインの役割 | XNA/MonoGame コンテンツパイプラインのランタイム出力。ソースファイル (.png, .wav, .fbx, .spritefont) はビルド時に .xnb にコンパイルされ、実行時に Content.Load<T>() を介してロードされます |
| 主な採用例 | MonoGame および FNA (オープンソースの XNA 後継)。Terraria、Stardew Valley、Bastion、Fez、Celeste のアセット配布に使用 |
| リリース日 | 2006 (XNA Game Studio Express / XNA Framework 1.0) |
| 最新バージョン | XNB format 5 (XNA Game Studio 4.0, 2010); same format reused by MonoGame/FNA |
| 仕様書 | en.wikipedia.org |
XNB の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。XNB ファイルについて最初の質問をしてみましょう。