「ADX2 LE」Unity プラグイン クイック導入ガイド

Post on 29-Jun-2015

7.363 views 48 download

description

Unity ProにADX2 LEのプラグインを導入する際の手順とチュートリアルです。 8/26追記 「3Dポジショニング」「標準サウンドシステムのオフ」 6月追記 「HCA-MXの利用」

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で彼をフォロー!→