作業開始前に決めておくこと

はじめに

CRI Atom Craftで作業をする前に、久しぶりに使う方は「「CRI ADX Tools」を初めて使う方へ 」の章を再度確認することをお勧めします。
ここではもう少し掘り下げて再生するまでの流れを理解することで、
どのようなデータを用意すると効率よくプログラマーと作業分担できるかにおいて解説します。

サウンドデザイナーは音の設計図をデザインし、プログラマーがそれを元に音を鳴らす

サウンドデザイナーは音の元となる波形を用意します。
プログラマーは、ゲームの演出上の特定のタイミングで、指定通りの音を鳴らします。

名前で区別する

最もシンプルな方法としては、プログラマーは「波形ファイル名」を指定して再生します。
「波形ファイル名」で「何」かを特定し、ゲーム内の「何」かと関連づけします。

シーンや音の機能で区別する

どのシーン、状況で、どの音が必要かなどを、なるべく正確に見積もる事が大事です。

音の分類の方法もゲームによって多様な分け方が考えられます。

システム音のような、決定、キャンセルといった音や、
ものが破壊される音、足音など、
背景に流れる音楽、状況を説明するセリフなど。

デザイナーとプログラマーの領分

音にはさまざまな効果がありますが、音をどのように鳴らすかといったことについて プログラマーのできる範囲とデザイナーでできる範囲が少し異なります。

デザイナーレベルでは、音を鳴らしすぎないようにすることや自動でダッキングするなど、
規定の動作を設計することができます。

プログラマーレベルでは、実際のゲームの時間軸でどうコントロールするかの設計が必要になります。
どのタイミングで、どの音を鳴らすか
どのタイミングで音の設計図をロードし、不要になった音の設計図を破棄する。
音単位でロードや破棄をすると細かすぎる場合もあるのである程度のまとまりであるキューシートの単位でおこないます。
この音の設計図=キューシートをどのように扱うかは、プログラマーとデザイナの両方で、管理のしやすい方法を検討する必要があります。

シンプルな音を作りプログラマーへ

CRI Atom Craftの使い方として、最も単純な音の作り方は以下の手順になります。
(説明の簡略化のため一部省略している要素もあります)
1.プロジェクトファイルを作成
2.ワークユニットを作成
3.キューシートを作成
4.キューを作成
5.波形を登録
6.エンコード設定、メモリかストリームかなど再生方式を指定
7.キューシートバイナリファイルを作成
8.キューシートバイナリファイルをプログラマーへ渡す

ここまでで、音の設計図が含まれたキューシートバイナリというものが作成されます。
ここから、プログラマーがこの設計図をもとにゲームプログラムで音を鳴らす手順になります。

シンプルな音をプログラマーがゲームに組み込む

9.ADX ランタイムを初期化
10.キューシートバイナリをメモリ上にロードします。
11.プレーヤーを作成します。
12.プレーヤーにキューをセットします。
13.プレーヤーを「スタート」します。

これで、キューを指定した音が鳴りだします。

基本的にプログラマーは、ゲーム内で音を鳴らすためのプレーヤーを用意し、キューをセットして音を鳴らすことになります。

問題が起きた時のデバッグ

ここから先で、音が意図したとおりにならない場合があります。
デザイナはCRI Atom Craft上で、設計図の間違いがないか、プレビューやプロファイラーを使いデータに問題がないか確認します。
プログラマーはゲームで実際にどう呼ばれているかなど、呼び方に問題ないか、プロファイラーを使って確認する作業になります。

複数人でデータを共有する方法を考える

もし、デザイナーが多い場合、複数のファイルに分割してデータ作成を行います。
CRI Atom Craftではワークユニットという単位でファイルを分割して管理することになります。
これは、設計図のロードの分類(キューシート)とはまた別の分類の設計になります。
ゲーム制作上でどこを誰が作業するかなどの見積もりが大事です。

単純再生からの脱却

キューには以下のような機能を追加することができます。
1.再生する音の発音数の管理
2.発音時の優先度による動作(音を鳴らす、鳴らさないなど)
3.音のランダム要素(さまざまな音が鳴る)
4.音のグループ要素
5.音の消え方の設定

音の設計図とは、ゲームでよくある一般的な音に関する演出を、プログラマーの負担をかけずに効率よく行うために作り出されています。
そのため、プログラムはほとんどの場合「キュー」をセットしてスタートするだけになります。

ここまでの情報を用いれば、単純な再生で音を鳴らし、発音制御を設計図通りに行うことが出来ます。

さらなる高みへ

これを基本として、ADX ではさまざまなリアルタイムエフェクトやブロックやビート同期、セレクターなど駆使したインタラクティブミュージックなどの設定ができ、 プログラムからもより凝ったコントロールを行うことができます。
また、プログラムの負担を軽減するために、アクション機能で音の制御もキューに隠ぺいしたり、 スナップショットによってエフェクトのかかり具合を容易に変化させたりといったこともできます。

ゲームの規模に応じて作り方を考える

ゲームの規模が大きい場合、すべての設計図をロードすることはゲームにとって負担になります。

少数の音を鳴らすだけであれば、何も考えずに一つのキューシートで作る事ができます。

craftv2_tips_decide_before_work0.png

規模が大きくなると一つのキューシートでは入りきらなくなります。
そのような場合には、まず楽曲や長いセリフなどをストリーム再生にしてください。これにより多少の改善が可能です。

craftv2_tips_decide_before_work1.png


それでも、入りきらない場合、キューシートを分割していきます。
この分割の仕方を決めておく必要があります。

どのように、どのデータを分割するか、最小単位をどれくらいにするかは、ゲームの規模によりますし、
作業にあたる人の数も影響するため、これといったおすすめはありません。

ADX を使った場合にはプロジェクト、ワークユニット、キューシートなど分割する単位があります。
これらについて紹介します。

craftv2_tips_decide_before_work2.png

発音数、音のグループ

発音数を管理する理由は、ゲームではCPUの負荷を気にすることになります。
また、大量の再生リソースを確保するとなるとランタイムのメモリ使用量も気になります。

音を効率よくコントロールするための仕組みを紹介します。

craftv2_tips_decide_before_work3.png