バージョン

menu_open
Wwise SDK 2021.1.14
重要な移行の注意 2017.1

多くの 新機能 では、Wwise 2017.1に移行する際にいくつかの点に注意する必要があります。

次の重要な移行ノートをよくお読みください:

リスナーはゲームオブジェクトになりました

Wwise 2017.1では、リスナーがゲームオブジェクトになりました。リスナーは8人に制限されず、APIはリスナーのみで動作するコールを削除するために簡素化されています。これらのリスナーはすべてのゲームオブジェクトで動作します。Wwiseで複数のリスナーを使用するゲームでは、リスナーごとにゲームオブジェクトを登録する必要があります。リスナーごとに完全なミックスを実行するようになりました。

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センドを作成するときは、いくつか注意すべきことがあります:

  • 信号フィードバック・ループをもたらすルーティングを定義することは可能です。信号フィードバックループが発生した場合、送信を取り除くことによってループが切断され、出力が不安定になるまで、出力は継続します。シグナルループを引き起こすルーティングを作成することは推奨されません。
  • バスがバス階層の下位にある別のバスに送信する場合、バスのオーディオと次のオーディオの更新が混合され、1オーディオフレームのレイテンシが追加されます。これが発生すると、高度なプロファイラの音声グラフの接続が赤で表示されます。
  • バスが同じ階層のバス階層(すなわち、兄弟バス)に送る場合、バスがサウンドエンジンで混合される順序に応じて、1フレームのレイテンシが誘導されることがある。サウンドエンジンは、レイテンシの発生を最小限に抑えるために処理順序を解決しようとしますが、場合によっては可能ではありません。

オーサリングツールの動作または 'Positioning Enabled' フラグが変更されました。

オーサリングツールのEnable Positioningフラグは非常に重要な目的を果たさず:音声グラフのこのノードで現在のゲームオブジェクトのエミッター・リスナーの関連付けを評価するかどうかを決定します。さらに、2Dパンナーは、Enable Positioning フラグから独立しています。音を定位せずにパンすることが可能です。また、Positioning Enabledの2Dサウンドを使用することもできます; これは、エミッター・リスナーの関連付けは評価しますが(下流のノードは別のゲームオブジェクト上にあります)、プリフォームの3D空間化は評価しません。Enable Positioningフラグのいくつかの使用例を以下に示します:

  • アクター・ミキサー階層の音声には、Enable Positioningフラグが設定されており、 Positioning Type が3Dに設定されています。この音声は、ゲームオブジェクトの位置に応じて3D空間に配置され、上流のバスにミキシングされる前にパンおよび減衰されます。エミッター・ゲーム・オブジェクトに関連する各リスナー・ゲーム・オブジェクトに対して、上流バスの個別インスタンスが作成されます。これは現代ゲームの典型的なシナリオです。
  • アクター・ミキサー階層の声には、Enable Positioning フラグが設定されていません。代わりに、音声はEnable Positioning フラグが設定されたバスにミックスされます。この場合、バスはエミッター・ゲーム・オブジェクト、すなわち音声と同じゲーム・オブジェクト上に生成されます。置決め可能なバスの下流(すなわち、親)であるバスの一意のインスタンスは、エミッタ・ゲーム・オブジェクトの各リスナごとに生成されます。このセットアップにより、私たちは2017.1以前にはできなかったWwiseで何かをすることができます - サウンドをパン / 減衰 / 空間化する前にサブミックスを実行します。
  • バスには、Enable Positioning フラグが設定されています。Enable Positioning フラグがセットされたボイスも、このバスにミックスされます。このシナリオでは、2 X 3Dミックスを事前に作成しています-空間化されたサウンドのサブミックスが再度空間化されます。この設定では、エミッター、リスナー、最初のゲームオブジェクトのリスナーと最後のリスナーのエミッターの両方であるゲームオブジェクトの3つのゲームオブジェクトが用意されています。このような設定は、ポータルなどの音響現象をシミュレートするために使用できます。
    注釈: 予期せず、ボイスグラフのマスターオーディオバスの2つのインスタンスが表示された場合は、シグナルチェーンのどこかで Enable Positioningフラグを設定するのを忘れていることを示す分かりやすい兆候です。

Voices Graphを構成するアルゴリズムが変更されました。

2017.1より前に、サウンドを再生するときに作成されたVoices Graph は、Wwiseプロジェクトによってすべて指定され、ゲームがそれを操作するためにできることはほとんどありませんでした。Wwise 2017.1では、Voicesグラフは、Wwiseプロジェクトの階層によって定義されたルーティングとゲームで定義されたエミッタ・リスナーの関連付けの組み合わせに基づいています。Voices Graphを構成するアルゴリズムは、次のように要約できます:

  • サウンドを演奏するEventがポストされた後、ソースが生成され、Eventによって指定されたゲームオブジェクトに関連付けられます。
  • ソースはEnable Positioningフラグに従ってVoices Graphに接続されます:
    • ソースでWwiseプロジェクトでEnable Positioningフラグが設定されている場合:
      • まだ存在しない場合は、ソースのゲームオブジェクトに関連付けられている各リスナーごとに、ソースの出力バスのインスタンスが生成されます。ソースは、これらの各バスインスタンスに接続されています。
    • ソースで測位が有効になっていない場合:
      • まだ、存在しない場合、出力バスの1つのインスタンスは、ソースと同じゲームオブジェクトを使用して生成されます。ソースはこのバスに接続されています。
  • Voices Graphの各連続したバスは、Enable Positioningフラグの状態に従って親バスに接続されます。
    • バスに 'Enable Positioning'フラグが設定されている場合:
      • バスの親バスのインスタンスは、バスのゲームオブジェクトに関連付けられている各リスナーごとに生成されます。
    • バスに 'Enable Positioning' フラグが設定されていない場合:
      • バスの親の1つのインスタンスは、現在のバスと同じゲームオブジェクトを使用して生成されます。

