三日でUnity上のWwiseを理解する1日目

Unityでwwiseを使う

※今回はゲームジャムで作成したゲーム「OverThere」を元に書いていきます。

ソースはこちら

github.com

 

準備段階

UnityでWwiseを使う際にはUnityにWwiseのAssetsを読み込ませる必要がある。

公式のドキュメントはこちら

www.audiokinetic.com

 

方法としてはまず最初に空のWwiseファイルを作成ておく。

次にWwise launcherにUnityのプロジェクトを登録すると、

f:id:OtObOx:20190522132542p:plain

分かりにくいがここからUnityのプロジェクトを登録できる

プロジェクトに対してWwisewiseをintegrationさせるボタンが表示され、

modify画面から各種パスを設定すれば必要なファイルが自動でダウンロードされ、

Unityのプロジェクトに対してWwiseのAssetがintegrationされる。

(少々の時間がかかる)

f:id:OtObOx:20190522132310p:plain

うまく行くとこんな感じでwwiseとUnityどちらもwwise launcherからファイルが開けるようになる。

実際にUnityを起動しWwise Pickerが使用できる状態になってたら下準備は完成。

f:id:OtObOx:20190522150141p:plain

画面左下。出ていなければUnity>windowから表示できると思う

実際に音を組み込んでいく

前提としてWwiseはゲームコールをゲーム側から受け取ってそれをきっかけにWwise側で割り当てられた音声が再生されるのでUnity側ではこのWwise用のゲームコールを出す仕組みが必要になる。

Unityの扱い方がわかっておりコンポーネントの内容が知りたい方は公式が少しだけまとめてくれているのでこちらを参照してください。

www.audiokinetic.com

ここから先はUnityに慣れてない人を前提に書いていきます。

 

※ここからはtitleシーンを用いて書いていきます。

Audio Listener

まず最初にUnityのEdit>Wwise Settings..を開く

f:id:OtObOx:20190522140056p:plain

このようなウィンドウが表示される

そして「Automatically add Listener to Main Camera」にチェックが入ってると思われるのでこれを外す

このチェックが入ってると読んで字のごとくシーン内のMain Cameraに自動的にListenerが追加される。

この設定はシーン関係なく全体の設定なので一度設定してしまえば再度設定する必要はなくなる

コンポーネントとしてはAk Audio Listenerが追加される)

f:id:OtObOx:20190522140723p:plain

これはゲーム内で発生した音をどのオブジェクトが聴くかというのを決める重要なコンポーネントで、このコンポーネントをどこに挿したか認識していない場合音声が右側に偏ったり、プロジェクトが進んでいくにつれてListnerが2ヶ所できた結果、すべての音量が倍増するなんてことにもなるので、チェックを外したほうが後々致命的なミスを避けられることになる。

他のメンバーとコンフリクトしないよう最初に設定すると安心。

 

その上でコンポーネント「Ak Audio Listener」をプレイヤーが音声を聞く位置にあるオブジェクトに挿す。(基本的にはMain Camera)

 

Ak Game obj

Ak Audio Listenerを指すと必ずAk Game Objコンポーネントが同じオブジェクトに挿される。

f:id:OtObOx:20190522142537p:plain

こんな感じ

これはWwise側でこのオブジェクトの位置を認識するために必ず必要なコンポーネントとなるのでAkなんとかコンポーネントを指すと常に付随する。

試しにAk Game Objを外そうとすると怒られるはず。

WwiseはこのAk Game Objを通してUnityとは別に独自の3D空間を作りそこでどの位置に音が鳴るかを決める。

また、どのListenerから音を鳴らすかも決めている。

 

Ak Bank

聴く場所を決めたので音が鳴るオブジェクトを用意するが、まず最初にAk Bankというコンポーネントを必ず用いらなければならない。

 

f:id:OtObOx:20190522144639p:plain



これはWwise側で作成したSoundBankを読み込むコンポーネントで、

Ak Bankが定義されていない場合、後に紹介するAk Event等で音を再生しようとしても音が見つからないと言われ音声が再生されない。

