
スイッチタイプキューを作ってみる(セレクター編)/第4回
こんにちは。
G2 Studios アートチーム サウンド設計担当のサキサキです。
今回から数回にわたり、サウンド演出によく用いられる機能をご紹介したいと思います。
AtomCraftには、キューに指定することでサウンド再生時にちょっとした演出を追加する「シーケンスタイプ」と呼ばれる機能がいくつか用意されています。
そのうちの1つで真っ先に皆さんにお勧めしたいのが、自身もよく使っている「スイッチタイプキュー」です。
(※演出設定がされていない最も基本的なキューを「ポリフォニックタイプキュー」と呼びます。)
では、早速進めていきましょう。
■作業環境
本記事は以下の環境下での作業内容を記載します。
OS :Windows10 Pro
CRI SDK :criware_sdk_unity_v3_06_01_smartphone_ja
■スイッチタイプキューとは
スイッチタイプキューは、キューの再生リクエスト時に、そのキューの中に仕込まれた2つ以上のトラックを、変数とその値を用いて切り替えることが出来るキューです。
この場合、一度の呼び出しで再生されるサウンドは、指定トラックに格納されたもののみとなります。
■2種類のスイッチ変数
ここで、もう1つ覚えていただきたいものがあります。
それは「スイッチ変数」と呼ばれるものです。
スイッチタイプキューを再生させるためには、キューの作成だけではなく、その対となる「変数」とその「値」を用意する必要があります。
スイッチ変数には、「セレクター」と「ゲーム変数」の2種類の変数が存在しますが、本記事では、「セレクター」に焦点を当て、説明したいと思います。
(*「ゲーム変数」については後日公開するnoteで記載します。)
■「セレクター」と「セレクターラベル」
「セレクター」とは、スイッチタイプキュー作成時に使用する変数の一つで、再生オブジェクト単位での値設定を必要とします。
再生オブジェクトの状況・状態に合わせて値を設定し、音声を再生すると、「セレクター」でデザインした通りの音声トラックの鳴らし分けができます。
そして、ここで使用する値は「セレクターラベル」と呼ばれ、数値ではなく文字列での設定が可能です。
■スイッチタイプキューの使用例
スイッチタイプキューは、格闘シーンにおける攻撃の種類に合わせた音の変化やADVシーンにおける地面の種類に合わせた音の変化など、同系統でありながら複数の音の管理が必要な場合などに用いると非常に効果的です。
(例)

ざっくりではありますが、例を挙げればこのような形でしょうか。
まずは必要な音声を系統ごとに纏め、1つのキューの中に細かく分類された音声ファイルを格納、それらをセレクターで切り分けるといったものです。
それでは、例に合わせ、「バトルシーンの打撃音」について「セレクター」と「スイッチタイプキュー」をAtomCraft上で実際に作成してみましょう。
■セレクターの新規作成
セレクターを作成します。
<手順①>

プロジェクトツリーの「全体設定」フォルダに含まれる「セレクターフォルダー」を選択し、プロジェクトツリー左上に表示されたボタンを押下します。
新規の「セレクター」が作成されますので、名前を入力(*ここでは「damaged」を入力)します。
<手順②>

次に、「セレクターラベル」を作成するために先ほど作成したセレクターを選択し、プロジェクトツリー左上に表示されたボタンを押下します。
そうすると、「セレクターラベルの作成」というダイアログが出てきます。
ここで設定できる項目は下記の2つ。
<セレクターラベルの作成>
名前 ⇒任意の名前を付けることが出来ます(*ここでは「weak」を入力します)。
セレクターのデフォルトセレクターラベルに設定。 ⇒サウンド呼び出し時にセレクターラベルの指定が無い場合、この値をデフォルトとしてセットするかを設定します(*ここではチェックを付けます)。
入力が完了し「OK」ボタンを押すと、セレクターラベルがセットされます。

