Wwiseプロジェクトで行う、ファイルのバージョン管理

Wwiseの使い方やツール

ゲームデベロッパーの多くは何らかのバージョン管理システムを取り入れ、プロジェクトのファイルを保存して共同作業の効率化をはかっています。そこで、Wwiseのプロジェクトフォルダにあるファイルのうち、どれをバージョン管理下で保存した方が良いかを、この記事で検討したいと思います。

The Good: 向いているファイル

この問題に答える前に、まずWwiseプロジェクトの最終的なオーディオアセットを作成するのに、どのファイルが必要不可欠なのかを説明します。Audiokineticでサウンドデザイナーとして働くマクシミリアン・シマール・ポワリエ(Maximilien Simard Poirier)がこのテーマについて作成したビデオチュートリアルを、ここで閲覧できるので参考にしてください。

Wwise Projectのファイルと、Work Unitのファイル

すべての主要ファイルを、File ManagerShift+F1)で確認できます。以下は、CubeWwiseプロジェクトをロードして、このダイアログ画面を開いたときの様子です:

Picture1 

画面表示をみると、Cube.wprojも、ほかのすべてのフォルダも、プロジェクトにとって必要不可欠なものとなっています。続いてActor-Mixer Hierarchyフォルダを展開すると、以下のように表示されます:

Picture2 

この表示内容よると、Actor-Mixer Hierarchyは必ず必要なフォルダで、少なくとも“Default Work Unit.wwu”ファイルがその中に入っている必要があります。万が一プロジェクトフォルダからActor-Mixer Hierarchyフォルダが削除されると、Wwiseはその中のDefault Work Unit.wwu(何も入っていない状態)も含めて再作成して、さらにプロジェクトをロードするときにユーザーに注意喚起します。なお、Wwiseがプロジェクトを開くのに不可欠ではないものの、プロジェクトが設計通りに稼働するには、ほかのWork Unitファイルも必要です。結論として、File ManagerWork Unitタブに表示されるファイルはすべて、バージョン管理システムに追加するべきです。

Wwise Projectフォルダの中身

プロジェクトフォルダ内を見ると、以下のように、前述の項目以外にもいくつか入っています。

Picture3 

まず、.validationcache.wsettings2種類のファイルは、このユーザー専用のものなので、バージョン管理に追加しないでください。IncrementalSoundBankData.xmlというファイルはSoundBankで何が変わったのかを確認するために使われ、プロジェクトのSoundBanksを生成するときにアップデートする必要があります。Wwiseプロジェクトのローカルのコンテンツや、ローカルで行ったSoundBank生成履歴などに基づいてSoundBankの状態を示すものなので、バージョン管理に入れるべきではありません。.cacheフォルダをバージョン管理に入れることは稀で、このフォルダの役割や中身については、後述します。