しかしAk Bankコンポーネントは、同じbankを複数のオブジェクトで読み込む、またシーン越しに同じbankを読み込むとエラーを吐くのでどれか一つのオブジェクトでAk Bankコンポーネントを設定すれば他のオブジェクトに設定する必要はない。

恐らくこの辺りはMainCameraとかに挿すのが適当ではないかと思う

Name:に該当のSoundBankを指定すればOK

Ak Event ~BGM編~

聴く位置、SoundBankを読み込んでやっと音が鳴らせる状態になったので、まずはゲームで必ずといいほど使用するBGMを付ける。

今回のゲーム内BGMはプレイヤーの位置によって音が左右にパンがずれたり距離によって減衰したりしないのでAk Eventを使う。

f:id:OtObOx:20190522145846p:plain

とってもよく使うコンポーネント

Trigger On: 
どの動作で音を鳴らすか
Action On Event: 
wwise側で設定されているパラメータの一部分をここで上書きすることができる
Use Callback: 
このAk Eventが発生した際に他のコンポーネントを作用させるときに使う。

 

Trigger On:該当のオブジェクトが表示された=ゲームが開始されたらBGMを再生されるようにしたいため、Startに設定する

この条件は複数選択することができるのでNothingを選択後、条件を指定する。

 

不備がなければUnityで該当シーンを再生した際曲が流れるはず。

※Unityで1度も再生していない場合コンポーネント内のPlayを押しても再生されない

BGMはこのオブジェクトがなくなるまで発し続けるのでシーンが変わったり何らかの作用によってオブジェクトが消されると自動的に止まる。(音の発生源がなくなる)

 

Ak Event ~効果音編~

ゲームの中では効果音も重要だ。UIのボタンを押し、音が鳴るとより"押した感"が出てユーザーをゲームの中へより引き込むことができる

UnityではButtonのコンポーネントが使われてることが多いと思うのでこれを前提に音を付けていく。

f:id:OtObOx:20190522195809p:plain

buttonのコンポーネント

まずボタンのオブジェクトにAk Eventを追加し、BGMの時と同じようにName:に鳴らしたい効果音を選択する。

次にTrigger On:だが今回はどの条件も当てはまらないのでNothingを選択する。

f:id:OtObOx:20190522200416p:plain

こんな感じ

次にButtonコンポーネントを編集する必要がある。

編集といってもC#を描く必要はなく、マウスでぽちぽちすれば出来上がる。

 

Buttonコンポーネント右下にある「+」マークをクリックし枠を増やす。

f:id:OtObOx:20190522200805p:plain

下側が新たに増えた枠。上側は別のシーンに移動するC#が選択されている

OnClick()とはつまりクリックされた際に何が起こるかを入れる場所となっている。

枠を増やした後に該当のボタンをhierarchy(Unity左側)からボタンのオブジェクトをドラックアンドドロップする。

するとグレーアウトしたNo Functionが選択できるようになったと思うので、ここから

AkEvent>AkEvent.HandleEventを選択する

f:id:OtObOx:20190522201306p:plain

これで完成

あとはUnityを再生しゲーム画面で該当のボタンをクリックした際に音声が再生されていれば実装完了。

 

ここまでできると大体の流れが把握できたと思う。

Trigger On:の条件をAkTriggerCollisionEnterにしてやれば当たり判定が発生した際に音声がされるし(ぶつかった時の音等)Destroyにすればオブジェクトが無くなった際に音声が再生されるようになる(破壊音等)

ただしこういった3Dゲーム上での効果音はAkEventではなくAkAmbientというコンポーネントを使ったほうが良いのでそちらを使おう。

※AkAmbientについては二日目に記載します。

 

まとめ。

流れとしてはdefaultListenerで聴く位置を決め、SoundBankをロードしAkEventで音声を再生する!

注意事項としては同じSoundBankを読み込まないようにすればここまでの知識だけでもUnity上でそれなりに音が鳴るようになったと思いますので、

一日目はここまで!

UnityでWwiseを使う

LudamDare44(ゲームジャム)にてWwiseを使用したので、

自分の確認のためにも書いていきます。

 

完成したゲームはこちら

https://ldjam.com/events/ludum-dare/44/over-there

