BLOG
弊社英語ブログのうち、いくつかを日本語翻訳しています。英語ブログはこちら
GodotとGameSynth Tool API
GameSynth Tool APIは、GameSynthとゲームエンジンなどの他の制作ツールとのインターフェースを容易にします。前回の投稿では、Unityエディタでサウンドのバリエーションを直接生成する方法について説明しました。 今回は、ゲーム作成時のオーディオワークフローを改善するGodot Engine用の2つの新しいプラグインについて解説していきます。
最初に
プラグインは、(Python に似ている) Godotの組み込みスクリプト言語・GDScriptで記述されており、エディタ機能を拡張します。これらは、Godot内の設定でいつでも有効化・無効化できます。
まず、GameSynth Tool API Web サイトのサンプルページからスクリプトをダウンロードします。これらのスクリプトをゲームエンジンで認識するには、Godotプロジェクトのルートフォルダに"addons"という新規フォルダを作成し、そこにスクリプトをコピーします。
エディタでプラグインを有効化するには、まずGameSynthが実行されていてスクリプトが通信可能であることを確認します。次に、Godot 内で [プロジェクト] > [プロジェクト設定…] をクリックし、[プラグイン]タブを開き、[ステータス]列の下のボックスにチェックを入れてプラグインを有効にします。
すると、GameSynthとの接続が確立されたメッセージが出力ドックに表示されます。
Godot内でのパッチのレンダリング
GSAPI_RenderCurrentPatch プラグインは、現在の GameSynthパッチをレンダリングして、そのWAVファイルをオーディオノードに自動的に割り当てます。この機能はAudioStreamPlayer、AudioStreamPlayer2D、およびAudioStreamPlayer3Dノードのインスペクターに追加される「Render GameSynth Patch」ボタンを押すことで使用できます。
ボタンを押すと、生成するWaveファイルのサンプルレート、ビット深度、チャンネル数などの書き出し設定と、その保存先フォルダを選択できます。GameSynthパッチが無限である場合、レンダリング時間も指定する必要があることに注意してください。
WAVファイルが生成されると、プロジェクトに自動的に追加され、AudioノードのStreamプロパティに割り当てられます。
GameSynthパッチにランダム幅を持ったパラメーターがある場合、生成するサウンドバリエーションの数を指定できます。すべてのバリエーションが一度に書き出され、GodotのAudioStreamRandomizerタイプのStreamに割り当てられます。Audioノードが再生されるたびに、新しいバリエーションがランダムに選択されます。 衝撃音や足音など、頻繁にトリガーされる効果音の単純な繰り返し再生を避けることができます。
Godotのアニメーションを使って音を操る
GSAPI_ExportAnimationCurveプラグインを使うと、AnimationPlayerノードからトラックを選択してそのカーブをGameSynth にエクスポートできます。カーブはGameSynth内では、オーディオパラメーターの制御に使用できるAutomation Curveとして利用できます。 これにより、アニメーションに完全に一致する効果音を作成できるようになります。
このスクリプトで、「Export Curve to GameSynth」ボタンがAnimationPlayerノードのインスペクターに追加されます。
エクスポートを開始する前に、アニメーションドックで適切なアニメーションが選択されていることを確認してください。少なくとも 2 つのキーが含まれており、タイプは「ベジェ曲線」「3D ポジション」「3D 回転」「3D スケール」のどれかである必要があります。
GodotとGameSynthではカーブセグメントタイプが異なるため、Godot カーブは一定の間隔で評価 (サンプリング) され、GameSynthで同様のカーブが生成されます。 設定ウィンドウでは、「1 秒あたりのポイント数」によってこれらの間隔が決まります。
OKボタンを押すと、選択したAutomation Curveが現在のGameSynthパッチに追加されます。
このAutomation Curveを使用して、1 つまたは複数の合成パラメーターを制御し、アニメーションで操作が可能な効果音を生成できるようになります。
これらのインテグレーションの例が、GodotとGameSynth Tool API を使った開発アイディアに繋がれば幸いです。 皆さんがどのようなプラグインやスクリプトを構築されていくか、楽しみにしています。