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

8,998
-1

Published on

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

Published in: Technology
0 Comments
15 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
8,998
On Slideshare
0
From Embeds
0
Number of Embeds
23
Actions
Shares
0
Downloads
28
Comments
0
Likes
15
Embeds 0
No embeds

No notes for slide

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

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

    Clipping is a handy way to collect important slides you want to go back to later.

×