VALORANTのゲームプレイの一貫性に関するアップデート2
皆さん、こんにちは。今回はゲームプレイの一貫性に関する調査結果と作業に関する報告の続編を、VALORANTのゲームプレイテクノロジーチームよりお届けします。
寄せられた報告の概要をおさらいしたいという方は、先月公開された前回記事をご覧ください。そちらでプレイヤーの皆さんからいただいた報告の概要のほか、私たちが掘り下げている内容(レイテンシ、正確性、高PINGのプレイヤーパフォーマンス)の要約を取り上げています。
前回の記事では、問題点とその理由について取り上げました。今回は、私たちが改善を施した主な領域であるレイテンシとバッファリングについての詳細をお伝えします。VALORANTにおけるレイテンシおよびバッファリングの重要性、調査に対する知見、私たちが行った修正と改善、そして現在取り組んでいる長期的な作業についてお話ししたいと思います。
以下はパッチ4.10で実装される内容の要約です。
- 不安定なネットワーク状態、クライアント側の低フレームレート、Alt+Tab、長時間にわたる高いネットワークジッタの後に起こり得るいくつかの問題を発見し、修正しました。
- これらの問題は、プレイヤーがサーバー側での入力データ処理の遅延や、画面上の敵の動きに遅れを感じる原因となります。
- パッチ4.10で実装される変更では、これらの状況におけるネットワークバッファリングの動作を向上させ、内部で何が発生しているかを示すデータをプレイヤーに提供します。
- これらの変更で、試合ごとにネットワークの遅延や反応速度に一貫性がないと感じさせていた主な原因を解決しましたが、今後も監視を続け、さらなる改善に取り組んで行く予定です。
- 依然としてゲーム内で問題が発生している場合は、新たに導入されたグラフが、皆さんが問題の数値化および原因究明する際に役立つことを願っています。
- 引き続き、皆さんからの報告をお待ちしています。可能であれば動画と一緒にプレイヤーサポートにご報告ください。
レイテンシおよびバッファリング
前回の記事では、レイテンシおよびネットワークバッファリングがVALORANTでどのように動作しているかについて、まだ調査中であるとお話ししました。その調査を終えたことにより、パッチ4.10ではいくつかの問題に対する修正が実装される予定です。
詳細に入る前に、「ネットワークバッファリング」および「処理遅延」の意味について少しばかり説明したいと思います。
VALORANTのようなオンラインゲームでは、サーバー側のゲームの表示が正しいとされるため、皆さんの入力データはまずサーバーに送信され、実行されます。サーバーがゲームのシミュレーションを更新するたびに(これは毎秒128回起こります)、ゲームクライアント側で入力されたデータがエージェントの動作として反映される必要があります。皆さんの入力データがインターネットを巡っている間に遅延が発生した場合、サーバーはそれが到達するのを待たずに、皆さんの動きを予測しなければなりません。
大抵の場合、サーバーが予測した動作は、サーバーへ到達途中にある実際に入力された動作と一致しません。この不一致は、正しい位置への短い瞬間移動としてクライアントに現れる「移動修正」を引き起こします。位置修正が頻繁に起こると、ゲームの挙動がカクカクした感じになり、高い割合でプレイ不可能な状態になってしまいます。
このようなサーバーの予測した動きを避ける方法は、サーバーに入力動作をバッファリングさせ、わずかに遅れて実行させることです。これはインターネットにあらゆるデータをストリーミングする際によく用いられる方法で、サーバーがエージェントの各フレームの動作をスムーズに実行するのを保証することに役立ちます。しかし、このバッファリングはサーバーがプレイヤーの入力した動作を処理する前に遅延を追加するうえ、過剰なバッファリングはプレイヤーに自分のネットワークラウンドトリップタイム(ネットワーク
RTT)が示すより遥かに高いPINGでプレイしているように感じさせてしまいます。
適量のバッファリングを提供するのが、バランスを取るために重要なことです。バッファリングが少なすぎるとサーバーの予測した動作とクライアントの修正を頻繁に招き、過剰なバッファリングは高いレイテンシをもたらすと同時に、ピーカーズアドバンテージなどの影響を受けやすくなります。最適なバランスが取れていると、スムーズで応答性の高いゲーム体験が得られます。
サーバーが皆さんの動作を適用する前にバッファするのと同じように、クライアントは敵の動作に関する情報も画面に表示される前にバッファする必要があります。これにより、皆さんの接続状態が悪い場合でも、敵プレイヤーが瞬間移動したように見えるのを防ぎ、他プレイヤーをスムーズに確認しやすくなるのです。
調査
調査の一環として、私たちはこれら2つのバッファがどのように機能しているか、正確な知見を得る必要がありました。そこで幾つかの新しいデバッグツールを作成し、入力した動作が各バッファを通過するのに要する時間を調べることにしました。このツールを使用して、意図しない方法で入力動作のバッファが起こる状況がないか確認するために実験を開始したのです。
プレイヤーから報告された問題の中で、私たちがこの調査において追究した問題のひとつは、「Alt+Tabを行うと射撃の遅延処理が増加する」という点です。「バックグラウンドでFPSを制限」の設定を適用した状態でゲームウィンドウをバックグラウンドにすると、フレームレートが調整され、拡張クライアントのパフォーマンス問題がエミュレートされます。ゲームにフォーカスを戻した後、突然FPSが上昇することにより、サーバー側の入力動作キューがかなり大きくなる可能性があります。これはクライアント側では、進行中のネットワークRTTグラフに反映されていない、非常に高いPINGでプレイしているように感じられます。
同様の効果を得るために見つけたもう一つの方法は、クライアント側で素早くPINGスパイクをシミュレートすることでした。高PINGから低PINGに下がるPINGスパイクでは、プレイヤー本人のクライアント側のサーバーで入力動作キューの蓄積が生じ、低PINGから高PINGに上がるPINGスパイクでは、他プレイヤーのクライアント側のサーバーで入力動作キューの蓄積が生じます。いずれの場合においても、入力動作キューの蓄積はキューがターゲットサイズに戻るまでの間、あたかもレイテンシが高いように感じさせる原因となります。
どちらの状況においても、現在のシステムはいずれ問題を解決し、バッファをターゲットサイズに戻すでしょう。しかし、完全に回復するには思ったより時間がかかり、それがさらに長期のネットワークレイテンシを引き起こすことが分かりました。
これらの過剰なバッファ状態を速やかに軽減し、ゲームをスムーズにするために必要な場合にのみ短時間の追加レイテンシが発生するよう、新たに2つの修正を施しました。
修正と改善
最初に施したのは、何らかがバックアップを引き起こした際、いかに迅速にバッファをターゲットサイズに戻すかという点に関しての修正です。バッファサイズが拡大するにつれ、より積極的に調整を図れるよう、動作処理システムに機能を追加しました。
この変更によって、バッファリングされた入力動作のバックアップは、以前より速く対処できるようになります。例えばバッファに5つの追加入力動作があった場合、変更前だと最適なターゲットサイズに戻るのに最大5秒かかっていましたが、今回の改善によって、その時間は1秒未満になりました。つまり、プレイヤーがカクつきやネットワーク上のスパイクのような不具合に遭遇した際、追加のバッファリングによるレイテンシの影響を受ける時間が大幅に短縮されるということです。
しかし、深刻なケースではバッファされた入力動作のバックアップが過度に大きくなり、上記の修正をもってしても、動作処理がバックログを処理するのに何秒もかかることがあります。このようなことが起こった場合には、バッファをハードリセットし、最新のものを除くすべての入力動作を削除するようにしました。この対処法は追加レイテンシを即座に取り除くという利点がある一方、必ず「移動修正」を生じさせます。
フレームレートの極端な乱れやネットワーク上のスパイクといった不具合が起こる場合、入力動作処理がバッファサイズを再調整するのを数秒間待つより、直ちに移動修正が起こる方が望ましいということに気付きました。移動修正が起こる方が、この修正前にプレイヤーが遭遇していた長時間の高レイテンシよりも、ゲームプレイにおける妨げが少なかったのです。移動修正が起こり得る深刻な事例の一つは、バックグラウンドのFPS制限を低値に設定し、Alt+Tabを行ってからゲームにフォーカスを戻した場合です。これはフレームレートに極端な変化をもたらし、過剰なバッファ状態の原因となっていましたが、この問題も今回の変更によって速やかに解決されるはずです。
またバッファリングの調査中、一貫してジッタが高いプレイヤーは低バッファリングターゲットと高バッファリングターゲットの間を規則的にシフトするという関連問題も見つかりました。これは、システムがサーバーが予測する入力動作の数によってレイテンシの均衡を保とうとするために起こるものです。この種の長期ジッタを考慮に入れながら、ターゲットとするバッファサイズを上手く調整できるよう、解決に向けて現在も取り組み続けています。
今後の展望
私たちは上記の変更を行ったと共に、プレイヤーには進行中の動作処理遅延を視覚化するのに有効な手段がないということにも気付きました。この問題を追跡する際、私たちが内部で作成したグラフが非常に役立ったので、「Network
RTT + Processing Delays(ネットワーク
RTT+処理遅延)」という新たなパフォーマンスグラフを追加することにしました。これはサーバーおよびクライアントの動作遅延の両方に併せて、皆さんのネットワークのラウンドトリップタイムを捕捉するものです。
このグラフにおける測定時間は、お馴染みの「ナイフテスト」で感じるであろう遅延と比較的同等であるはずです。順調な進行状況における当グラフの適正値は、皆さんのネットワークRTTよりおよそ20~30msほど高いはずです。とはいえ、理想的な値は皆さんの正確なネットワークとフレームレートの状態によって異なるでしょう。
さらに、ネットワークRTTがパケットごとにどのように変化するのかを示す、ネットワークRTTジッタのグラフも追加しました。PINGスパイクと高ネットワークジッタは頻繁に追加のバッファリングを必要とします。このグラフは、平均化により正常なネットワーク
RTTグラフには現れないネットワーク状況の不調の診断に役立てるために追加したものです。
また、プレイヤーが試合ごとに実際に受ける処理遅延についてのデータを収集できるよう、幾つかのテレメトリも追加しました。当データを定期的に見直し、上記の修正が私たちの意図通りの効果を発揮しているか、そしてさらなる修正や改善が必要か検討するため、ゲームの健全性を注視していきたいと考えています。
最後に、私たちは様々なソーシャルメディアを通して皆さんの投稿を読んでいますが、試合後のアンケートも活用して、接続状況やガンプレイの質などといった試合のクオリティーに関するプレイヤーの皆さんからのより深い意見をお聞きしたいと考えています。そこで質問を幾つか追加および見直し、これらの分野について反映させる予定です。
次のアップデート
入力動作処理のバッファに対するこれらの改善が、PINGが良好である際にプレイヤーの皆さんが感じていた非一貫性の軽減に役立つことを願っています。ゲーム内でまだ問題が解決しない場合でも、今回追加されたグラフから得られるジッタや処理遅延に関する新たな情報が、皆さんが感じている問題を数値化し、原因を特定する手助けになればと考えています。非一貫性の問題を抱えており、なおかつ自分のゲームプレイを記録している場合、これらのグラフがあることで更なる情報が手に入り、原因をより深く掘り下げることに役立つでしょう。
体験または目撃した問題の分析や動画を投稿してくださった皆さんに心から感謝の意を表し、今回のアップデートを終えたいと思います。皆さんのVALORANTへの愛と、ゲームの改善へのご協力に感謝しています。私たちは常に、皆さんからのフィードバックを真摯に受け止めています。
今後のアップデートでは、サーバー選択と、それが高PINGプレイヤーのパフォーマンスにどのように関連するかについて取り上げる予定です。どうぞお見逃しなく!