Riotの新作FPS「Valorant」がチートを回避する仕組み

2020夏のリリースが発表されたRiotの新作FPS「Valorant」で世界のFPSコミュニティは大盛りあがりとなっている。 先日、CSGOの日本トップチームAbsoluteがCSGOをやめてValorantに転向する話もあった。

AbsoluteがCSGOをやめてRiotの新作をやるみたいだけど、彼らは一体何だったのか

Valorantの最大の魅力はチート対策

おれがValorantに注目している最大の理由は、 チート対策を根本から考えて実装しているところだ。 この点に注目しているプレイヤーは多く、大物配信者のKUNも言及している。

実際に、CSGOやOWなど競技FPSではチーターが途絶えることはなく、 それがコミュニティに多大な被害を与えている。 CSGOなどは、チーターの特徴を検出するという点に着目して、 ディープラーニング(いわゆるAI)を使った チート検出システムなどを構築して対策をしているようだが、 効果が目に見えるほどは出ていない。

チート対策は後付ではなく、根本的に行われなければならないのだ。 例えば、情報流出を防ぐために使用者が気をつけるべきチェックリストを作って守らせるよりは、 そもそもOSやストレージのレベルからシステム的にセキュアにしてしまう方が完全というのと似ていて、 今競技系FPSに求められているのは、そういう対策なのだ。

まさに、Valorantはこの問題に根本的に取り組んだことになる。

Valorantの発表資料ではまず、 ウォールハックのチート対策について説明されている。 そして、彼らはオンラインFPSにおける根本的なバグであるPeeker’s Advantageにも 対策していることを明言している。

この記事では、発表されていることをベースにして、 詳細が明かされていない部分については おれが想像する仕組みを交えてこれらについて解説を行いたい。

ウォールハック対策

ウォールハックの基本原理はこうである。

CSGOなどのゲームでは、クライアント側に他のプレイヤーがどこにいるかの情報が常に同期される。 従って、クライアントは常に、この情報をメモリのどこかに持っていることになる。 この情報をメモリから読み取って、プレイヤーの位置をゲーム内に表示するのが、ウォールハックの基本原理である。 (たぶん)

Valorantではこのウォールハック技術を禁じるために、 全プレイヤーの位置情報を同期するのをやめることにした。 具体的には、お互いが視認出来る範囲にいる時だけ、プレイヤー情報を同期することにするため、 遠くにいるプレイヤーのことをウォールハックすることは出来なくなる。

もちろんそれでも限定的なウォールハックは可能であるが、 相手に作戦がバレたりすることはなくなるため、 ウォールハックの対策としては十分に機能する。

Peeker’s Advantage対策

Peeker’s Advantageというのは通信のラグを利用して、相手に視認されないうちに 相手を撃つ技術のことである。

通常、CSGOやR6Sのようなゲームでは、有利なアングルをとって置きエイムをすることが基本となる。 しかし、Peeker’s Advantageを利用すると、置いて待ってる方ではなく、 ピークして相手を撃つ方が有利になってしまうというわけである。 (ピークというのはFPS用語で、壁から半身を出して相手を視認する行為のこと)

この問題もValorantがProject Aと呼ばれていた早期の頃から、 対策をすることが明言されていた。

これはおれの想像になるが、ウォールハック対策で必要な技術というのは、 「お互いに見えている時だけ位置情報を同期する」という技術のことである。

おそらくこの仕組みを使うことによってPeeker’s Advantageも解決出来るのだろう。 つまり、お互いのクライアントから位置情報が送られた時、 その二人が視認出来ることをサーバは確認し、その時に限って位置情報をお互いに交換する。 こうすれば、片方が見えてるけど片方が見えてないということは起こらない。 Peeker’s Advantageでは、回線が遅ければ遅いほど、自分の位置情報がサーバに伝わるのが遅くなるから 有利という意味不明な現象が起きていたのだが、 少なくともValorantの仕組みの上では、回線が早い方がサーバからの情報取得が早くなるのだから、 有利ということになって、むしろこちらの方が受け入れやすい。

もちろん、情報の同期は全員にとってフェアに行われるべきだから、 そこはRiotが金の力を使って、全世界の人間が30ms程度で戦えるようなネットワークを作るということが述べられている。

Valorantへの期待は膨らむばかりだ。早くプレイしたい。