[レポート] ポケモン世界の おんきょうの しんか! 鳴き声や環境音で独自の世界を表現する方法 #CEDEC2023 #classmethod_game
こんにちは、ゲームソリューション部の入井です。
この記事ではCEDEC 2023で発表されたセッション「ポケモンの せかいを かけめぐる おと! おんきょうデザインで ひろがる ぼうけんの すがた!」について、内容のまとめとその所感を書いていきます。
セッションの概要
ポケモンの せかいを かけめぐる おと! おんきょうデザインで ひろがる ぼうけんの すがた! | CEDEC2023
『ポケットモンスター スカーレット・バイオレット』および『Pokémon LEGENDS アルセウス』の開発に携わった経験をもとに、
一般の生物がいない「ポケモンの世界でのリアル」な環境音と鳴き声の制作方法について紹介します。
広大な冒険の世界を埋め尽くす環境音の実装を効率化するための施策や、ポケモンの鳴き声表現の発展、各種デバッグ機能や最適化についても解説します。
講演者
一之瀬 剛 氏
株式会社ゲームフリーク
開発部
サウンド
北村 一樹 氏
株式会社コネクテコ
代表取締役
岩本 翔 氏
フリーランス
サウンドプログラマー
環境鳴き声
一般的なゲームでは、自然環境を音で表現するために現実にも存在する鳥や虫の鳴き声が使用されます。
しかし、ポケモンの世界には現実世界と同じ動物や昆虫がいないため、代わりにポケモンの鳴き声を通して自然環境を表現することになります。このセッションでは、そうした鳴き声のことを環境鳴き声と呼んでいます。
ゲーム世界の奥行きが広がり効果音の鳴らし方にも多くが求められるように
ポケモンシリーズで環境鳴き声が最初に登場したのは3作目の『ルビー・サファイア』からでした。この時は、周囲のエンカウント対象のポケモンの鳴き声をランダムで鳴らすことで、プレイヤーへポケモンの発見の面白さを提供しました。
シンプルにポケモンの鳴き声を再生するだけだった環境鳴き声は、シリーズ7作目の『サン・ムーン』で最初の進化を迎え、環境鳴き声専用に用意された音声をランダムなピッチや音量で変化を加えて再生することで、情緒的に世界を表現するようになりました。
そして、シリーズ8作目の『ソード・シールド』にてプレイヤーカメラを3D空間上で自由に操作できるようになったところで、環境鳴き声は更なる進化を求められることになります。
山の中でポケモンの鳴き声の自然な響き方を研究
『ソード・シールド』に向けてより高品質な環境鳴き声を制作するために、まずポケモンの鳴き声を山の中で鳴らす実験をしてみたとのことです。
実際の自然環境と同時に収録をすることでクオリティの高い環境音が作成できましたが、本物の鳥や虫の音も入ってしまうため、そのままゲームに使用できるアセットにはなりませんでした。
一方で、自然の中で鳴いているミミズや虫の声がかなり電子音に近い、つまりポケモンの鳴き声に近いという発見もありました。
そこで、スタジオで空間に反響するように再生したポケモンの鳴き声をリアンプし、そこになるべく生き物の声が入っていない環境音をミックスしてみたところ、リアリティのある環境鳴き声を作成することができ、『ソード・シールド』に採用したとのことです。
環境鳴き声としてはクオリティの高いものが制作できましたが、音源としては無音の間も含めて長時間録音したものを使用する形だったため、容量の関係で多くのパターンが用意できなかったという課題が残りました。
独自のツール「PokeSynth」を活用した なきごえ の しんか
『ソード・シールド』の次に制作された『Pokémon LEGENDS アルセウス』では、全てのポケモンの鳴き声を距離別に用意し、それをフィールドに存在するポケモンの種類に合わせて環境鳴き声として鳴らす仕組みを導入することで、前作で課題になっていた再生パターンの少なさを解消しました。
これによりサウンドとしてのクオリティは向上しましたが、鳴き声アセットの数がポケモンの数 x 鳴き声5種 x 距離3種と膨れ上がってしまい、ポケモンの数が更に多くなる次作の『スカーレット・バイオレット』で同じ方法のまま環境鳴き声を制作することは難しいという新たな課題が発生しました。
これについては、サウンドミドルウェアの『Wwise』上でオリジナルのエフェクトをかけることで、距離別の鳴き声アセットを用意する必要がなくなり、解決できたとのことです。
しかし、鳴き声については以下のような課題がまだ残っていました。
- オリジナル音源の波形のバリエーションが少ない。
- 表現力を上げるために、バリエーションを増やしたい。
- 歴代作品によって音源の波形の性質が異なる。
- 一括で既存の音源から新しい音を生成するのが難しい
- しかし、効率化のためには全て同じようなワークフローで作成したい。
- ポケモンの鳴き声は認知度が高く、大きな変化を付けづらい。
- バリエーションを増やすには、オリジナルのニュアンスを残す必要がある。
- ポケモンの数が大量で図鑑ナンバーが1,000を超えた。
- 大量の鳴き声アセットを効率的に作成する仕組みが必要。
上記のような課題を解決するために開発されたのが、GameSynthをベースにしたPokeSynthというオリジナルのツールです。
このツールは、オリジナルの音源をベースに様々なバリエーションの新しい効果音を生成する機能を持っています。
例えば、線を書くことでその線に合わせたピッチ変化を適用した音を生成したり、人間の声の演技を入力することでそれに調子を合わせた音を生成したりする機能があるとのことです。また、これらの生成機能を大量のオリジナル音源に対して一括で実行することができます。
PokeSynthの導入により前述の課題を解決できた上に、カットシーン用に感情を表現した鳴き声バリエーションが作成できるようにもなりました。
より生き物らしい鳴き声の聞こえ方でポケモンの生態を表現
『アルセウス』では、夜間は夜に活動するポケモンの鳴き声が鳴るといったような、生態に合わせた鳴き声演出を目指しました。これは、鳴き声を鳴らす対象となるポケモンのリストをエリア情報から取得し、その中からランダムで鳴き声を再生する仕組みで実現しています。リストの中にはプレイヤーから見てどの程度の距離・方角にポケモンがいるのかという情報もあり、それらを加味した上で音声が再生される形になっています。
鳴き方のバリエーションは増えましたが、単にランダムにリストから鳴き声を再生していたことを課題とし、次作の『スカーレット・バイオレット』では生物が活動するだろう場所、時間帯、天候、習性を定義して、よりリアルな生態を鳴き声で表現することになりました。
生態を鳴き方に反映するために行ったのが、鳥ポケモン・虫ポケモンといったタイプ別のシーケンスの定義です。例えば、現実の鳥類はお互いに鳴き声を出し合う鳴き交わし(コールアンドレスポンス)という習性がありますが、それを鳥ポケモンも再現するようなシーケンスを用意する、という形です。
この仕様の実現のためには、オリジナルの鳴き声シーケンサーが作成されました。このシーケンサーにはシーケンス定義機能の他に、鳴き声の間にインターバルを挟んだり、シーケンス通しを繋ぐ確率を設定できるチェインという機能があります。前述の鳥ポケモンの鳴き交わしには、このチェイン機能が使用されました。
鳴き声以外の環境音
ポケモンの環境効果音には、これまで紹介した環境鳴き声の他にも、川の流れる音や気が揺れる音といった現実世界にも存在する環境音があります。
音源の自動配置による広大な世界の表現と作業効率向上の両立
環境音を本格的に導入したのは『金・銀』のリメイクである『ハートゴールド、ソウルシルバー』からでした。(時系列的には5作目の『ブラック・ホワイト』の直前)
波の音や風車の回る音など様々な環境音が鳴ることで臨場感が増しましたが、音の発生源を人力の手作業でマップに配置したため、デバッグ含めてかなりの人的コストがかかってしまい、これ以降しばらくは環境音の優先度を下げることになったとのことです。
その後、『サン・ムーン』にて豊かな自然を表現するために環境音のクオリティアップが行われましたが、こちらも人力が中心であったため更にコストがかかってしまいました。
『ソード・シールド』以降はハードがSwitchに移行して3D表現がパワーアップしたことで、環境音もそれに合わせた進化が求められていましたが、『サン・ムーン』でのコスト問題を踏まえ、並行して作業の効率化にも取り組む必要がありました。
『アルセウス』においては、球や四角カプセル型のオブジェクトを音源としてフィールドに配置し、プレイヤーがその中に入ったり、近づいたら発音する仕組みを導入しました。
これにより必要な環境音の導入はできましたが、フィールドへのオブジェクトの配置や地形の変化に合わせた音源の変更を行うための人的コストが高かったり、川などの複雑な地形は何処に音源を配置すべきかの判断に困ったりなど、いくつかの課題が残りました。
最新作の『スカーレット・バイオレット』では、WwiseのMultiPositionという方式を採用し、各地系オブジェクトに合わせた点群を用意し、そこから環境音を鳴らす仕組みが取り入れられました。
点群の配置方法については、地形オブジェクトの種別ごとに異なる調整が行われました。例えば、木の揺れる音は単純に木のオブジェクトに音源となる点群を仕込めば良い一方で、草の揺れる音は草の全体的な量を踏まえた発音が必要なため、周囲の草地情報を収集する仕組みを導入する、といった形です。
効率化・最適化
『スカーレット・バイオレット』におけるサウンド実装のための効率化/最適化手法についても紹介がありました。
4種類のデバッガーで開発効率アップ
サウンドミドルウェアのWwiseにProfilerというモニタリング機能がありますが、どうしてもそれだけでは見られない情報があり、独自のデバッカーが作成されました。
Gizmoというデバッガーでは、ゲーム画面上に音源再生イベントやプレイヤーからの距離情報の表示を実現しています。
Objectsでは、オーディオコンポーネントが持っている情報を表示しています。
BGMManagerは、BGMの再生調整や再生記録をタイムラインとして視覚的に確認可能にしています。
Historyではイベントのログをゲーム内で確認可能です。
優先順位に基づいた発音制御
各効果音の発音制御を行うためのAudio Groupという仕組みも新規で開発されました。
これは、効果音再生イベントをグルーピングし、各グループごとに再生の優先度を付け、全体お発音数が多い時に優先度が低いグループの再生イベントをスキップする、ということを可能にするための仕組みです。
例えば、同じポケモンの鳴き声の再生イベントでも、自分のポケモンと野生のポケモンでは再生するかどうかの優先度が異なりますが、Audio Group機能を使用することで自分のポケモンの鳴き声のみ優先して再生する、という制御が可能になります。
感想
ポケモンのような歴史のあるシリーズの中で、効果音の作り方や実装方法が変遷していく流れを知ることができ、非常に面白いセッションでした。特に、ポケモンの世界には現実のような鳥や虫が存在しないという制約には確かにそうだと衝撃を受け、それを解決するためのユニークな手法にも驚かされました。
また、ゲームのサウンドエンジニアが普段どのような考え方で開発を行っているのかについても勉強になりました。