Upload
takaaki-ichijo
View
2.418
Download
3
Embed Size (px)
DESCRIPTION
2013年3月14日、15日に開催した「ADX2 LE」ワークショップの資料です。 http://www.adx2le.com/
Citation preview
PAGE1
ワークショップ Unity活用編 初~中級
PAGE2
株式会社CRI・ミドルウェア
PAGE3
本日のアジェンダ
•
CRI・ミドルウェアの自己紹介
•
「ADX2 LE」とは?なにができるの?
•
ツールの紹介
•
ゲームに音をつけてみよう!ワークショップ
•
自由時間
PAGE4
CRI・ミドルウェアの自己紹介
■■
映像・音声専門映像・音声専門ののミドルウェアミドルウェアを開発会社に提供。を開発会社に提供。-
ADX2
: オーディオ統合ソリューション-
Sofdec2
: 動画再生ミドルウェア。複数同時再生、透過、半透明ムービーなど。-
ファイルマジックPRO
: ファイル読み込み。圧縮/パッキング。ネットワーク対応。and more⋯
ミドルウェア採用累計:2,550タイトル!(2013/2/28現在)
PAGE5
とは?
・サウンドミドルウェアです。
サウンドオーサリングツール
ランタイムライブラリ(Unity用)が含まれています。
•
個人、学生のインディーズゲーム開発者
•
ゲームジャムやハッカソンなど、開発系のイベント参加者
•
若手サウンドプログラマー、サウンドデザイナーの育成目的
•
独立系サウンドスタジオや、フリーランスのサウンド制作者
に向けてつくりました。
PAGE6
ADX2 LEのサウンドオーサリングツール
• 「CRI Atom Craft」 は、波形を登録し音を管理するツール。
• 音リクエスト(プログラムからのコール)をキューと呼びます。
• 複数キューをパッキングしたものをキューシートとよび、
キューシートをACBというパックファイルに出力します。
元波形波形エディタ
キューシート
ACB
CRI Atom Craft
PAGE7
音素材の配置ボリュームやピッチの
変化をグラフで加工
エフェクトを設定
キュー
キューの中身
PAGE8
「ADX2 LE」ってなにができるの?
• 全ての開発環境サウンドの加工1.
波形を非破壊で編集、エフェクトの組み合わせが簡単に作れる。
2.
エフェクト適用をタイムラインにそってグラフィカルに編集できる。
• Unity Pro環境でランタイムライブラリを使用サウンドの圧縮が可能
独自フォーマットで高音質、低負荷再生、1/16圧縮。動的にサウンドエフェクトを使用することが可能1.
ピッチチェンジ、リバーブなど各種エフェクト
2.
複数音をタイムライン上に配置して再生
本日はコチラ!
PAGE9
「ADX2 LE」+Unity を使ってゲームに音をつける手順
1.
音素材を準備
2.
Atom Craftで音の鳴り方を設定
3.
UnityでADX2 LEから出力したパックファイルを読込み
4.
スクリプトで呼び出し or GameObjectに貼り付け
5.
「インゲームプレビュー」機能で細かい音の調整
6.
完成!
今日は2と5を体験
PAGE10
「インゲームプレビュー」とは?
ツール側で音を加工、編集した結果を「実行中」のゲームに送信し、音の鳴り方をリアルタイムに調整する技術です。
ゲームを中断させる事なく音の加工を反映させる事ができるため、非常に細かい微調整が可能です。
インゲーム接続
PAGE11
インゲームプレビュー概念図
③リアルタイムで音を調整
④調整結果をパック
ファイルに出力
ACBACF
⑤パックファイルを
更新して調整結果を
反映
①Unityエディタ上でプレビュー実行
またはexeに出力したものを実行
(いずれか片方)
②「インゲームプレビュー」機能で接続
PAGE12
• まず説明、その後作業時間を設けます。
• ツールの操作はだいたいあっていればOK パラメータの細かい点を真似る必要はありません。
もし時間が余った時は他のパラメータなどいろいろ弄って みてください。
• 不明な点がありましたら、まわりにいるサポートの人に手 を上げてお知らせください。
ワークショップの進め方
PAGE13
ワークショップで使用するサウンド素材について
• 波形編集、収録などは時間がかかるため、あらかじめ用意しました。
• 本ワークショップでは波形を指定して進行しますが、 もちろん、違う波形を選んで開発する事もできます。
PAGE14
ワークショップのもくじ
1.
ワークショップで使うゲームを紹介
2.
CRI Atom Craftを起動&プロジェクトを開く
3.
バンパーに音をつける
4.
音の鳴り方を調整
5.
設定した音をゲームに反映
6.
状況に応じて変化する音の設計
パート1
7.
状況に応じて変化する音の設計
パート2
8.
ひとつのキューで複数の音を順番に鳴らす
9.
BGMのダッキング(REACT)
PAGE15
1.ワークショップで使うゲームを紹介
PAGE16
「ピンボールゲーム」風デモ
を使います。
初めからプログラム内に「音の呼び出し」
命令が仕込まれています。
「ADX2 LE」を使って、
あとから音をつけていきます。
ゲームは事前に用意しました
ちょっとネコっぽいデス
PAGE17
ピンボールデモの操作①
• 【Click to Start】ボタンで ゲーム開始。
• 15秒くらい放置していても 自動で開始します。
マウスクリックすると ボールの位置を
クリックした位置に移動 ます。
デバッグモードみたいな状態です。
PAGE18
ピンボールデモの操作②
【Stopper】をチェック
すると穴がふさがります。
【Pause/Resume】
でポーズできます。
【Game Speed】
ゲーム速度が変化します。
遅くするとデバッグしや
すいです。
■CAUTION■
【Multi Ball】
ボールが直ちに分裂四散し
ます。(お遊び機能)
今回は触らないように。
PAGE19
デモを起動して触ってみよう
「アクセスを許可」して下さい。やってみよう!
デスクトップのPinball.exeをダブルクリック
ひととおり触ったら、
Pauseしておきましょう。
PAGE20
2.CRI Atom Craftを起動
&プロジェクトを開く
PAGE21
CRI Atom Craftのプロジェクトを開く
「ブロックを解除」して下さい。 やってみよう!
デスクトップのPinball.atmprojをダブルクリック
PAGE22
空のキューを用意しています
作業を簡略化するため、あらかじめ以下のキューを用意しています。
これらがゲームから呼び出される音の「1単位」です。
PAGE23
3.バンパーに音をつける
これ
PAGE24
原音確認(wav再生)
マテリアル(.wav)を選択し 【F3キー】で
元波形(wav)再生 【F4キー】で
停止します。
Windows標準の機能で再生されます。
PAGE25
バンパーの音をつける①
ボールがバンパーに当たって跳ね返す時に、スクリプトでは【Bumper】キューが呼ばれます。
ツリーから【Bumper】のキューを 選択します。
PAGE26
バンパーの音をつける②
マテリアルから 【bullet1.wav】を選択し
【Bumper】キューへドロップします。
【Bumper】キューに波形が登録されます。
PAGE27
間違えて違うキューとかに ドロップしてしまったら、 【Ctr+Zキー】でUndoできます。
もし間違えたら...
間違えたら Undoすると...
キューの左側の三角が 消える
このボタンでもUndo できます。
PAGE28
ツール画面上部のボタンでも操作できます。
キューのプレビュー
この場合は、CRI Atomランタイムで 圧縮音声が再生されています。
すなわち、ゲーム中で再生される音と全く一緒。
やってみよう!
【キューを選択】し、音を出して確認できます。
【F5キー】を押すと一回エンコードした後、音が鳴ります。
【F6キー】で停止。
PAGE29
4.音の鳴り方を調整
PAGE30
バンパーの音量調整
少しうるさいのでボリュームを下げます。
PAGE31
【F5キー】を【連打】すると音が【多重で再生】されます。
F5キー連打で多重再生
Voicesで発音数が確認できます。
PAGE32
バンパーの発音数制御
【キューを選択】し【キューリミット】のチェックボックスをチェックします。
•
リミットをかける事で、無駄な発音を軽減できます。
•
ゲームでのメモリ消費、CPU負荷削減。音量増加による音割れを抑制。
やってみよう!
ここまで出来たら、
プロジェクトを上書き保存しましょう。
こまめな保存がだいじです。
PAGE33
5.設定した音をゲームに反映
PAGE34
インゲームプレビューの開始
【F10キー】を押す
または、【プレビューメニュー】から【インゲームプレビューの開始】を選択
PAGE35
インゲーム接続に成功すると
バンパーに音がつき、玉があたると音が鳴ります。
【Pause】している場合は解除します。
PAGE36
インゲームのまま波形追加
• 試しにインゲーム中のまま【Paddle】キューに【rim.wav】を追加してみ
ましょう。• データの反映には時間がかかる場合があります。数秒~10秒程。F10キー
で強制再転送します。
やってみよう!
パドル
PAGE37
インゲームプレビューの解除と自動転送
Ctrl+F10キーを押してインゲームプレビューを解除できます。プレビューウィンドウのボタンでも停止できます。
解除してもゲームは動き続けていますので、ゲームの【Pause】を押して音を止めます。
押すと停止
やってみよう!
このチェックをはずします。
変更を自動転送してくれる便利
機能ですが、本日は使いません。
PAGE38
6.状況に応じて変化する音の設計
パート1
・ボール速度に応じて音が変わる
PAGE39
ボールの音をつける
【Ball】キューに貼り付けます
マテリアルから【Tan.wav】を選択し
PAGE40
ボールの発音数
【キューリミット】のチェックボックスをチェックします。
リミットをかける事で、無駄な発音数を軽減できます。
ゲームでのメモリ消費、CPU負荷削減。音量増加による音割れを抑制するこ
とに繋がります。大事なことなのでもう一度書きました。
やってみよう!
PAGE41
ボールの速度によって音程を変えてみる
•
物理的にはおかしいですが、わかりやすい演出として
【速くぶつかる】音程が高くなる【ゆっくりぶつかる】音程が低くなる
•
AISAC機能を使って設定します。
PAGE42
AISACとは
•
キューやトラックに対して条件による音の変化を設定できる
距離に応じた音の減衰、残響音車の速度に応じたエンジン音の変化
•
変化具合をグラフで設定できる
動的に変化する音を、直感的に構築できる!
スクリプトからこのキューを鳴らすとき、0.0~1.0のパラメータを指定。
PAGE43
【トラック】の上で右クリックし、 【AISACの追加...】を選択
AISACの追加
【トラック】を選択します。
【AISACの追加】ダイアログで 【ピッチ】に変更し
【追加】ボタンを押します。
PAGE44
ボールの音程が変化するように
【右肩上がり】の【グラフ】にします。
やってみよう!
グラフが出来たら「AISACコントロール値」のバーを
左右に動かしながらF5キーでプレビューしてみましょう。
PAGE45
AISAC値について
ボールがぶつかった速度に応じて
AISAC値を変えるスクリプトをあ
らかじめ組んでいます。
ボールがぶつかった時、スクリプ
トから指定されるAISAC値はここ
で確認できます。
PAGE46
変化に【メリハリ】を付けるため、【階段状】にします。
特定の音のみに限定する
【プロパティリスト】で【数値編集】もできます。
ここで、インゲーム接続で確認すると
ボールの音がゲームに転送され、【ピッチ】が変化するようになります。
確認したら、インゲームを停止して
ゲームもPauseしておきましょう。やってみよう!
PAGE47
7.状況に応じて変化する音の設計
パート2・複数の音素材をひとつのキューで鳴らす
・エフェクトをかけてみる
PAGE48
ターゲットの音をつける
ここに当たった時の音をつけます。
ツリーから【HitTarget】の
キューを選択します。
PAGE49
ターゲットの音をつける
マテリアルから 【hajiku.wav】を選択し
【HitTarget】キューへドロ ップします。
キューを選択し 登録されているのを確認
PAGE50
ターゲットの発音数
【キューリミット】のチェックボックスをチェックします。
•
リミットをかける事で、無駄な発音数を軽減できます。
•
大事なことなので(15分ぶり3回目)
•
今回の音は【長めの音】なので、【3音のリミット】にしてみました。
やってみよう!
PAGE51
ピッチをランダム化
• ピッチをランダムにするには・・・
【Track_hajiku】を選択
【FX1】を選択【ピッチ】を
【縦方向】にドラッグ してランダム化
PAGE52
ローパスフィルタを選択
【 Track_hajiku
】を選択
【FX2】を選択
【バイクアッドフィルタ】の
種類を【ローパス】に変更
PAGE53
ローパスフィルタのランダム
【バイクアッドフィルタ】を 【ローパス】に変更します。
【Cof】を左くらいの設定に変 更します。
【Q】を高めにします。
やってみよう!
PAGE54
トラックを複製する
【Track_hajiku】を選択 したまま・・・
【Ctr+R】で複製
片方の【波形】を 【ドラッグ】して 再生位置をずらす
PAGE55
余韻をエフェクトで延ばす
【HitTarget】を選択し・・・
【FX1】を選択
【バスセンド1】リバーブが掛かります。
【バスセンド2】エコーが掛かります。やってみよう!
PAGE56
8.ひとつのキューで複数の音を順番に鳴らす
PAGE57
ボールロストの音をつける
ここを抜けて【ボールロスト】 した時の音をつけます。
ツリーから【BallLost】のキューを 選択します。
PAGE58
ボールロストの音をつける
マテリアルから 【yarare】フォルダ以下の
4つのwavを選択し
【BallLost】キューへ ドロップ
PAGE59
ボールロストの音をつける
ひとつのキューに
複数の音を貼り付けることができます。
スクリプト的にはキュー1音の呼び出しで、
内部的には複数音を任意のタイミングで鳴
らす・・・ということができます。
今回は
「呼び出されるたびに、順番に鳴らす」
という仕込みをします。
PAGE60
タイプを【シーケンシャル】に変更
【シーケンシャル】
に変更します。
キューの【タイプ】を
【ポリフォニック】から
やってみよう!「インゲームプレビュー」で確認します。
PAGE61
9.BGMのダッキング(REACT)
PAGE62
• キューを【カテゴリ】に割り当てる事で、
【カテゴリ】によるキューのコントロールを可能にするものです。
• プログラマが【キューの内容】を知らなくても【カテゴリ】という大まかな
要素で【ボリューム調整】や、【リミット数】指定ができます。
REACTとは
今回は3種類にカテゴリわけしてあります。
このカテゴリを使って、BallLostが再生された
ときに、BGMの音量を落として
「セリフがはっきり聞こえるように」します。
PAGE63
まず、BGMをつける
マテリアルから 【beat0.wav】を選択し
「リループ有効フラグ」を【True】に変えます。波形を強制ループさせます。
ちなみにループは任意のポイントによるループや、イントロつきループも出来ます。
【BGM】キューにbeat0.wavをドロップし
この時点でインゲームプレビューしてみます。
やってみよう!
PAGE64
カテゴリを確認
あらかじめ設定してあるカテゴリを確認キューシート
【PinballMain】 を選択
【BallLost】 が【Serif】カテゴリ
BGMは 【BGM】カテゴリ
になっています。
カテゴリ分けは好きな名前に設定することもできます。
PAGE65
REACT設定①
【変化時間】100msec
【戻り時間】300msec
と調整すると
変化のかかり方が変わります。
【REACT】から
【React_SerifOther】を選択
変化のカーブが変わる
PAGE66
REACT設定②
【BGM】カテゴリを【Serif】再生時に変化させます。
【ボリューム】が【0.25】になるように設定されています。
変化パラメータは
【ボリュームレベル】
【変化レベル値】が【0.25】
【BGM】に設定
【Serif】に設定
PAGE67
REACTを試してみる
やってみよう!
【BGM】をクリックしてF5で
プレビュー再生再生しっぱな
しにして
【BallLost】をクリッ
クしてF5
さらに、インゲームプレビューを再接続して
ゲームに反映させて確かめてみる。
PAGE68
自由時間とQ&A
•
いろいろなパラメータを加えてみようエコーやリバーブをかけてみよう
•
別の波形をあててみよう
たとえば:Ballに「uwa.wav」をあてて、ピッチを下げて、すごいエコーをかけると・・・
PAGE69
本日は以上です。
• 質問や疑問点Facebook「ADX2ユーザー助け合い所」
Twitter 彼をフォロー!→
• 作ったアプリやゲームを「配信・販売」したい場合条件等は「ADX2 LE」公式サイトにて。http://www.adx2le.com/copyright.html
• 3月以降の予定各種イベント出展も計画中・・・
PAGE70
今日のデモ、実はSDKに入っています。
cri¥unity¥samples¥criatom¥script¥Unity3Project¥GameSample_Pinball
に入っています。色々触ってみて下さい。
(※収録されているサウンドやポリゴンデータはフリー素材ではありません。)
PAGE71
エクストラステージ1BGMをインタラクティブ化
PAGE72
• 音を追加する。
• BGMを変化(遷移)させてみる。
• 遷移変化をはっきりさせる。
BGMをインタラクティブ化?
BGMがゲームの状況に合わせて、 自然に変化するようにしてみます。
今回は、ボールがロストすると変化するようにします。
「ブロック再生」機能を使います。
PAGE73
• キューを縦方向のブロック(楽章、小節、フレーズ)に分割します。• ブロックの遷移は、ブロックの終端や、ブロックの分割位置から遷移し
ます。
• プログラムの即時反応ではなく、ブロックが切り替わるタイミングをデ ータ側に持たせる事ができます。
• 再生時刻や繋がる音の再生タイミングなどは「ADX2 LE」側で制御する ので、プログラムで細かい指定をせずに綺麗に連結再生ができます。
• さらに、遷移する時だけ鳴るトラックや、遷移時初回のみ再生するトラ ックを指定できます。
ブロック再生とは
PAGE74
波形を【ループ】から【ワンショット】に
【bgm0.wav】を選択
【リループタイプ】を【ループ】
【リループ設定の有効フラグ】
【True】
にします。
ブロック再生には、ループ波形は相性が悪いです。
→【ブロックでループ】するため、ループ波形が多重リクエストされてしまう。ワンショットに変更します。
PAGE75
BGMをブロック化
キューの右横の余白を【右クリック】し、
【ブロックを作成】を選択します。
【ブロック】が追加されます。
PAGE76
ブロックをループに変更
【タイムライン上】で
【ブロック】を
【右クリック】し
【プロパティリスト】を表示
【ブロック】を選択し
【ブロックループ回数】を
【-1】に指定。
PAGE77
ブロックを追加
【beat0.wav】を【BGM】キュー にドロップします。
【Block...】が追加されます。
選択しループ回数を-1にします。
PAGE78
• ボールロストするとブロックが切り替わります。• 変化が【ブロックエンド】だと【反応が悪い】ので、より細か
い単位【指定分割】で遷移するように変更します。
ブロックの遷移を変更
【ブロック分割数】を【4】に【ブロック遷移タイプ】
を【指定分割で】
PAGE79
ブロックの遷移を変更
【ブロック】に【区切り線】が追加されました。
この【タイミング】でも遷移するように変化しました。
PAGE80
ブロックの切り替わりを派手に
【ブロック】が【切り替わる時のみ】 【ドラムのフィルイン】が鳴るようにしてみ
ましょう。
【drumfill.wav】を追加しま す。
それぞれブロックの区切り前に設定
PAGE81
ブロックの切り替わりを派手に
【トラック】の【ブロック遷移発音タイプ】を 【遷移時発音】に
これで、遷移時のみドラムが鳴ります。
PAGE82
ブロック再生をもっと知りたい
• 【もっと凝ったデータ】を知りたい場合は 【おまけ】の章を参考
• YouTubeで「adx2 ブロック再生」と検索• 【ヘルプ】メニューから【デモのダウンロード】
PAGE83
BGMのブロック再生
再生して【ブロック】を 選択で切り替わります。
遷移時のみ
遷移初回時 のみ再生
PAGE84
DSPバス設定のパラメータ
他のエフェクタを追加して みたり
【DSPバス設定】から 【DspBusSetting_0】を選択
PAGE85
エクストラステージ2調整結果をビルドしてアプリに入れる
PAGE86
アプリに変更を反映
CRI Atom Craftでビルドしたデータ(acf,acb)を C:/Pinball_workshop/Pinball_Data/StreamingAssets
以下にコピーします。
PinballMainが選択されている事を確
認。
この場所のPublic/以下データ
(acf,acb)が出力されます。
なお、Public/inGamePreview/以下の
データ(acf,acb)を使う事でインゲームプ
レビューが可能なデータとなります。
「デフォルトパス」を押す事で
プロジェクト直下に出力されます。