ゲームの銃撃音実装バリエーションその2 武器の状態に合わせて音を自動的に変える


ゲーム開発におけるサウンド演出実装の難しい点は、「ゲームは常に状況が同的に変化する」ということです。動画制作と異なり、ゲームではプレイヤーの入力によって音が鳴る状況はダイナミックに変化します。
3Dのゲームでは単にサウンド素材をステレオで鳴らすだけではなく、ゲーム内の状況に沿った音の聞こえ方・方角・音の種類を場面に合わせていく必要があります。
今回は三人称シューティングゲームにおけるサウンド実装を想定し、プレイヤーが銃のモードを自由に変えながら、ゲーム中のカメラの視点も変わるような場合の音の実装について解説します。

前提となる知識

この記事は
「ゲームの銃撃音バリエーションを増やしつつコード量を減らす」https://qiita.com/Takaaki_Ichijo/items/fced234c2aca996f9fd5

と、「ゲームの状況に合わせてサウンドエフェクトのかかり具合を変える」
https://qiita.com/Takaaki_Ichijo/items/957dd09112b9939ff083
の姉妹編です。

また、本記事は統合型サウンドミドルウェア「CRI ADX2」及び付属のサウンドオーサリングツールAtom Craftの触り方をある程度理解している方向けの解説です。
初めてADX2を使う、という方は各エンジンへの導入の記事を先に参照ください。

Unity: Unityのサウンド機能をADX2で強化する
https://qiita.com/Takaaki_Ichijo/items/16e6501fc07f5b3b3377

UE4: ADX2 for UE4の導入で、一歩上のサウンド表現を(導入編)
https://qiita.com/SigRem/items/4250925f6d66a4fd287a

「属性付与」演出で銃の発射音に別の音を追加する

戦闘の要素があるゲームでは、ゲームシステムに深みを持たせるために「属性」の設定をつけることが多くあります。
例えば炎は氷に強いが土に弱い、雷は水に弱い...など、武器や防具に属性をつけ、そのバランスでゲーム内の戦略に強弱をつけるものです。

シューティングンゲームのサウンド実装において、「銃の発射音」にこうした属性の概念で音が変わるような実装を要求されることを考えてみてください。
素直に考えるならば、「雷モードのときの音」「氷モードのときの音」のように、サウンド素材をバラバラに用意して、そのつど鳴らすファイルを変える実装が思いつきます。
ただ、銃の種類が数十個、属性の概念も数十個、となると用意すべき音が膨大なバリエーションを持つときはどうすればいいでしょう。

2つ目の手段としては、「銃の発射音」と「属性を表す音」を別々に用意しておき、同時に鳴らすことです。これなら大量のバリエーションをデータとして持たずに済みそうです。
しかしながら、再生するべきファイルが2つになり、同時に再生する音の数をカウントして制御していた場合は、その判定が複雑になります。
加えて、属性の種類に応じてボリュームを調整したい...などとなった場合はどうでしょうか。

そこで今回は、CRI ADX2を使って「属性がつく銃の音」の設計と管理について紹介します。

元素材の用意

銃の発射音は、前々回の記事と同じフリー効果音サイトの「効果音ラボ」から取得します。

「属性」にあたるサウンド素材は、Tsugi株式会社の「DSP Anime」を使って生成します。