チュートリアル / Road to Stingray
第16回:Wwiseによるサウンドの組み込みとプロジェクトまとめ

2016.10.24

  • Maya
  • Stingray
  • ゲーム
  • チュートリアル
  • 中級者
  • 学生・初心者

みなさん、こんにちは。
今回は、Road to Stingrayプロジェクトで開発された『MeowedfullDays』の中に組み込まれたサウンド、ミュージックに関して、本作でサウンド全般を担当した株式会社ハニカムラボの皆さんにご協力を頂き、Wwiseによるサウンドの組み込みと本プロジェクトを振り返ってまとめたいと思います。

思い返せば、昨年の年末にStingrayを使用した事例開発のご相談をAutodeskさんから頂いてから、もうすぐ一年が経とうとしています。
Stingrayでどんなことが出来るのか手探りで開発を進めてきましたが、各ジャンルで非常に強力な専門家の皆さんにアシストして頂き無事ゲームが完成しました。周りの方からも好意的な意見をたくさん頂くことが出来ました。

それではまず、サウンドについてご紹介していきます。Stingrayには、ゲーム開発シーンにおいて数多く採用されているHumanIKやBeastなどのミドルウェアを多数ビルトインしています。サウンドについては、Audiokinetic社のWwiseというミドルウェアを追加でロイヤリティ費用を払うことなくフル機能を使うことが出来ます。これはゲーム開発をする際に非常に魅力的と言えるでしょう。

今回のプロジェクトではさまざまな分野の専門家に集まっていただき、分業で同時並行で開発を進めました。開発のパイプラインには、GitHubを用いて作業を進める上で、Wwiseの特徴が非常にマッチしたと株式会社ハニカムラボの田中浩一さんからお聞きしました。Unityなどに付属しているサウンドエンジンでは、鳴らしたい音の種類やタイミングなどをスクリプトで制御するのが一般的ですが、Wwiseの場合は、Wwiseの中で状況に合わせて鳴らしたい音の種類や値を変更出来るのが魅力だそうです。

例えば、キャラクターのアニメーションを制御するときに、「走る」や「歩く」などの動きをプログラムの方で持たせるのではなく、キャラクター自身の属性として持たせることによく似ています。Wwiseでもこれと同じように、サウンドデータ自体をオブジェクトとして扱い、Wwiseがこれらを統括して管理するので、プログラムは非常にシンプルで済むそうです。

また、ゲームロジックのソースとは完全に分離されているので、容易に更新をかけられるところが使いやすいです。
本作の中で実際に行ったサウンドの組み込みの中で使用した、ランダムに音を鳴らす方法を解説していきます。

Wwise Audioを開く

Stingrayのインターフェースのメニューから、Window > WwiseAudioを選択します。
こうすると別のインターフェースが開きます。これがWwiseのインターフェースになります。

左上のProject Explorerの部分で、それぞれのサウンドファイルを一覧で見ることが出来ます。

発生するサウンドをランダムに変更する

Wwiseには、“Random Container“という便利な機能があります。これを使うことで、簡単に音源をランダムに変更することが可能になります。
それでは、Random Containerを作ってみましょう。
今回は、あらかじめSFXというフォルダを作っておきました。そこで右クリックから、New Child > Random Containerを選びます。
名前を“RandomTest”としました。
作成されたRandomTestコンテナの上で右クリックからImport Audio Files…を選びます。

Add Filesからファイルを追加したい音源ファイルを選択します。

読み込まれた音源を選択し、再生ボタンを押すと内容が確認できます。

イベントを作成する

次に、音源をランダムに選択するためのイベントを作成します。

Audioの隣にある、Eventsのタブに切り替えて、右クリックからNew Child > Playを選びます。
新しいイベントが作成されましたので、“RandomTestEvent”と名付けます。
これをSFXフォルダにドラッグアンドドロップで格納しました。
イベントを作成したら、次にどの音源を再生するかEvent Actionsに登録します。

SoundBankを作成しStingrayに受け渡す

