キャラが8人同時にしゃべるんだけど...
とPに言われたときの戦い方!!
Roppongi.unity #1
2019年1月29日
株式会社ヘッドハイ 一條貴彰
自己紹介:一條貴彰
● 株式会社ヘッドハイ代表
○ ゲーム開発者向けツールのコンサル(広めるおじさん)
○ ゲーム開発者向けイベントの支援
● 個人ゲーム開発者
○ 「Back in 1995」PC/ 3DS / PS4/ Switch / Xbox One / Vita
○ Unite 2016~2018で登壇
● 趣味
○ 80’s洋楽ポップスのレコード収集
○ 端末を買うこと
○ 刀剣乱舞おじさん、「 DREAM!ing」おじさん
Nintendo Switchタイトル「デモリッション ロボッツ K.K. 」
● システムは一人開発
○ 4人対戦の「街破壊」ゲーム
○ 同時に鳴る音がとっても多い!
○ ゲームの展開とBGMを連携させる演出を組み込む
ある日のこと....
平和な現場
4 vs 4バトルものです。合計8人が戦います!
フルボイスです!
人気声優をそろえたので、全員同時にしゃべらせて!!
プロデューサーさん、ほいで今回
はどういう企画なんや?
(^)(^)ミ
(^)(^)ミ
ワイの次の仕事はモバイルゲー
ムのサウンド実装や!
かわいい子がたくさん出るらしい
で!腕の見せ所や!
!? ()()ミ
何がやばいのか
フルボイスキャラが画面内に8人いる=
● 性能の問題
○ CPU負荷・メモリ使用量がでかい
○ アプリサイズが大きくなる
● 再生時における管理の問題
○ 全部の音を同時再生するわけにはいかないので、間引いたりボリューム調整したり
○
● 開発における管理の問題
○ 沢山のボイスデータをプロジェクト内でどう管理するか
○ 音量調整
再生時における管理の問題
ボイス再生の制御が必要、たとえば..
・同時に3人以上しゃべらない
・同じキャラのボイスは同時に一つしか鳴らさない
・必殺技シーンなどではそのキャラのボイスを目立たせる
・途中でキャンセルして後発を再生するボイスと、キャンセルしたくないものがある
・バトルのボイスとイベントボイス
→ どこで判定するのか?マネージャークラス?
 ゲーム中にキャラが入れ替わったり、複数の状況が重なった場合どうするの?
開発における管理の問題
よくありそうなボイス管理テーブル.xls
どういうシチュエーションで鳴らされるか、の管理が難しい
現場のフロー(想像)
ボイス収録できたやで!
データ納品ドーン!
連番ファイルの中身は Excelで管理しつつ、プ
ログラマーに鳴らしてもらおう
なるほど!
このボイスの番号はこれか!
再生システムに入れたで!
(^)(^)ミ
ボイスリスト.xlsx
現場のフロー(想像)
ファイル名変わりました
ボイス入ってるAssetBundle変わります
( )( )ミ
ワイはどこからどれを鳴らせばい
いんや....
Excelの方が古くて指定を間違えてました
ボイスリスト(2)_最新版_20190129_高橋修正(再提出).xlsx
ボイスリスト_最終_201901マージ_佐藤作業分.xlsx
Excel管理の問題
● AudioClipとExcel管理用のデータがズレる
● Unity Editorか元の音声データを見に行かないと中身を確認できない
● AssetBundle使う場合もプログラマーとのやりとりが多数発生
データとメタデータが
分離していることが問題っぽい
CRI ADX2を使う!
CRI ADX2 LEとは
・ゲーム向け統合型サウンドミドルウェア
 1. 音にまつわる演出が組み込まれたライブラリ (プラグイン)
 2. ゲームに最適化した音声圧縮形式 (HCA)
  ・再生の負荷軽減
  ・サウンドデータ暗号化
  ・Androidの再生遅延を提言
・エディションは二種類
ADX2: 有償版、法人向け
ADX2 LE: 無償版、個人・小規模向け(1,000万円以下の売上)
   最近アプデしてmacOS用ツールも出た
CRIWAREを使っているアプリ
ADX2の「Atom Craft」をデータ管理に使う
ADX2を使うと、スクリプトは激シンプルに
・ADX2では、
 音声ファイルを直接再生しない
・「キュー」という
 再生単位をツールで作り、
 演出をキューに埋め込む。
 演出...フェードインアウト、
  音の高さのランダムなど
・Unityスクリプトでは
 「キュー」指定して再生するだけ
