勉強会のレポート(メモ)です。
参加したのはこちら、「ゲーム開発におけるサウンド実装の勘所」
過去にもお邪魔させていただいたTECHxGAME COLLEGEさんです。
ゲーム開発におけるサウンド実装の勘所
イントロ
みなさんどのタイミングでサウンド実装しますか?
結構後回しになりがち、参考本での扱いが悪いため(情報量が少ない)
サウンド実装で考慮すべきこと
考慮すべき三大要素
・CPU
・メモリ
・再生レイテンシー(スクリプトで再生させてから音が鳴るまでのタイムラグ)
CPUの負荷を抑えるとメモリレイテンシが、
レイテンシを抑えるとCPUメモリが犠牲になるなど三すくみの関係です。
なので音の特性を知りましょう
ゲーム内の音はたくさんありますがそれぞれに特徴があります。
音の長さや優先度、同時にならされる数など。
使うポイントでよくわけましょう。
さらに作るゲームの特性においても大事になる音は変わってくる(ボイスやヒット音など)
なので分類してどの音を最優先するかが大事。
モバイルゲームのオーディオは大変
以下の問題がでてくる。
・端末の制限が大きい
・データ容量の問題
・再生遅延
・再生の負荷
運営型の場合、大量のボイスデータをどう管理するかの問題も。
ところがゲームエンジンのサウンド機能はプリミティブかつ足りないことが多い。
やらなければならないサウンド実装
みなさんが作らなければならないこと
・負荷を軽減する
同時再生数の制限、CPU・メモリの管理。
・管理
ボイスデータがいっぱいあるときどういうワークフローで管理するのか。
・演出設計
フェード処理、ダッキング処理。
UnityAudio基礎
Unityがどのように音を鳴らしているのか、
AudioClipをSourceで読み込み再生し、Listenerで処理し最終的にスピーカーから音がでる。
プラスAudioMixerで音の種類を分類する、ミキサーに流してグループ化しボリューム調整する。
Audio特性
AudioClipのLoadTypeに気を付けましょう。LoadTypeは読み込んでから再生するまでの方法です。
Unityに音素材をインポートした時は、デフォルトでDecompressOnLoadになります。
しかしこれは少し重い。(なんでこれがデフォルトなの・・・)
LoadTypeはCompressedInMemoryにしましょう。
ほとんどの音はこの設定でいい。(ただし、早く再生したい音には向いてない)
音のタイプごとに再生方式を変えていきたいが、ボイスやBGMが多いと大変になってくる。
(ファイル名の変更、AssetBundleなど)
さらに音の情報をExcelで管理していると実際のデータとずれがでてくる。
特定の状況下での、音の再生に問題がでてくることも。
本題 CRI ADX2を使って解決しよう
採用実績がたくさんあり、会社用と個人用があります。
ADX2の効能
・androidのサウンドの遅延対策
・音声データの暗号化
・イントロ付きループ再生の実現
いろいろありますが、性能面だけじゃない。
ボイスデータの管理
ADX2のAtom Craftでデータ管理ができます。
BGMごとに「どのようにならすかの情報」を埋め込むことができる。
ここでデモタイム
ダッキング処理などはデータとして音の中に埋め込むので、スクリプトの方ではただ鳴らすだけで実現できる。
音のランダム再生や、ランダムでピッチを上げ下げするなど、ADX2内で複数の表現を作ることができる。
ツール上で音が重なった時どうなるかを確認できる。
スマホ上で再生しながら調整できるモードもある。
ほかにもいろいろあるが
のちほど資料を見てください
まとめ
オーディオは考えることがいっぱい。
複雑になるようならADX2を試してみて。
ADX2で大量の音データの管理が容易になります。
過去のTECHxGAME COLLEGE