Wwise 2024.1 for Godotの最新版がリリースされ、統合プロセスを最適化するための大幅な改善と新機能が追加されました。使いやすさを向上するために設計された今回のアップデートでは、既存のUnityやUnrealインテグレーションと似たワークフローが導入され、これらのプラットフォームに慣れているデベロッパにとって簡単にはじめられるようになりました。具体的な変更点としてWwiseProjectDatabaseが新たなデータソースとして取り込まれたほか、 Auto-Defined SoundBanksへの対応、 Wwise Types、対応全プラットフォームにおけるPluginサポートの改善などがあります。アップデートの内容を以下に詳しく説明し、すぐに使いはじめるための方法を紹介します。
主なアップデート内容
WwiseProjectDatabaseをデータソースとして使用
本インテグレーションの以前のバージョンではWAAPIでGodotと互換性のあるWwise IDを生成し、WwiseオブジェクトをWwise PickerやWAAPI Browserに表示していました。しかしこのアプローチにはいくつかの限界がありました:
- IDを生成するために、Godot Editorと同時にWwise Authoringプロジェクトを開く必要がありました。
- 複数のプロジェクトが同時に開かれている場合、オーサリングアプリケーションに接続する際にコンフリクトが発生することがありました。
- Wwiseプロジェクトの階層の全体像を把握できませんでした。オブジェクトは平面的なリストとして表示され、背景状況が不明でした(PickerにフォルダやWork Unitが表示されないなど)。
- SoundBankが更新されるたびに、Godot Editorにおいて手動でIDを再生成する必要がありました。
改善点
「WwiseProjectDatabase」がユーザ指定のSoundBankディレクトリを監視するようになり、Wwiseプロジェクトのすべての関連データが追跡され自動更新されます:
WwiseProjectData
というアセットが生成されるようになり、Wwiseプロジェクトのデータや、 Acoustic Texture、AUXバス、SoundBank、イベント、ゲームパラメータ、ステート、 スイッチ、トリガーなどの主要Wwiseオブジェクトのデータにアクセスしやすくなりました。これらのアセットを通してWwiseオブジェクト階層のデータを取得することができ、 ProjectDatabaseが自動的にデータを入力してくれるため、Wwiseプロジェクトの変更に基づきアセット側が確実に更新されます。- エディタを構成するWwise Pickerや新Wwise Browserなどは、静的なWwise IDではなく、この整理されたデータを使用するため、余計な手作業なしでWwiseプロジェクトの最新スナップショットを得ることができます。この変更により、これまで以上に正確にWwiseプロジェクトが表示されます。
Wwise BrowserとWwise Picker共に、ProjectDatabaseのデータで更新されます。
Wwise Typesに対応
Unity IntegrationのWwise Typesと同様、GodotのWwise TypesもWwise内のコアオブジェクトを示すさまざまなクラスの集合体であり、例えばサウンドバンク、イベント、ゲームパラメータ、ステート、スイッチなどです。Wwise TypesがGodotスクリプトにエクスポートされ(つまりシリアライズされてInspectorで編集可能な状態となり)、Godot Inspectorにボタンが表示され、ユーザは専用のWwise Pickerで必要なオブジェクトを選択することができます:
Wwise TypesはWwiseオブジェクトを表すと共に、このオブジェクトをデベロッパが直接操作できるような機能を提供します。これによりWwise
シングルトンで公開される関数だけに頼る必要がなくなりました。
例えば:
WwiseEvent
クラスには、オブジェクトから直接イベントをpost
するメソッドがあります。WwiseRTPC
クラスは、RTPC値を設定するset_value
メソッドを提供します。
これらはWwise TypesがもたらすWwiseオブジェクトの直感的な操作方法の代表例です。
Auto-Defined SoundBanksに対応
本インテグレーションはAuto-Defined SoundBanksにデフォルトで対応するようになりました。User-Defined SoundBankに含まれないイベントを参照するWwiseEvent
オブジェクトがエンジンでインスタンス化された場合、インテグレーションはそのSoundBankをロードし、AK::SoundEngine::PrepareEvent
APIを使用してイベントを自動的に準備します。このWwiseEvent
が破壊されて参照されなくなると、本インテグレーションがイベントの準備を解除し、SoundBankをアンロードします。イベントがUser-Defined SoundBankに所属するかどうかは、ProjectDatabaseが判断します。
今回の変更により、Wwise PickerでAkBank
ノードやWwiseBank
タイプの選択肢となるのはUser-Defined SoundBanksだけとなりました。
全プラットフォームにおいてプラグイン対応が改善
以前よりこのインテグレーションはプラグインに対応していましたが、プラグインを有効にする手順が複雑でした。ユーザがインテグレーションを再コンパイルし、使用するプラグイン(AK Convolution Reverbなど)を明確に指定する必要がありました。サポートされているプラットフォームすべてにおいて、この手順が簡単になりました:
- プロジェクトで使用されているプラグインをProjectDatabaseが特定します。
- エクスポート段階においてインテグレーションが自動的にエクスポートディレクトリに必要なプラグインをコピーし、Wwiseサウンドエンジンがそれらを自動的にロードできるようにします。
- エディタでゲームをプレビュー表示する際に、サウンドエンジンが必要とする共通ライブラリへのパスを、
AkInitSettings::szPluginDLLPath
を使用して指定します。 - iOSなどのプラットフォームでは、エクスポート中に静的ライブラリや必要な初期化コードがXcodeプロジェクトに追加されます。この時に使われるGodot Export APIは、
EditorExportPlugin::add_ios_project_static_lib
やEditorExportPlugin::add_ios_cpp_code
などです。
さらにユーザが独自のカスタムプラグインを使用する場合、インテグレーションを再コンパイルする必要がありません。プロジェクトでカスタムプラグインが使用されていることをインテグレーションが検知します。ただしサウンドエンジンプラグインを、インテグレーション内の該当プラットフォームのDSPフォルダに手作業でコピーする必要があります。手順についてはWiki(英文)をご参照ください。
アセットとしてのWwiseオブジェクト
Wwise PickerでWwiseオブジェクトを選択した時に、対応するGodot Asset(Resource)が res://Wwise/resources
に作成されます。このResourceに以下のような情報が保存されます:
- Wwiseオブジェクトの名前、ID、GUID。
- 追加のメタデータ、例えばイベントがUser-Defined SoundBankに含まれているのかなど。
インテグレーションNodeのAkEvent3D
、AkBank
、 AkSwitch
、AkState
などや、エクスポートされたWwise Typesがこれらを使用し参照します。
Resourceはユーザが能動的に使用する時(例えばWwise Pickerで選択する時)にはじめて作成され、Wwiseプロジェクトのすべてのオブジェクトに対して作成されるわけではないことに注意することが大切です。
エンジン内のドキュメント
Wwise
やWAAPI
シングルトン内の関数やさまざまなWwise Typesについて、短い説明文やコードスニペットをエディタより直接アクセスできるようになりました。CTRLを押下しながら関数をクリックすることにより、ドキュメントページに飛ぶことができます:
WwiseとGodotを使いはじめる
以下の簡単な手順で、Wwise Godotインテグレーションをセットアップすることができます:
最新バージョンのダウンロード
- Wwise Godotインテグレーションの最新バージョンをポジトリのReleasesページより取得してください。
- Wwise 2024.1.1およびGodot 4.3がインストールされていることを確認してください。
インストールと設定
- 最初のセットアップ方法については、入門ガイド(英文)で詳しく説明しています。
Wikiの活用
- インテグレーションを最大限に使いこなすための包括的なチュートリアルや便利な事例が、Wiki(英文)に掲載されています。
Discordコミュニティに参加し、あなたの経験や質問を投稿することができます。
コメント