第10回/サブシーケンスを使ってみる
こんにちは。
G2 Studios サウンドチームのサキサキです。
今回は「サブシーケンス」と呼ばれる音の再生シーケンスに関わる機能をご紹介いたします。
これまでに紹介した機能を交えての説明になりますので多少難しく感じるかもしれませんが、実用性の高い機能ですので丁寧に読み解いていきましょう!
■作業環境
本記事は以下の環境下での作業内容を記載いたします。
-----
<作業環境>
Windows :Windows 10 Pro
CRI SDK :criware_sdk_unity_v3_08_03_smartphone_ja
-----
■サブシーケンスとは
サブシーケンスはキューと同等の機能(※一部を除く)を持つオブジェクトです。
通常、キューの中に別のキューは作成できませんが、サブシーケンスを用いるとそれと同様のことができるようになります。
■サブシーケンスの配置
サブシーケンスはトラック直下に作成&配置するのが基本の形になります。
■サブシーケンスの用途
皆さんはCri Atom Craft で音声データを作成する際、次のようなことを考えたことはないでしょうか。
-----
・音の条件分岐(=スイッチキュー)の中にさらにランダム要素(=ランダムキュー)を入れたい
・音の条件分岐(=スイッチキュー)の中にさらに条件分岐(=スイッチキュー)を作りたい
-----
これを可能にするのがサブシーケンスです。
サブシーケンスは一度の再生リクエストに対し、複数のシーケンス(=シーケンスタイプ設定による音の再生方式)を同時に発動させたい場合に使用します。
通常、キューには何らかのシーケンスタイプを設定するようになっていますが、サブシーケンスにも同様にシーケンスタイプの設定項目があり、これを設定することでキューとサブシーケンスによる「シーケンスの入れ子構造」ができあがります。
■サブシーケンスの使用例
「スイッチ&ランダム」と「スイッチ&スイッチ」のシーケンスタイプの組み合わせについて、実用例を挙げて見てみましょう。
-----
<例①:スイッチ&ランダム>
<例②:スイッチ&スイッチ>
-----
どうでしょうか。
図に表すことで、使い方のイメージが固まってきたのではないかと思います。
■CRI Atom Craftでサブシーケンスを使ってみる
それでは、CRI Atom Craftでサブシーケンスを使用した音声データを作成してみましょう。
ゴール条件は以下の通りとします。
-----
<ゴール条件>
’■サブシーケンスの使用例’ で挙げた例①の音声データを作成する
-----
AtomCraftを起動し、作業を始めるための準備を行います。
※キューシートやキューの作成など、基本的な音声データの作成方法についてはこちら
サンプル音源「Se_Dog_Pat_01.wav(※犬をなでた時の鳴き声1)」
「Se_Dog_Pat_02.wav(※犬をなでた時の鳴き声2)」「Se_Dog_BallCatch_01.wav(※犬とボールキャッチをする時の鳴き声1)」「Se_Dog_BallCatch_02.wav(※犬とボールキャッチをする時の鳴き声2)」をCRI Atom Craft内にインポート(=マテリアル登録)しておきます。
※こちらは私が作成したものなので、商用でも何でも自由にご利用いただいて大丈夫です。
<手順①>
先ずは、音声発動の概要(※最初の2項目)に習い、ワークユニットツリー上に新規のスイッチタイプキュー(=キューシート&キュー&トラック)を作成します。
また併せて、プロジェクトツリー上に音声切り替え用のセレクター(=セレクター&セレクターラベル)を作成し、キュー及びトラックにスイッチ変数の割り当てを行います。
※「スイッチタイプキュー」についての過去記事はこちら
またこの時、スイッチタイプキューとセレクターの名称は下記のように変更しておきます。
-----
<オブジェクト名称>
キューシート名:Se_Dog_Interaction
キュー名:Se_Dog_Interaction
トラック名:Pat
BallCatch
<セレクター名称>
セレクター名:interaction
セレクターラベル名:pat
ballCatch
-----
<手順②>
次に、音声発動の概要(※最後の項目)にならい、「Pat」「BallCatch」のトラック直下にサブシーケンスを作成します。
該当トラックをそれぞれ選択し、ワークユニットツリー上部に表示されたいくつかのアイコンから「サブシーケンスの作成」アイコンを選択します。
トラック直下にサブシーケンスが作成されますので、名称を分かりやすく「Random」と変更しておきます。
<手順③>
作成されたサブシーケンスを選択後、インスペクターにある「シーケンスタイプ」の値(※デフォルト値は「ポリフォニック」)を押下し、表示されたプルダウンから「ランダム」を選択して設定します。
<手順④>
マテリアルツリーから予め用意しておいた4つの音声ファイルをDrag&Dropし、キューの中に配置します。
トラック「Pat」直下のサブシーケンスには「Se_Dog_Pat_01.wav」「Se_Dog_Pat_02.wav」、トラック「BallCatch」直下のサブシーケンスには「Se_Dog_BallCatch_01.wav」「Se_Dog_BallCatch_02.wav」といった要領です。
これで作業は完了です。
キューを再生させると、意図した形で音が鳴っているのを確認できます。
■実装における注意点
サブシーケンスの使用における注意点をいくつか挙げておきたいと思います。
-----
・サブシーケンスの表示アイコン
CRI Atom Craftではキューのアイコンがオレンジ色で表示されているのに対し、サブシーケンスのアイコンは青色で表示されています。
そして注意すべきは、キューのアイコンはシーケンスタイプの設定ごとに絵柄が変化しますが、サブシーケンスのアイコンはシーケンスタイプの設定に関係なく1種類のみの表示であるということです。
一見しただけではそれらに何の設定がされているのかわからないため、特にCRI Atom Craftに慣れていない人にとっては読解が難しいものになります。
使用の際には設計資料に記載して関係者に共有を行うなど、いざという時のためのリスクヘッジを行っておきましょう。
・シーケンスタイプの複数接続時におけるデータサイズ
サブシーケンスを使用したシーケンスタイプの組み合わせ例をいくつか挙げましたが、音声データの作成の際には1キューシート内に格納されるリージョンの合計サイズに注意しましょう。
各シーケンスタイプはそれ単体において複数のリージョンの格納が前提とされてますので、それらが組み合わさり入れ子構造になる場合、当然それに合わせてリージョンの合計サイズも増加する傾向にあります。
サウンド再生時にはキューシート内に含まれる音声データは一度全てワークメモリ上に展開される形になりますので、大きなデータサイズになると想定される場合には、その負荷についての考察や事前検証が重要になってきます。
-----
■まとめ
「サブシーケンス」は公式のマニュアルにはさほど細かい説明はされてませんが、通常であればソースコードを書いて組み上げるような分岐構造をリソース作成の一環として作成できる、非常に実用性の高い機能です。
もちろん、使用に当たってはサウンドの知識のみならずクライアント開発についての知識も少なからず必要となってくるため、実装のハードルが少しだけ上がってしまうのが難点となりますが、関係者間ですり合わせを行うことで十分に解決できる内容だと考えます。
また、サブシーケンスを使用した実装方法について、サウンドデザイナー側からクライアント開発側に提案を行いそれらを自在に組み上げられるようになれば、これまで以上にゲーム開発を楽しめるようになってくるのではないかと思います。
これはもう、マスターするしかありませんね!
今回のnoteは以上となります。
▼サウンド関連のnoteをまとめたマガジンがあります!
▼G2 Studiosについてはこちら
▼最新情報はX(Twitter)でご確認ください!