学生ゲームジャムに参加してきました
2018年7月7~8日に行われた、学生ゲームジャムというのにプロチーム&メンターとして参加してきました。(正式名称はリンク先参照)
学生さんがそれぞれチームで参加して、競い合う中、プロチームという形態でゲームジャム向けのゲームを作ることになりました。
ゲームジャムではADX2LEを使ってサウンドの処理を調整できました。
動画:
この動画の中で実現していることは以下
- BGMが(ほぼ)重ならないようにしている(リクエストだけでOK)
- 再生のタイミング調整
- 再生時の音量調整
- 音量のリミッター処理(最大音量制限)
- HurryUp(残り時間わずか)時の演出
- SEの多重再生抑制(さいだい3〜4音くらいに制限)
これらを少しほりさげて解説します。
その前に、これらをどうやってUnityから呼び出しているか
ゲームジャムでは開発環境にUnityを使うことが多いのですが、ADX2はUnityのプラグインもあるので簡単
- UnityEditorにプラグインをインストール
- Setup用のシーンにDontDestroyの形でイニシャライザとエラーハンドラーのゲームオブジェクトを追加
- コードで呼びやすいようにSoundManager(サウンドマネージャー、サウンドの再生管理用のクラス)を追加
という感じ。
1.2はマニュアルなどを参照するとして、3.の部分はゲームによって様々ですが、今回は以下のようなシンプルなコードで済ませてしまいました。
こうしておくことで、プログラマからの操作としては、PlaySound(キュー名)で呼び出すだけで済みます。
ADX2について詳しいプログラマであれば、直接操作することもありなのですが、こういうラッパークラスを用意すると、ゲームジャムのような初めて使う人たちでも簡単に扱えるようになります。
あとは、それぞれのゲームのイベントに合わせてPlaySoundを呼ぶのですが、この時、データ側で抑制処理を入れていないと大変なことになります。
BGMが(ほぼ)重ならないようにしている(リクエストだけでOK)
BGMはカテゴリを用意し、1音しかならないようにします。
タイムラインのウェーブフォームのリージョンに対してEG(エンベロープ)のリリースを少しかけることで、自然にフェードアウトします。
再生のタイミング調整
登録した波形の頭や後ろ側に余白があった場合、通常は波形エディタでカットするのが約束ごとですが、
ゲームジャムでは急ぎの対応が迫られるので、シーケンススタートとシーケンスエンドで再生範囲を調整しています。
あくまで、ゲームジャムのような、ある意味雑に作るデータなので
本番のゲーム作成の時でもプロトタイプや、仮データの時はこういう作りでもOK。
でも、あとで波形差し替えとかで変な位置から再生されちゃったりとかの問題発生したり、後々困る場合もあるので、
時間がある場合は元の波形をトリミングした方が無難でしょう。
再生時の音量調整
DAWとかで出力するとだいたいノーマライズ(音量最大化)という形で用意することが多いので、そのまま登録してしまうとバランスが悪い場合があります。
極端にうるさかったり、聞こえない音をうまく調整したりします。
あと、今回のデータではタイトルコールの音など、あとから音声(声)トラックを追加したので、元々あったベースのジングルにADX2ツール上で組み合わせています。
これも、時間に余裕がある場合は、元の波形側でミックスして波形を差し替えてしまうのでも良いでしょう。
ですが、例えば、声の部分にだけリアルタイムのエフェクトをかけて調節したいなど、ステムで分けて登録して、より最終で調整したりなどもあるかもしれません。(今回はタイトル名が途中で差し代わるなども考慮)
カウントダウンにもあとで声を入れていますが、「3,2,1,ゲームスタート」という音はDAW上でミックスして、バランスも調整しています。
どちらも使い方次第ですね。
音量のリミッター処理(最大音量制限)
DSPバス設定というミキサーのような機能を使い、最終のところにリミッターのエフェクトをつけています。
こうすると、デジタル的なクリップをある程度抑えることができます。
全部リミッターにまかせても、バランスが変なものになりがちですので、
基本このリミッターがかからないように音量を調整しておく必要はあります。
反応速度の関係で少し漏れてしまう場合もありますが、ゲームのような、まれにイベントが重なって爆音になってしまうといった時の予防線になります。
HurryUp(残り時間わずか)時の演出
音を鳴らすだけなら、Unityの標準のサウンドでも十分なのですが、
今回は再生中のBGMがゲームの進行によって、途中からテンポアップする演出を加えています。
ゲームの尺がしっかり決まっていれば(あるいはサウンドドリブンならば)サウンドをミックスしている時にテンポアップの演出も焼き込んでしまうのが一番良いのですが、
ゲームの進行状況に応じて変化する、インタラクティブな演出のため、ここではピッチを変更するアクションを用意しました。
ゲーム終了時に、アクションで、元のピッチに戻しつつ音を止めています。
SEの多重再生抑制(さいだい3〜4音くらいに制限)
効果音もゲーム中で無作為に呼ばれる可能性のある音なのですが、完全にリミットしても不自然にテール(余韻)が切れてしまったりするのも変なので、
これもリミットを2音くらい、SEのウェーブフォームリージョンでリリースをつけて、だいたいその倍くらいの音数がなるような形で制限しています。
など
まとめ
ADX2を使うと、スクリプトをほぼ書かずに、これだけのサウンド演出が簡単に実装できます。便利です。
ADX2LEは無料で公開していますので、この記事を見て試してみたいという方はこちらからダウンロードして使ってみてください。
追記: CRI AtomCraftのプロジェクトデータを公開しました。こちらからダウンロードして使ってみてください。