「手順②」の操作を繰り返し残り2つを追加し、追加されるセレクターラベル名にそれぞれ「medium」「strong」を入力します。
また、この時に「セレクターのデフォルトセレクターラベルに設定」項目のチェックボックスは、チェックを外して登録します。
チェックを付けて登録しても問題ありませんが、その場合、後に登録したものがデフォルトの設定値として上書き設定されます。
これで、セレクター&セレクターラベルの1セットが作成完了となります。
ここまでの作業で設定した項目は、作成完了後にインスペクターから再度指定し直すことも可能です。
ここでちょっとした小ネタではありますが、私はセレクターラベルの作成の度に都度ダイアログが開くのを避けるため、「Ctrl + R」のショートカットキーを使い、1つ用意したセレクターラベルを必要な分だけ複製しています。
「Ctrl + C」「Ctrl + V」を使ったいわゆるコピペでも出来ますが、「Ctrl + R」だと複製元を選択した状態からキーボード1プッシュごとに1複製が可能なので、コピペの半分の工数で作業を行えます(笑)
この方法はセレクターラベルに限ったものではなく、セレクターそのものやキュー、トラック、ウェーブフォームなどにも同様に行うことが出来ます。
AtomCraftデータの作成にあたり、「Ctrl + R」は様々な場面で多用できる「究極の工数削減方法」になりますので、皆さんにも是非覚えていただきたいです!
■スイッチタイプキューの新規作成
「スイッチタイプキュー」を作成します。
<手順①>

ワークユニット上にキューシートを作成します。
※キューシートやキューの作成など、基本的なサウンドデータの作成方法についてはこちら↓
<手順②>

作成したキューシートを選択し、ワークユニットツリー上部に表示されたいくつかのキューアイコンから「キュー『スイッチ』の作成」アイコンを選択します。

キューシート内に「スイッチタイプキュー」が作成されました。
<手順③>

マテリアルツリーから予め用意しておいた3つの音声ファイルをDrag&Dropし、キューの中に配置します。
キュー配下に作成された「トラック」や「ウェーブフォーム」の名称は、セレクターでの呼び出しの際に特に変更の必要はありませんが、誰が見ても分かり易くしておくと良いと思います。
「スイッチタイプキュー」の作成は以上となります。
■スイッチタイプキューの異なる作成方法
実は、先ほど説明した「スイッチタイプキュー」の作成方法は大きく3通り(*細かく挙げれば他にもありますが、ここでは3つ)存在します。
<スイッチタイプキューの異なる作成方法>

1つ目は先に説明したもので、ワークユニットツリー上部に表示されたいくつかのアイコンから該当するものを選択し作成する方法。

2つ目は、ワークユニットツリー上から右クリックメニューを展開して作成する方法。

3つ目は、先に「ポリフォニックキュー(又は、他タイプキュー)」を作成し、キューのインスペクターにある「シーケンスタイプ」から該当するものを選択し作成する方法。
また、これらは「スイッチタイプキュー」の作成に限らず、「セレクター」やその他のオブジェクト作成時にも共通して認められる方法です。
結果的にどれも同じものが作成されますので、自身のやりやすい方法を見つけたりその時々に合わせた方法で効率化を図るなど、いろいろ試してみてはいかがでしょうか。
■スイッチタイプキューにセレクターを設定する
「セレクター」と「スイッチタイプキュー」が作成されましたので、両者の紐づけを行います。

「スイッチタイプキュー」を選択し、インスペクターを見ると、ポリフォニックキューでは非アクティブだったプロパティ「スイッチ」がアクティブ化され、「スイッチ変数」を設定する箇所が現れます。

「スイッチ変数」の指定枠(「なし」と書かれているところ)を選択すると、先に作成したセレクター「damage」がプルダウン内に表示されるので、これを選択します。

「スイッチタイプキュー」内に用意したトラックと「セレクターラベル」の割当表が表示されたら、「自動割当」ボタンを押下します。
「自動割当」ボタンは、「スイッチタイプキュー」内に用意されたトラックと「セレクター」内に用意された「セレクターラベル」をそれぞれの整列順のまま割り当てます。
もし、意図しない形になってしまった場合は、「リセット」ボタンで先に完了した割り当てを外し、再度自動割当を行いましょう。

内容を確認し問題なければ、作業は完了です。
インスペクターの「特殊再生」欄にある「スイッチ変数」項目にも指定セレクターが入力されているのを確認できます。
後は、サウンドデータをビルドし、AtomViewer や Unityで確認を行います。
もし、意図した形でサウンドを再生出来なかった場合、これまでの手順を再度見直してみてください。
■まとめ
「スイッチタイプキュー」は必ずしも必要な機能ではありませんが、マスターしておくと非常に役立つ機能です。
中規模以上のゲーム制作、特に大規模ゲーム制作においては、取り扱う音声ファイル数も増加し、ゲーム仕様に合わせた細かい再生分岐の形を求められることも多く発生します。
その際、セレクターを使いこなすことで、既存音源の正確な把握やマスターデータを使用しない仕組みの構築、クライアント側でのスクリプト削減などに繫げられるので、必要に応じてサウンド設計に取り入れるのがお勧めです。
今回のnoteは以上となります。
▼サウンド関連のnoteをまとめたマガジンがあります!
▼G2 Studiosの採用情報はこちら