ボイス再生数の管理方法
● キュー(再生単位)に上限数を作る
○ プログラムから繰り返し再生リクエストが来ても、ボイスは最大1音しかな
らない
● 「カテゴリ」でキューを分け、上限数を作る
○ あるカテゴリの音は最大1音しか再生されない設定、「カテゴリキューリ
ミット」を付与する
○ =同一キャラの声がいちどに2つ鳴らないようにする
ダッキング
ある音が鳴っているときに、他の音のボリュームを下げる
デモ
まとめ
まとめ
● 大量の音データ管理はツールで乗り越えよう
○ ADX2は音データの「管理」がとくい
○ プレビュー機能でボリューム調整仕事を分散
○ 同時に鳴っているときの負荷軽減も
○ ボイス管理表.xlsから脱出しよう
最速導入チュートリアル:Unity 2018のサウンド機能をADX2で強化する
https://qiita.com/Takaaki_Ichijo/items/16e6501fc07f5b3b3377
書籍:Unity Audio 実装の極意
● Unity Audioの機能解説
● CRI ADX2の機能解説
● VR向けオーディオ実装紹介
● 今春発売で執筆中!
ご清聴
ありがとうございました
おまけ
Unity標準とADX2導入時の
ワークフローの違い
サーバー
実行ファイル
Unity Audioのフロー
AssetBundle
Script
・AudioClipを指定して再生
・さまざまなサウンド制御 実装
・再生数制御
・フェード
・ダッキング
Unity Editor
AudioClip
(Wav, Ogg)AudioClip
(Wav, Ogg)AudioClip
(Wav, Ogg)
AudioClip
(Wav, Ogg)AudioClip
(Wav, Ogg)WAV インポート
ビルド
管理エクセル
サーバー
ADX2の
パックファイル
Unity + ADX2のフロー
Script:
・キューを指定して再生
・ランタイムに実装済みの
 サウンド制御を指定して再生
Unity Editor + ADX2 plugin
g)
av, Ogg)
WAV
ビルド
実行ファイル
CRI Atom Craft
ツール操作:
再生単位「キュー」を作り、
鳴り方をパラメータで指定。
・フェードイン
・再生数制御
・ダッキング
ADX2の
パックファイル
ADX2の
パックファイル
インポート ビルド
Unity AudioとADX2の違い
● Unity Audio
○ サウンドファイルと再生処理が1対1
○ 「ファイルに関する情報」を外に持つ必要がある(エクセル管理表・Scriptable Object?)
○ ファイル名の変更→スクリプトの修正
● ADX2
○ サウンドファイル ≠ 再生処理
■ 再生単位「キュー」を指定する
■ 内部的にファイルが更新になっても、スクリプトは変えなくて良い
■ 「キュー」に任意文字列を埋め込める
○ 音の鳴らし方をパラメータとして内包できる
○ ツール上でプレビュー再生できる(重要)
○ スクリプトをいじらずに鳴らし方を調整できる(重要)
BGMを流しつつ、ツールで確認再生(最重要)
ゲーム上で再生される状況と同じ環境
でボリューム調整ができる
リアルタイム調整機能(インゲームプレビュー)
ゲームを実行させながら、Atom Craftでパラメーターを調整できる
・Editor実行中にインスペクタでパラメーターいじる感じ
・PCビルドでもスマホ実機でも接続OK
・3Dゲームの距離減衰系はこれ使うと便利
デモ(CRI Atom Craft)
ボイスデータの管理
ボイスデータの管理手順1
プロジェクトにwavの入った
フォルダを登録する
ボイスデータの管理手順2
キューシート(パックファイルの単位)を作成する
ボイスデータの管理手順3
● キュー(再生の単位)を作成する
ボイスデータの管理手順4
● キューにコメントを入れる
○ コメント:   ツール上のみで確認できるコメント
○ ユーザーデータ:ファイルに埋め込まれ、プログラムから読める文字
列
● キューにパラメーターを設定する
■ 発音数制御
■ ランダム再生
■ 優先度
ボイスデータの管理手順5
「キュー名称」あるいは「ID」で再生処理を組む
会話シーンなど順序が絡む処理はIDでの再生、
アクションシーンなどはアニメーションなどと絡む処理はキュー名での再生が管理しやすそう
費用面など
有償版ADX2がUnity等と契約形態が違うワケ
● ADX2は「ツールの販売」ではない
○ オーディオ専門スタッフによるサポート・メンテ契約、みたいな発想
■ 日々発売されるヤバい端末とのたたかい
■ 日々更新される OSアプデとのたたかい
○ 何年間も無料で保守するのはちと無理なので ....。
○ 同じ会社内でいくつツールを使用しても OK
=アカウント数を気にせず、テスターやプランナーさんにツールでの調整を任せられる
● ゲームの販売形態によって契約形態も異なる
○ 家庭用機向けダウンロード販売ゲームは売上の 0.95%で使用可能
○ めざましアプリがキャラごとに 5個出るとか、1か月限りのプロモアプリであるなど、
個々の細かい事情は相談可能

キャラが8人同時にしゃべるんだけど...とPに言われたときの戦い方