「ADX2 LE」Unity プラグイン クイック導入ガイド
-
Upload
takaaki-ichijo -
Category
Technology
-
view
7.363 -
download
48
description
Transcript of 「ADX2 LE」Unity プラグイン クイック導入ガイド
1
Unity Proプラグイン
クイック導入ガイド
CRI・ミドルウェア
一條貴彰
2013/08/26
Ver
1.2
2
「ADX2 LE」とは
• 個人のインディーゲーム開発、ゲームジャム– 無償で利用可能(有料アプリに使ってもOK)– アプリ販売の売上1,000万円以下まで
•
学生、専門学校生– 授業での教材利用は無償、作品配布もOK
• 法人– 前年度年商が1,000万円以下なら無償– それ以上は「ADX2」の評価目的のみで試用可
公式サイトhttp://www.adx2le.com/からSDKダウンロード
3
「ADX2 LE」導入メリット
• 音声圧縮&再生負荷を軽減– mp3/Ogg同等クオリティながら、多重再生時に重くならない
独自コーデック。(wavを使わなくて済む)– イントロ付きループBGMが使える。(任意ポイントでのループ)
• ツールによるサウンド演出設計– 大量音声のハンドリングがラクに。– サウンド担当がコードを触らずに音量の調節ができる。– サウンド演出の開発が簡単に。
• ゲームでよくある再生制御は実装済み。
サウンド周りのコーディング量が大幅に減ります。
音質アップとアプリ容量削減が両立できます。
4
「ADX2 LE」で設定できるサウンド制御
•
ボリューム制御‒
音ごとのボリューム制御‒
曲・効果音・ボイスをカテゴリ分 けして、一括ボリューム管理
•
再生制御‒
再生優先順位‒
効果音の後発優先、先発優先‒
同時発音数の制御‒
ランダム再生
•
DSP‒
ピッチシフト‒
リバーブやエコーなどエフェクト– パンニングや距離減衰など3D効果
• 曲の再生制御‒
曲と環境音の同時再生(2曲の同時ループ)
‒
曲の途中ループ– 曲の途中停止・途中から再生
•
フェードイン、フェードアウト‒
フェードの長さ調整‒
クロスフェード‒
カテゴリをトリガにした自動音量ダッキング「REACT」
これは一例でス。便利な機能
はまだまだありまス!
5
「ADX2 LE」ができないこと
• プラグイン利用はUnity Proが必要Native codeで書かれたライブラリから関数を呼び出す機能がUnity Pro Onlyのため。iOS/Android側はBasicで動作可能(法人はライセンス制限により不可)。
“デスクトッププラットフォームでは、プラグインはProのみの機能です。セキュリティ上 の理由から、プラグインはwebplayersで使うことはできません。(翻訳)”
– Unity公式の「Plugins
(Pro/Mobile-Only Feature)」より http://docs.unity3d.com/Documentation/Manual/Plugins.html
• webplayer出力に非対応(同上参照)
• Unity Proを持っていない場合の活用方法があります。「ADX2 LE」
は、Unity Proをお持ちで無い方でもwav出力機能を使って”効果音の作成ツール”として活用いただけます。資料:自力でゲームのSEを生成する方法
by 「ADX2 LE」http://www.slideshare.net/takaakiichijo/adx2-le-21311331
6
スマートフォンのサウンド事情
• iOS/Androidデフォルトで使えるサウンドファイル
‒
mp3 / Ogg• 圧縮率が良い
• 再生処理が重いため、たくさんは同時に鳴らせない
• 一般的なコーデックなので、データが抜かれやすい
– wave / CoreAudio
IM4(ADPCM)• 再生が軽い
• ファイルが大きいため、メモリが不足
アプリ容量も肥大化する。
7
現状の手法
• アプリでよくある組み合わせ– BGM:mp3
• 処理が重いので1本再生のみ
• iOSならハードウェアで処理してくれるが、Androidは無い場合も
– 効果音とボイス:wave またはCoreAudio
IM4(ADPCM)• サンプリングレート(≒品質)を落として少しでもサイズを小さくする
•
このやり方は限界が…‒
Wavは無理に小さくすると、音質が酷いことに
– しかし、ボイスデータは今後増える一方。
8
_人人人人人人人_ > <
> <
> < ‾Y^Y^Y^Y^Y^Y‾
困った!
( ˘⊖˘) 。o(圧縮できて、かつ再生が軽くならんもんか)
| CRI | ┗(☋` )┓三
( ◠‿◠
)☛「HCA-MX」
9
ADX2 LEのHCA / HCA-MX
• ファイルサイズを軽量化– 「HCA」コーデックによる圧縮
• 音質を保ちつつ、1/16に圧縮。 (サンプリングレート32kHzの場合)
• 再生負荷を軽量化– 「HCA-MX」によるCPU負荷軽減
• 音質はHCAと同一、エフェクトの利用に制限あり
– iPhone
4Sで16音同時再生→CPU負荷10%以下
• 独自コーデックによる音声ファイルの保護効果– PC上のサウンドプレイヤーでは再生できません。– 「ADX2 LE」で出力したデータは「ADX2 LE」で聞けてしまいますが。。。
10
「ADX2 LE」セット内容
• サウンドツール「CRI Atom Craft」– ゲーム内での音の鳴り方を管理・設定するツール
– 各種設定の結果をwavファイルとして出力することも可能
• Unityプラグイン•
サウンド演出の実装がラクに
•
インタラクティブな音作り
• サウンド圧縮コーデック「HCA」
• 動的なサウンドエフェクト適用– ピッチチェンジ、リバーブなど各種エフェクト
– 複数音をタイムライン上に配置して再生
11
Unityプラグイン利用イメージ
1.
「CRI Atom Craft」上でファイル登録、圧縮や音の鳴り方を設定
2.
CRI形式のパックファイルにビルドしてUnityにインポート
3.
Unity上でオブジェクト貼り付けor スクリプトから再生
4.
Unityエディタ上でゲームを動作させながら、音の鳴り方をツールで調整
5.
調整済みデータのパックファイルを再びインポートして、完成!
12
ADX2 LEのセットアップ
13
「ADX2 LE」のダウンロード
http://www.adx2le.com/
14
「ADX2 LE」のインストール
• インストールと言いつつ手動– ダウンロードしたzipファイルを展開。
– criフォルダをC://直下に置く。
(パス名に日本語が含まれていると、正しく動作しない場合があります。)
CRI Atom Craft を起動
15
プロジェクトとは
•
Atom Craft管理ファイルの単位‒
1ゲーム(アプリ)に対して1プロジェクト作成
•
プロジェクトの中身‒
音(キュー)の設定情報
‒
音素材(マテリアル)のリスト
‒
ツールの全体的な設定
UnityやIDE等の「プロジェクト」と同じ
16
CRI Atom Craft を起動
17
音素材を時系列に並べる
ボリュームやピッチの
変化などグラフで加工
エフェクトの設定
キュー(音の単位)
キューの中身CRI Atom Craftのツール構成
18
プロジェクト新規作成
19
プロジェクト名をつける
「ディレクトリを新規で作りますか?」という表示が出たら
OKして作ってください。
20
プロジェクトの全体設定
• ADX2 LE内部のコーデックに「HCA」を指定します。•「HCA」はエフェクトに強く、高音質なコーデックです。
•「HCA-MX」は同時再生の負荷が低いコーデックです。
(ピッチ変更など音個別のエフェクトは使えません。)
•「ADX」は再生負荷が低いコーデックです。
21
プロジェクトを保存
22
今回使うwave素材のダウンロード
CRI Atom Craft のメニューから、 素材の置き場所を開いてダウン
ロードできます。
Zipファイルをダウンロードしたら、
任意の場所に解凍しておいてくだ さい。
23
波形をキューシートへドロップ
PCのセキュリティレベルの関係でデスクトップからのD&Dがうまくいかない場合は適宜変更して下さい。
成功するとCueSheet_0の下にキューが複数できます。
ダウンロードしたchiptuneを解凍して、
Atom Craftに登録。
チュートリアルですが、本番用のサウンド素材を
いきなり入れていただいてもOKです。aiff/waveが使えます。
24
「キュー」とは
• Unityで呼び出す音の単位– 複数の波形、再生タイミング情報
– ピッチやボリューム、フィルタのパラメータ情報
– パンニングやランダマイズの設定情報
オレンジ色の玉が 「キュー」
この名前をUnity上 で呼び出して鳴らす。
キューの中身
25
キューのプレビュー(再生)
またはF5キーで再生、F6キーで停止
①キューを選択
②再生ボタン
26
警告が出たら
セキュリティ関連のダイアログが出た時は
「ブロックを解除する」を選択してください。
プレビューでアプリケーション間の通信処理を行うため、ブロック を解除する必要があります。
27
データをパックファイルにビルド
「CueSheet_0」を選択して、
「Atomキューシートバイナリ のビルド」をクリック
ウィンドウが出たら、
「インゲームプレビュー用バ イナリ出力」と
「Unity情報出力」のチェック を入れて
「ビルド」をクリック
28
出力したパックファイルの確認
「CueSheet_0」の上で右クリック
「Atomキューシートバイナリをエ クスプローラで開く」をクリック
29
出力されたデータの確認
圧縮されたサウンドデータの パックファイルが出力されます。
あとで、Unityプラグイン側か らAssetsフォルダにインポート します。
このファイルを作った段階です。
30
Unityプラグイン導入
31
プラグインをインストールする
Unityを起動して、Assets右クリックから Import Package→Custom Package
Unityプラグインのパッケージは cri/unity/pluginにあります。
32
プラグイン導入完了
•
Assets下に3つのフォルダがインポートされます
• メニューに「CRI」が追加されます
33
標準サウンドシステムをオフにする
Unity 4.2以降の場合は標準サウンドオフのオプションがあります。
Project SettingsのAudioインスペクタでDisable Audioにチェックを入れます。
必須ではありませんが、推奨設定です。
34
•
CRI Atom Windowを開く
• Select Assets Rootをクリック
• Update Assets of CRI Atom Craftをクリック– 以後、バイナリを出力したら都度ここでインポートする。
パックファイルを指定してインポート
先ほど出力したフォルダ群 の中のAssetsフォルダを選択
さきほどAtom Craftから出力したパックファイルを
ADX2 LEプラグインに読み込ませます。
35
インポート完了
ツールから出力したバイナリの キュー一覧が表示されます。
StreamingAssetsフォルダが
作成されます。
他にもACFファイル(プロジェクト名.acf)とCriAtomProjInfo_Unity.csが追加されています。
36
音の鳴らし方①
オブジェクトに貼り付け
37
Unityで音を再生する準備
•
Initializerを追加‒
ADX2の初期化処理を行うためのオブジェクト
Criate
CRIWARE Library Initializerをクリック
CriWareLibraryInitializerオブジェクトが出来ます。
ランタイムライブラリの設定で発音数、インゲームプレビュー設定、サーバー周期(FPS)など設定できます。
38
とりあえず音が鳴るオブジェクトを設置
CriWareLibraryInitializerの子になら ないように、ヒエラルキーの空白を クリックしてから
キュー一覧から「orchehit」を選び、
「Crate Game Object」をクリック
このように2つオブジェクトが出来ます。
39
音を鳴らす!
orchehitオブジェクトのCri Atom Sourceスクリプトで「Play On Start」にチェックを入れます。
Unityのプレビューを押すと、音が鳴ります。
40
特定オブジェクトに音を貼り付け
ヒエラルキーから貼り付けたい
オブジェクトを選んで、
「Add Component」をクリック。
同じように「Play On Start」に
チェックを入れてプレビューすると
再生されます。
41
音の鳴らし方②
スクリプトで再生&同時発音数制御
42
キーを押すと音が鳴るスクリプト
public class PlaySoundWithKey
: MonoBehaviour
{
private CriAtomSource
atomSource;
void Start () {//CriAtomSourceコンポーネントを取得atomSource
= GetComponent<CriAtomSource>();
}
void Update () {//スペースキー入力で再生if (Input.GetKey(KeyCode.Space)){atomSource.Play();
}}
}
このスクリプトを、
Cri Atom Sourceを含む
オブジェクトに貼り付け ます。
「Play on start」をオフ にして、プレビュー実行 してスペースキーを押す と音が鳴ります。
ただし、これでスペース キーを押し続けると
連続で音が鳴りっぱなし になります。
43
同時発音数の制御
Atom Craft に戻り、鳴らす音(今回はorchehit)のキューを選択、
キュー情報の「キューリミット」にチェックを入れ、タイプを「先着優先」にします。
このときキューのプレビュー(F5)を連打すると、
同時に最大1音しか鳴らなくなったことがわかります。
44
パックファイルの再ビルド
Atom Craftで設定を変更したら、メニューから「ビルド」→「Atomキューシートバイナリのビルド」を選び、「ビルド」をクリック。パックファイルが再び出力されます。
Unityに戻り、CRI Atom windowの「Update Assets of “CRI Atom Craft”」をクリックします。
この状態でUnityのプレビューを実行、スペースを押しつづけても最大1音しか鳴りません。
45
SoundManagerクラスで集中管理
public class SoundManager
: MonoBehaviour
{
private string cueSheetName
= "CueSheet_0";private CriAtomSource
atomSourceSe;
//効果音用private CriAtomSource
atomSourceBgm;
//BGM用
void Start () {atomSourceSe
= gameObject.AddComponent<CriAtomSource> ();atomSourceSe.cueSheet
= cueSheetName;
atomSourceBgm
= gameObject.AddComponent<CriAtomSource> ();atomSourceSBgm.cueSheet
= cueSheetName;}
public void PlaySe(string
cueName, float volume){
atomSourceSe.volume
= volume;atomSourceSe.Play(cueName);
}}
オブジェクトごとにAtom Sourceを貼り付けるより、SoundManagerクラスを 作り、このクラス経由でゲーム全体の音を鳴らすようにすると管理が楽です。
※超単純な例
46
HCA-MXの利用
47
HCA-MXコーデックの特長
•
音を同時再生する際のCPU負荷が軽くなります。
•
セリフや効果音など、従来wavやADPCMで鳴らしていた素材も圧縮 できるようになり、アプリ容量とメモリ使用量が節約できます。
•
制限事項‒
HCA-MXでは音ごとのピッチ変更、フィルタ変更などができません。
‒
サンプリングレートを統一する必要があります。(デフォルトは32KHz)
HCAを16音再生 HCA-MXを16音再生(iPhone4Sで測定)
48
Atom Craft側の設定
右クリックから適当な名前のフォルダを作って、 HCA-MXエンコードする素材置き場とします。
ウェーブフォームフォルダ情報から、エンコードタ イプをHCA-MXにします。すると、フォルダ内の
データは全てHCA-MX設定になります。
エンコード品質はお好みで。
せっかくなので「最高圧縮」に してみましょう。
ツール上でキューをプレビュー すれば、実際のエンコード結果 が聞けます。
49
パックファイルの再ビルド
Atom Craftで設定を変更したら、
メニューから「ビルド」→
「Atomキューシートバイナリのビルド」
を選び、「ビルド」をクリック。
パックファイルが再び出力されます。
Unityに戻り、CRI Atom windowの
「Update Assets of “CRI Atom Craft”」
をクリックします。
50
CriWareLibraryInitializerの設定
CriWareLibraryInitializerインスペクタ内のSampling RateをHCA-MXデフォルトの32000Hzに設定。
HCA-MXのVoice Poolを、とりあえずMemory 8音に 設定。
これで鳴るようになります。
残念ながらUnity標準のプロファイラーにはADX2 LE の音声負荷情報が現れませんので、
負荷測定は実機でのFPS値やCPUの負荷を調べて下さ い。
51
3Dポジショニング
52
3Dポジショニング設定
•
Unity標準サウンドの「3D Sound」にあたる機能。– 距離や位置に応じてボリュームが変わる。
• ADX2 LEプラグイン使用時の「3Dポジショニング」– サウンド素材を3D設定にして、Unity内のカメラ位置にサウンド
リスナーをセットする仕組みは同じ。
– 3D設定はCri Atom Craft側で行い、リスナーはUnity内で 「Audio Listener」の代わりに「CriAtomListener」を付ける。
53
Atom Craft側の設定①
3Dポジショニング設定するキューのウェーブフォーム(波形)を選択ウェーブフォームの「パンタイプ」で「3Dポジショニング」を選ぶ
波形をクリッ クして選択
54
Atom Craft側の設定②
キューを選択してから「減衰距離」の「最小」、「最大」を設定する (最小:1~10くらい、最大:10~300くらい、単位:メートル)
キュー選択
55
Unity側の設定
CriAtomListenerコンポーネントをMain Cameraに貼り付ける
パックファイルを再ビルド&再読み込みして
任意の位置にCri Atom Sourceオブジェクトを配置すれば完成!
56
その他参考情報
57
使用条件
•
前年度年商が1,000万円以下の会社または団体・個人であること
•
コンテンツの配信元が自身であること※販売権を自身で持ち、パブリッシャーを介さず自分でApp Storeなどに登録する。
•
コンテンツの売上が1,000万円以内であること※1,000万円を超えた場合は「ADX2」ライセンスに移行いただきます。
•
著作権表記が必要です。ストア上の説明文への表記です。詳しくは「ADX2 LE」公式サイトをご覧下さい。
「ADX2 LE」を使用したコンテンツ配信の条件(コンテンツの無償/有償に関わらず)
上記にあてはまらない法人の方は「ADX2」採用の評価目的として社内での性能評価・プロトタイプ開発等にご利用いただけます。
58
• 「ADX2」ツールの更に詳しい情報– 「CRI ADX2で作るゲームサウンド制作ガイド」
詳細なチュートリアルと
充実したツールリファレンス。
ツールを使った超即戦力級の
ゲームサウンド書籍決定版!
「ADX2 LE」についての情報
59
その他のツール利用方法
資料:自力でゲームのSEを生成する方法
by 「ADX2 LE」
http://www.slideshare.net/takaakiichijo/adx2-le-21311331
– ここで紹介している各種設定はそのまま使えます。
‒
Unityプラグインを使っている状態なら、バウンスせずに
さきほどと同じ手順でビルドすればそのまま鳴らせます。
‒
「バウンス」は波形そのものを加工してwavに出力しますが、
プラグイン利用であれば、PCや端末上で鳴らすときに
リアルタイム処理されます。
‒
実際の波形データはひとつなので、Atom Craftの上で色々弄っ てバリエーションを作っても、音声データ量は増えません。
60
おわりに
• 質問・意見お待ちしております。– 「ADX2 LE」でこんなことがしたい、これはできないか
– こんな使い方をしてもいいですか?
などなど何でも
Facebook「ADX2ユーザー助け合い所」
またはTwitterで彼をフォロー!→