f:id:OtObOx:20190430163436p:plain

ゲーム自体は簡単なシューティングゲームで、

敵に弾を発射して倒し、自機を飛ばすためのアイテムを取り続けるという流れです。

 

 Wwiseを用いることによって何が変わったか

まずプロジェクトのサウンド面における実装速度が全く異なりました。

通常であれば効果音一つとってもプログラマーさんが音が鳴るためのプログラムを書き実際に動作させ、サウンド担当が確認を行い異なっていた場合はどのように異なっているか伝え、音声ファイルに問題があればサウンド担当が修正しそれを再度プログラマーさんが修正する(以下納得いくまで無限ループ)となりますが、wwiseを使用すると音を鳴らすタイミングそのものはプログラマーさんが用意するものの細かなタイミングや音量、途中変更等についてはサウンド担当が一人で行えるので、実装速度がかなり向上しました。(サウンド担当のみで実装可能な部分も劇的に増えます)

 

wwise不使用

[プログラム担当]→[サウンド担当]→[プログラム担当]→[サウンド担当]→無限ループ

 wwise仕様

[プログラム担当]→[サウンド担当]→ゴール!

 

またサウンド部分のみUnity外での作業となるので誰かがSceneやPrefabs上で作業していてもコンフリクトせず編集できるため時間短縮できた場面も多くみられました。

 

WwiseをUnityで使用した際のトラブルとか

wwiseを用いて鳴らしているコンポーネント(AK Event等)はwwise側のプロジェクトから読み込むためwwiseを導入していない人からはコンポーネントにアタッチされているEventを編集できない。

wwiseを導入していない人でも音が鳴るようにするにはひと手間かかる

また初期段階にてSoundBankが空の場合Unity側がエラーを吐く(実行することは可能なので支障はない…多分)

日本語のリファレンスが少ない。

 

以上の事柄でトラブルが発生しサウンドミドルウェアを使うにあたっての利点(時間短縮)が少ないゲームジャムになってしまいました。

 

これらトラブルを解決また発見するためにGit経由でwwise自身のプロジェクトデータを共有し、プログラマーさんのPCにもwwiseを入れてもらって少しづつ解決することにしましたが、wwise自身は共有することに対応した挙動をする(ファイルの更新があるとリロードします)ものの、Wwise Unity Integration(wwiseとUnityを接続するアセット)は対応しておらず、PC内のUnityプロジェクトと結び付けられてるwwiseプロジェクトへのパスが他人と異なっているとwwise関係のUnity内のコンポーネントを編集できない事態に陥ってしまう事になりwwiseを使ってUnityのプロジェクトを進行する際はこれらの事柄を事前に防ぎながら行う必要がありました。

恐らくではありますが、Unityのプロジェクト内にwwiseのプロジェクトを入れることにより解決しそうではありますが、要調査…

 

以上問題も多く残りましたが積極的に使って損のないツールだとは思いますので、下準備さえしっかり整えれば爆発的なパフォーマンスが得られそうです。(小規模でも大規模でも)

 

次は実際に使用した機能を書いていこうかと思います。

SymphobiaにEastWest製音源で対抗してみる

Symphobiaという音源がある…

PROJECT SAMという会社から出ている音源で適度な映画音楽を作るには最高のツールなんじゃないかと思っています。

 

この音源の特徴というかSymphobiaの真骨頂なのが、すべてをミックスした状態で音源化されているということです。

そのおかげで鍵盤一つ叩けば完成。みたいな音源となっており結構人気がある音源だと聞いています。

 

実際の音はこんな感じ

www.youtube.com

トラックが少なくて美しいですね

 

soundcloud.com

そしてこっちがEastWest製。(比較のために似たような音圧にしています)

…はい。

どちらが好きですか?

Symphobiaはやはり纏めて録音されている分空気感がありいいですね

EastWestはやはり素直で綺麗な印象です。

もしどちらかの音源を買おうとしている人がいれば参考の一つにしてはいかがでしょうか。(参考になればいいけど)

 

制作の様子とか

 プロジェクト全体のスクリーンショット

f:id:OtObOx:20180705165711j:plain

