スクウェア・エニックスの大作ゲームにおける「大技」実装の裏側には、数多の工夫と苦労が詰め込まれていた【GCC2019】
今年3月30日に開催されたデジタルエンターテインメントクリエイター協会によるゲーム業界向けの大型勉強会GAME CREATORS CONFERENCE’19内で、「大規模ゲーム開発における大技発動仕様事例」と題された講演がおこなわれた。同講演では株式会社スクウェア・エニックスから、背景セクションに所属する三浦康一氏が登壇。
「プレイヤーが望んだタイミングで、フィールドのどの場所でも、派手で大きな技や自由に操作可能な召喚キャラクターを使うことができる」という仕様を実現するにあたり、考えたこと、取り組んだこと、苦労したことなどを中心に話は進められた。スクウェア・エニックスが近年発売する大作アクションゲームにおいて、散見される大技。派手な演出と共に、視覚・操作両方の面で爽快感をもたらしてくれる。それらはどのように実現されたのだろうか。
大技を発動させるためのさまざまな条件
まず、三浦氏は、どのような大技や発動条件があったのかについて説明をおこなった。そこで、約30種類開発された大技の中から例として、それぞれ特徴の異なる大技が4つ挙げられた。1つ目は「船」。自由移動はできないが、向きを変更、前後に回転することで周囲の敵にダメージを与えることができる大技となっている。
2つ目は「塔」。この大技は塔の先端からレーザーを射出し、地上の敵にダメージを与えることができ、前述の船と比較してもさらに大規模な技だ。3つ目は自由操作が可能な大技として「動物」。突進や範囲攻撃で敵にダメージを与えることができ、ジャンプも可能な大技。最後4つ目には「ロケット」が挙げられた。体当たりや最後にロケットを投げ込んで敵にダメージを与えることができ、空間を自由に飛行することが可能な大技となっている。以上4つの大技はそれぞれ大きさ、移動性能が異なっている。
それに併せて三浦氏から、大技を使うための3つの条件について述べられた。1つ目は、その大技を取得すればどこでも使用できる技(塔と動物が該当)、2つ目は、特定のステージのみで使用できる技(ロケットが該当)、3つ目は、特定のバトルエリアのみで使用できる技(船が該当)といった具合に技によって使用できる条件も異なっているそうだ。しかし、三浦氏は、どこでも使用できるという条件の技が存在するため、原則、フィールド全ての場所で大技を使用できるようにする必要があり、こういった発動条件の違いは重要でないと述べた。
続けて三浦氏は、大技発動条件において密接にかかわる要素であるフィールドの多様性について話を進めた。フィールドには山や森、洞窟などの“自然地形”と街や工場、遺跡などの“人口地形”が存在し、広大で単純な形をしたフィールドなら大技を発動させやすいが、複雑で狭いフィールドも多いため、そう簡単にはいかなかったようだ。また、プレイヤーキャラクターの移動性能も考慮しなければならず、移動やジャンプに加えて、壁を走る、蹴る、空を滑空することも可能なことから、地面だけでなく、空中を含めたすべての空間で大技発動を考慮する必要があったという。こういったすべての要件を踏まえたうえで、すべての場所で大技を発動できるようにすることについて、三浦氏は「とても難しいミッション。合理的に考えれば普通は選択しない仕様だと思う」と、仕様を実現させる難しさを語った。
大技を発動させるしくみとルール
また、さまざまな大きさ、挙動をもつ技を使うにあたり、制作する上でレギュレーション(守るべきルール、規則)を設定したという。具体的には、背景制作においてすべての場所を高さ6m、幅6mの円柱が移動できるようにする、背景のレギュレーション。そして上記の広さがあれば、技を発動および動作可能とする技のレギュレーションが設定された。ここで三浦氏から、大技発動の流れについての詳細が語られた。まず、ユーザーが大技発動のボタンを入力すると即座にプレイヤーキャラクターの周囲にその大技を発動できる空間があるかチェック。同時に技ごとに異なる形状が収まる空間があるかどうかもチェックする。その結果、周囲に空間があれば大技発動、周囲に空間がなければ、いまキャラクターが所属する「スポーンボリューム」内の最寄りの「スポーンポイント」に発動するといったしくみである。
「スポーンポイント」とは、十分な空間がある、もしくはゲーム進行上発動しても問題がない場所など、大技を発動できる絶対に安全な位置を座標データとして設定したものを指す。
「スポーンボリューム」とはプレイヤーが行動できる範囲であり、その中からどの「スポーンポイント」を使用するかについて設定したものを指す。三浦氏は「スポーンポイントが大技発動の生命線」と強調した。
大技仕様の目的と価値
次に、このようなしくみを検証するにあたって、その時に考えた仕様の目的や価値についての話題へと移された。具体的には、この仕様は「誰のため」「何のため」に開発するのかといった部分である。「誰のため」については新規ユーザーかシリーズファンユーザー、ゲームの得手不得手、年齢、性別などさまざまなターゲットが想定されたが、大規模な予算を投じて開発する製品であるため、ファンのみならず多くの新しいユーザーにも楽しんでほしいと考えたようだ。「何のためか」については製品におけるゲームシステムの新機能、すなわち、製品のウリのひとつとして開発された。
ここで示された新機能とは大技のことを指し、これはまだ知らないユーザーへ興味をもってもらう、すでに興味をもったプレイヤーにはプレイできることを期待してもらう、プレイしてくれたユーザーには必殺技として楽しんでもらうといった具合で、最終的に「プレイして楽しんでもらう」という状況へ導く。つまり大技は、導線の役割を担っている。ここで三浦氏は仕様の目的を「派手で爽快なので体験したいと思う、訴求力」と「今までにない新しい体験ができる、新体験」のふたつに整理した。そして、どちらも製品に必要不可欠であり、また、どちらかに偏ってもいけないと述べた。
しかし、全ての技を全ての場所で“絶対”に発動できるようにすることは、開発者として確約が難しかったようだ。そこで三浦氏は「トレードオフ」という考え方を提示した。この考え方は、優先度を踏まえて品質を高くする部分と落とす部分を調整するといったものであり、大技はバトル時のピンチやチャンスで使えなければ価値がないので、バトルでは必ず使えるように、品質を高く設定し、バトルがない場所で使う頻度は少ないため優先度や品質は少し落としても構わないとう方針に至ったという。三浦氏は「この方針をたてず、全ての場所を高品質に設定するということは不可能だった」とトレードオフの重要性について述べた。
浮かび上がる問題点
ではなぜ、三浦氏は全ての場所を高品質に設定することは不可能だったと言及したのか。その原因には大技を発動するうえで重要なしくみのひとつとなる「スポーンポイント」の存在が関係しているようだ。このしくみは、あらかじめ安全に大技を発動できるポイントを配置しておく機能。そのため、もし複雑な地形など、安全でない場所で大技を発動した場合でも、キャラクターを最寄りのポイントに移動させ、そこで大技を発動させることで不具合を防ぐといった役割を担っている。
このしくみがなかった場合、安全な位置でない場所で大技を発動すると、プレイヤーキャラクターが地形やオブジェクトにハマってしまい身動きが取れなくなるといった不具合に発展する。スポーンポイントは、ナビゲーションメッシュ(AIの経路探索用のメッシュ)を元に生成され、各メッシュの中心座標をスポーンポイント生成の候補にする。候補となった座標に高さ5m直径6mの円柱が収まることができれば安全な位置だと判断し、スポーンポイントを生成する。狭かったり、障害物があり、円柱が収まらなければその座標は安全でないと判断し、スポーンポイントを生成しない。このようにして大技を発動できる安全な床にスポーンポイントを配置したようだ。
しかし、こういったしくみを設定するうえで3つの問題に直面したと三浦氏は述べた。1つ目はフィールドの向こう側や壁の向こう側など、不正なスポーンポイントができてしまったことが挙げられた。対処方法として、行けない場所のナビゲーションメッシュを全て除去、そのために、同講演で紹介されたマップでは1000個以上のスポーンボリュームをひとつひとつ手動で配置したという。2つ目に、ゲームの都合上一時的に封鎖している扉の向こう側など、非接続な空間への不正なスポーンが挙げられた。対処方法としてフィールドの構造に合わせてスポーンボリュームを分割し、不正なスポーンを解消した。3つ目はイベント開始トリガーやデータをロードするトリガーなど、ゲームトリガーを貫通する不正なスポーンが問題として浮かび上がった。
ゲーム用のトリガーは、調整の都合で追加や変更をおこなうことがしばしばあり、トリガーの形状を全て見直して修正することはコストもリスクも高く非現実的であったようだ。対処方法として、トリガー内にポイントがあればそこが最寄りのスポーンポイントとなり、必ずトリガーを踏むことになるといった発想のもと、貫通してはいけないゲームトリガー内にスポーンポイントを生成した。その結果、広くて複雑なフィールドには10万以上のスポーンポイントが配置されたようだ。これに関して三浦氏は「このたくさんのポイントのたった1つでも不正なポイントがあれば、進行不可になる可能性があるという恐ろしい状況だった」と付け足した。
そのほか、海中や海上、街中など、ゲーム的に大技を使わせたくないような場所には禁止領域やキャンセル領域を設定する。かなり巨大なオブジェクトを創出する大技発動の際、空間が足りなければ背景を異空間へと遷移させる。動くフィールドには全パターン分のスポーンボリュームとスポーンポイントを用意し、フィールドの切り替えと同時にそれらも切り替えるなど、さまざまな例外的な課題や、それらに対する対処方法が検証されたようだ。
今までに列挙した不正なスポーンの確認には、スポーン位置の可視化、各トリガーの可視化、トリガー貫通時の警告表示などをおこなう不正なスポーン確認用のデバッグ機能が用意された。また、ヒューマンエラーを回避し、地形やトリガーの変更を即座に反映させるため、毎晩自動でビルドをおこなったようだ。さらに自動ビルドのログを毎日関係者にメールで通知し、ビルド時のエラーや、各ステージ、スポーンボリュームごとのスポーンポイント数を共有。前日から変化があった際は、その原因と不具合が発生していないかどうかの確認をおこなった。しかし、地形の変更、ゲームトリガーの位置や配置の変更により、不正なスポーンが発生するといった問題も抱えることとなった。三浦氏は「まれにスポーンポイントが数万単位で爆増することもあった」と述べており、保守期間中においても気が抜けない状態であったことが伺える。
反省点と今後の展望
最後に三浦氏は、仕様を実現させた結果と今後の展望について話を進めた。ユーザーからはバトルが楽しい、派手な技が爽快といった意見が多く寄せられ、また、技が発動できない、発動時に場所が変わるといった声はほぼなかったとのことで、新体験と訴求力という目的と価値を達成し、トレードオフに関してもうまく作用した形となった。しかし、改善すべきところはたくさんあると述べたうえで3つの反省点と改善案を提示した。
1つ目は「どこでも」使える技の存在と、「バリエーションが豊富なフィールド構造」の組み合わせがコストを跳ね上げた点である。改善案として予算や期間、技術力などの条件に応じて慎重に選択する必要があり、同講演の内容に準じた場合、技の使える場所を制限したり、技の大きさに強く制限をかけることでコストはもっと抑えられたのではないかと三浦氏は語る。ただし、合理性を追及していくとよくある仕様と化してしまう恐れもあるため、プロジェクトの制約の範疇でベストな選択をすることが大切なようだ。
2つ目に、仕様が多く、プロジェクトの期間が長いゆえにプロジェクト後半になって発覚する問題があったという点が挙げられた。改善案として、仕様の共有、把握の徹底、それを補うため、適切な形でデータの可視化を模索していく必要があるようだ。3つ目に、関連するデータの変更や修正が不正なスポーンに発展するといった点が挙げられた。改善案として、可能な限り自動化し、人の手による作業を減らしていきたいと三浦氏は述べた。ただし、それには相応のコストがかかることが想定されるため、仕様の目的と価値を計り、規模に適した投資をする判断が重要となることを付け加えた。
三浦氏は「もし、もっとスマートに開発できた場合、その情報を勉強会などで共有して頂けるとありがたい」とフィードバックを求めたのち、「私たちもよりよい製品開発をしていきます」と意気込みをあらわに、同講演を締めくくった。いつでもどこでも発動でき、迫力ある派手な大技は、開発者たちの苦労や試行錯誤、なによりユーザーへ楽しんでもらいたいといった考えのうえに成り立っていることが伺えた講演となった。