多くの 新機能 では、Wwise 2017.1に移行する際にいくつかの点に注意する必要があります。
Wwise 2017.1では、リスナーがゲームオブジェクトになりました。リスナーは8人に制限されず、APIはリスナーのみで動作するコールを削除するために簡素化されています。これらのリスナーはすべてのゲームオブジェクトで動作します。Wwiseで複数のリスナーを使用するゲームでは、リスナーごとにゲームオブジェクトを登録する必要があります。リスナーごとに完全なミックスを実行するようになりました。
バスはもはやグローバルエンティティではありません。それらはActor-Mixer Hierarchyのボイスと同様に複数回インスタンス化できます。ミックスバスに関するバスパラメータ上にゲームオブジェクト・スコープ付きRTPCを設定することが可能です。ただし、バスのGeneral Settings タブのVoice パラメーターは、バスのゲームオブジェクトではなく、実際に音声が再生されているゲームオブジェクトに関係していることに注意してください。
バスインスタンスに関連付けられている特定のゲームオブジェクトは、WwiseプロジェクトのEnable Positioningプロパティとゲームで定義されたエミッター・リスナーの関連付けの組み合わせによって決定されます。詳細については、以下のセクション、オーサリングツールの動作または 'Positioning Enabled' フラグが変更されました。 および Voices Graphを構成するアルゴリズムが変更されました。を参照してください。ダイナミックな信号ルーティングと3D配置されたバスがWwiseで可能になりましたが、基本的なセットアップでは、1つまたは複数の‘エミッター’ゲームオブジェクトからのさまざまなソースが再生され、別のゲームオブジェクトの‘リスナー’のミキシング・バス・チェーン全体が再生されます。
Wwiseはゲームオブジェクトを提供しません。2017.1に移行して同等の動作をするには、初期化時にゲームオブジェクトを登録し、デフォルトのリスナとして設定する必要があります。
AkGameObjectID MY_DEFAULT_LISTENER = 0; // Register the main listener. AK::SoundEngine::RegisterGameObj(MY_DEFAULT_LISTENER, "My Default Listener"); // Set one listener as the default. AK::SoundEngine::SetDefaultListeners(&MY_DEFAULT_LISTENER, 1);
デフォルトのリスナとしてゲームオブジェクトを割り当てることは、単に便宜上のものです。後続のゲームオブジェクトを登録した後に SetListeners()
を呼び出す必要がなくなります- デフォルトのリスナーが自動的にリスナーとして割り当てられます。
SoundFrameを使用している場合、 AK::SoundEngine::SetDefaultListeners
API へのアクセス権がなく、SetListeners()
を明示的に使用する必要があることに注意してください。
APIを介してゲーム定義の送信を設定するときは、送信を受け取るゲームオブジェクトを指定する追加のフィールドを入力する必要があります。(混合バスインスタンスを一意に識別するためには、補助バスIDとゲームオブジェクトIDの両方が必要です)。ゲーム定義されたaux sendを設定するときにゲームオブジェクトを指定することは、エミッター・リスナーの関連付けを追加する別の方法です。これは、メインバス出力(「ドライパス」と呼ばれることもあります)のエミッタリスナーの関連付けを定義するSetListeners()
API コールに似ています。
AkGameObjectID myListenerID = 1; AkGameObjectID myEmitterID = 123; AkAuxSendValue auxSendVal; // リスナーIDを指定する必要があります。 auxSendVal.listenerID = myListenerID; auxSendVal.auxBusID = AK::SoundEngine::GetIDFromString(“MyAuxBusName”); auxSendVal.fControlValue = 1.0f; AK::SoundEngine::SetGameObjectAuxSendValues(myEmitterID, &auxSendVal, 1);
便宜上、 listenerID
フィールドをAK_INVALID_GAME_OBJECT
に設定することができます。これにより、サウンドエンジンはSetListeners()
またはSetDefaultListeners()
関数ですでに指定されているリスナを単純にサウンドエンジンに使用するように指示します。この機能は、コードの移行と最も一般的な補助送信シナリオの両方を容易にします。これにより、リスナーはダイレクト出力用のリスナーと同じです。
Wwise 2017.1では、バスは現在、他のバスへのAUXセンドを持つことができ、幅広い新しいルーティング可能性を開くことができます。音声の場合と同様に、補助送信はユーザ定義またはゲーム定義とすることができます。バスからAUXセンドを作成するときは、いくつか注意すべきことがあります:
オーサリングツールのEnable Positioningフラグは非常に重要な目的を果たさず:音声グラフのこのノードで現在のゲームオブジェクトのエミッター・リスナーの関連付けを評価するかどうかを決定します。さらに、2Dパンナーは、Enable Positioning フラグから独立しています。音を定位せずにパンすることが可能です。また、Positioning Enabledの2Dサウンドを使用することもできます; これは、エミッター・リスナーの関連付けは評価しますが(下流のノードは別のゲームオブジェクト上にあります)、プリフォームの3D空間化は評価しません。Enable Positioningフラグのいくつかの使用例を以下に示します:
|
Note: 予期せず、ボイスグラフのマスターオーディオバスの2つのインスタンスが表示された場合は、シグナルチェーンのどこかで Enable Positioningフラグを設定するのを忘れていることを示す分かりやすい兆候です。 |
2017.1より前に、サウンドを再生するときに作成されたVoices Graph は、Wwiseプロジェクトによってすべて指定され、ゲームがそれを操作するためにできることはほとんどありませんでした。Wwise 2017.1では、Voicesグラフは、Wwiseプロジェクトの階層によって定義されたルーティングとゲームで定義されたエミッタ・リスナーの関連付けの組み合わせに基づいています。Voices Graphを構成するアルゴリズムは、次のように要約できます:
Voices Graphの各連続したバスは、Enable Positioningフラグの状態に従って親バスに接続されます。
音のルーティングを定義する規則は複雑になる可能性があります。Wwise Advanced Profiler の新しいVoices Graph はゲームオブジェクトによってノードをグループ化し、ルーティングの問題をデバッグする際に非常に便利なツールです。
一貫性のために、AkGameObjectID
はネイティブの32ビットプラットフォームを含むすべてのプラットフォームで64ビット幅になりました。
ゲームオブジェクトIDは、1から0xFFFFFFFFFFFFFFDF(符号付き整数として-33)の範囲の64ビット符号なし整数になりました。ゲームオブジェクトID範囲0xFFFFFFFFFFFFFFE0(-32)から0xFFFFFFFFFFFFFFFF (-1) は、内部使用のために予約されています。オーサリングツールによって登録されたトランスポート・ゲーム・オブジェクトは、ゲームオブジェクトID 0xFFFFFFFFFFFFFFFE(-2)を使用するようになりました。
ゲームオブジェクトとリスナーシステムに加えられた変更に続いて、Watchはもはや互換性がなくなり、リセットされます。
Official 2017.1リリース以前のバージョンでビルドされたプラグインは、Wwise 2017.1と互換性がありません。それらを再構築する必要があります。
これらのフラグは不要になり、削除されました。
AkPluginInfo::bIsAsynchronous
AkFileSystemFlags::bIsFromRSX
Wwise 2017.1より前のリリースでは、サウンドエンジンはランダムとシーケンスコンテナのトリガレートのトランジション時間を決して22ミリ秒以下にクランプしていませんでした。クリエイティブコンテンツを有効にするためにこの制限を削除しました。
Metroプラットフォームの名前がUniversal Windows Platformに変更され、Visual Studio 2017でも使用できます。
球座標は、エミッター・リスナーのすべてのペアについて体系的に計算されなくなりました。. したがって、これらはAkEmitterListenerPair
から直接利用できません。Azimuth()
と Elevation()
アクセサーが削除されました。AkEmitterListenerPair
の球座標を使用するプラグインとゲームコードは、新しいサービス AK::IAkGlobalPluginContext->ComputeSphericalCoordinates()
を呼び出して取得する必要があります。推奨されるアプローチは、デカルト変換を受け入れる AK::IAkMixerPluginContext::Compute3DPositioning()
のオーバーロードでデカルト座標を使用することです。
UseExisting オプションを使用してTab Delimited ファイルをインポートすると、動作が変更されています。以前と同じように、送り先のWwiseオブジェクトが既に存在する場合は、それを再利用します。しかしながら、一致するオブジェクトが見つかり、ソースのWAVファイル名が異なる場合、新しいソースは新しい非アクティブ・バージョンとしてインポートされます。
ak.wwise.core.object.get
に where
transform を追加しました。詳細は、transform を参照してください。に新しい merge
モドを追加しました。詳細は、名前の衝突モードを理解します を参照してください。
ak.wwise.core.object.create
に Virtual Folder を作成するためのサポートを追加しました。 Folder
を使用してください。詳細は、 ak.wwise.core.object.create を参照してください。ak.wwise.core.object.preDelete
の名前が ak.wwise.core.object.preDeleted
に変更されました。ak.wwise.core.object.postDelete
の名前が ak.wwise.core.object.postDeleted
に変更されました。ak.wwise.core.object.create
にEvents と Event Actionsを作成するためのサポートを追加しました。ak.wwise.core.object.get
に対するサポートを追加しました。詳細は、ak.wwise.core.object.get を参照してください。ak.wwise.core.object.nameChanged
, ak.wwise.core.object.notesChanged
, ak.wwise.core.object.created
, ak.wwise.core.object.preDeleted
, ak.wwise.core.object.postDeleted
, ak.wwise.core.object.childAdded
, ak.wwise.core.object.childRemoved
, ak.wwise.core.object.curveChanged
, ak.wwise.core.object.attenuationCurveChanged
, and ak.wwise.core.object.attenuationCurveLinkChanged
にリターン・オプションのサポートを追加しました。