cocos2d-x talks #2 「サウンド実装のちょっとした気配りで...
TRANSCRIPT
サウンド実装のちょっとした"気配り"でユーザに”快適感”を。
&サウンドミドルウェア「ADX2」のご紹介
2015年3月13日
株式会社CRI・ミドルウェア
2
このロゴの会社です
■ CRIのミドルウェア群の総称
製品ラインナップ
・CRI ADX2オーディオ統合ソリューション
・CRI Sofdec2動画再生ミドルウェア。複数同時再生、アルファムービーなど
・ファイルマジックPROファイル読み込み、圧縮/パッキング、ネットワーク対応
CRIWAREとは
今日のテーマ
ゲームサウンドの
クオリティアップをしよう!
サウンド演出にちょっとだけこだわる
● サウンド再生比較
単に音が鳴っているのと、ちょっとした演出を入れた場合の違い
- クロスフェード
- ランダム再生
- パラメータのランダマイズ
- ダッキング
- 発音数制御
→ 自然さ、聞き心地の良さ、ゲーム的な強調。
ちょっとした演出を入れる
• BGMは「フェードイン」「フェードアウト」「クロスフェード」
切り替え時に音がブツッとなると不快!
→クロスフェードで自然と切り替わるように。
• セリフやジングルが聞こえやすくなるように
BGMがガンガン鳴っていると肝心な音が聞こえない!
→目立たせたい音がなる時だけ、BGMの音量を下げる。
• 効果音にバリエーションをつくる
射撃音とかパンチ音とか、同じ音が続くと単調!
→ピッチを変えたり、フィルタをかけたり、複数のSEを組みあわせて再生したりする。
たくさん同時に鳴る場合に処理落ちしないか?ノイズにならないか?
• SEは再生数上限をつくろう
– 爆発音とか、効果音が重なりすぎると音が割れて不快。
– 音を鳴らしまくると、負荷は当然重くなる。
• コーデックは適切に選ぼう
– oggやmp3をむやみに使うと、再生時に突発的な
CPU負荷が発生してカクッとする場合がある。
• SEはメモリ再生
– 必要なデータだけ読みこむように
– Wavの場合はデータが大きいので注意。
• ボイス、BGMはストリーミング再生
– (端末ストレージ、SDからの)ストリーミング再生
– 再生レスポンスは多少かかるが、メモリ使用量は小さくなる。
実装だ!
iOS:よい
Android:大変!!
なにが大変?
• サウンド再生が遅い
– OSの問題で、根幹解決は難しい
• 特定の端末で不具合
– シーク再生が変、ストリーミング再生してるとだんだんズレる
– Android 5.0 (Lolipop)でうまく動かない
– アプリがバックグラウンドに入ると、音周りが挙動不審に
• データの保護は期待できない
– SDカードからoggデータが抜かれる
何をすればいいか
• SimpleAudioEngineを使う?
– WavやMP3の再生をする。それだけのもの。足りない…
• サウンド機能の拡張 or 自前実装が必須
– イントロ+ループ再生などの再生
– 任意位置からの再生
– ピッチ変更などのエフェクト
– サウンド再生数上限の拡張
• OpenSL ESやOpenALの知識が必要
– かつ、Android機種個別の対応が・・・
– 音声再生時刻のカウントとか・・・
サウンドミドルウェア
「ADX2」セット内容
• 専用サウンドツール「CRI Atom Craft」
– ゲーム内での音の鳴り方を管理・設定するツール
• サウンドライブラリ
– サウンド演出の実装がラクに
– オリジナルの圧縮コーデックで小さく
– 動的なサウンドエフェクト適用がラクに
• ピッチチェンジ、リバーブなど各種エフェクト
• 複数の音を時系列に配置して再生
– インタラクティブな音作り
■ プログラマとサウンドデザイナの分業
パラメータ制御や再生タイミング、発音数制御などは、データ側に設定。
→プログラム側は単純な再生制御だけでOK。
「ADX2」の基本コンセプト
プログラマ
ADX2オーサリングツール
!
サウンドデザイナー
17
音素材を時系列に並べる
ボリュームやピッチの
変化などグラフで加工
エフェクトの設定
キュー
(音の単位)
キューの中身CRI Atom Craftのツール構成
「ADX2」の”キュー”という概念
名前:「Shot1」※この名称でプログラムから呼ぶ
• 同時再生の上限値:3プログラムからコールされまくっても大丈夫
• カテゴリー:SEカテゴリーごとのボリューム変更などに使う
• プライオリティー:5カテゴリー内で優先度をつける。
波形データと再生位置
キューの設定欄(一部)
これまでの音声再生
gunshot.wav
音声データを指定して再生
・ストリーミング再生?・ボリュームを変える・ピッチを変える・ループ再生・同時再生数は?・フェードイン・アウトは?
・同時再生数制御機能・フェード機能・ループ再生機能・ピッチランダム機能
サウンド演出の実装
音声データの加工、圧縮設定
スクリプト:サウンド演出のパラメーター設定
「ADX2」を使うと
gunshot.hca(圧縮した音声データの参照)
音の設定・ストリーミングorメモリ・ボリューム・ピッチ・ループ位置・同時再生数・フェードイン・アウト
Gunshotキュー「キュー」を指定して再生
ADX2ライブラリ
サウンドツールによる設定
再生指示はシンプルに
「ADX2」で設定できるサウンド制御
• ボリューム制御
– 音ごとのボリューム制御
– 曲・効果音・ボイスをカテゴリ分けして、
一括ボリューム管理
• 再生制御
– 再生優先順位
– 効果音の後発優先、先発優先
– 同時発音数の制御
– ランダム再生
• DSP
– ピッチシフト
– リバーブやエコーなどエフェクト
– パンニングや距離減衰など3D効果
• 曲の再生制御
– 曲と環境音の同時再生
(2曲の同時ループ)
– 曲の途中ループ
– 曲の途中停止・途中から再生
• フェードイン、フェードアウト
– フェードの長さ調整
– クロスフェード
– カテゴリをトリガにした
自動音量ダッキング「REACT」
• 3Dパンニング/ポジショニング
これは一例でス。便利な機能はまだまだありまス!
「ADX2」の独自コーデック
• HCA / HCA-MX コーデック
– 圧縮率はmp3 / Oggと同程度(人の声の圧縮に多少強い)
– CPU負荷低め、大量にリクエストしても急に負荷が上がらない
– さらにデコード処理負荷を大幅に抑える特別な仕組み
HCA-MXコーデックの特長
• 音を同時再生する際のCPU負荷が軽くなります。
• 従来wavで鳴らしていた素材も圧縮できるようになり、
ディスク容量とメモリ使用量が節約できます。
• 制限事項
– HCA-MXでは音ごとのピッチ変更、フィルタ変更などができません。
– サンプリングレートを統一する必要があります。(デフォルトは32KHz)
イントロ付きループ
■ 途切れず、綺麗にループするBGM
- ループポイント付き波形の圧縮・再生に対応
- イントロ付きループBGMをプログラムの工夫無しで実現
サウンドごとの音量調整
■ ADX2のオーサリングツール上で調整
- BGMやSEの音量はADX2ツール上で調整。素材波形の変更不要。- BGMカテゴリを作って、BGMの一括音量調整。- アプリからの動的な音量調整ももちろん可能。
ダッキングとカテゴリ
■ カテゴリ指定によるダッキング
- 音声再生中はBGMの音量を下げるような処理をデータ側のみで設定。
- サウンドをカテゴリにわけて、まとめてボリューム調整するなどの利用も可能。
M01
音楽カテゴリ (変化)
M02 M03S01
セリフカテゴリ (トリガ)
S02 S03
ダッキング指示
変化カテゴリ
トリガカテゴリ
[Android] 再生レイテンシ
■ Android用の低レイテンシ再生モード
- ネイティブサウンドレンダラという低レイテンシ再生モードあり。
[Android] 遅延推測機能β版
■ 端末のサウンド再生遅延時間をライブラリで推測
プログラムによる再生指示
スピーカーからの発音
ここにかかる時間が「再生遅延時間」。??? ミリ秒。
● Android の場合
- 遅い!- 機種によって差が激しい!遅いと 200msec以上。- 誰も教えてくれない!
ADX2に遅延時間推測関数を追加。※β版です。現在はUnityのみ。
ADX2/Sofdec2 の暗号化
● ADX2/Sofdec2データの暗号化
iOS/Androidでデータ共通利用可能。
Cocos2d-xでは暗号キー指定のみで使用可能。
インゲームプレビュー機能
■ スマートフォン実機と通信
- スマートフォンで実行中のゲームと CRI Atom Craft でWiFi接続。
→ ゲームで実際に色々な音が重なる状況で聞こえ方を調整可能。
音量、エフェクト、メモリ再生の波形などを直接変更。
- CRI Atom Craft で作成中のサウンドをPCではなくスマホから鳴らす事も。
(ターゲットプレビュー機能)
「ADX2」導入メリット
• 音声圧縮&再生負荷を軽減
– 多重再生時に重くならないモードがある独自コーデック。
圧縮やクオリティはmp3/Ogg同等ながら、再生負荷が低い。
– イントロ付きループBGMが使える。(任意ポイントでのループ)
音質アップと容量削減が両立できます。
• ツールによるサウンド演出設計
– 大量音声データの管理がラクに。
– プログラムを触らずに音量やエフェクトの調節ができる。
サウンド周りのコーディング量が大幅に減ります。
ざんねんながら
• ブラウザゲーム出力に非対応– ネイティブライブラリを動かせるブラウザが現状Choromeしか無いため。
(WebGLとかでも同様)
• サウンドツールはWindows版のみ– Mac版は開発中です。ゴメンナサイ。
– Pallarels、VMwareなどの仮想環境で動作確認とっています。
個人開発者の方へ
無償版個人アプリ開発者向けサウンドミドルウェア
「ADX2 LE」とは
• 無償版サウンドエンジン+オーサリングツール
– 個人のインディーゲーム開発、ゲームジャム向け
• 無償で利用可能(有料で頒布するゲームに使ってもOK)
• ゲーム販売の売上1,000万円以下まで
• 二次創作は自己責任だぞい
公式サイトhttp://www.adx2le.com/からSDKダウンロード
「ADX2 LE」の使用条件
• 前年度年商が1,000万円以下の会社または団体・個人であること
• コンテンツの配信元が自身であること
※販売権を自身で持ち、パブリッシャーを介さず自分でApp Storeなどに登録する。
• コンテンツの売上が1,000万円以内であること
「ADX2 LE」を使用したコンテンツ配信の条件
(コンテンツの無償/有償に関わらず)
“本コンテンツには、(株)CRI・ミドルウェアの「CRI ADX2 (TM) LE」が使用されています。”
• 著作権表記
「ADX2 LE」情報
• Facebook ADX2ユーザー助け合い所
– https://www.facebook.com/groups/adx2userj/
• Wiki サウンド助け合い所
– http://www53.atwiki.jp/soundtasukeai/
おまけ:アルファムービー演出ミドルウェア(法人向け)
Sofdec2のキーポイント
■ 動画をテクスチャとして使う
- ムービーテクスチャ を実現。動画を貼り付ける。描画はアプリの自由。
- 透過情報 を入れたアルファムービーが利用可能。 演出の幅が大きくアップ。
- 柔軟でリッチな再生機能 にも対応。
(例: シームレスループ/連結再生、複数再生、タイミング情報埋め込み)
Sofdec2 for cocos2d-x
ムービー
■ ムービースプライトクラス(サンプル)
- スプライトにムービーを貼ることができます。
- cocos2d-x ならではの、クリッピングノードやアクションの機能も利用可能。
Android版デモのダウンロード
■ アルファムービデモのAndroid版
- http://crimw.me/alphamovie
- 「提供元不明のアプリ」のインストールを許可してください。
- 容量 約23MByte
<動作環境>
ARMv7対応のCPU
CRIWARE は単なるツールではありません。
より素晴らしいゲーム制作をサポートするサービスです。
是非とも、皆様のご意見・ご要望をお聞かせください。
更に詳しい情報はhttp://www.cri-mw.co.jp/dev_app/