Symphobiaは12トラックで奏でてるのに対してこちらは32トラック…

おまけに打ち込み作業も10分じゃ終わりませんでした。

やはりパッと作るにはSymphobiaはとても優秀ですね、ホシイ…

 

とはいえ真似をする過程で多くの事を学べましたので時間対効果があったのでよし。

 

制作に使用した音源

EastWestシリーズととはいえ様々なソフトが出ているのでここに今回使った音源をまとめておきます。(エフェクト系は多いので乗せてない)

  1. Hollywood Brass
  2. Hollywood woodwind
  3. Hollywood Strings
  4. Hollywood Precussion
  5. Hollywood choirs
  6. EW/QL Symphonic Orchestra

 

EW installation centerのPiano Goldが表示されない問題について

最近マシンの間でEW PIANO GOLDが読み込め無い為プロジェクトが共有できない問題が発生し、何とか解決したので載せておきます。

 

EW installation center(以下EWIC)におけるEW Piano GoldとEW piano gold X各ピアノはライセンス上の互換性はありますが、プロジェクト上の互換性がないことがわかりました。

恐らくですがPlay6のタイミングで発生しており古くからEW Piano を使っている人にとってはかなり迷惑な仕様変更となっております。

解決方法

どうやらEWICからのダウンロードのみではこの症状は解決することが出来ないようです。(直っているかもしれないけど)

かなり無理やりな方法ですが、EW PIANOのライブラリがある場合そのライブラリとEWICを紐づけして再度読み込ませることによって使えました。

自分が行った手順は以下の通りです。(ノートPCにあるライブラリを修復する場合)

  1. メインマシンにあるライブラリをノートPCにコピーする
  2. ノートPC側でEWIC再起動する
  3. EWICのメニューにてReconnect libraries..を選択
  4. EW PIANO がアクティブ欄に表示される

単純に元々あったデータを持ってきただけですがうまく読み込まないこともあったので地道に何度かやってみるしかないようです。

 

Global Game Jam 2018振り返り ~サウンド担当の注意点とか

GGJ2018にて48時間で壁ドン×格闘×リズムの3拍子がそろった作ったゲームを作成しました。

 


VS KABEDON【GlobalGameJam2018 in Osaka】

 

こちらから遊べます。(2P対戦オンリーです!)

VS KABEDON | Global Game Jam®

 

会場の雰囲気とかこんな感じでした。

 

以下サウンド担当としての振り返り。

 

今回作成した音は10個

曲3つ

soundcloud.com

 

効果音7つ

  1. startclick
  2. gameset
  3. kabedon1
  4. kabedon2
  5. kabedon3
  6. my_turn
  7. trunchange(Vo)

メモにclick.wavが書いてあるけど記憶がない…どこに使うつもりだったんだろ…

 

ゲームジャムに参加するにあたっての反省点とやって良かった点

 1.いつも使用しているヘッドフォンを持ってくるべき

→今回一番痛い思いをした反省点です。

自分は普段YAMAHAのHPH-MT220を使用しているのですが、このヘッドフォンはかなり大型のヘッドフォンです。

荷物が嵩張るのと独特の形状による破損が怖いので持っていかずコンビニで売っているイヤホンを使用したのですが、曲と効果音作るには必ずエフェクトをかける必要があり、これをどのぐらい何を掛けるかが全く判別付かず、四苦八苦し時間が余計にかかりました。

 2.普段使わなさそうな音源もすべて持っていく

→最近のソフトウェア音源は容量が大変大きくHDDやSSDをとにかく食います。

ゲームジャムではどんなお題が来てどんなゲームを作るか全く予想ができません、これに対応するため工数を少なくし良いものを作るかが必要なので音源はあればあるだけ助かります。今回持参したノートPCの容量制限でいくつか持って行かなかったのですが後悔しました。

 3.持っていく鍵盤の規模は会場を考える

→なんでも備えるべきだからと88鍵を持っていくと大変です。

オーケストラの曲やピアノの即興を入れたい等の要望を簡単に答えるにはやはり88鍵あると便利ですが大きいと持ち運びが大変になり、また会場によっては限られたスペースが想定より小さい場合もあります。ですので作りたい曲よりも会場の様子を見てから導入したほうが良いです。

