|
Wwise SDK 2023.1.17
|
2023.1の一部の新機能( 2023.1 新機能概要 を参照)のために、Wwise 2023.1への移行前に確認しておくべき重要な点がいくつかあります。
WwiseConsoleのconvert-external-sourceおよびgenerate-soundbankコマンドは、以前はプロジェクトのディレクトリと関連付けられたパスとして引数を解決することがありました。WwiseConsoleに渡されるすべてのパスは、コンソールの現在のワーキングディレクトリと関連付けて解決されるようになりました。
以前はAuthoring/x64/Release/bin/Toolsに実行ファイルが置かれていましたが、Wwise.exeと同じディレクトリであるAuthoring/x64/Release/binに置かれるようになりました。 プロジェクトでFilePackagerをSoundBank Post-Generationのステップに使用している場合、FilePackager.Console.exe実行ファイルへのパスを更新する必要があります。
Low-Level I/O Hookインターフェースを23.1で大幅に変更し、Webアプリケーションなどの高レイテンシデバイスでのインターフェースストリーミングの効率を向上しました。また、インターフェースの一般的なリファクタリングを行い、過去の変更をより整然とした形でインターフェースに統合しました。ゲームビルドをブレイクする主な変更については、次のセクションで説明しています。
ブロッキングI/Oフックのサンプルを削除しました。ブロッキングI/Oの呼び出しは別のスレッドで実行されますが、これによりI/O呼び出しを順不同に実行できず、一部のシステムでのファイルアクセスに不必要なレイテンシが生じていました。ゲームでこのサンプルを使っていた場合は、CAkDefaultIOHookDeferredへと置き換えてください。APIは同じです。
AK::StreamMgr::IAkLowLevelIOHook 、 AK::StreamMgr::IAkIOHookDeferred 、 AK::StreamMgr::IAkIOHookDeferredBatch が AK::StreamMgr::IAkLowLevelIOHook に統合されました。以前は"ブロッキング"バリアントを許可するためこれらのインターフェースが分かれていましたが、分割して維持する理由がなくなったため現在はサポートされていません。IAkIOHookBlocking、IAkIOHookDeferred、IAkIOHookDeferredBatchから派生したI/Oフックがある場合、IAkLowLevelIOHookへと置き換え、足りない関数を実装してください。
デフォルトのCAkDefaultIOHookDeferredサンプルクラスがゲームですでに使われている場合、必要な変更はすべてサンプルに対して行われているため、このセクションは該当しません。
ゲームが独自のI/Oフックやファイルロケーションリゾルバを実装している場合、最も重要な変更は AK::StreamMgr::IAkFileLocationResolver::Open() からそのI/Oデバイス独自のインターフェースへのロケーションと名前の変更です。新しいインターフェースでは AK::StreamMgr::IAkLowLevelIOHook::BatchOpen() 関数で同時に複数のファイルオープン要求を受け入れることが可能です。演算を即座に実行(同期)することも、ディスパッチして後で通知(非同期)することもできます。BatchRead() 関数と同様に、 BatchOpen() はコールバック関数ポインタを受信して演算結果の通知を送信できるようになりました。この変更の詳細については、 遅延オープン をご覧ください。
If your game handles multiple I/O devices, be aware of the implementation of the new AK::StreamMgr::IAkFileLocationResolver::GetNextPreferredDevice function. デバイスが1つのゲームの場合は、AK_NotImplementedを返してシステムが正しく動作します。しかし複数デバイスの場合は、CAkDefaultLowLevelIODispatcherサンプルを使うか、 ファイルロケーションリゾルバ の記載に従う必要があります。
I/Oデバイスの作成時に使われるAkDeviceSettingsのuSchedulerTypeFlagsメンバが使われなくなり、削除されました。関連するAK_SCHEDULER_BLOCKINGおよびAK_SCHEDULER_DEFERRED_LINED_UP定数も削除されました。これらのシンボルのいずれかをコードで参照している場合、その関連コードを削除してください。
Streaming Manager用にファイルを識別する AkFileDesc 構造は、 AK::StreamMgr::IAkLowLevelIOHook::BatchOpen() 関数で作成し、 AK::StreamMgr::IAkLowLevelIOHook::Close() 関数で削除しなくてはならなくなりました。
AkFileDesc::pCustomParam および AkFileDesc::uCustomParamSize メンバは、CAkDefaultIOHookDeferredの子クラスで使用する時の使用方法が明確でなかったため削除されました。I/Oフックが追加データをAkFileDescと共に維持する必要がある場合は、ベース構造から派生させてください。前述のセクションの説明にあるように、I/OフックがAkFileDesc構造を作成したり削除したりするようになりました。
CAkDefaultIOHookDeferredサンプルから派生するI/Oフックの場合、AkFileDescType型定義を使用して、子クラスがAkFileDesc型や中間子クラス(必要があれば)を派生させることもできます。AkFileDescを拡張する場合、 CAkDefaultIOHookDeferred::CreateDescriptor 関数もオーバーライドして適切な型を作成してください。
重要な移行の注意 2022.1 で発表した通り、Wwise 2023.1からMixerプラグインが削除されました。
MixerプラグインをEffectプラグインに変換する必要があります。
IAkOutOfPlaceObjectPluginインターフェースを実装し、旧IAkMixerEffectPluginインターフェースを置き換える必要があります。ConsumeInput 関数にあったコードをExecute関数に移動します。![]() | 注釈: in_objects.ppObjects[i]->arCustomMetadataには関数に渡されるメタデータが含まれます。これで、削除されるGetInputParam関数を効果的に置き換えます。 |
AK Channel RouterプラグインはMixerプラグインからEffectプラグインに変わっており、Property EditorのEffectsタブに挿入されています。このEffectは、Bus ConfigurationをAudio Objectsに設定したバスにしか挿入できません。
Audio Objectsバス設定には注意すべき点が2つあります。
この移行によりAk Channel Router Mixerプラグインのすべてのインスタンスが削除されますが、AK Channel Router Effectプラグインで自動的に置き換えられるわけではありません。適切なバスに手動でAK Channel Router Effectを追加する必要があります。 新たなタイプのメタデータであるChannel Router Settingsが、Ak Channel Router Mixerプラグインの既存のAttachableMixerInputと置き換わります。この移行によりAttachableMixerInputのすべてのインスタンスが削除され、新たなメタデータへと置き換わります。
サンプルSubversionソース管理プラグインは廃止され、Wwiseの今後のバージョンで削除されます。
ユーザーインターフェースを使わずにSource Control操作ができるようになりました。Silent Modeを有効にすると、WAAPIリクエストがSource Controlとやりとりする時にダイアログボックスが表示されません。 この変更を実装するため、 AK::Wwise::ISourceControlProgress クラス(旧 AK::Wwise::ISourceControlOperationProgress )の設計を変更しました。次のメソッドが変更または追加されています。
ShowProgress()からBeginOperation()にメソッドを変更しましたOperationCompleted()からEndOperation()にメソッドを変更しましたIsSilent()メソッドを追加しましたIsAutoCheckout()メソッドを追加しました次のWAAPI関数のautoAddToSourceControl引数がデフォルトでtrueになりました。
WG-61743の問題のため、次の関数は、ほとんどのケースでautoAddToSourceControlがデフォルトでtrueであるかのようにすでに振る舞っていました。
次のWAAPI関数のbypassSave引数がデフォルトでtrueになりました。
The following command identifiers have been renamed:
Refer to Wwise Authoring Commandの識別子 for more information.
ウェットパスのAttenuation、Occlusion、Obstruction、Transmission Loss、Diffractionが、エミッタで指定した減衰を使ってEmitter-Room接続に適用されるようになりました。Room Auxiliary Bussの減衰曲線の効果はなくなるため、ソースサウンドに移動させる必要があります。Room Auxiliary Busの出力は、プロジェクト上やAPI経由で変更されない限り、常に0dbです。
ウェットパスの回折が、エミッタとリスナーの間のパスに基づいて、エミッタごとに計算されるようになりました。ウェットパスの回折がドライパスの回折を上回ることはできません。
Geometric Transmission Lossが、エミッタとリスナーの間でレイと交わるすべての表面の最大Transmission Loss値を使って、ウェットパスに適用されるようになりました。Room Transmission Lossとは、エミッタからリスナーまでの間に存在しうるすべてのパスにおける最小値です。任意のパスのTransmission Lossとは、そのパス上にあるすべてのルームのTransmission Lossの最大値です。
Room-Listener接続のレイは空間化のためだけに使用され、その接続のボリュームに影響することはなくなりました。そのため、Voice Inspectorにはもう表示されません。
Enable Game-Defined Sendsチェックボックスがオンになっているエミッタは、それ自体のRoomのバスと、リスナーへのアクティブパスを持つ隣接するすべてのRoomに対して、送信を行います。エミッタとリスナーが同じRoomにある場合は、隣接するすべてのルームに送信します。
AkSpatialAudioInitSettings::uMaxEmitterRoomAuxSends を追加することで、エミッタごとに作成されるEmitter-Roomから隣接ルームへの接続の数を制限します。デフォルト値の0は無制限となります。制限が設定されると、エミッタ側から見た隣接ポータルへのスプレッドに基づいて顕著なセンドが維持されます。制限を1にすると、エミッタがあるRoomにだけ送信します。エミッタがポータルにある場合は、遷移先のRoomにだけ送信します。
WwiseのSystem Audio Deviceは、システムへのオーディオ出力用にAVAudioEngineをサポートするようになりました。これにより、macOSとiOS/tvOSのプラットフォーム間のチャンネル設定や相乗効果に柔軟性が出ます。
その結果、 AkPlatformInitSettings::eAudioAPI がAppleプラットフォームに追加されました。デフォルト値の AkAudioAPI_Default は、対応しているオペレーティングシステム(macOS 10.15以降およびiOS/tvOS 13以降)用のAVAudioEngineを自動的に選択します。Wwiseが旧版のオペレーティングシステムで実行されていて、AudioUnit APIを引き続き使う場合は、基本機能だけを使用できます。
AVAudioEngineベースのシンクの新たな動作については、 プラットフォームでのオーディオ出力 をご覧ください。
また iOS/tvOSでは、 AK::SoundEngine::GetPlatformInitSettings が、48000Hz固定ではなくAudio Sessionのデフォルトサンプルレートを返します。
iOS/tvOSでは最終的に、 AudioInputCallbackFunc 関数シグネチャが更新され、オーディオバッファにconst性が適用されています。
この変更のため、現在はアプリケーションがAVFoundation.frameworkとリンクしている必要があります。
一部のプラットフォームでは、 AK::SoundEngine::Suspend() および AK::SoundEngine::WakeupFromSuspend() 呼び出しを使って、 AK::Comm モジュールを自動的に一時停止/起動したり、Wwise Profilersの接続を解除したりしていました。現在は、クライアントが AK::Comm を別途管理する必要があります。対応プラットフォームのアプリケーションライフサイクルイベントに合わせて AK::Comm モジュールを管理する方法については、 システム特有のイベントの処理 をご覧ください。
AK::SpatialAudio::ReverbEstimation::EstimateHFDamping() が返すHF Damping値の範囲が、-1~1と倍に広がりました。この値にマッピングされるRTPCは-1~1になりました。
新しいISourceControl::Connect()およびISourceControl::Disconnect()メソッドは、ak.wwise.core.sourceControl.setProvider WAAPI関数からのソース管理ログインをサポートしています。このWwiseバージョンとの互換性を確保するため、 ISourceControl にこれらのメソッドを追加してプラグインをリビルドする必要があります。
実装されたソース管理が接続をサポートしていない場合、これらのメソッドは OperationResult_NotImplemented を返します。
"select"を使用する時などに、WAQLクエリでmaxRadiusAttenuationとmaxDurationSourceを使用してオブジェクト自体を直接参照することはできなくなりました。このような場合は、新たなアクセサであるmaxRadiusAttenuationObjectとmaxDurationSourceObjectをそれぞれ使用してください。
ak.wwise.core.audio.import 使用時、インポートログに警告やエラーが見つかってもWAAPI経由で報告されなくなりました。インポートログは呼び出しを通じて返され、分析されて、インポート時のエラーや警告を検出できるようになりました。