こんにちは。このブログ記事では『Avatar: Frontiers of Pandora』のミュージックシステムについてご紹介いたします。『Avatar: Frontiers of Pandora』は、UbisoftのスタジオであるMassive Entertainmentが、Lightstorm EntertainmentおよびDisneyと共同開発したファーストパーソンのアクションアドベンチャーゲームです。
2024年のAirConカンファレンスで本作のミュージックについて講演しましたが、今回はその内容をより技術的かつ実践的な観点から見てゆきます。つまりなぜではなく、どのようにをもう少し掘り下げます。
この記事では2つの内容を取り上げます。具体的には、Wwiseのミュージックスイッチ1つでゲーム全体にわたって制御する方法を説明するほか、Snowdropエンジンからすべてのミュージックロジックを実行するミュージックグラフにも少し触れます。
これを読む前にAirConでの講演を視聴する必要はありませんが、この記事だけでは物足りないという方は、ぜひ併せてご覧ください。
単一イベントのミュージックシステム:
ミュージックシステム全体を動作させる1つの大規模なミュージックスイッチがあり、ゲームを起動するとトリガーされ、ゲームを終了するまで停止しません。
ミュージックスイッチは大まかに以下のように分岐します:
![]()
これを見ると分かるように、分岐においていくつかの重要な決定が行われ、それがミュージックの挙動に大きく影響します。
「Cinematics(シネマティック)」、「In game(ゲーム内)」、「Out of game(ゲーム外)」のルートスイッチは比較的シンプルです。
「Quests(クエスト)」と「Open world(オープンワールド)」間のランタイムスイッチはかなり高いレベルにありますが、これはつまり、すべてのクエストが子スイッチとしてカスタム実装されており、オープンワールド用に設定されたシステム(例えばシステム戦闘など)に依存できないことを意味します。
もちろん、これによってキャンペーン向けに目指していた手作業で作り込まれたミュージック体験を生み出すことはできましたが、すべてのクエストを個別に実装し、さらに必要に応じて戦闘ロジックやカスタムイベント(例えば手作業で配置したトリガーボリューム)などのロジックで分岐させる必要があるため、作業量は大幅に増えました。
![]()
クエスト構造における分岐の例。最初にQuest(クエスト)、続いてObjective(目的)、さらに子ロジックであるTrigger volume(トリガーボリューム)、Combat(戦闘)、Dialogue(ダイアログ)などで分岐します。
次の分岐はExploration(探索)とCombatです。これは実用的にも論理的にも理にかなっており、オープンワールドのスイッチで戦闘を優先することで、プレイヤーが戦闘中は確実にあらゆる探索ミュージックを戦闘ミュージックに上書きできます。
単一のミュージックスイッチ:メリットとデメリット
単一のミュージックスイッチを採用する場合はさまざまな検討事項があり、その多くがメリットとデメリットを伴います。以下に検討事項をいくつか示します:
完全性:何らかの予期しない理由でイベントが停止した場合、そのプレイセッション中にミュージックが戻ることはありません。開発中にこの問題に遭遇したことはありませんでしたが、この潜在的な問題を抱えながら安心していられたのは、長年にわたりこのシステムで開発が行われ、デザイナー、他領域の協力者、そしてテスターによって徹底的にテスト済みだったためです。メリットとしては、複数のスイッチやイベントを扱う必要がないため、それらの再生が誤って重なってしまうことがありません。
概観:ミュージックスイッチは、少なくともこのようなオープンワールドゲームの場合は非常に大規模になるため、内容の把握が難しいことがあります。もちろん、この構造に取り組んでいるデザイナーであれば精通していますが、ミキシング担当などほかの作業者は圧倒されてしまうかもしれません。しかしスイッチは一貫性があり本質的に論理的なため、最初は巨大なスイッチに驚くかもしれませんが、スイッチ内を根気よく移動することで誰でも各種セクションの場所を見つけられます。常に言えることですが、ここでも適切な命名規則が非常に重要です。
![]()
この例から、階層内で「Vista – Kinglor forest – day - clear sky」バリアントを見つけるために、どれだけ多くの子スイッチをたどる必要があるかが分かります。
固定的な階層:ミュージックスイッチを設定するにあたり、スイッチやステートを使用してルールや階層を作成し、それらで構造を分岐させます。これはミュージックのルールセットを一貫させる上で非常に有効です。例えばゲームのロード画面用のステートを階層上位に親スイッチとして配置すれば、そのルールセットがゲーム全体に一貫して適用されるため、システムの信頼性が向上します。その一方で、ゲーム中の特定の場面でそのルールから外れたい場合(例えば悲しいカットシーンの後に余韻のある感情的なミュージックをロード画面まで引き延ばしたい場合など)、今回のように構造が分岐していると難しいかもしれません。これを実現する方法はいくつかあり、例えばエンジン内でステートをオーバーライドしたり、スイッチのパス構成を上書きできる追加のステートを用いてWwiseでマトリックスパスを組んだりできます。もしこの問題が頻繁に起こるようであれば、親スイッチを下位に移動して必要な精度を確保するなど、スイッチ階層の順序を見直す必要があるかもしれません。
トランジション:単一のスイッチシステムの優れた点として、あらゆる状況に対してカスタムトランジションを設定できるため、一体感のあるミュージック体験を実現できます。例えば今回のゲームには多数のシネマティックがありますが、後続のストーリー展開や雰囲気を先取りできるよう、通常はプレイヤーがカットシーンに接近するのに合わせてプレシネマティックのミュージックキューを再生し、事前にトーンを作り上げます。これらの2つのキュー(プレキューとシネマティックキュー)は階層内ではまったく異なる位置にありますが、同じスイッチ内にあるため、その場面に応じてトランジションをカスタマイズできます。その一方で、離れた子スイッチ間で実行されるトランジションは管理が難しくなることもあり、またゲームがどの順序でステートを設定するかによってトランジションルールが変わってしまいます。複数のトランジションを次々とトリガーするようなシナリオは、ステートやオプションが多数あるシステムでは複雑になることもあるため、できる限り回避することをおすすめします。
シネマティックとゲームプレイ間のミュージックスイッチの分岐だけでも、カスタムトランジションは最終的に121件にのぼりました。
結局のところ、ゲームを単一の連続的なミュージックスイッチで運用することが、オープンワールド構造を反映できるため理にかなっていました。ゲームには1つの巨大なレベルしかなく、プレイヤーはロードなしで端から端まで移動できます。またほとんどの場合、必要に応じてキャンペーンに出入りしたり、拠点間をテレポートしたりできます。そのためプレイヤーがどのようにゲーム内を移動しようと一貫性のある流れるようなミュージック体験を生み出すには、1つの連続的なミュージックシステムが最適でした。
体系的なミュージックグラフ
ミュージックシステムは、Snowdropエンジン内にある1つの連続する大規模なグラフ/スクリプトで動作し、ここであらゆる関連情報を収集し、Wwiseのミュージックスイッチを動作させるロジックを組み合わせて計算します。このランタイムロジックはミュージックデザイナーが直接管理し、音楽の要件に合わせてカスタマイズするため、ほかのさまざまなシステムに接続するのではなく、一元化されたシステムが優先されます。他機能のロジックに接続する場合と比べてエンジン側の処理と負荷が増える可能性はありますが、ほかのシステムでは考慮されないこともある自然な音楽の流れや、エッジケースにも対応する優れた柔軟性が得られます。ただ、ミュージックシステム内のすべての要素を一から構築するわけではありません。エンジン内にはさまざまな情報を持つ多数のノードがあり、それらをベースに構築できる場合やそのまま利用できる場合もあります。
ミュージックコンバットシステムは、ミュージックスクリプトから完全に体系的な機能を実行するために多くの考慮事項や修飾子を伴う、高度に体系的な機能の代表例です。
詳しい解説:コンバットシステムの事例「Installations」
「Installations」を取り上げ、この機能がエンジン内のミュージックシステムからWwiseへと実行されるしくみを見てゆきます。Installations(施設)は、RDA(ゲームに登場する人間の敵対勢力)が運営するオープンワールドの小規模な戦闘拠点で、Pandoraの資源(オイルポンプなど)を収集することが主な目的です。これらの拠点には中規模の守備隊が配置されており、内部に用意されているオブジェクティブを達成することで、プレイヤーはPandoraの美しい世界を壊滅的に汚染している機械を破壊できます。
![]()
ここでミュージック階層をもう一度見てみると、オープンワールドにはミュージックシステムの対象となる3つの戦闘拠点があり、それぞれシステム面とミュージックコンテンツ面で扱いが異なります。その中で最も規模の小さい拠点がInstallationsです。
![]()
続いて、ミュージックコンテンツに対する最初の修飾子はプレイヤーがいるマップ上の地域です。ゲーム内には3種類の地域があり、それぞれの環境とそこに暮らすNa’vi(ナヴィ)族を反映する独自の音楽的方向性があります。Kinglor Forest(キングラーの森)のアラナヘ族は、ハープなどの弦楽器と小さめの打楽器を用いてやわらかく豊かなアレンジを生み出します。Upper Plains(高地平原)のゼスワ族は、力強いドラムと大型のフルートを用いて一族の威勢のよさと風が吹きすさぶ荒々しい地形を表現します。そしてClouded Forest (雲が覆う森)のカメティレ族は、深みのあるゆったりとしたドラム、ドローン、喉歌を用いて神秘的な森と一族を演出します。各部族には固有の旋律テーマもあり、探索のキューと物語の場面で流れます。
ただし戦闘拠点では、Installationsや人間はPandora固有の存在ではないため、ビジュアル的には人間のRDA勢力に焦点が当てられています。そこでこの場合は地域が修飾子として機能し、地域ごとに独自のInstallationミュージック体験のバリエーションを1つずつ用意することで新鮮味を添えます。システミックな探索ミュージックでは、再生されるミュージックのスタイルと雰囲気に地域が大きな影響を与えます。
![]()
まずInstallationのステート、具体的には稼働中か破壊済みかを確認します。破壊済みの場合ミュージックはありません。破壊済みのステートでは、音楽的な静けさと美しいPandoraのアンビエンスを組み合わせることで、稼働中のステートにおける緊張感のあるステルスや戦闘ミュージック、そして騒々しい機械音とのコントラストを生み出します。
![]()
稼働中の場合、ミュージックは戦闘中か非戦闘中かによって分岐します。このステートグループはNPC AI検知システムを利用し、敵対するNPCがプレイヤーを発見したかどうかの情報を受け取ります。通常ゲームのあらゆる戦闘シナリオにおいて、最も重要で影響力のあるステートです。このステートは検知ロジックが既存の非オーディオノードで実行されているにもかかわらず、ミュージックシステムに固有のニーズがあることを示す好例です。
ミュージックシステムは検知した時に即座にこのステートを設定するのではなく、プレイヤーを攻撃している敵の数と種類を確認し、それに応じてミュージックグラフ内で0~4秒待ってから「InCombat」ステートに移行します。これはミュージックがステルスから全面戦闘へと瞬時に移行するのを回避するためで、例えばプレイヤーを発見した兵士が1人だけの場合に、ミュージックが激化する前にプレイヤーが敵を排除できるバッファを残します。一方、複数の敵がプレイヤーを発見した場合、ミュージックはより短時間で激化します。このしくみにより状況の深刻さを伝えるだけでなく、ミュージックがステルスから戦闘へと瞬時に切り替わり、数秒で元のセグメントに戻ることを防ぎます。
ここで、Snowdrop内でこのロジックがどう見えるかをミュージックグラフで確認します。
![]()
このステートのあらゆる処理が、必要な情報をすべて提供する「Local Player Get Stealth Detection Value」というノードから実行されます。
まず最初にプレイヤーを検知した検知者数を「Detector Agent(s)」ピンからカウントし、これに応じて整数変数「MUS_NrOfEnemiesAgrro」を設定します(適切な命名規則に触れた矢先ですが「Agrro」は「Aggro」のことです)。
次に「Detector Agent(s)」に含まれるすべてのNPCがアーキタイプ「Soldiers」、つまりゲーム内の一般兵かどうかを判定します。すべてがそうでない場合、AMPメカニカルスーツなど大型の相手がプレイヤーを検知していると想定できるため、これに応じて変数「MUS_DetectingNPC_LowWeight」をtrueまたはfalseに設定します。
![]()
続いて検知ノードの「Is Targeted」ピンを確認します。これは要するにプレイヤーが戦闘状態にあるかどうかを判定するための出力ですが、すぐに処理は行わず、先ほど設定した2つの変数を使用して「CombatValue」変数を有効にするまでのバッファ時間を決定します。この変数はWwiseの「InCombat」ステートに直接変換されます。
「Timed Conditional Execution」は、CombatValueを1に設定する場合、戦闘ステートを設定するまでの待機時間を秒数で入力するオプションがあります。まずそのディレイ時間を決定するために、「NrOfEnemiesAgrro」が2 NPC未満(実質的に1 NPC)かどうかを確認します。これがtrueの場合、「DetectingAgent_LowWeight」がfalseであれば3秒、trueであれば4秒待機します。検知者数が2未満ではなくちょうど2の場合、同じチェックを行いますが、今回は検知者のアーキタイプに応じて待機時間は1秒または2秒になります。
最後に、検知者数が2を超える場合はアーキタイプにかかわらず0秒「待機」し、戦闘ステートを即座にトリガーします。
これはミュージックフローの要件に合わせてミュージック特有のロジックを実現する方法を示す簡単な例ですが、ほかのチームはそれぞれのニーズに応じて異なるアプローチを取るかもしれません。例えば敵検知のUIインジケータがこのように待機するのは、おそらく適切ではありません。ミュージックグラフには同様の計算を実行するノードが何千個もあり、ロジックグループ間で変数を共有したり変更したりすることで、必要なミュージックゲームシンクを出力します。
「InCombat」の分岐をさらにたどると次に設定するのは「Activity」というステートで、敵を倒してから20秒間はtrueになります。「Active」の間、ミュージックはナヴィ視点に切り替わり、フルート、部族的な打楽器、ブルガリアンコーラスなどナヴィの音楽的方向性に関連する要素が取り込まれます。これはブラス、オーケストラ打楽器、金属音要素、シンセなどを用いた西洋オーケストラ主導のRDAサウンドとは対照的です。このように楽器構成を変更することで、敵を倒した時にプレイヤーの積極的な反撃を表現します。アクティブの間、20秒のタイマーはダメージを受けるとマイナス、ダメージを与えるとプラスされ、ミュージックが「アクティブ」である時間は戦闘の流れに応じて延長または短縮されます。
戦闘がアクティブな場合と非アクティブな場合の両方の分岐に「Orangeステート」があります。オレンジステートは、プレイヤーが検知された後、敵の視界に5秒間入らなければtrueになります。この時点でNPC検知のUIアイコンが赤からオレンジに変わるため、このステート名が付けられました。trueの場合、すぐに完全なステルスに移行せずにミュージックの激しさが抑えられます。これにより戦闘体験に動的な深みを加えることができ、プレイヤーが一定時間以上隠れている時に「非戦闘/ステルス」へのトランジションが滑らかになります。
戦闘の激しさを示すもう1つのステートが「Weight」で、戦闘に参加している敵の数によって駆動されます。ウェイトはプレイヤーから半径120m以内にいる、すべての敵をカウントします。敵のタイプごとにウェイトが異なり、兵士が1であるのに対して重装のAMPスーツは3とカウントされます。ミュージックはこの数値をスイッチグループに変換し、戦闘中に敵が倒されたか増援が現れたかに応じて、ミュージックの激しさを縦方向に強めたり弱めたりします。
![]()
「Installation:Kinglor Forestバリエーション」の戦闘分岐内における、すべてのミュージックプレイリストコンテナ
ここで「Out of combat」の分岐に戻って確認すると、最初のステートは「Proximity」です。この修飾子ではミュージックシステムがInstallationまでの距離を測定し、拠点に到達する前から緊張感のあるミュージックを開始させ、RTPCで徐々に展開してゆきます。これはステルスミュージックにのみ適用され、その理由はプレイヤーが拠点に向かう途中でも、攻撃された場合は戦闘ミュージックを完全にアクティブにしたいためです。ミュージックはプレイヤーからInstallationへの相対的な角度も計算し、プレイヤーが接近する際に拠点の方向を向いているかどうかに応じて軽いフィルタ処理をかけます。実用的には、ミュージックに対する2つのRTPCは密林地帯で見つけづらいInstallationsの位置を、プレイヤーが把握する上で役立ちます。また美的観点から言うと、「Proximity」セグメントはプレイヤーの接近に合わせて、RDAのInstallationsがもたらしている局地的な荒廃した雰囲気を伝える手段として優れています。
![]()
「Out of combat」ミュージックにも「Activity」ステートがあり、戦闘の分岐で敵を倒した際にコンテンツが切り替わるのと同様の効果を持ちます。また拠点に敵が残っているかを確認するチェックもあります。残っていなければミュージックの緊張感が弱まり、プレイヤーがさらなる戦闘に巻き込まれることなく拠点内でサボタージュ(妨害)オブジェクティブを完了するまで、より軽快なパズルセグメントに変わります。
最後に、プレイヤーが検知されていない時の敵NPCの警戒度を見てゆきます。敵NPCはプレイヤーの存在に全く気付いていない(「Idle」)、不審に感じて調査している(「Investigating」)、プレイヤーが近くにいることは知っているがまだ見つけていないため攻撃的である(「Aggressive」)のいずれかで、戦闘の分岐のオレンジステートに似ていますが、こちらの場合は未発見/ステルスです。ミュージックはこれを受けて敵の警戒度に応じて緊張感を高めます。「Investigating」セグメントでは控えめな打楽器を取り入れて緊張感をわずかに高め、「Aggressive」ではより大きな打楽器要素を用います。これは音楽的にも、この状況に続く可能性の高い戦闘ミュージックにつなげる上で役立ちます。
![]()
「Installation:Kinglor Forestバリエーション」の「Out of combat」の分岐内すべてのミュージックプレイリストコンテナ
以下はInstallationの階層全体です:
![]()
こちらは全体の流れをまとめた動画で、すべての修飾子を同時に表示しています。今回はUpper Plains地域を取り上げました:
今回はInstallationの機能を取り上げましたが、ミュージックシステム全体のしくみを把握する上でお役に立てば幸いです。この機能は全体の一部にすぎませんが、すべてがどのように関連付けられるかを示しています。例えば「戦闘中」のステートはInstallations専用のロジックではなく、クエストやほかの拠点タイプなどでも使用されています。同様に、Installationロジックの一部の要素はゲームのほかの部分にも使用されています。例えばAirConの講演で紹介されているVistaミュージックは、トリガーの具体的な条件として、プレイヤーがInstallationの近くにいないことが求められます。
『Avatar: Frontiers of Pandora』のミュージック制作に携われたことを大変光栄に感じており、その一部をみなさまと共有できたことをとても嬉しく思います。
このブログ記事を公開してくださったAudiokineticと、親切なコミュニケーションチームのみなさまに心より感謝いたします。Massiveのすばらしいオーディオチームとミュージックチーム、Audio DirectorのAlex Riviere氏、Music SupervisorのSimon Landry氏、Audio LeadのDavid Osternacher氏およびMattia Cellotto氏、Audio ProducerのPatrick Görtjes氏、Main ComposerのPinar Toprak氏、Additional ComposerのNeal Acree氏およびBrian D'Oliveira氏にも深く感謝しております。ゲーム開発は、まさにチームスポーツです。
お読みいただきありがとうございました。
こちらはAirConの講演へのリンクです。ご興味のある方はぜひご覧ください:
動画事例のミュージックはすべてNeal Acree氏の作曲によるものです。

コメント