menu
バージョン
2017.1.9.6501
2024.1.4.8780
2023.1.12.8706
2022.1.18.8567
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
2024.1.4.8780
2023.1.12.8706
2022.1.18.8567
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
外部ソースは、Wwiseのサウンドオブジェクトに置くことのできる、特別な種類のソースです。実際のサウンドデータは、ランタイム時に提供されます。これは、例えば大量のダイアログがある場合、それぞれのサウンドとイベントを作成してバンクに入れ、これを適切に分割して管理する方法より便利です。また、AI を使用したスピーチジェネレータなど他のシステムを介してダイアログを既に管理している場合にも非常に便利です。
他のソースプラグインと同様に、Add Source(ソースの追加)" ボタンから、Wwise に外部ソースを作成することができ、必要であればこれを複雑な構造の一部にすることも可能です。ゲーム側では、外部ソースでのイベント再生は、他のサウンドの場合と同様に、AK::SoundEngine::PostEvent と AK::SoundEngine::DynamicSequence::Playlist::Enqueue を介して実行可能です。外部ソースを置き換えるために再生する(1つまたは複数の)WAV ファイルは、イベントがポストされる時に提供される必要があります。どのファイルを再生するかの決断は、完全にプログラマーの手にゆだねられています。つまり、ソースファイルのファイル管理は、Wwise サウンドエンジンの外部で行われます。より多くの作業を伴うことになりますが、結果としてより多くの柔軟性を得られます。
サウンドエンジンが使用するwaveデータは、独自の形式なので、入力ファイルをランタイム時にサウンドエンジンに渡すためには、これを変換する必要があります。これは、Wwise の External Sources File List(外部ソースファイルリスト)を介して実行可能です。変換する必要のある全てのファイルが使用する変換設定とともに非常にシンプルな XML ファイルに含まれています。Wsources ファイルを指定するには、External Sources タブの Project Settings で設定します。以下は、このファイルの例です:
<?xml version="1.0" encoding="UTF-8"?> <ExternalSourcesList SchemaVersion="1" Root="d:\TestProject\ExternalSources"> <Source Path="kaaboom.wav" Conversion="VeryCompressed" /> <Source Path="SomeOtherFolderInTheProject\working.wav" Conversion="PCM"/> <Source Path="d:\FolderOutsideTheProject\out.wav" Conversion="PCM" Destination="out.wav"/> <Source Path="..\RelativeOutsideTheProject\relative.wav" Conversion="PCM" Destination="relative.wav"/> <Source Path="MyHdrSound.wav" Conversion="PCM" AnalysisTypes="6"/> </ExternalSourcesList>
Root 属性は、ソースエントリのルートパスを指定します。省略されると、プロジェクトディレクトリがルートとみなされます。ルートパスは、完全修飾パスまたはプロジェクトディレクトリへの相対パスです。
Source (ソース) アイテムは、変換するファイルを1つ特定します:
バンク生成が発生すると、他のファイル変換とともに外部ソースの変換も自動的に行われます。すでに変換済みのファイルは、不必要に再変換されないことに注意してください。
warning
|
Caution: 再変換を避けるために、Wwise は出力ディレクトリ内の Wwise.dat ファイルにいくつかのデータを保存します。このファイルはゲームには必要のないものなので、最終ファイルにこれを含めないようにしてください。このファイルが削除されると、すべてのwaveファイルが再変換されます。 |
入力ディレクトリのディレクトリ構造は、ルートパスに相対的な出力ディレクトリに複製されます。上の例では、出力ディレクトリには、"ExternalSources" フォルダと "Lower Tests\Originals\SFX" フォルダが含まれます。".." を含むパスは取り除かれ、最初の本当のフォルダから開始します。
コマンドラインツールを使用して、プロジェクトの外部ソースのみを変換することも可能です。例えば、以下は、バンクを生成せずに Xbox One 用の外部ソースを変換します。
"%WWISEROOT%\Authoring\Win32\Release\bin\WwiseCLI.exe" "C:\Project name.wproj" -ConvertExternalSources XBoxOne
コマンドラインツール (WwiseCLI) に関する詳細は、コマンドラインを使う を参照してください。
オーディオデータをサウンドエンジンに提供するには、ファイル名またはデータポインタを AkExternalSourceInfo 構造体で指定します。これにより、Wwise プロジェクト内の Sound オブジェクト上にある Streaming チェックボックスが完全に上書きされます。データポインタを使用する場合、メモリ管理を行い、データが再生中ずっとメモリ内に留まっていることを確認する必要があります。
ファイル名を指定すると、ファイルが開き、通常のストリーミングファイルと同様にディスクからストリーミングされます。ディスク上のそのロケーションは、低レベル I/O サブシステムの File Location Resolver(ファイルロケーションリゾルバ)実装内で解決される必要があります。低レベル I/O サブシステムの詳細については、 低レベル I/O を参照してください。
デフォルトの File Location Resolver サービスは、CAkFileLocationBase に実装されており、SDK のサンプルとして提供されています( デフォルト低レベル I/O の実装 参照)。この実装は、サブフォルダをサポートしないので、すべての外部ソースストリーミングファイルが "標準" ストリーミングファイルと同じ場所にあるとみなします。
Wwise Stream Manager は、フラグを AK::StreamMgr::IAkFileLocationResolver::Open() に渡し、ファイルロケーションを正しく解決するサポートをします(AkFileSystemFlags)。このレベルでは、外部ソースと標準的なストリーミングファイルを"company ID" で区別可能です(AkFileSystemFlags::uCompanyID)。Wwise は、サウンドバンクおよび標準的なストリーミングファイル用に AKCOMPANYID_AUDIOKINETIC を、外部ストリーミングソース用に AKCOMPANYID_AUDIOKINETIC_EXTERNAL を渡します。したがって、この値を使用して、ディスク上の別のロケーションで外部ソースを検索することができます。
info
|
Note: AkFileSystemFlags::bIsLanguageSpecific は、外部ソースが「ボイス」サウンド構造に含まれていても、常に外部ソース false に設定されています。実際、ボイスではなく、言語に依存しない SFX 内にで外部ソースを使用するよう、推奨しています。ファイル名、またはAkExternalSourceInfoのIDを指定する場合、ローカリゼーションは最初から扱う必要があります。 |
プロジェクトには以下が含まれている必要があります:
AkExternalSourceInfo source; source.iExternalSrcCookie = AK::SoundEngine::GetIDFromString("MyExternal"); //The cookie is a hash of the name of the external source object. source.szFile = AKTEXT("One.wem"); //The file we're going to play. source.idCodec = AKCODECID_PCM; //The file is in PCM. AK::SoundEngine::PostEvent( "Play_MySound", 2, 0, NULL, 0, 1, &source ); source.szFile = AKTEXT("Two.wem"); //Let's play a different file with the same event/source AK::SoundEngine::PostEvent( "Play_MySound", 2, 0, NULL, 0, 1, &source );
info
|
Note: 外部ソースの拡張子は、".wem" である必要があります。External Sources File List(外部ソースファイルリスト)で、宛先ファイル名を変更することはできますが、拡張子は変更できません。変換後は、ファイルの拡張子は常に".wem"になります。File Package(ファイルパッケージ)に、変換されたファイルをパッケージする場合、コード内で拡張子 ".wem" を使用してこのファイルを参照する必要があります:File Packagerは、拡張子を含めた完全な名前をハッシュして、ルックアップ ID を生成します。 |
複数のwaveファイルを、単一イベントに置き換えることができます。例えば、3つの外部ソースでシーケンスコンテナをセットアップ可能です。イベントが1つ以上の外部ソース再生をトリガーする場合、これらのソースは、AkExternalSourceInfo 構造体を充填する時に区別可能であるよう、プロジェクト内で独自の名前を持つ(したがって独自の cookie を持つ)必要があります。
プロジェクトには以下が含まれている必要があります:
AkExternalSourceInfo sources[3]; sources[0].iExternalSrcCookie = AK::SoundEngine::GetIDFromString("Extern_1st_number"); sources[0].szFile = AKTEXT("Five.wem"); sources[0].idCodec = AKCODECID_PCM; sources[1].iExternalSrcCookie = AK::SoundEngine::GetIDFromString("Extern_2nd_number"); sources[1].szFile = AKTEXT("One.wem"); sources[1].idCodec = AKCODECID_PCM; sources[2].iExternalSrcCookie = AK::SoundEngine::GetIDFromString("Extern_3rd_number"); sources[2].szFile = AKTEXT("Four.wem"); sources[2].idCodec = AKCODECID_VORBIS; //The codec can be different for each source, if needed AK::SoundEngine::PostEvent( "Play_MyExternalSequence", 2, 0, NULL, 0, 3, sources );