今回自分はKORG社のnanokey2を使用しましたがこれでも結構場所取りました。

 4.五線紙を持っていく

→これは3.の観点と関係があるものですが、鍵盤数が少ないものを持っていくとどうしてもオーケストラ物とかを作るには厳しくなってしまいます。

ここで五線紙が大活躍します。また、ノートPCの場合画面がどうしても小さくなってしまうので簡単なメモ書きにも大変便利です。

 5.イヤホン(予備)を持っていく

→サウンド担当は絶対忘れませんが、他の方はそうとは限らないようです。

音はゲームの中でも雰囲気、とりわけ空気を作る重要な資源ですが、どうしてもプログラム>イラスト>サウンドになってしまうのでもってきていない方も居られます。

ですので予備に一つ持っておくと便利です。

 6.ゲームパッドを持っていく

→サウンド担当はサウンドの機材だけを考えてしまう可能性がある

ゲームは単にキーボードだけではなくゲームパッドでも動きます。むしろゲームパッドだと動かしやすいです。

サウンド担当は基本直接プログラムに関与することはありませんがゲームのテストは行うことが大変多いと思いますので持っていく事を推奨します。

今回完全に抜けている点でした…

7.もし余裕があればスピーカーを持って行くと良いかもしれない!

→ゲームジャム終了後は試遊会が恒例のようです。

この時にノートPCの出力だと結構非力でせっかく作った曲や効果音を十二分に聞かせられない可能性があります。

今回自分はスピーカー出力の高いノートPCを用いたためこの問題は回避できましたが、もし非力なスピーカーしか搭載していないものをお持ちなら別途用意したほうが印象が良いかもしれません。(逆にデカすぎるのは持ち運びで浪費するのでNGかな…)

参考までにですが、今回使用したノートPCはASUSのGL702ZCで出力は2W+2Wのステレオで計4Wです。

小さめの会議室で試遊会しましたがこれで十分でした。

ただし、オーケストラ等の音圧が稼げない曲ではこの限りではないと思います。

 

以上の7点です。

 

最後に、もしかしたらゲームジャムに参加したいって方が読まれてるかもしれないので、今回持って行った持ち物を紹介します。

持ち物

以上です。

 

何か不備、不明点や聞きたいことがあればtwitterで聞いてください~:)

EastWest QL SpacesのS-S M-S RR FR filter について

 QL Spacesを使ってると目につく項目についてEastWestが答えていたのでメモがてらに残しておきます。

M-S: means mono in and stereo out. So normal stereo reverb, where the input is summed to mono before being processed.
S-S: means stereo in and stereo out. So true stereo. Each channel L and R is processed with it's own unique stereo impulse.
Typically an impulse is taken with the source on the left side of the stage and the right side of the stage. Each impulse is stereo. When they are put together you get a true stereo 4 channel snapshot of the space. We encourage users to use the true stereo versions of the impulses. The true stereo switch on the interface is an indicator, not a switch. It indicates what you have loaded.

FR: means front mics.
RR: means rear mics. These can be used to create a surround mix, or to pick a reverb that you like. Generally the rear is longer and darker.
FILTER: This allows users to limit the frequencies sent to the reverb, you can high-pass, low-pass, or both. When selected, a frequency response graphic will appear in the center window.
MONO: turn on to mono the reverb.
The last 2 additions are in the latest version

 

簡単に日本語にすると

M-Sはモノラルソースにかけてステレオにするリバーブ

S-Sはステレオソースにかけてステレオに出力するリバーブ

FRはフロントマイク(前方)

RRはリアマイク(後方)

EastWestの音源は全てステレオソースなので使用する場合はS-Sを使用したほうがまとまりやすいのかな?

あとはリアにするかフロントにするかだけど、原文にもある通り楽器に近いほど明るく華やかな音になり、離れるほど暗く長く伸びる音になる。

EastWestのHollywood Brassとかかなり華やかで明るい音がするのでリアマイクのほうが美しく聞こえるかもしれない。(オケやクラシック物ならね)