ValveのFPS『Counter-Strike: Global Offensive』では、5対5の対戦が一日最大60万試合行われる。そして運営チームが悩まされてきたのが、エイムアシスト(射撃補正)をはじめとするチートの数々。2016年当時、チーター(チート使用者)の多さに悲鳴をあげるユーザーの声ですべてが埋まってしまい、プレイヤーコミュニティとのコミュニケーションに支障をきたすほどだったという。
サンフランシスコで開催中のゲーム開発者向けの国際カンファレンスGDC(ゲーム・デベロッパーズ・カンファレンス)でValveのジョン・マクドナルド氏が講演したのは、このチーター摘発の一部をディープラーニングを使って行うという“VACnet”だ。
昨今ニュースなどで取り上げられることも多いディープラーニングとは、大雑把に言えば、人間の神経のような働きをシミュレートした“ニューラルネットワーク”を使った機械学習だ。大量のデータを解析していくうちに、AIがその中から一定の特徴を見出せるようになっていくとされている。
ディープラーニングを利用した新たなチート対策“VACnet”は、まずエイムアシストを標的にしている。エイムアシストは照準をプログラムによって強制的に動かすため、大量のショットのデータを学習させていくことで、特徴的な動きを検出できるようになるのではないかというアイデアだ。
運用上では、VACnetが疑わしいと検出したら即バン(追放)するわけではなく、チート対策のひとつである“Overwatch”プログラム(同名ゲームとは関係ない)に組み込む形で使われている。
Overwatchプログラムとは、プレイヤーから集められた報告をもとにコーディネーターが疑わしいケースを選別し、それをプログラム参加者がチェックし、“有罪”と判断されると対象者はバン(追放)されるというもの。VACnetはこの報告ルートのひとつとして加わることになる。
解析するデータは、運営のサーバー側で記録しているもの。140発がワンセットとなっており、8発が1グループ。その1発ずつに“どんな武器を使ったか、結果はヘッドショットか命中かミスか”、“命中なら距離はどれだけあったか”、“発射の1/2秒前から1/4秒後まで照準はどう動いたか”といった数値が含まれている。
エイムアシストはプログラムで行っている以上、(撹乱をかなり意図的にやらない限り)“正確に同じ特徴を持った”ショットが複数出てくることになる。ちなみに今回の発表を元にチートツール側が対応したとしても、Overwatchプログラム全体では人間側の報告も残っているので全滅にはならず、VACnetとしてもデータ取得モデルを変えて再学習すれば再度捕捉できるだろうという考えを語っていた。
さて、一日最大60万試合のデータを毎日解析するには? 処理用のプロセッサーで一試合あたり約4分の作業となるので、つまり作業時間の合計は240万分。一日=1440分のなかで収めるには約1667のプロセッサーが必要になる。
そこでValveでは64機のブレードサーバーからなるマシンを用意。ブレードサーバーには各54コアのプロセッサーがあり、合計は3456プロセッサーと、将来的な拡大も考えて求められる処理能力の約2倍が用意されている。
VACnetが投入されたのは2017年初頭。判定へと進む数は増え、有罪と判定された件数も順調に増加。再学習を経て、昨年末にはついに有罪件数が無罪判定になった数を超える。
「え、それまで無罪の方が多かったのかよ」と気付いた人は鋭い。VACnetの効能はもうひとつあり、人間のプレイヤーだけがOverwatchプログラムに報告していたケースでは、実際に“有罪”判定となったのは15~30%。それに対してVACnetは80~95%の“有罪”判定率を誇るというのだ。
今後の課題や展望としては、再学習の自動化や、エイムアシスト以外のチートも検出できるような仕組みを行っていきたいとのこと。また他ゲームモードや他者ゲームへの対応といった汎用化も考えているそう。さらにValveでは、ディープラーニングをチート対策だけでなく、詐欺対策や、MOBAタイトル『Dota 2』のヒーロー(使用キャラ)選択などにも活用していきたいそうだ。