
カプコンは、神奈川・パシフィコ横浜にて9月4日から9月6日まで開催されたCEDEC2019にて、「PC版特有のQA対応~『MONSTER HUNTER: WORLD』の場合~」のセッションを開催しました。PCプラットフォーム開発時に起きるレポートをお届けします。

このセッションには、カプコンのCS第二開発統括 第二東京制作部 東京第一制作室副室長の中村敬則氏が登壇。主にQA体制やPC版で発生した問題、QA関係の統計などPCプラットフォーム開発全般に起きる事例に関しての内容であるため、開発者だけでなくPCゲーマーも読んでおきたい内容です。

■『MONSTER HUNTER: WORLD』のPC版開発について
『MONSTER HUNTER: WORLD』(以下、『MHW』)は、2018年1月26日にPS4/Xbox One向けにコンソール版がリリースされており、PC版は遅れること約半年の2018年8月10日にリリースされています。PC版はコンソール版と時期をずらしながら開発を進行しており、コンソール版では2019年9月6日に超大型拡張コンテンツの『MONSTER HUNTER WORLD:ICEBORNE』が発売されています。


PC版とコンソール版の大きな差異として挙げられるのが動作環境が非常に多岐にわたることです。CPUやGPUのメーカーなどの違いに加え、マザーボード、メモリ、電源など多種多様な製品と組み合わせが存在します。主なCPUとしてIntelのCore iシリーズや、AMDのRyzenシリーズを筆頭に、GPUではNIVIDIAのGeForceシリーズやAMDのRadeonシリーズ、そしてIntel Graphicsがあり、そして各世代やベンダーの動作確認が必要となります。

シリーズごとに各世代の動作確認をするには膨大な労力が必要となることから、動作対象となる世代の範囲やQAコストを決めてディレクターやプロデューサー各所に同意を取る必要があります。

想定スペック以外の動作保証については、PCの多様性にも関係するためにユーザーの動作ロースペックPCとハイスペックPCの動作保証も必要です。コンソールでは想定フレームレートに達しない事が多くありますが、PC版では逆に想定フレームレートを上回ることでコンソール版だと気付かなかった不具合に気付くこともあります。
映像品質だけで無くゲームプレイ品質が損なわれないよう配所が必要で、負荷削減による影響を考慮しつつ「テクスチャ解像度が下がって看板が読めなくなる」や「LODが下がりモデルが簡略化されたことで記号が分からない」など無いようにする必要もあります。

グラフィックスオプション設定の組み合わせによる挙動の変化では、ユーザーの動作環境が多種多様なので、それぞれの環境で快適なゲームプレイを保証するためにグラフィックスオプションによる負荷の調整は必須です。ロースペック/ハイスペックどちらにも向けた施策が必要で、ハイスペPCで動作した際に効果が実感出来なかったゲームはハイスペPCを導入したユーザーの期待を裏切ることになり、ユーザー評価に影響を与えかねません。そのためロースペからハイスペPCまでの設定の幅を想定します。

フルスクリーン/ウインドウの画面解像度はユーザーの好みに合わせて各種グラフィックス機能コントロールなどがあると望ましいですが、項目数が増えるとQAコストが増大してしまいます。そのため全てを網羅するのは現実的に不可能ですが、ユーザー層を考慮してボリュームゾーンを設けることが重要とも語ります。
異なる画面解像度での動作に関してもUI関連は大きな影響を受けます。コンソールはほとんど16.9ですが、PCでは様々な種類が存在します(一般的な16:9や16:10、4:3、21:9など)。アスペクト比が変わるとUIも変わることに加え、ロースペPCでは1080pではそれより低解像度にもなる場合もあります。

Windows OSバージョンの違いによる挙動の変化に関して、『MHW』PC版はWindows7/8/8.1/10をサポートしていますが、Windows 7系統と10ではウインドウの管理が違うようです。また、ウインドウ/フルスクや、Alt+TabやAlf+Enterの切り替えショートカットの挙動の違いもあるとも語ります。さらに、切り替え完了速度や切り替え後のウインドウメッセージが来るタイミング、クリアントサイズを取得するタイミングが異なります。
本作ではWindows SDKによるHDRへの対応を行いました。2018年秋からHDR対応を始めましたが、OS側のディスプレイ設定の項目変更で、ウインドウモードにした場合に出力が戻らない現象もあったようです。