ここまでできたら、Stingrayに音源を受け渡します。StingrayとWwiseの間の橋渡しをしてくれるのが、SoundBankという音源の集合体です。このSoundBankの中にイベントや音源のリストが格納され、それをStingrayに渡す流れになります。
Stingrayプロジェクトを作成すると、Stingrayのソースコードやアセットとは別のフォルダ階層にWwiseのためのディレクトリが作られます。
Wwiseから書き出されたファイルは全てその階層化に保存され、自動的にStingrayの方にデータを受け渡してくれるため、ハンドリングが非常にしやすいのが特徴です。
SoundBankはゲーム全体で汎用的に使うものや、レベル毎に分ける、キャラクターごとに分けるなど用途に合わせて効率よく管理することが出来ます。
ここでは、ランダムテスト用に“RandomTestSoundBank”という名のSoundBankを作成しました。

SoundBankの中身を編集する

SoundBankを作っただけでは中身が空っぽです。そこで、先ほど作成したRandomTestEventをこのSoundBankの中に登録します。まずProject ExplorerのSoundBanksタブから先ほど作成したRandomTestSoundBankをダブルクリックし、SoundBank Editorを開きます。
次に、Project ExplorerのEventsのタブから、RandomTestEventをSoundBankEditorのAddのタブのところへドラッグアンドドロップします。これだけで登録は完了です。

SoundBankを保存する

先ほど作成したSoundBankをStingrayに受け渡すために、保存を行います。Views > SoundBank Managerを開きます。

上図の様に、受け渡したいSoundBankをチェックし、対象のプラットフォームや言語を選び、Generateを押します。一度作成した後は、Updateでも良いでしょう。

Stingrayの中で確認する

Content/audioの中に、RandomTestSoundBankが追加されました。これをクリックし、右下のPropertyEditorを見るとRandomTestEventが追加されているのが分かります。試しに再生ボタンをクリックしてみると、押すたびに違うサウンドが再生されます。

StingrayのLevelFlowの中で、サウンドが鳴るように調整します。
上図の様にLebel Loaded > Wwise TriggerEventを繋ぎ、WwiseEventsNameの所から自分が呼びたいイベント名を選択します。これでレベルをテスト実行するとロードと同時にサウンドが鳴るようになりました。

プロジェクトを振り返って

それでは、今回のプロジェクトを振り返ってみたいと思います。以下には、CEDEC2016のセッションにてご紹介させて頂いたパワーポイントの資料と共に、プロジェクトを俯瞰してみたいと思います。

今回のプロジェクトの目的と関わって頂いた方々は以下の通りです。

企画から最初のローンチまで約半年間という短い期間の中で、たくさんの方々に関わって頂きました。

Stingrayの中で当時使えたファンクション、ミドルウェアの一覧です。今回のプロジェクトでは、なるべく多くの機能を試してみるという目標もありましたので、事前に機能をリストアップし使い道を考えるところから始めました。下の図は実際にゲームの中で使用した機能です。

実際にStingrayを使ってゲーム開発をしてみて思った率直な感想は、上図の通りです。ゲーム開発に手慣れたメンバーという訳はなくても、比較的容易にプロトタイプから本制作までスムーズに移行できたなという印象があります。なぜなら、機能が非常に使いやすく整理されており、あまり迷うことなく試すことが出来たことと、Autodeskさんの手厚いサポートのおかげで分からないことがあっても質問出来ました。しかし、まだまだユーザーが少ない為、インターネットで検索しても答えがなかなか見つからない点は苦労しました。時間に余裕があったらモバイルにも対応したかったのですが、残念ながら今回は、叶いませんでした。

今回のプロジェクトの中で、特にこだわった部分はビジュアル面についてです。Stingrayで最初から使用できるBeastやPostEffects群を活用してなるべくリッチな見た目になるように気をつけました。 これらについては、Road to Stingray第13回第14回にてご紹介させて頂いております。 上記のCEDEC2016のセッションの模様は、以下にてストリーミング配信をしておりますので、ぜひご覧いただければ幸いです。

最後に

我々が「MeowedfullDays」を開発していた当時のStingrayのバージョンは1.2でしたが、それからどんどんバージョンアップが進んで現在は1.4がリリースされています。非常に魅力的な機能が数多く追加されています。ゲーム開発だけでなく、ビジュアライゼーションやVRデモなど様々な場面でスピード感をもって開発に臨むための環境が急速に整ってきている印象がありますので、是非一度見て頂きたいと思います。

http://www.autodesk.com/products/stingray/features/all

