『Unpacking』は引っ越しのダンボール箱を開けて荷物を取り出してしまっていくという、なじみのある経験をゲームにしたものです。ブロックパズルの要素があり、インテリアデザインの要素もあり、荷物の持ち主のヒントを見つけながら充実した住まいをつくります。8回も引っ越しを繰り返すうちに、画面に登場することのない住人や語られることのないストーリーに、親近感がわくかもしれません。
はじまり
『Unpacking』の発端となったのは実際の恋愛関係で、ピクセルアーティストのWren BrierとWitchBeamのプログラマーであり創設者のTim Dawsonの同棲がきっかけです。ダンボールを開けて荷物を取り出し、置く場所を決めることを繰り返しながら、ゲームプレイにどう関係するのかという発想を、お互いに出し合ってみたのです。アイデアを出し合う中でデザインが生まれ、『Unpacking』が実際のゲームになりはじめました。
『Unpacking』はオーディオを含むゲーム制作のさまざまな分野において数々の賞を受賞しました。2022年にAAAの大物タイトルと競い、Game Developers Choice Awardのベストオーディオ賞を見事獲得しました。なぜここまで注目を浴びたのでしょうか。
『Unpacking』がリリースされて間もない頃、サウンドデザイナーのFrancesco Del Piaによるツイートが拡散しました。フォーリーのディテールを称賛する彼の動画が、瞬く間に再生回数100万回を超えました。Francescoのツイートを見る
その中でもJeffが特に気になったレスポンスが1つありました…。
間もなくAudiokineticのフレンドリーな人たちから、Jeffにブログでやり方を紹介して欲しいと声がかかりました。このような経緯があったのです。
このゲームのフォーリーを制作したのは業界のベテランであるJeff van Dyckと、妻Angelaと娘Ellaの小さな家族チームです。比較的小さいゲームですが、本格的で細部へのこだわりが強く、REAPERやWwiseを活用して膨大な量のオーディオが実装されています。少人数チームのvan Dyck一家がどのようにしてフォーリー制作を管理し、14,000個以上のWAVファイルと緻密なレベルの作品を作成したかについて、このブログで紹介したいと思います。
オーディオのコンセプト
Jeffは最初にWrenやTimと、オーディオスタイルについて話し合いました。典型的なピクセルアートゲームではピクセルのレトロな雰囲気を出すために、チップチューン風のオーディオスタイルを音楽にもSFXにも用いることが一般的です。Jeffはチップチューンの音楽は合っていると考えましたが、すべてのSFXが「ビー音」や「ブー音」ではやり過ぎであると思いました。逆に超リアルなサウンドエフェクトの方が、ピクセルアートと調和して馴染むのではないかと考えました。
プロトタイプ No.1
超リアルなサウンドエフェクトにすることに決めたJeffは、ひとまず自宅のキッチンにある台所用品で初期制作に取り掛かり、さっそく録音をはじめました。
最初に使用したのはRØDE NT2-AマイクとTASCAM DR-40レコーダーでした。その後のレコーディングではより静かで敏感な収録のために、機材を変えました。Jeffのチームは最終的にSennheiser MKH 8040を使い、古いSennheiser MR816x Audio Interfaceへ繋ぎ、FireWireでさらに古いMacbook Proに接続しました。
プロトタイプ No.1の備考:
- ゲーム内では音楽以外にあまり動きがないため、フォーリーのディテールが気づかれる余裕が大いにあります。
- キッチンの自然な残響音で臨場感が増しました。
- 互いに似ていないアイテムで共通の音を使った場合、没入感が損なわれました。
次のような問題点が出てきました:
- ゲーム内でアイテムを部屋から部屋へ移動できるため、デッドルームですべてを録音し、後からリアルタイムでオーディオエンジンを使い反響を加える必要がありました。
- アイテム間でサウンドを共有した場合は没入感が損なわれるため、すべてのアイテムをゲーム内にあるすべてのサーフェスに対して置いたり取り上げたりし、複数のバリエーションを録音する必要がありました。
- ゲーム全体でフォーリーの範囲はどれくらいなのか、また達成可能な規模なのか?この時点で答えは不明であったため、ゲーム開発が進捗する間、Jeffは音楽に集中しました。
プロトタイプ No.2
6か月後にゲームに複数の部屋ができ、Jeffは娘のElla(同じくコンポーザー、サウンドデザイナー)に声をかけ、大学の休み中にフォーリーレコーディングを少し手伝ってもらうことにしました。Ellaはデッドルーム(使っていない寝室)で、台所用品の録音と編集を複数の新たなサーフェスで行いました。しばらくするとEllaは音楽の学位取得や、はじめて1人でとりかかるゲームサウンドトラックの制作などで忙しくなり、フォーリー作業を続けることができなくなりました。
プロトタイプ No.2の備考:
- 収録に使用した小道具は、実際にゲームに登場するアイテムです。
- ほとんどのサーフェスは本物のサーフェスです(例えばタイルサーフェスにはタイルを、カーペットサーフェスにはカーペットを使いました)。
- 一部のサーフェスはその場でつくりました(台所のシンクは、オーブンの大きな天板をひっくり返して使いました)。
- フォーリーの対象範囲が莫大に見えてきました。
WAVファイルは7万5千個?いいえ
この時点でJeffは気がつきました。自分1人ではできないこと、そして賢く効率的なデザインが必要であること。彼が出した結論はおそらく多くの人が同じ状況下でたどり着く結論です。つまり・・・「妻よ、助けてください!」です。
Jeffの妻のAngela(Ange)はオーディオ・ビデオの経験者です。Electronic Arts Canadaにおいてゲーム『Triple Play』や『NBA』の実況中継のダイアログを担当しました。膨大な量のデータを扱うワークフローやプロセスを管理することを得意とします。「彼女にぴったりの仕事だ」とJeffは思いました。
2人は最初に基本的な計算を行いました。ゲームデザインを考慮すると最終的なオブジェクト総数は500個、これらを配置するサーフェスは15種、各サーフェスに必要な各アイテムのバリエーションは10種、合計7万5千個というサウンドファイル数が予想されました。果たして実現可能な数なのでしょうか?単刀直入な答えは「ノー」です。そこで音の広がりを維持しながらもフォーリーの量を減らすデザイン案を求め、制作や実装を自動化・合理化するプロセスの策定にとりかかりました。
効率的なデザイン
3つのデザイン案を利用し、フォーリーの合計数を7万5千個から1万5千個に減らすことに成功しました。
汎用ソフトサーフェス
AngeとJeffはさまざまな物体をやわらかいサーフェスの上に置く時の音が、似ていることに気がつきました。そこでカーペットやベッドのようなやわらかいサーフェスに対し、汎用的な「軽」「中」「重」「特重」の重さの物体音を録音しました。ゲームアイテムの大半にこれらの音を割り当てました(ただしフォークやスプーンのような、やわらかいサーフェスに置いても特徴的な音のするアイテムは除きました)。
汎用アイテム
AngeとJeffは音が似ているアイテムに、汎用的な録音を使用しました。カテゴリーとしてガラス、金属、陶器、固体プラスチック、空洞プラスチックなどを設け、重さの段階として「軽」「中」「重」「特重」の区分を用意しました。汎用サウンドのバリエーションを多く録音することで、多数のゲームアイテムで共通のサウンドを使用しながら、全体的に自然に聞こえます。
特徴的なサウンド用のスィートナー
ゲームには個性的な音のアイテムも登場し、それらは置く時の音とアイテム固有音の2つの音に分けました。例えば豚のかたちをした貯金箱です。豚の貯金箱は陶器の物体であり、硬貨のジャラジャラ音もします。JeffとAngeは録音した汎用音を使用できるアイテムを洗い出しました(豚の貯金箱に使用したのは、すべてのサーフェスですでに録音してあった陶器の汎用音でした。硬貨のジャラジャラ音は別途、録音しました。その上2つのWAVファイルを同時にトリガーさせました。)
REAPER
AngeとJeffはREAPERとWwiseの機能を最大限に活用し、可能な限り自動化することで、制作過程を合理化させようと考えました。ワークフローとしては(ノイズリダクションを除いて)非破壊的であり、オーディオ設定を変えて繰り返し使えるものを求めました。
REAPERのDynamic Split
はじめに録音を自動的に個別アイテムに分割するDynamic Splitなど、すぐに活用できる機能を適用しました。
REAPERのレイアウト
REAPERプロジェクトのレイアウトが2種類の処理の効率化において、重要な役割を果たしました。その処理とはファイルの自動命名と、Wwiseのテンプレートレイアウトと一致するフォルダ構造へのレンダリングです。AngeとJeffはゲームのサーフェスを縦に並べ(トラックや子トラックを使用)、ゲームのアイテムを横に並べました(リージョンを使用)。各サーフェストラックに「場所」と「ピックアップ(持ち上げる)」の2つの子トラックが含まれています。
REAPERレイアウトの拡大表示
regionのCeramic Light、trackのBenchtop(ベンチ上)、child trackのPlace(場所)、child trackのPickup(ピックアップ)
REAPERレイアウトの縮小画面に表示のregion、track、child track。リージョンのリストを使い列ソート、アイテム検索、タイムラインの別リージョンへのジャンプなどが可能。
EQと周波数管理の自動化のため、Master Busを自動化
静かな音を録音する際にマイクを物体に近づけた時、「近接効果」が起きて不自然な量の低周波が録音されてしまうことがよくあります。これは強度によってハイパスフィルタをいくつか使用することで簡単に対処することができました(Fabfilterプラグインを利用)。Master Busにおける自動化により、適宜有効にしました。きつい音のするレコーディングはOeksoundのSoothe2で処理し、低域の奥行きが必要な音にはBOOMのENFORCERを適用しました。
ファイル自動命名のためのREAPERスクリプト
AngeとJeffはリージョン、トラック、子トラックのプロジェクトレイアウトを使用し、次のファイル命名規則をつくりました:item_surface_action_variant#
X-Raymのパターンを使った命名スクリプトを使用し、スクリプトでリージョンからアイテムを特定し、トラックからサーフェスを特定し、子トラックからアクション(置く、またはピックアップする)を特定し、次にバリエーション(またはテイク)番号を特定しました。このスクリプトで14,000ファイルの名前を数秒で命名することができました。
REAPERのレンダリングを、Wwiseへのインポートと一致させる
AngeとJeffはWwiseのレイアウトを念頭にREAPERのレイアウトを設計しました。Wwiseのインポートテンプレートに一致する名前のネストされたフォルダ構造に、REAPERのレンダリングを送りました。自動化と作業負荷の軽減という観点から、まるで魔法のような処理でした。
レンダー出力に「region/track/child track」レイアウトを用いてフォルダやWAVファイルを命名してネスト化し、Wwiseへのインポートテンプレートと一致させました。
Wwise
Wwiseの初期設定
JeffはWwiseにスイッチグループactionを設定し、その中にpickupとplaceというスイッチを設定しました。次にすべてのサーフェスを含むサーフェススイッチグループを設定しました。そのしくみとは?
WwiseのPlay Eventがトリガーされた時に、スイッチがUnityによって設定されます。以下はその例です:
Play Event Shoe_Heavy, Surface = Benchtop, Action = Place
Wwiseはこのコンテナの中にあるバリエーションをランダムに選択します。
フォルダやWAVファイルを指定の構造にインポートする、Wwiseテンプレート
インポート時にすべてのアイテムにテンプレートを適用し、効率的にインポートを処理しました。このテンプレートはREAPERのレンダリングされたフォルダの構造と一致します。このテンプレートで作業時間を大幅に短縮することができ、ゲーム内のすべてのアイテムについて、正しくネスト化されたサーフェス用コンテナが自動的に作成されました。
インポート処理
1. インポートするフォルダを選択します(REAPERからエクスポートするフォルダ構造)。
2. 先に作成したテンプレートを適用します。
REAPERのフォルダ構造がテンプレートに一致した場合、右側のフォントが黄色にハイライトされ、Wwiseに一致するフォルダが見つかり一致するコンテナが作成されることが分かります。
このコンテナ構造にオーディオがインポートされた後、すべてのコンテナが選択されて各アイテムに対して新しいPlayイベントが作成されます。ここからはスイッチとPlayイベントが連動します。WwiseのPlayイベントがスイッチを通りコンテナを経て下に降ります。
ここで先ほどの例をもう1度見ます:
Play Event Shoe_Heavy, Surface = Benchtop, Action = Place
Wwiseは最後のコンテナの中のバリエーションから、ランダムに1つを選択します。
Googleスプレッドシート
音の割りあての柔軟性
ゲームでサウンドを必要とするアイテムがすべてUnityにそろい、録音したフォーリーがすべてWwiseに入った状態となりました。ただし、ゲームアイテムの数が収録した個々のサウンド数よりも多い状態でした。前述の通りAngeとJeffは複数のアイテムで共有できる汎用サウンドとスィートナー音を作成したためです。管理しやすい場所でこれらを設定する必要がありました。さらにゲームのアイテムにサウンドを割りあてながら、変更内容をリアルタイムで聞いて確認できるようにする必要がありました。TimがGoogleシートからUnityプロジェクトにデータを直接ダウンロードするツールをUnityで作成しました。AngeとJeffはUnityのクリック1つで、スプレッドシートで行った変更を即座に聞くことができました。AngeはこのGoogleスプレッドシートを使い(プログラマーに頼ることなく)実験し、特定のサウンドが合わない場合にアイテムに割りあてたサウンドを変更することができ、幅広い権限を入手しました。音の割り当てを微調整できる自由は、フォーリーサウンドの究極の仕上げツールでした。
カスタムメードのUnity Audit Tool
クロスリファレンス
フォーリー用に最後に追加された大変クールなツールセットが、同じくTimがつくったカスタムメードのAudit(確認)ツールでした。ゲームは段階的につくられ、開発がすすむにつれ新しいゲームアイテムやサーフェスが段階的に追加されたため、どのアイテムをどのサーフェスで録音したのか、整理が追いつかなくなりました。この確認ツールを構築した当初の目的は、新しい録音リストを作成する際に発生する、大量の手作業によるクロスリファレンスを省略することでした。ところがその威力が広範囲におよび、モードによって次のような情報を表示することができました:
- ゲーム全体においてゲームアイテムを置くことのできる、すべてのサーフェス
- アイテムやサーフェスごとに不足しているオーディオファイル
- 予想される割り当てやオーバーライドを使う、スプレッドシートのアイテムやサーフェス
シェイクしよう
ゲームでアイテムを振ってみる
ゲームの中には豚の貯金箱、ボードゲーム、鉛筆立て、水筒など、プレイヤーが振ることのできるアイテムが多くあります。
JeffとAngeはプレイヤーがマウスやコントローラを振った時、自然に反応しているように感じられるよう、録音・編集プロセスで実験しました。
Wwiseのセットアップはこのようなしくみになっています(以下の一連のスクリーンショット参照):
Shake PiggybankというBlend Containerには左シェイク、右シェイク、シェイク停止のコンテナが入っています。
シェイクの種類はマウスの移動のコードからWwiseに送られる、direction(方向)パラメータに基づいて選択されます。
方向の選択肢の中に、シェイクの強度を選択するスイッチコンテナがあります。
マウスの移動の速度がWwiseに送られ、Wwiseでシェイクの強度として、弱・中・強のいずれかのコンテナを選択されます。
まとめ
- 私たちは驚異的な数の音を録音しました。
- やわらかいサーフェス、汎用音、スィートナー音などは工夫し、いくつかの近道を見つけました。
- REAPERやWwiseのワークフローを最大限に活用し、気が狂わないようにしました。
- Unityで確認することで、カオスの中でも明瞭さを確保しました。
以下のリンクに『Unpacking』のオーディオ関連の詳細情報があります:
GDC 2022のJeffの講演
ポッドキャスト『Level with Emily Reese』
『Unpacking』のオーディオのディープダイブ
このブログを楽しんでいただけたことを願っています。
Angela & Jeff van Dyck より
|
アンジェラ・ヴァン・ダイク |
コメント