画像パラメータからつくるオープンワールドのアンビエントデザイン

ゲームオーディオ / サウンドデザイン / Wwiseの使い方やツール

Blend Containerは実にパワフルなシーケンシングツールであり、ミキシングツールでもあります。その機能を知るだけで、ゲームサウンドデザイナーの頭には真新しいアイディアが次々に浮かんでくるはずです。RTPC値の威力と組み合わせ、さらにゲームデザイナーやプログラマーとたっぷりブレインストーミングすれば、Blend Containerの真の力を引き出せます。

今回は私が最近思いついたBlend Container関連のアイディアを皆さんに紹介したいと思います。ランドスケープにアンビエントオーディオのゾーンを「ペイント」したいときにぴったりの方法です。2つのステージに分けて開発したので、ここで説明します。

ここでシェアする画像やオーディオアセット、そしてアプローチの仕方も、プロトタイプのシナリオの一部です。下図はこのデモで使うマップの一部の鳥瞰図です。

A 3D Perspective with a small viewable area - Wwise

部分的な3Dパース

 

開発の第1ステージ

このマップでは、プレイヤーがSharkとして主に水面下を泳いだり、海面にあがり悠々自適に進むゲームプレイが中心です。数メートルもの高波の下の深い海を冒険することも、沖から離れて静かな内海を楽しむこともできます。私は波アセットをトリガーするのに、はじめは複数のアクターを使ってアンビエントオーディオを実装してみましたが、水のアンビエント音にダイナミックさが欠けて画像と切り離されてしまうので、良いソリューションではありませんでした。泳ぐ動作がゲームの要となるので、没入感を引き起こすような泳ぎの画像、感覚、そしてサウンドが必須でした。マップの波はダイナミックであり、オーディオイベントも同様にするつもりでした。どこかに未知のRTPC 値が潜んでいるはずだと思い、それを探しにかかりました。

波が大きくなるタイミングやそのときの波の高さをゲーム値で決めているのなら、もしかしたらそれをRTPC値にて転用して波のアセットのダイナミックミックスをコントロールできるのでは、と思ったのです。

そこで私がゲームプロデューサーに波のモジュレーションについて聞くと、仕組みを説明してくれました。サウンドデザイナーにも分かるように説明して、と再度お願いすると、ようやく意味が分かってきました。要は、ワールドの空間座標をHeightMapの中のUV座標にマッピングして波のモジュレーションをつくり出し、カラー情報はピクセルから読み込んでいる、ということでした。私たちが最終的なRTPCを作成したときに影響を受けたコードはUnrealコミュニティプロジェクトにあるOcean Simulation, Weather and Dynamic TOD systemです。

 

このRTPC値の名前をWaveHeightとしました。値が0のときは波のモジュレーションがなく、1のときは波のモジュレーションが最もダイナミックになります。私は、Blend Containerに3つのトラックを入れました。

Blend Container and RTPC Value - Stage 1 of 2 - Wwise

第1ステージのBlend ContainerとRTPC値

 

上図の3つのBlend Trackは、上からBig WavesMedium WavesLight Wavesです。Wave Height RTPCが、各トラックのVolumeを赤色のエンベロープでコントロールしています。

このシナリオの方がスタティックなアンビエントアクターを使う方法よりずっとうまくいきましたが、2つの大きな問題に遭遇しました。RTPC値が不規則に跳ね上げることがあり、そのときのトランジションが予想できずスムーズではありませんでした。また海岸のビーチ近くにくると、その時点で波の高さはすでに0です。つまりビーチ沿いにいるときと、陸の中を流れる川や運河を上っていくときの、バックグランドの水の動作が同じなのです。でもWwiseでゲームオーディオを実装するときによくある話ですが、もっと洗練された方法が存在しました。

 

第2ステージ

HeightMapの値をRTPCに変換するのがスタート地点であったとすると、シンプルなカラーチャンネルを使ってRTPCを動かすというのが、最終的に採用した方法でした。私たちはPhotoshopを使い、2Dワールドのテクスチャの上に重ねてアンビエントエリアを描画しました。