続いてはQA耐性に付いての話題です。「PC版チェックに特化したQAチーム、各種機材の確保」では、各ベンダーの各世代の機材の確保する必要があることを筆頭に、広いユーザーをカバーするため古い機材での動作確認が必要となりますが、古い機材は処分されていたり中古品のみ可能性があるとも述べます。
対象ユーザーを広げたいがあまりチェック用機材が確保出来ないことがないよう調査は必須です。PC版『MHW』は最小動作環境にGTX 760が記載されていますが、現在新品確保が難しいとも挙げます(GTX 760自体は2013年に発売された製品)。またOSに関しても同様で、Windows 7は現時点でも確保しやすいものの8.1は確保が難しいため動作の対象外にしても良いのではとも加えました。なおWindows 7も2020年1月にはサポート対象外となるために、いつまでサポート対象にするか検証する必要があると話します。
さらにモニタの確保ですが一般的なのが16:9の一方、微妙に解像度の高いモニタでもちゃんと表示されるかチェックする必要もあります。全ての解像度を網羅するのは確保するのは困難ですが、16:9/4:3/21:9など各種アスペクト比のモニタを最低1台用意する必要もあります。

PCゲーム(PCゲーマー)は操作方法を筆頭にコンソールとは別の文化をもっていることが特徴です。可能な限り普段からPCゲームで遊んでいるユーザーがQAチームへ参加することが望ましいとも語ります。
PCそのもののアーキテクチャやデバイスへの理解も必要ですが、マウス+キーボードの操作がコンソールのみの経験をもつチェッカーに難しく、チェックを行うためには操作に慣れた人が必要となります。一方でPCゲーマーの慣習にそぐわない問題はPCゲーマーの文化に慣れ親しんでいないと対策が難しいとも加えます。

「チェック用ビルドの提出、管理耐性」では、ビルドを毎日更新するため実装の確認や不具合チェックのためにNAS経由でビルドを配布したそうです。QAチーム向けにはインストールの手間やバージョン統一の都合から週1の提出。またQAチームにはユーザーに近い環境を作ることからSteamクライアント経由で配布しています。QAが進むとGPUベンダー固有の問題が出てくるために、NVIDIAやAMD、IntelそれぞれCPU/GPUでの起動確認を行ったとのこと。

バグ提出確認フローではHansoftを利用しています。グラフィック関係のバグは、再現性の低いものだと個別の環境に依存している可能性があるために、報告時に機材を記載する必要があります。グラフィックスオプションは設定ファイルと共にセーブデータと別ファイルで出力。設定次第では2度と起動出来なくなってしまう可能性もあるため、編集可能なファイルとして出力する必要があるようです。
またコンソールとPCの共通バグが発覚することもありますが、その場合はPC版のみで修正可否を判断しようとせず、オリジナル版の担当スタッフにも共有して判断するとのこと。コンシューマ版のリポジトリをオリジナル版スタッフが修正し、それをPC版スタッフがPC版へマージするという方法をとっています。

QAチームと開発チームのコミュニケーションにはHansoftと別にMicrosoft Teamsを使用しています。Hansoftの話題が1つ1つの不具合を扱うのに対し、Teamsではスケジュールやチェック内容やチェック方針、ピンポイントな質問、要望などカジュアルな内容を扱っています。また、心的ハードルの低いコミュニケーション手段を用意しておくことも重要とも語りました。

QA向けのデバッグ機能では、コンソール版だと各プラットフォーマーから不具合調査に役立つ機能が提供されるが、PCではある程度自作する必要があります。カスタマーサポートを見越して実装したものとしてクラッシュレポーターやシンボルファイル分はリリースからずっと残してあります。またネットワークログなど、環境に依存しやすい要素なため表に出てこないエラーも含め、起動後のロビー作成や参加回数を残すようにしたそうです。それぞれのプラットフォーム毎に用意しなければならないものの違いを把握しておくことも重要です。

カスタマーサポートとの協力体制。リリース後はユーザーからの問い合わせ対応があるためにカスタマーサポートのやりとりを行います。既知の不具合はHansoftに情報が蓄積されているため、カスタマーサポートやQAチーム、開発チームに一言出来るようにしています。ユーザー環境で発生した不具合の再現確認をQAチームに依頼し、新たな案件として起案して開発チームで修正することが同じツールできるようになったようです。

ユーザー環境で再現性の低い描画不具合やクラッシュが発生した場合はPCの情報ファイルやグラフィックス設定を提出して貰うことで情報を集めます。また特定の機材によるバグはSteamフォーラムで情報提供を行ったこともあったようです。

ユーザー情報から特定のCPU/GPUでのみ発生する不具合があった場合はパーツベンダーにも協力を依頼することもありました。グラフィックスドライバ側での解決か、ソフトウェア側で解決するのかは協議を行います。このケースはまれなため調査を時間掛けて解決を図ります。
■PC版独自に発生した不具合とその解決策

