Wwise SDK 2024.1.0
|
次のセクションでは、Wwiseバージョン2023.1.8とバージョン2024.1の間での変更点を挙げ、説明します。
プラットフォーム固有の情報は、こちらにあります:
以前のバージョンの詳細については、 以前のリリースノート をご覧ください。
ak.wwise.core.profiler.getMeters
、 ak.wwise.core.profiler.registerMeter
、 ak.wwise.core.profiler.unregisterMeter
を追加しました。AkMemoryArena
がrpmallocに代わってデフォルトのメモリアロケータになり、TLSFなどの最も汎用性の高いメモリアロケータに匹敵するメモリ使用量やフラグメンテーションを提供するようになりました。メモリのオンデマンド予約を通したリソースのダイナミックな拡張も依然として可能です。多くの場合、以前のデフォルトアロケータと比べてメモリ使用量が約10減少します。予約されるメモリのウォーターマークについても、 AkMemSettings::uVMSpanCount
を AkSpanCount_Small
に設定した場合と比べて若干改善され、 AkMemSettings::uVMSpanCount
を AkSpanCount_Huge
に設定した場合と比べて大幅に改善されます。また外部メモリ割り当てフックを呼び出す必要性が減ります。メモリを提供するための以前のコールバックも AkMemSettings::pfAllocVM
と AkMemSettings::pfFreeVM
から AkMemoryArenaSettings::fnMemAllocSpan
と AkMemoryArenaSettings::fnMemFreeSpan
に更新されました。これらは類似していますが、実装が簡素化されています。提供されたメモリのアライメントに関する厳格な要件がなく、必要なのは基本となるメモリスパンの割り当てと解放のみであるためです。物理メモリや仮想メモリの個別マッピングについて考慮する必要がありません。例えば、WindowsやPOSIXベースのプラットフォームに AkMemoryArenaSettings::fnMemAllocSpan
と AkMemoryArenaSettings::fnMemFreeSpan
をデフォルト実装する際、 mmap
と munmap
をコールせずに、 std::malloc
と std::free
をコールして必要メモリを取得および解放するだけになりました。個別のメモリ割り当てや解放操作の既存のコールバックは、変更なく引き続き使用できますが、新しいデフォルトメモリアロケータを試すことを推奨します。このメモリアロケータでは、拡張されたプロファイリング情報や設定が利用できるようになりました。AkMemoryArenaSettings::fnMemAllocSpan
コールバック関数を呼び出す際に指定されたユーザデータ値などに関する詳細情報が含まれます。AkSpatialAudioInitSettings::uMaxReflectionPaths
により、検証の対象となるリフレクションパスの最大数が設定されます。ヒューリスティック計算を使用してすべてのパス候補がソートされてから、最適だと思われるパスが判断されます。すべてのエミッタの中からグローバルに AkSpatialAudioInitSettings::uMaxReflectionPaths
が検出され、パスはそれ以上計算されません。AK::SoundEngine::PrepareBus
関数をWwiseランタイムAPIに追加しました。この関数を使って、バスに配置されたエフェクトプラグインでメディアのロードやアンロードを管理できます。ユーザが定義したSoundBankでメディアをパッケージ化する必要がありません。ak.wwise.core.blendContainer
のプリフィックスが付いています。関数 ak.wwise.core.object.get
にWAAPI blendTracks
アクセサを追加しました。panner
アクセサをWAQLに追加しました。ak_wwise_ui_commands_execute
に新しいコマンド OpenRecycled
を追加しました。このコマンドは新しいウィンドウタブを作成せずにオブジェクトを開きます。AkSpatialAudioInitSettings::fMaxDiffractionAngleDegrees
で回析可能な最大角度を指定できます。その値を超えるとパスが計算されないため、サウンドが聞こえなくなります。SetMaxReflectionPaths
関数を公開しました。ak.wwise.core.audio.convert
と ak.wwise.core.audio.setConversionPlugin
を追加しました。AK::IAkLowLevelIOHook
インターフェースから BatchCancel()
を削除しました。AK::Query::GetRTPCValue
によって今後ブロックされることがなくなりました。UnsetMedia
関数を削除しました。代わりに TryUnsetMedia
を使用してください。PluginServiceType_TempAlloc
が提供されることになりました。Temp AllocとBookmark Allocatorに関連するパブリック関数や構造は AkMemoryMgr.h
から新しいヘッダファイル AkTempAllocDefs.h
に移動されたため、一部のファイルインクルージョンの更新が必要になる場合があります。–no-wwise-dat
コマンドライン引数を削除したため、 wwise.dat
ファイルは生成されなくなりました。AkAudioObject
と AkAudioObjects
を AkCommonDefs.h
から AkAudioObject.h
に移動しました。これらのタイプを使用するプラグインについては、それらが含まれるヘッダの更新が必要になる場合があります。 IAkPluginMemAlloc.h
、 AkArray.h
、 AkString.h
のほかの間接的ヘッダインクルードも AkCommonDefs.h
から削除されているため、更新が必要になる場合があります。AK::Wwise::Plugin::PropertySet
サービスの新バージョンが追加され、 AK::Wwise::Plugin::V2::PropertySet::OpenBraces
、 AK::Wwise::Plugin::V2::PropertySet::CloseBraces
、 AK::Wwise::Plugin::V2::PropertySet::GetOpenedBraces
が含まれるようになりました。バージョン1から削除された関数はないため、 このAPIは以前のバージョンと完全に互換性があります。 ak_wwise_plugin_host_object_store_v1 に変更点はありませんが、 AK::Wwise::Plugin::ObjectStore
C++ ラッパがどちらのバージョンでも機能するように更新されています。AkGeometryInstanceParams::RoomID
を削除しました。AkMemSettings::bEnableSeparateDeviceHeap
が削除されました。Device AkMemoryArena
を無効にするには、 AkMemoryArenaSettings::fnMemAllocSpan
と AkMemoryArenaSettings::fnMemFreeSpan
を nullptr
に設定します。AkMemSettings::uMemAllocationSizeLimit
を削除しました。代わりに、各AkMemoryArenaに独自の予約制限の設定 AkMemoryArenaSettings::uMemReservedLimit
が用意されています。AK_PERF_RECORDING
マクロを削除しました。AK::SoundEngine::ResetRTPCValueByPlayingID
.AkInitSettings::bOfflineRendering
メンバーにより、初期化時のオフラインレンダリングが可能になりました。AK::SpatialAudio::SetMaxDiffractionPaths
を追加しました。SetMaximumReflectionPaths
から SetMaxGlobalReflectionPaths
に名前を変更しました。また uMaxReflectionPaths
から uMaxGlobalReflectionPaths
に名前を変更しました。ComputePositioning
でカスタムスピーカー構成を有効にする RegisterAnonymousConfig
および UnregisterAnonymousConfig
メソッドを IAkMixerPluginContext
インターフェースに追加しました。AkRoomParams::RoomPriority
をAkUInt32からAkReal32に変更しました。PrepareEvent()
がActor-Mixer階層とInteractive Music階層でオブジェクトのPlug-inメディアを準備するようになりました。AK_EnableBusMeter_KPower
が設定されている場合、バスのメータリングコールバックがバス全体に対して一度呼び出されるようになりました。ほかの AkMeteringFlags
値が設定されている場合は、Audio Objectごとに一度呼び出されます。AK BusTask
ジョブは、実行を開始する前に CAkLEngine::PostRunVpls
ジョブに依存しなくなりました。これにより、 AK SwVoice
および AK HwVoice
ジョブの完了後もJob Worker Functionは引き続き実行できるため、サウンドエンジンのティックの経過実時間全体が削減されると考えられます。AkPlacementNew
を AkObject.h
から新しいファイル AkPlacementNew.h
に移動しました。これらのタイプを使用するプラグインについては、それらが含まれるヘッダの更新が必要になる場合があります。AK::SoundEngine::SetScalingFactor
APIの影響が表示されていませんでした。ak.wwise.core.transport.stateChanged
が常に送られていませんでした。AkVariantBase.h.
でメモリリークが発生していました。UnregisterGameObject
をコールすると、リフレクションが聞こえていませんでした。IAkMap::GetNextAssoc
に渡すとクラッシュしていました。PrepareEvent
をコールした後にスタックオーバーフローが発生する可能性がありました。PrepareEvent
、 PrepareGameSync
、 PrepareBank
、 LoadBank
)とそれらに対応する関数( UnprepareEvent
、 UnprepareGameSync
、 UnprepareBank
、 UnloadBank
)のコールでの不一致が原因でクラッシュする可能性がありました。例えば、関数を LoadBank
、 PrepareEvent
、 UnloadBank
、 UnprepareEvent
の順番でコールするとクラッシュする可能性がありました。PinEventInStreamCache
/ UnpinEventInStreamCache
コールが原因で、サウンドエンジンの終了時にデッドロックが発生していました。ak.soundengine.seekOnEvent
を使用すると、エラーが発生していました。AkMemoryArena
について言及したメモリマネージャのドキュメントを更新し、 AkMemoryArena
のドキュメント自体を Configuration and Tuning of AkMemoryArenas に追加しました。