Wwise SDK 2023.1.9
|
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経由で報告されなくなりました。インポートログは呼び出しを通じて返され、分析されて、インポート時のエラーや警告を検出できるようになりました。