XACTプロジェクトを作る
今回はXNA(の「XNA Game Studio Express」)をインストールすると同時にインストールされる、
「Microsoft Cross-Platform Audio Creation Tool (XACT)」
を用いて「XACTのプロジェクト」を作成して、これを「XNAのプロジェクトに登録」してみようと思います。
【ファイルを用意する】
発声させるサウンドファイルを用意します。
今後は2008/4/15に説明したサンプルに加えようと思うので、このプロジェクトの以下のフォルダの下に置くことにします。
[サウンドファイルを置く場所]
SampleGame\SampleGame\Sound
サウンドファイルは、2008/5/17にJavaでサンプルを作成した自機のショット音とBGMとします。
BGMのファイルはMIDI(.midi)のファイルだったので、WAVE(.wav)に変換しておきます。
(変換するツールはフリーウェアで星の数ほどあると思うので、適当に変換しましょう)
[サウンドファイル]
自機のショット音:ShipMissile.wav
BGM:BGM1.wav
【起動】
XACTプロジェクトを作るツールの起動です。
スタートメニューより、→「プログラム」→「Microsoft XNA Game Studio Express」→「Tools」→
「Microsoft Cross-Platform Audio Creation Tool (XACT)」にて起動します。
(名称が長いので以降「XACT」と呼びます)
XACTを起動すると、以下のような画面が表示されます。
【Wave Bankへサウンドファイルを登録】
まずはサウンドファイルを登録する、「Wave Bank」というものを作成します。
XACTのメニューから「Wave Banks」→「New Wave Bank」を実行します。
もしくは、上部のボタンからも実行できます。
画面右側にWave Bankのウィンドウが作成されました。
次にこのウィンドウにサウンドファイルを登録します。XACTのメニューから
「Wave Banks」→「Insert Wave Files」を実行します。
もしくはWave Bankのウィンドウから右クリックメニューからも実行できます。
ファイル名を指定するダイアログが表示されるので、ここで「ShipMissile.wav」を登録します。
続いて「BGM1.wav」も登録します。
登録されました。
【プロジェクトの保存】
サウンドファイルの登録を行ったので、ここで一度プロジェクトを保存します。
今回保存する場所はサウンドファイルを置いた場所に「XACT」というフォルダを作成して、その下にしておくことにします。
[プロジェクトのファイルを置く場所]
SampleGame\SampleGame\Sound\XACT
[プロジェクトのファイル名]
SampleGame.xap
保存はXACTのメニューの「File」→「Save Project」を実行して、上述の場所に保存します。
これで「SampleGame\SampleGame\Sound\XACT\SampleGame.xap」にプロジェクトが置かれることになりました。
【プロジェクト内のサウンドファイルのパス変更】
この時点では、登録されたファイルが絶対パスになっているので、これをサンプルソースの階層に合うように設定します。
とりあえず今後、何かXACTで作成したもの(プロジェクトファイル含む)は、ここに置こうかと思います。
[サウンドファイルを置く場所とプロジェクト名]
SampleGame\SampleGame\Sound\XACT\SampleGame.xap
Wave Bankに登録されたサウンドファイルはプロジェクトのフォルダを起点とするようなので、この設計からサウンドファイルとプロジェクトはこのような感じとなります。
SampleGame\SampleGame\Sound\XACT\SampleGame.xap
SampleGame\SampleGame\Sound\ShipMissile.wav
SampleGame\SampleGame\Sound\BGM1.wav
これらを踏まえて、登録した自機のショット音とBGMのパスは以下のように設定します。
..\ShipMissile.wav
..\BGM1.wav
プロジェクトファイルの一つ上の階層にサウンドファイルが置いてあるという設定です。
(サウンドファイル自体はXACT自体は関係ないリソースという考えです。今後XACTを使用しなくても、このリソースはそのまま使うという考えです)
相対パスの方がプロジェクトの環境に依存し辛くなるかと思います。
設定はWave Bankのウィンドウ内のサウンドファイルを選択し、画面左下のプロパティペインの
「Wave Properties」内の「SourcePath」情報を変更します。
少し設定し辛いとは思いますが、各々直に入力して下さい。
【Sound Bankへサウンドを登録】
次にWave Bankとの関係を持たせて、プログラムから参照する情報となる、Sound Bankというものの作成です。
XACTのメニューから「Sound Banks」→「New Sound Bank」を実行します。
もしくは、上部のボタンからも実行できます。手順はWave Bankと同じですね。
画面右側にSound Bankのウィンドウが作成されました。Wave Bankのウィンドウとオーバーラップするので、並べて置きましょう。
次にこのウィンドウにWave Bankで登録したサウンドファイルの項目を登録します。Wave Bankで登録した項目を選択して、Sound Bankにドラッグ&ドロップします。
この際、上下に表示されているウィンドウの2つにドラッグ&ドロップします。
これにより、プログラムからアクセスできる、情報が登録されました。今回のようにドラッグ&ドロップした場合は、リストの項目にある「Sound Name」「Cue Name」は、Wave Bankと同じ名前になります。もしもプログラムからこの名前ではない別の名前でアクセスしたい場合は、「Cue Name」のウィンドウの方の項目を選択して左下のプロパティペインの
「Cue Properties」内の「Name」の項目を変更してください。
ここでプロジェクトを保存します。
XACTのメニューの「File」→「Save Project」を実行して、プロジェクトファイルを更新します。
【XNAプロジェクトへの登録】
いよいよXACTで作成したプロジェクトをXNAのプロジェクトに登録します。
登録はとても簡単で、以下の場所にXACTのプロジェクトを登録するだけです。
今回のサンプルでは、「SampleGame\SampleGame\Sound\XACT」の下に登録します。
(手動でフォルダの作成を行うと、たまにソリューションエクスプローラがエラーを発生する場合があるので、その場合はエクスプローラー(こっちはWindowsのエクスプローラ)からSoundフォルダごとドラッグ&ドロップを行う等してください。この際、登録に不要なファイル(.wav等)が追加されるので、そのままにしておくか、元のファイルのバックアップを保存しておき、プロジェクトから削除を行ってください。削除を行うとファイルまで消去されるので注意が必要です)
これでXACTのプロジェクトの作成、並びにXNAのプロジェクト登録が完了しました。
ここでXNAのプロジェクトをビルドするとXACTのプロジェクトのビルドが自動的に行われ、実行環境下に実行に必要なXACTのファイルや変換された音声ファイルが出力されます。
今回のサンプルで、デバッグモードにてビルドすると、
「SampleGame\SampleGame\bin\x86\Debug\Sound\XACT」の下に
SampleGame.xgs(オーディオエンジンに渡すXACT設定情報)
Wave Bank.xwb(Wave Bank情報)
Sound Bank.xsb(Sound Bank情報)
が生成されます。
ということで、これのサンプルソースを掲載したいと思います。
■サンプルソース (2008.06.04)
◇ ◇ ◇
プログラミングという観点から見ると、かなり「○○○ツクール」のような作業のようですが、このような作業でXACTの高度な機能が使えるのであれば非常に素晴らしいことです。
次回はこのサンプルソースより、「ゲームプログラミング [共通]」カテゴリで設計したサウンドのフレームワークに合せて組み込んでみたいと思います。
「Microsoft Cross-Platform Audio Creation Tool (XACT)」
を用いて「XACTのプロジェクト」を作成して、これを「XNAのプロジェクトに登録」してみようと思います。
【ファイルを用意する】
発声させるサウンドファイルを用意します。
今後は2008/4/15に説明したサンプルに加えようと思うので、このプロジェクトの以下のフォルダの下に置くことにします。
[サウンドファイルを置く場所]
SampleGame\SampleGame\Sound
サウンドファイルは、2008/5/17にJavaでサンプルを作成した自機のショット音とBGMとします。
BGMのファイルはMIDI(.midi)のファイルだったので、WAVE(.wav)に変換しておきます。
(変換するツールはフリーウェアで星の数ほどあると思うので、適当に変換しましょう)
[サウンドファイル]
自機のショット音:ShipMissile.wav
BGM:BGM1.wav
【起動】
XACTプロジェクトを作るツールの起動です。
スタートメニューより、→「プログラム」→「Microsoft XNA Game Studio Express」→「Tools」→
「Microsoft Cross-Platform Audio Creation Tool (XACT)」にて起動します。
(名称が長いので以降「XACT」と呼びます)
XACTを起動すると、以下のような画面が表示されます。
【Wave Bankへサウンドファイルを登録】
まずはサウンドファイルを登録する、「Wave Bank」というものを作成します。
XACTのメニューから「Wave Banks」→「New Wave Bank」を実行します。
もしくは、上部のボタンからも実行できます。
画面右側にWave Bankのウィンドウが作成されました。
次にこのウィンドウにサウンドファイルを登録します。XACTのメニューから
「Wave Banks」→「Insert Wave Files」を実行します。
もしくはWave Bankのウィンドウから右クリックメニューからも実行できます。
ファイル名を指定するダイアログが表示されるので、ここで「ShipMissile.wav」を登録します。
続いて「BGM1.wav」も登録します。
登録されました。
【プロジェクトの保存】
サウンドファイルの登録を行ったので、ここで一度プロジェクトを保存します。
今回保存する場所はサウンドファイルを置いた場所に「XACT」というフォルダを作成して、その下にしておくことにします。
[プロジェクトのファイルを置く場所]
SampleGame\SampleGame\Sound\XACT
[プロジェクトのファイル名]
SampleGame.xap
保存はXACTのメニューの「File」→「Save Project」を実行して、上述の場所に保存します。
これで「SampleGame\SampleGame\Sound\XACT\SampleGame.xap」にプロジェクトが置かれることになりました。
【プロジェクト内のサウンドファイルのパス変更】
この時点では、登録されたファイルが絶対パスになっているので、これをサンプルソースの階層に合うように設定します。
とりあえず今後、何かXACTで作成したもの(プロジェクトファイル含む)は、ここに置こうかと思います。
[サウンドファイルを置く場所とプロジェクト名]
SampleGame\SampleGame\Sound\XACT\SampleGame.xap
Wave Bankに登録されたサウンドファイルはプロジェクトのフォルダを起点とするようなので、この設計からサウンドファイルとプロジェクトはこのような感じとなります。
SampleGame\SampleGame\Sound\XACT\SampleGame.xap
SampleGame\SampleGame\Sound\ShipMissile.wav
SampleGame\SampleGame\Sound\BGM1.wav
これらを踏まえて、登録した自機のショット音とBGMのパスは以下のように設定します。
..\ShipMissile.wav
..\BGM1.wav
プロジェクトファイルの一つ上の階層にサウンドファイルが置いてあるという設定です。
(サウンドファイル自体はXACT自体は関係ないリソースという考えです。今後XACTを使用しなくても、このリソースはそのまま使うという考えです)
相対パスの方がプロジェクトの環境に依存し辛くなるかと思います。
設定はWave Bankのウィンドウ内のサウンドファイルを選択し、画面左下のプロパティペインの
「Wave Properties」内の「SourcePath」情報を変更します。
少し設定し辛いとは思いますが、各々直に入力して下さい。
【Sound Bankへサウンドを登録】
次にWave Bankとの関係を持たせて、プログラムから参照する情報となる、Sound Bankというものの作成です。
XACTのメニューから「Sound Banks」→「New Sound Bank」を実行します。
もしくは、上部のボタンからも実行できます。手順はWave Bankと同じですね。
画面右側にSound Bankのウィンドウが作成されました。Wave Bankのウィンドウとオーバーラップするので、並べて置きましょう。
次にこのウィンドウにWave Bankで登録したサウンドファイルの項目を登録します。Wave Bankで登録した項目を選択して、Sound Bankにドラッグ&ドロップします。
この際、上下に表示されているウィンドウの2つにドラッグ&ドロップします。
これにより、プログラムからアクセスできる、情報が登録されました。今回のようにドラッグ&ドロップした場合は、リストの項目にある「Sound Name」「Cue Name」は、Wave Bankと同じ名前になります。もしもプログラムからこの名前ではない別の名前でアクセスしたい場合は、「Cue Name」のウィンドウの方の項目を選択して左下のプロパティペインの
「Cue Properties」内の「Name」の項目を変更してください。
ここでプロジェクトを保存します。
XACTのメニューの「File」→「Save Project」を実行して、プロジェクトファイルを更新します。
【XNAプロジェクトへの登録】
いよいよXACTで作成したプロジェクトをXNAのプロジェクトに登録します。
登録はとても簡単で、以下の場所にXACTのプロジェクトを登録するだけです。
今回のサンプルでは、「SampleGame\SampleGame\Sound\XACT」の下に登録します。
(手動でフォルダの作成を行うと、たまにソリューションエクスプローラがエラーを発生する場合があるので、その場合はエクスプローラー(こっちはWindowsのエクスプローラ)からSoundフォルダごとドラッグ&ドロップを行う等してください。この際、登録に不要なファイル(.wav等)が追加されるので、そのままにしておくか、元のファイルのバックアップを保存しておき、プロジェクトから削除を行ってください。削除を行うとファイルまで消去されるので注意が必要です)
これでXACTのプロジェクトの作成、並びにXNAのプロジェクト登録が完了しました。
ここでXNAのプロジェクトをビルドするとXACTのプロジェクトのビルドが自動的に行われ、実行環境下に実行に必要なXACTのファイルや変換された音声ファイルが出力されます。
今回のサンプルで、デバッグモードにてビルドすると、
「SampleGame\SampleGame\bin\x86\Debug\Sound\XACT」の下に
SampleGame.xgs(オーディオエンジンに渡すXACT設定情報)
Wave Bank.xwb(Wave Bank情報)
Sound Bank.xsb(Sound Bank情報)
が生成されます。
ということで、これのサンプルソースを掲載したいと思います。
■サンプルソース (2008.06.04)
◇ ◇ ◇
プログラミングという観点から見ると、かなり「○○○ツクール」のような作業のようですが、このような作業でXACTの高度な機能が使えるのであれば非常に素晴らしいことです。
次回はこのサンプルソースより、「ゲームプログラミング [共通]」カテゴリで設計したサウンドのフレームワークに合せて組み込んでみたいと思います。
コメント
コメントの投稿
« Sample Action Gameの紹介 [ステージ20(その2)] l Home l 昔のゲームの想い出 [0055] 「キング&バルーン」 [ナムコ] [1980] [アーケード] »