音のルーティングを定義する規則は複雑になる可能性があります。Wwise Advanced Profiler の新しいVoices Graph はゲームオブジェクトによってノードをグループ化し、ルーティングの問題をデバッグする際に非常に便利なツールです。

すべてのプラットフォームでAkGameObjectIDが64ビット整数に変更されました。

一貫性のために、AkGameObjectIDはネイティブの32ビットプラットフォームを含むすべてのプラットフォームで64ビット幅になりました。

有効なゲームオブジェクトIDの範囲が変更されました。

ゲームオブジェクトIDは、1から0xFFFFFFFFFFFFFFDF(符号付き整数として-33)の範囲の64ビット符号なし整数になりました。ゲームオブジェクトID範囲0xFFFFFFFFFFFFFFE0(-32)から0x‭FFFFFFFFFFFFFFFF (-1) は、内部使用のために予約されています。オーサリングツールによって登録されたトランスポート・ゲーム・オブジェクトは、ゲームオブジェクトID 0xFFFFFFFFFFFFFFFE(-2)を使用するようになりました。

2017.1に移行すると、プロファイラレイアウトのゲームオブジェクトとリスナーのウォッチがリセットされます。

ゲームオブジェクトとリスナーシステムに加えられた変更に続いて、Watchはもはや互換性がなくなり、リセットされます。

プラグインを再構築する必要があります

Official 2017.1リリース以前のバージョンでビルドされたプラグインは、Wwise 2017.1と互換性がありません。それらを再構築する必要があります。

いくつかのパラメータはもう使用されず、APIから削除されました。

これらのフラグは不要になり、削除されました。

  • AkPluginInfo::bIsAsynchronous
  • AkFileSystemFlags::bIsFromRSX

トリガレートのクランプを削除しました

Wwise 2017.1より前のリリースでは、サウンドエンジンはランダムとシーケンスコンテナのトリガレートのトランジション時間を決して22ミリ秒以下にクランプしていませんでした。クリエイティブコンテンツを有効にするためにこの制限を削除しました。

ユニバーサル Windows プラットフォーム

Metroプラットフォームの名前がユニバーサル Windows プラットフォームに変更され、Visual Studio 2017でも使用できます。

球座標はAkEmitterListenerPair からは利用できません

球座標は、エミッター・リスナーのすべてのペアについて体系的に計算されなくなりました。. したがって、これらはAkEmitterListenerPair から直接利用できません。Azimuth()Elevation() アクセサーが削除されました。AkEmitterListenerPairの球座標を使用するプラグインとゲームコードは、新しいサービス AK::IAkGlobalPluginContext->ComputeSphericalCoordinates() を呼び出して取得する必要があります。推奨されるアプローチは、デカルト変換を受け入れる AK::IAkMixerPluginContext::Compute3DPositioning() のオーバーロードでデカルト座標を使用することです。

Import タブ区切りの変更

UseExisting オプションを使用してTab Delimited ファイルをインポートすると、動作が変更されています。以前と同じように、送り先のWwiseオブジェクトが既に存在する場合は、それを再利用します。しかしながら、一致するオブジェクトが見つかり、ソースのWAVファイル名が異なる場合、新しいソースは新しい非アクティブ・バージョンとしてインポートされます。

AlphaとBeta以降のWAAPIの変更

  • ak.wwise.core.object.getwhere 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 にリターン・オプションのサポートを追加しました。
AkReal32 fControlValue
Definition: AkTypes.h:628
Auxiliary bus sends information per game object per given auxiliary bus.
Definition: AkTypes.h:625
AKSOUNDENGINE_API AKRESULT SetDefaultListeners(const AkGameObjectID *in_pListenerObjs, AkUInt32 in_uNumListeners)
AkUInt64 AkGameObjectID
Game object ID
Definition: AkTypes.h:70
AKSOUNDENGINE_API AKRESULT RegisterGameObj(AkGameObjectID in_gameObjectID)
AKSOUNDENGINE_API AKRESULT SetGameObjectAuxSendValues(AkGameObjectID in_gameObjectID, AkAuxSendValue *in_aAuxSendValues, AkUInt32 in_uNumSendValues)
AKSOUNDENGINE_API AkUInt32 GetIDFromString(const char *in_pszString)
AkGameObjectID listenerID
Game object ID of the listener associated with this send. Use AK_INVALID_GAME_OBJECT as a wildcard to...
Definition: AkTypes.h:626
AkAuxBusID auxBusID
Auxiliary bus ID.
Definition: AkTypes.h:627

このページはお役に立ちましたか?

サポートは必要ですか?

ご質問や問題、ご不明点はございますか?お気軽にお問い合わせください。

サポートページをご確認ください

あなたのプロジェクトについて教えてください。ご不明な点はありませんか。

プロジェクトを登録していただくことで、ご利用開始のサポートをいたします。

Wwiseからはじめよう