「 PC版の方が水しぶきのエフェクトがより濃く出ている」では、エフェクト発生処理を一定間隔で行っていたが、基準フレームで取るべきところを最大フレームレートで行ったため発生したそうです。コンソール版では基準値だったところ、PC版では最大値に変更出来たために発覚しました。単なるコーディング上のミスや勘違いによるものなので簡単に修正できましたが、コード上では複数同じミスをしていた事がわかったとも加えます。


「とあるカットシーンで、本来表示されていなければならないモデルが正しく表示されていない」は、頂点座標が不正な値となってしまいポリゴンが崩れてみえるバグです。カットシーンでは最高設定のLODが使われる想定でしたが、モデルデータにLODデータが含まれていなかったため発生したようです。またこの不具合の対策は、該当のカットシーンを再生する際にLOD上限オプションを無効化し、常に最高のLODモデルが表示されることで解決しました。この事例のように、ロースペック向けのグラフィックスオプションのみ不具合が発生することもあります。

「いろいろな開発環境でチェックする中で、特定のCPUを積んでいる環境でだけ、起動時にエラーが出てしまい起動できない」は、原因として古い世代のCPUが対応していないため起動出来ないものでした。プログラムにSSE4拡張命令を使用している箇所があったことから起動時にエラーが発生してしまったためで、プログラム自体にSSE4拡張命令が使われていたことも想定外だったようです。また、どの世代が拡張命令に対応しているのか調べておく必要があるとも述べました。

「特定の環境でのみ、エンディングまで到達すると必ずクラッシュしてしまう」。クラッシュの原因としては、エンディングで使用されているムービーで、通常のWindowsに標準にインストールされているはずのコーデックが導入されていなかったことが原因でした。そのため必要なコーデックインストールを案内することで解決を図ったそうです。標準機能だと思っていたものが実は環境依存だったので、ワールドワイドで展開する際には気を付ける必要があると話します。

「21:9モードにて、タイトル画面の端が不自然にボケている」では、タイトル画面専用シーンは16:9想定だったため両脇に絵が用意されていなかった事が原因でした。そのため隠すために帯をかぶせて対処すると共に、カットシーンについても同様の処理を用いています。


「画面解像度を小さくするとUIに切れ目が生じる」問題では、解像度に合わせた縮小処理の計算誤差にあるもので、UIのピクセル座標は整数で扱うべきですが、解像度が変更されると小数で扱わざる負えないことに起因しています。その結果UIテクスチャのつなぎ目なため1ピクセルの隙間が空いてしまいました。そのため誤差に合わせて整数値に切り替える対応を行い緩和しています。この事例のように解像度によっては完全に解決出来ないこともあります。


■統計情報から読み取るPC版のQAトラブル分布図
次は『MH:W』QA関連の統計情報です。「PCプラットフォーム特有の不具合」(機材依存がグラフィックオプションなどによるもの)と「PC版で追加した機能や仕様による不具合」(キーボード・マウス対応など)、そして「CSでも発生しうる不具合」(CS版と共通の機能で発生した不具合など)の3つを挙げます。

図の「PCプラットフォーム特有」と「PC版で追加した機能等」を足すと、「CSでも発生しうる不具合」と同程度の割合という結果になっています。また各分野の不具合分布では、どれもBクラスの「軽微な不具合」が多く、一方の「PC特有の不具合」ではSクラスの割合が多いなど微妙な差異が目立ちます。


「PCプラットフォーム特有の不具合」を取り上げてみるとスペック依存 23.6%が、環境(機材)依存が 23.0%、解像度影響が17.5%、OS依存が16.6%、グラフィックオプションが15.3%、アスペクト比が9.8%、そしてネットワーク関連が6.4%。という割合で分布しています。

特に「スペック依存」と「環境(機材)依存」が占める割合が多く、スペック依存はベンダーに関係なく発生したもの環境依存については特定の組み合わせの時にだけ発生したものを記載した数値です。後者の不具合は発生頻度が少なく、ベンダーと協力しながら修正しています。

バグの優先度に応じて分類してみると「スペック依存」は軽微な不具合が多数を占めていますが、「環境(機材)依存」はSマイナス不具合が多いことが目立ちます。これは、開発時に気づけずQAチームを含めた多様な環境でのチェックから確認出来た不具合で、機材という観点から致命的なものに繋がりやすいことを示しています。
なお、解像度は見た目に影響が大きく割合としても高めで優先度が高いバグとならなかったためのようです。また「ネットワーク関連」の不具合も個々の環境差によるものが多いため発生頻度が少なく、致命的な不具合が多くなる傾向にありました。

最後にまとめとして、QAチャックにおけるPC版の多種多様な動作環境において「PCプラットフォーム特定の不具合」の事例と、カテゴリ分けした不具合の統計情報などを話し、セッションを終了しました。
