XACT TIPS
2008/03/02 スクリーンショットをXNA GS 2.0版に更新
XACTとは
GSE 1.0にはMicrosoft Cross-Platform Audio Creation Tool、通称XACT(イグザクト)が付属しています。XACTはゲーム用に設計されたツールで、元々は初代Xbox、Xbox 360の開発キットに付属しているツールで、実際に発売されているゲームでも使われているツールです。XACTには、DVDからの遅延無しのストリーミング再生、3Dオーディオ、5.1chスピーカ対応、ダイナミックサウンドなどのゲームで使われる機能があります。特にダイナミックサウンドでは、このチュートリアルビデオにあるようにプログラムから、ピッチやボリュームを変更したり、プログラムからは「足音」という、ひとつの効果音のように使えるけど、実際に鳴らすと鳴らすごとに違ったバリエーションの足音を鳴らしたりといったことができます。
全部の機能を、このブログで紹介するのは大変なので、質問の多かった機能について紹介します。
ストリーミング
Wave Bankは通常メインメモリに全てのデータが読み込まれます。効果音などには最適な設定ですが、BGMや台詞のボイスデータといった長いデータを全てをメインメモリに読み込むのは不効率です。こういったBGMは通常DVDやHDDから読み込みながら再生するストリーミング再生が使われます。XACTにはDVDやHDDのシーク時間に関係なく、遅延無しで再生できるようになっています。実際にはBGMの冒頭部分のデータだけをメモリに読み込んで、その部分を再生している間にDVDやHDDから次のデータを読み込むことでシーク遅延時間を解消しています。
このストリーミングの設定はXACT上で、Wave Bankを選択した時に表示されるプロパティ画面でTypeプロパティをInMemoryからStreamingに変更することでできます。
Wave Bankのタイプがストリーミングのものは、上図のようにアイコンの上にDVDと表示されます。
ループ再生
殆どの場合、BGMはループ再生しますが、XACT上でループ設定はSound Bankから行います。
Sound Bankウィンドウから、ループ再生したいSound名(上図の左上の部分)を選択すると、右上にTrack情報が表示されるので、そこでPlay Waveを選択すると、プロパティ画面が以下のように変化します。
このプロパティ画面の、LoopプロパティのInfiniteをチェックすることで、ループ再生することができます。
圧縮
無圧縮のままのオーディオデータ、特にBGM等の場合、大量のデータを必要とするので、MP3等の圧縮オーディオフォーマットを追加したいという要望がありますが、現状ではXACT上で使えるのはWavファイル形式のデータのみです。その代わり、XACT上からWindows上では圧縮率4:1のADPCM、Xbox360上では圧縮率6:1~12:1のXMAが使えます。XMAはWMA形式の音声圧縮をゲーム向けにカスタマイズしたものです。利点としてはMP3やWMA形式に比べて、少ないデコード用のバッファで効果音などを鳴らすことができます。また、XBox 360にはXMAデコード用のハードウェアが搭載されているので、CPUは面倒なデコード作業をする必要がありません。
この圧縮形式はWave Bank毎に指定することができます。まずは、圧縮形式を宣言します。プロジェクトビューのCompression Presetsを右クリックして、New Compression Presetを選択します。デフォルトでは、Compression Presetという名前のプリセットが作られます。この名前は、BGMや、効果音、またはボイス用等、用途にあった名前を付けるのが良いでしょう。
プリセットには上図のプロパティがあり、Xbox 360ではPCMとXMAを選択できXMAのQualityの値を上げることで高音質、下げることでファイルサイズを小さくすることができます。WindowsではPCMとADPCMを選択することができます。
最後に宣言したプリセットをWave Bankのプロパティ画面のCompressionPresetプロパティで指定することで、Wave Bankのデータが圧縮されるようになります。
データをビルド後、Wave Bankにはプラットフォーム毎の圧縮に関する情報が表示されるようになります。Sizeは圧縮前のサイズ、Windows上では圧縮フォーマット(PC Format)、圧縮後のサイズ(PC Compressed)、圧縮率(PC Ratio)が、Xbox 360上では圧縮フォーマット(Xb Format)、圧縮クオリティ(Quality)、圧縮後のサイズ(Xb Compressed)、圧縮率(Xb Ratio)の情報が役に立ちます。
上図の例では、元のサイズが15MBのデータが、Windows上では4.1MB(27%)、Xbox 360上では1.3MB(9%)に圧縮されているのが判ります。
まだまだある機能
今回は、ループ再生、ストリーミング再生、そしてデータ圧縮に関して紹介しました。他にもいろんな機能があるらしい(本人も全部は知らん)のですが、XACTツールの使い方は以下のURLが参考になります。
http://msdn2.microsoft.com/en-us/library/bb172314.aspx
XNAに付属しているXACTツールは、DirectX SDK October 2006のものなので上記のURLとは多少違うので注意が必要です。