また、Autodeskさんの話では、今回の「Road to Stingray」が日本以外の地域からも注目をして頂けているということで、もしかしたら記事を英語や中国語などの言語に翻訳されることがあるかもしれないとのことです。

我々も少しでも皆さんのお役に立てたのなら非常にうれしく思います。今後もStingrayを使って様々な挑戦をしていきたいと思っておりますので、情報交換できると嬉しいです。 最後までお付き合い頂きありがとうございました。

株式会社ハニカムラボ

株式会社ハニカムラボ

ハニカムラボは、ゲーム開発やウェブ業界の経験が豊富なメンバーたちが集まり、遊びゴコロを真面目に追求、人がワクワクする楽しいモノを生み出すエンジニア集団です。Webサイトやスマホアプリの開発だけでなく、デジタルサイネージやイベントアプリ、VR、AR、リアル・バーチャル連動など、「こんなこと本当にできるかな?」というチャレンジングな企画も数多く実現しています。 「すごい企画を思いついたけど、実現方法がわからない…」 「使ってみたい技術があるんだけど、面白い企画が思いつかない…」 そういった人たちの想いをテクノロジーやアイディアの力で実際の形にする、それが私たちハニカムラボのミッションです。

河原田 清和

河原田 清和
代表取締役社長CEO / ソフトウェアエンジニア
工学系大学院卒業後、コンシューマゲーム業界へ。元気株式会社にて、PS2 / Xbox / PSP向けの様々なゲーム開発に従事。のちに、マイクロソフト株式会社Xbox事業部アドバンストテクノロジーグループにて、テクニカルゲームマネージャとして業務を行う。 その後、インターネットとデジタルデバイスとの融合がもたらす可能性に魅力を感じ、Web業界に転身。Web制作会社にてディレクションおよびスマホアプリやインタラクティブなデジタルコンテンツの開発業務等を経て、株式会社ハニカムラボを設立。 現在も自ら開発・研究業務に従事しつつ、面白くてワクワクする未来を模索中。

田中浩一

田中浩一
Unityスペシャリスト兼テクニカルハンター
元大手ゲームメーカーでアーケードゲームの開発に従事していた、主にエンタメ系アプリケーション開発のスペシャリスト。 実年齢より若く見られがちな、構ってちゃんのムードメーカーでありアイデアマン。最近はVRバブルが来ることを願っている。ハニラボ園芸部。

枡谷 祐一

枡谷 祐一
ソフトウェアエンジニア
爆弾系ゲーム会社でゲームプログラマーを経験の後、微小系ソフト会社で箱型ゲーム機開発サポートに携わる。現在は自由系プログラマー、PCやスマホを中心にアプリを開発。趣味はジムカーナ。

開発環境

PC G-Tune「NEXTGEAR-NOTE i5700 シリーズ」
プロセッサ Intel(R) Core(TM) i7-4720HQ CPU @ 2.60GHz 2.60GHz
RAM 8.0GB
OS Windows8.1 x64
グラフィックスカード NVIDIA GeForce GTX 970M
DCCソフト Maya 2016, 3ds Max 2016
Stingray 1.2.526.0

ソースコードをGITHUBで公開中!

先日のイベントで公開しましたが、実はこのプロジェクトのソースコードやプロジェクトのデータは既にGitHubにて公開されています。ダウンロードして頂ければ、どなたでも試してみることが出来ます。

まず、下記のAutodesk社のURLから、Stingrayの30日体験版をダウンロードし、インストールします。

http://www.autodesk.com/products/stingray/free-trial

ダウンロードからテストプレイまでの流れ

GitHub URL
https://github.com/guncys/rtsDev

まず、上記のURLからDownload ZIPを選択しダウンロードした後で、好きなフォルダに解凍します。

次に、Add Existingから既存のプロジェクトを追加出来ますので、先程ダウンロードしたフォルダの中にある、rtsを選択します

プロジェクトがロードされたら、 “rts” を選び、Openします。
初回ロード時のみ、数分のコンパイル処理が走ります。次に、下図の様にlevelsフォルダからstage1.levelを選択しダブルクリックします。

すると、上部ペインのLevel Viewportにマップが読み込まれます。
左上のゲームコントローラのボタンを押すとゲームがスタートします。

Top