A 2D World Texture - RTPC Value Stage 2 of 2 - Wwise

第2ステージ - 2DワールドテクスチャとRTPC値

 

海は純白に描き、Wave Height RTPC値を1としました。内陸部の水面は黒くし、Wave Height RTPC値を0にしました。岸付近のトランジションは灰色にし、色の濃度を0.2から0.8まで幅をもたせてブレンドさせました。これで処理やボイス数が非常にスムーズで効率的になり、3つのゾーンにわたり細かく制御できました。

 

2D World Texture map converted into colors with Photoshop - RTPC Value Stage 2 of 2 - Wwise

第2ステージ – Photoshopで色分けした2D ワールドテクスチャのマップとRTPC値

 

この2つ目のBlend Containerには、一番下に4つ目のBlend Trackが追加されています。これは内陸部で波が優しく打ち寄せる音のアセットです。海のアンビエンスとなるのが、その真上にあるBlend Trackで、Wave Height RTPCが0.2あたりのときから大きくなります。

 

“WaveHeight” Blend Container - Stage 2 of 2 - Wwise

第2ステージ - WaveHeightのBlend Container

 

これは第2ステージのBlend Containerの、インゲームのビデオキャプチャです。小さくて見えにくいですが、Wave Height RTPCの値がエディタ画面の左上に紫の文字で表示されています。

 

デモビデオ 

 

アンビエントエリアをペイントで指定するというこの方法は、様々なオーディオイベントに応用できるはずです。まだ赤チャンネルしか活用していませんが、青も緑も、新しいRTPC値で塗りこまれるのを待っています!

 

  

 

 

トム・トディア(TOM TODIA)

ゲームオーディオデザイナー

Engine Audio

トム・トディア(TOM TODIA)

ゲームオーディオデザイナー

Engine Audio

ゲームオーディオ委託グループEngine Audioの共同所有者兼オーディオデベロッパ。オーディオプロダクション歴20年。現在はフルセイル大学(Full Sail University)でビデオゲームオーディオについて教える。

 @EngineAudioTom

コメント

Replyを残す

メールアドレスが公開されることはありません。

ほかの記事

ダイナミックなミュージックデザイン(Part 1) デザインの分類

はじめに...

17.8.2021 - 作者 Chenzhong Hou (侯晨钟)

『I Am Fish』 そのサウンドの舞台裏

『I Am Fish(俺は魚だよ)』は物理演算を駆使した魅力的なアドベンチャーゲームで、プレイヤーは4人の勇敢な魚の仲間たちの運命を手に、海への脱出を試みることになります。ロンドンのBossa...

9.8.2022 - 作者 アリ・トーカー(Ali Tocher)

小さなチームにこそWwiseを:『PRINCIPLES』での効率的なWwise活用

『PRINCIPLES(プリンシプルズ)』とは...

7.3.2023 - 作者 藤原 達也(TATSUYA FUJIWARA)

WAQL 2.0

WAQL(Wwise Authoring Query...

22.8.2023 - 作者 ベルナール・ロドリグ(Bernard Rodrigue)

1人称視点のホラーゲームを単独で開発する

経歴 アレッサンドロ・グッツォと申します。私は1人称視点のホラーゲーム『The Land of Pain』と『The Alien...

14.11.2023 - 作者 アレッサンドロ・グッツォ

『Scars Above』におけるWwise Spatial Audioの実装ワークフロー

これは何についての記事?Spatial Audio APIとは?Spatial Audio APIのワークフロー Rooms and Portals アセットの整理と命名規則 ...

7.2.2024 - 作者 ミラン・アンティッチ

ほかの記事

ダイナミックなミュージックデザイン(Part 1) デザインの分類

はじめに...

『I Am Fish』 そのサウンドの舞台裏

『I Am Fish(俺は魚だよ)』は物理演算を駆使した魅力的なアドベンチャーゲームで、プレイヤーは4人の勇敢な魚の仲間たちの運命を手に、海への脱出を試みることになります。ロンドンのBossa...

小さなチームにこそWwiseを:『PRINCIPLES』での効率的なWwise活用

『PRINCIPLES(プリンシプルズ)』とは...