多くの 新機能 では、Wwise 2017.2に移行する際にいくつかの点に注意する必要があります。
SDK lib ファイル内:
SDK bin ファイル内:
SDK\include\AK\Plugin 内:
Authoring\x64\Release bin 内:
出力(メイン、BGM、ゲームコントローラのスピーカー、ヘッドフォン、DVRなど)の管理方法が、2017.2で刷新されました。全てのオーディオシンク(audio sink、オーディオハードウェアとのやりとりを担当する)でプラグインモデルが採用され、AudiokineticがWwiseで提供するオーディオシンクも同じです。つまり、全てのプロジェクトにおいて、対応プラットフォームを1つ以上使っていれば、タイプ毎のAudio Devicesシェアセットがプロジェクトに追加されます。今後はそれぞれのマスターバス(ミキシング階層のトップにあるバス)に、必ずオーディオデバイスが付随することになり、それによってミックスの出力先が定義されます。この機能は今までコードで行われ、初期化の時点(AkInitSettings
経由)で、または AK::SoundEngine::AddSecondaryOutput
を使っ て、行われました。2017.2への移行時に、既存プロジェクトのマスターオーディオバスやマスターセカンダリバスに、Systemデバイスが自動的に追加されます。
|
Caution: マスターセカンダリバスの使い方を見直してください!今までに使ったことがあれば、必ず正しいオーディオデバイスを選択します。場合によっては、バス階層を分割して、ほかの出力用に別のマスターバスを確保します。これで、必要な数だけマスターバスを作成できるようになり、通常はハードウェア出力1つに対して、マスターバスを1つ準備します。 |
|
Caution: 主要な出力にプラグインを使っていた場合(例えばPSVRバイノーラルプラグインなど)、それを必ずマスターオーディオバスのAudio Deviceプロパティにリンクします。もしこのプラグインに対応するプラットフォームが1つだけ(PS4など)であれば、リンク・アンリンクの機能を使って全てのプラットフォームで正しくプロパティを設定してください。 |
また、セカンダリアウトプットに関連するリスナー管理も変更されました。一般的に、今までのコードが変更なしで同じように動作するはずです。ただし、デバイスの1つのタイプに対して、許容されるデバイスが1つだけであれば、システムが必要とするリスナーは少なくなります。詳細は セカンダリ出力の統合 をお読みください。
AK::SoundEngine::AddSecondaryOutput
が、 AK::SoundEngine::AddOutput
に変更され、パラメータが変わりました。RemoveSecondaryOutput
も同様です。これらの関数のドキュメンテーションを参照してください。あなたのWwiseプロジェクト内で、該当するオーディオデバイス名を見つけて(または追加して)、同じ関数を AddOutput
で入手します。AK::SoundEngine::Init
(AkInitSettings
) や AK::SoundEngine::AddSecondaryOutput
で使われていたenumである AkAudioOutputType
が、削除されました。その機能を代わりに行うのが、オーディオデバイス用のプラグインのメカニズムです。AK::SoundEngine::GetSpeakerConfiguration、
AK::SoundEngine::GetPanningRule、AK::SoundEngine::SetPanningRule、
AK::SoundEngine::GetSpeakerAngles、
AK::SoundEngine::GetSpeakerAngles、
AK::SoundEngine::SetSpeakerAngles
は全て、AkAudioOutputType
ではなく、
AkOutputDeviceID
を使います。 AkOutputDeviceID
が、 AK::SoundEngine::AddOutput
によっ て、または新関数の AK::SoundEngine::GetOutputID
によっ て、返されます。モーションシステム(rumble、振動)全体がリファクタリングされ、旧来の別々のコードバスではなく、オーディオデバイスの汎用プラグインメカニズムと、新しい出力システムが使われます。モーションデバイスを、今後は特別なステータスのデバイスではなくオーディオデバイスとして扱います。これでモーションオブジェクトのコードやデータモデルの無駄が省かれ、オーディオパイプラインと同じ機能セットを全て利用できるようになりました。つまり、同じモーションエフェクトを確保するには、既存のコードに多数の修正が必要となります。Wwiseプロジェクト側の変更内容は、大部分が自動的にトランスペアレントに実行されます。あなたのプロジェクトに対して実施される変更内容については、以下の基本的なプロジェクト移行の変更点:のセクションを参照してください。
AK::MotionEngine
のネームスペー ス が、全て削除されました。つまり、 AK::MotionEngine::AddPlayerMotionDevice
を置き換えるに は、AKSoundEngine::AddOutputをコールして、その際に正しいAudio Device ShareSet名(通常はWwise_Motion)を使う必要があります。このオーディオデバイスは、自動的にプロジェクトに追加されるはずです。
さらに、モーションに関連するリスナー管理も変更されました。 AK::MotionEngine::SetListenerPipeline
をコールするのでは な く、プレイヤーにリンクしているリスナーを、 AK::SoundEngine::AddOutputに対するパラメータとして提供する必要があり
ま す。なおこのリスナーは、ゲームのプレイヤーが1人だけであれば、必須ではありません。マルチプレイヤーゲームの場合は、今までのように正しくリスナーを管理する必要があります。
ゲームにモーションを実装する詳細は、このSDKヘルプ: Wwiseモーションの統合を参照にするか、またセカンダリアウトプットの一般的な情報: セカンダリ出力の統合を参照してください。
既存プロジェクトは、自動的に新システムに移行されます。あなたのプロジェクトで、以下の変更が実行されたか確認してください:
Motion Sourceは、SFX Language指定を追加したSource Pluginとなります。DeviceCompanyIDとDevicePluginIDが削除されます。 移行後もモーションができるだけシームレスに動作するようにしたいので、プロジェクトのプラットフォームを1つ以上、Wwise Motionがサポートしている場合は、自動的に新しいWwise Motion ShareSetをAudio Devicesデフォルトワークユニットに追加します。例外について、下記Noteを参照してください。
|
Note: モーションバスへのレファレンスがない場合は、プロジェクト内の全てのモーションバスが削除されます。また、Wwise Motionシェアセットは、それに対応しているプロジェクトでも、追加されません。 |
モーションバス用の別のパスを使わず、基本的なUser aux bus sendを使うことになるので、いくつかのシナリオが考えられます。
モーションバスレファレンスをUser aux sendレファレンスに変換する過程で、対象のオブジェクトのUser aux sendが整理されます。
|
Note: 以下のサブセクションについて: User aux sendをコピーする過程で、バスレファレンス、ボリューム、LPFもコピーします。全てのRTPC、Modulator LFO、Modulator Envelope、そしてボリュームやLPFに対するCurveやModifierも、コピーします。全てのID(ユニークID、ShortID)を再生成することで、移行後のプロジェクトをロードする時のIDクラッシュを最小限に抑えることができます。残るクラッシュ(おそらくShortIDが関与)がある場合は、Wwiseのプロジェクトロードの手順で解消します(Project Load Logの警告付き)。 |
|
Warning: ノードから子孫にUser aux sendをコピーすると、子孫がノードのAux sendを継承するように設定するのと等しい作用ですが(最初は)、ノードのAux sendに変更を加えると、それは子孫に反映されません。 |
移行するオブジェクトの祖先のUser aux sendが、オブジェクトにコピーされます。もし祖先のAux sendが移行したaudio-to-motionからくるものがあれば、それはコピーされません。
既に親をオーバーライドしていたため、上位のUser aux sendをコピーする必要はありません。
もし子孫がその親のUser aux sendをオーバーライドしない場合は、その子孫に対してコピーする必要はなく、それは上位からの"モーション"を継承します。
Wwiseオーサリングアプリケーションにあったこれらへのレファレンスが、削除されています。
Wwiseオーサリングアプリケーションにあったこれらへのレファレンスが、削除されています。
以下の機能の名称を変更して、使用目的をより明確にしました:
ak.wwise.core.plugin.getList
の新名称は、ak.wwise.core.object.getTypes
ak.wwise.core.plugin.getProperties
の新名称は、ak.wwise.core.object.getPropertyNames
ak.wwise.core.plugin.getProperty
の新名称は、ak.wwise.core.object.getPropertyInfo
以前の名前は非推奨となり、新コードに使用できません。
Client
クラスの使用がコンパイルしません。タイムアウトは、クライアントへの全てのメソッドコールで同じではなくなったので、コール毎に提供する必要があります。SampleClientで使われたAutobahnライブラリのAkAutobahnというバージョンが、静的ライブラリとしてSampleClientとは独立してビルドされるようになりました。Wwise SDKの一部として提供されることになりました。使用例を見るには、SampleClientソースコードを確認してください。
32-bit Wwise Authoring を削除しました。Wwise Authoringは、Windows用もmacOS用も、64-bitサポートに限定してコンパイルされます。
なお、Wwise SDKライブラリ用に、32-bitサポートを引き続き提供します。
Wwise 2017.2で、ドライシグナルをAuxバスが処理することになり、無視されません。Auxバスに配置されたエフェクトのドライシグナルをミュートするように、移行を実行しました。この変更に影響されるエフェクトは、以下のとおりです:
|
Caution: あるエフェクトをAuxバスと別のタイプの媒体に適用すると、それもミュートされ、プロジェクト動作が変更される可能性があります。 |
ユーザーは、Aux bus(ポータル)で使われる減衰シェアセットのスプレッドカーブを削除しなければ、スペーシャルオーディオのジオメトリ主導型スプレッドの計算を活用できません。
Roomのauxセンドに送信する時は、 AkRoomParams
で指定してスペーシャルオーディオが完全に管理するものなので、今後は AK::SpatialAudio::SetEmitterAuxSendValue
をコールしないようにします。 AK::SpatialAudio::SetEmitterAuxSendValue
のセンド は、Roomsのセンドに追加されるので、同じ部屋の中で、より複雑なリバーブゾーンをカスタム化したり実装したりするときに利用できます。