WwiseSources(別名Originals

File Managerで、“Source Files”タブをクリックすると、以下が表示されます:

Picture4 

これは、Originalsフォルダの下にあるフォルダ構成を表し、Cubeプロジェクトで使われているWAVファイルやMIDファイルがすべて含まれています。これらすべてのファイルが、Wwiseプロジェクトの最終的なオーディオアセットであるSoundBankや、ストリーミング用ファイルや、ルーズファイル(loose files)を再作成するために必要です。ソース(元)となるこれらのメディアファイルは、すべてバージョン管理システムに追加してください。

Originals フォルダの中身

WindowsのファイルエクスプローラでOriginalsフォルダを開くと、以下のコンテンツが入っています:

Picture5

WAVファイルには必ず、対応するAKDファイルがあり、そこにWAVファイルのオーディオコンテンツに関するメタデータが入っています。Wwiseプロジェクトで、Loudness Normalization機能やHDREnvelope Tracking機能が選択されていると、その関連データがAKDファイルに入ります。また、プロジェクトにオーディオファイルをインポートするときにWwiseが実行するピーク解析データも、ここに含まれます。AKDファイルはWwiseが必要に応じて作成するので、バージョン管理に追加する必要はありません。

The Bad: 向いていないファイル

これでWwiseプロジェクトの最終的なオーディオアセットを制作する上で必要となるファイルが分かったので、次に、SoundBankや、ストリーミング用のファイルや、ルーズファイルは、バージョン管理に入れるべきかという問題ですが、答えは「場合による」です。これらのファイルは、例えば、開発チームのメンバーがWwiseを使わずに開発中のゲームをプレイしてサウンドを聞くのであれば必要で、そのような人にアクセスしてもらうには、バージョン管理システムが一番便利な方法かもしれません。ただ、この方式をとったときにチームを困らせるかもしれないのがSoundBank同期の乱れです。例えば、更新したSoundBankをバージョン管理システムに追加しても、新しいInit.bnkを追加しなければ、新しいSoundBankをロードしようとするときにサウンドエンジンがエラーレポートを出します。また、ストリーミング用ファイルと、SoundBankに含まれるプリフェッチ(Prefetch)がマッチしなければ、同様の問題が発生する可能性があり、両者が同時に生成されていなければ、音のグリッチやクラッシュが起きるかもしれません。このような問題を回避するには、専用のシステムや専任者を事前に決めて、すべてのオーディオアセットを定期的にビルドしてバージョン管理にコミットするのが望ましいと思います。この“SoundBankのビルドマシンともいえる習慣を確実に実践すれば、オーディオアセットのミスマッチに起因する問題を防げます。

SoundBank Path フォルダにあるファイル

SoundBankファイルには、変換後のメディアと、サウンドの構成情報と、サウンドに関連するイベント(Events)が入っているので、SoundBankファイルは必ず生成されます。一方、ストリーミング用ファイルが存在するのは、Wwiseプロジェクト内のサウンド1つ以上に関して、General Settings“Stream”オプションが選択されている場合に限ります。ルーズファイルやルーズメディアは、メディアの管理方法としてPrepare Eventを選択すると、作成されます。

Cubeプロジェクトの場合は、ストリーミング用ファイルが1つだけあり、Prepare Eventは使用されていません。Project Settings (Shift+K)SoundBanksタブを開くと、以下のようなオプション設定になっています:

 

Picture6

結果として、以下のようなコンテンツが入ったSoundBanksフォルダが生成されます:

Picture7 

このWwiseプロジェクトでは、ローカライズされたSound Voiceオブジェクトが一切なかったので、English(US) フォルダに何も入っていません。プロジェクトに含まれるサウンドをWwiseがランタイムに再生するには、4つのBNKファイルと797700993.wemストリーミングファイルが必要です。PluginInfo.xmlファイルに、生成されるSoundBankのコンテンツに必要なプラグインの名前が、すべて入っています。SoundbanksInfo.xmlファイルはSoundBanksを生成する際に使用され、具体的には、CopyStreamedFiles.exeツールによってキャッシュからコピーすべきストリーミング用ファイルを指定します。これらのXMLファイルをWwiseが使うのはSoundBanksを生成するときだけなので、通常はバージョン管理に追加せず、実際に必要なときになければ、その時点でWwiseが再生成します。

NameOfSoundBank.txtのファイルがあるのは、“Generate Bank Content TXT Files” というオプションにチェックが入っているからです。これらのファイルはサウンドの再生に必要ありませんが、あなたの開発ツール群とWwiseをインテグレートするときに使用することがあります。ゲームエンジンの機能をサポートするためにこれらのコンテンツを使うかどうか、オーディオプログラマーに確認してみてください。使う場合は、バージョン管理に“Generate Bank Content TXT Files”を追加してほしいとオーディオプログラマーが考えるはずです。

まとめると、ランタイムのオーディオアセットを、あなたのバージョン管理システムに追加するのであれば、SoundBankパスの下にあるBNKファイルやWEMファイルをすべて、追加してください。また、あなたのゲームエンジンにWwiseをどのようにインテグレートしているかによって、TXTや、XMLや、JSONファイルも追加してください。

The Ugly: 避けるべきファイル

バージョン管理システムに絶対入れるべきファイルや、入れてもいいファイルが分かったところで、入れてはいけないファイルを確認します。

.cacheフォルダの中身

既にWwiseプロジェクトのほぼ全種類のコンテンツについて述べました。1つだけ入っていなかったのが、.cacheフォルダです。ドキュメンテーションで、プロジェクトのキャッシュフォルダに入っているのは、Wwiseがオーディオファイル変換やSoundBank生成の過程で生成した一時的なデータだと説明しています。一般的なルールとして、このフォルダをバージョン管理システムに入れるべきではありません。下図の通り、プロジェクトCube.cacheフォルダに入っているのは、主にWEMファイルです:

Picture8 

これらのファイルは基本的に元のWAVファイルと同名で、WEMファイル拡張子の前に、16進数の数字が追加されています。Originalsフォルダのコンテンツをエンコードする際は、プロジェクトの全てのアイテムに関してConversion Settingsで指定したオーディオコーデックに従い、WAVファイルを変換します。サウンドに適用したすべてのプロパティ(VolumePitchLow Pass FilterHigh Pass Filterなど)が、WEMファイルの作成時にも適用されます。例えば、EffectRenderオプションを指定すると、このEffectは、WEM内でレンダリングされます。また、オーディオソースをWwiseSource Editor画面でトリミングした場合は、ソースのうち有効な部分だけをエンコード後のファイルに入れて、メモリを節約します。このように修正を加えた場合は、WEMファイル拡張子前の16進数の数字が更新され、反映されます。

また、.cacheの中には、以下のように、{GUID}.statファイルを含むSBStatフォルダがあります。これらの一時ファイルは、Wwise SoundBank Managerビューで、SoundBanksData SizeDecoded Sizeを表示するために使います。Data Sizeとは、選択中のプラットフォームのインゲームのメモリサイズのことで、Decoded Sizeとは、デコードされたVorbisメディアのインゲームメモリのことです。

 

Picture9

これらはWwiseプロジェクトやOriginalsファイルがあればいつでも作成しなおせるので、本来は共有するようなフォルダではありませんが、開発チームによっては、.cacheの中身をあえてバージョン管理に加えています。その主な理由は、Wwiseプロジェクトに大量のオーディオアセットが含まれる場合に、.cacheを再作成する変換プロセスにかなり時間がかかることです。ただこの方式をとると、プロパティ設定であれ、Conversion Settingであれ、Audio Sourceであれ、少しでも変更すると、.cacheフォルダに保存されるファイル名が変更されて、バージョン管理のリポジトリに多数の不要ファイルが追加される恐れがあります。

.backup フォルダ

Wwiseプロジェクトのルートの下にある別のフォルダとして、.backupフォルダというものがあります。Wwiseの新しいメジャーバージョンを使ってプロジェクトを開いて、プロジェクトをアップグレードすると、Wwiseがこのフォルダを自動的に作成します。プロジェクトのWwiseアップグレードを、前のバージョンに戻したい場合は、この.backupフォルダの中身を利用します。このフォルダの中身に関しては、あなたのWwiseプロジェクトのアップグレード前のバージョンを取得すれば同じファイルが作成されるので、バージョン管理に追加する必要は全くありません。

まとめ

グッドプラクティスとして、プロジェクト、Work Unit、そしてオリジナルのWAVファイルをバージョン管理に追加するように習慣づけてください。SoundBanksや、ストリーミング用ファイルや、ルーズファイルを追加するときは、それらの同期に注意する必要があり、失敗すると、非常に困ります。一方、.cacheフォルダのコンテンツを追加すると、後々、大変なことになりかねないので、避けるべきです。この記事が、Wwiseプロジェクトのフォルダの中の、どのファイルをバージョン管理システムに追加すればよいのかを、読者が判断する際の参考になることを願っています!

ギヨーム・ルノー(GUILLAUME RENAUD)

Audiokinetic

ギヨーム・ルノー(GUILLAUME RENAUD)

Audiokinetic

Audiokineticカスタマーサポートリーダー 2014年のはじめから、Audiokineticカスタマーサポートチームの一員として活躍。Wwiseに精通しているギヨームは、自分のナレッジをコミュニティで共有するのが大好きで、ユーザーがテクノロジーを理解してこそ、そのテクノロジーの可能性が最大限に引き出されるという信念をもつ。プライベートでは、ゲームや本の架空の世界をエクスプロアしているか、ジョギングやスノーボードで現実の世界をエクスプロアしていることが多い。

コメント

Replyを残す

メールアドレスが公開されることはありません。

ほかの記事

MIDIベースの複雑なサンプルインストゥルメントを、Wwiseで作成するには

MIDIミュージックの時代に戻りたいとお考えの方は、PS4の内蔵シンセサイザーは利用できない(存在しないので)、自分のPCサウンドカードのGeneral...

20.2.2018 - 作者 ダニエル・ベック(DANIEL BECK)

新しくなったPositioning: Wwise 2018.1で機能強化

Wwise...

30.7.2019 - 作者 ギヨーム・ルノー(GUILLAUME RENAUD)

アンビソニックスで、ダイナミックなアンビエンスを実現

アンビソニックスを回転...

16.6.2020 - 作者 ルイス・ハビエル・ブッフォーニ(Louis-Xavier Buffoni)

ReaWwiseを使用してWAAPIをReaScript(Lua)で実行する

22.3.2023 - 作者 アンドリュー・コスタ

Unreal EngineでWwiseから発音する方法

2.4.2024 - 作者 合田 浩(HIROSHI GODA)

Wwiseのリリースサイクルに関するニュース | Sim-PatchリリースとUnreal Engine Previewに対する開発サポート

28.5.2024 - 作者 ギヨーム・ルノー(GUILLAUME RENAUD)

ほかの記事

MIDIベースの複雑なサンプルインストゥルメントを、Wwiseで作成するには

MIDIミュージックの時代に戻りたいとお考えの方は、PS4の内蔵シンセサイザーは利用できない(存在しないので)、自分のPCサウンドカードのGeneral...

新しくなったPositioning: Wwise 2018.1で機能強化

Wwise...

アンビソニックスで、ダイナミックなアンビエンスを実現

アンビソニックスを回転...