トップ Tsugiブログ GameSynth Tool API -Unityインテグレーション-
GameSynth Tool API -Unityでの活用例-
2023/06/27

GameSynth Tool API -Unityインテグレーション-

GameSynthTool APIには、 GameSynthを他の制作ツールと接続するための様々なコマンドが用意されています。専用ページにて多くのスクリプトやアドオンが配布されており、さらにコミュニティで新たなワークフローも開発されています。

今回は、Unity向けに書かれた3つのスクリプトを紹介しましょう。これらを利用して、ゲーム開発におけるサウンドデザインワークフローを向上させる方法を解説します。Unity画面から離れることなく、スクリプトを介してAPIを操作し、以下のロボットシーンに必要な全ての効果音を実装していきます。

ここでは「GameSynthリポジトリから格納庫風の環境音を検索して書き出す」「複数のメカの変形音バリエーションを実装する」「腕の動きに完全に一致したモーター音を作り出す」方法を紹介します。

導入

まずはGameSynthAPIExamplesパッケージをUnityプロジェクトにインポートする必要があります。GameSynth Tool API 専用ページの使用例から、最新バージョンをダウンロードできます。導入後、複数のスクリプトがAssets/Editorフォルダにコピーされ、上部のWindowメニューに、新たにGameSynthサブメニューと3つのコマンドが追加されます。


scripts


基礎的なことに興味があり、独自にスクリプトを開発したい方は、コード例やこちらのGameSynth Tool API の解説ブログをご覧ください。

パッチリポジトリから効果音を書き出す

まずは格納庫風の環境音を追加しましょう。Render repository patchコマンドを使用します。これは名前の通り、GameSynth リポジトリにアクセスしてプロシージャルサウンドパッチをwave書き出し、それをサウンドアセットとしてUnityプロジェクト内に追加するコマンドです。

上の動画では、名前またはカテゴリ名に「ambien...」を含む全パッチを検索しています(パッチに関連付けられたタグでの検索も可能です)。入力後、条件に一致するパッチリストが動的に更新されます。

名前をクリックすると、そのパッチがGameSynth内にロードされ、この時点でPlay ボタンを押すとUnityから直接パッチを試聴できます。リポジトリで検索した「Industrial Ambience」パッチがシーンによく合います。パッチの再生時間が無限である場合(アンビエンス系でよくあるケース)は、Durationスライダー が有効化され、音の書き出し時間を設定できるようになります。動画では20秒で書き出しました。

サウンドの再録音や編集なしに、都合に応じて必要なサウンドを手軽に再合成できます。これはプロシージャルサウンドが持つ明確なメリットの1つといえるでしょう。

Import ボタンを押すと、Waveファイル書き出しされた環境音が、Assetsフォルダに追加されます(GameSynth のパッチと同じ名前となります)。サウンドはGameSynthで設定されたサンプルレートに従うため、必要に応じてGameSynthのsettings画面で変更してください。ビット深度とチャンネル数はスクリプトのUIで指定できます。

効果音バリエーションを作成する

今度はメカの音、変形モーションに音をあてていきます。(ゲームでよくある)単一の「ガチャ」音の繰り返しにならないために、いくつかバリエーションを生成すると、ゲームの音演出が豊かになります。

GameSynthでランダム幅が設定されている(つまりバリエーションを量産できる)パッチを作成・読み込んだ状態で、UnityからRender current patchスクリプトを立ち上げ、音を複数書き出しします。

ここで、プロシージャルオーディオが再び威力を発揮します。スクリプトのUI には、生成したいサウンド数と必要なバリエーション量の設定が設けられており、Importボタンを押すと全効果音が自動的に書き出しされ、アセットとしてゲームに追加されます。あとは、装甲が動くたびにランダムに音を発する簡単なスクリプトを書くだけです。

※前項で紹介した"Render repository patch"スクリプトにも、このバリエーション生成機能が用意されていますので、必要に応じて活用するといいでしょう。

アニメーションカーブでサウンドパラメータを制御する

最後にメカの腕の動きに音をあてましょう。動作にぴったり合うモーター音を作りたいため、腕のアニメーションカーブをエクスポートし、それを使用してGameSynth の合成パラメータを制御します。



ロボットオブジェクトを選択した状態で、Export animation curveスクリプトを実行します。オブジェクトにアサインされている全アニメーションカーブのリストが("オブジェクト・クリップ・ボーン・パスといった全要素で)表示されます。今回は、腕のZ軸回転カーブを選択しました。

注: カーブがクォータニオンではなくオイラー角補間を使用していることを確認してください。クォータニオン設定では、GameSynthにエクスポートするとカーブ形状が変わってしまいます。



このスクリプトはアニメーションカーブを一定の間隔で評価するため、スクリプトUIで、1秒ごとに生成したいポイントの数を調整します。Exportを押すと、アニメーションカーブ名にちなんだ新しいオートメーションカーブが GameSynth に追加されます。同じ形状をしており、これを用いて1つから複数のサウンドパラメータを制御できます。動画では、アームの動きに完全にシンクロしたモーター音を生成しています。あとはRender current patchスクリプトから、WaveファイルとしてAssetsフォルダ内に書き出すだけです。

繰り返しになりますが、従来のサンプルベースでは作成が面倒な音も、プロシージャルサウンドではスムーズに作成できます。さらに、映像側でモーションやタイミングに修正が入っても、新たなモーションカーブをエクスポートすれば音をすぐに再合成できます。

今回紹介したUnityスクリプトは、あくまでもGameSynth APIで実現できることの一例です。GameSynth Tool API を用いたより柔軟なゲームサウンドワークフローの開発にむけ、スクリプトは自由に改良可能です。開発された際は、ぜひTsugiにお知らせください。API専用ぺージにて作例を紹介させていただきます。


GameSynth



Copyright © Tsugi GK. All rights reserved.