ゲーム

世界一プレイされているゲームはチート行為にどうやって対抗しているのか?



月間アクティブユーザーが1億人を突破したこともあるオンラインゲーム「League of Legends」は、公式のプロリーグが存在し、競技人口が世界トップクラスに多いゲームとしても知られています。しかし、世界規模に展開しているゲームだけに、チート行為やそれを助長するプログラムが多く存在します。League of Legendsを開発・運営しているライアット・ゲームズが、繰り返されるチート行為に対して具体的にどういった対策をとっているのかを公式ブログに記しています。

Riot's Approach to Anti-Cheat | Riot Games Engineering
https://engineering.riotgames.com/news/riots-approach-anti-cheat


オンライン対戦ゲームにおけるチート行為は、「League of Legends」に限らずさまざまなゲームで問題となっています。特に2024年のパリ五輪からはeスポーツが正式種目として採用される可能性もあり、eスポーツの競技種目にも選ばれるようなゲームの運営会社は、法的手段も使って不正なプレイヤーを排除しようと動いています。

人気バトルロイヤルゲームのチートプログラムを作成していた15名が逮捕される - GIGAZINE


一般的にゲーム会社は「ユーザーによる不正行為を見つけてBANを行い、その都度対策を取る」という後手に回った対応をとってしまいがちとのことですが、ライアット・ゲームズは、予防・検出・抑止という3点を重視してチートを徹底的に排除するための対策を取っていると述べています。不正行為といってもさまざまな種類がありますが、ライアット・ゲームズは「ゲームクライアントに干渉するような不正なプログラムの使用」という部分に焦点を合わせたものを公式ブログで紹介しています。

ライアット・ゲームズは、不正なプログラムを使用する不正行為には大まかに「スクリプティング」と「ボッティング」の2種類が存在している、と指摘しています。スクリプティングは非公式のツールを使う不正行為で、本来であれば難度が高かったり不可能だったりする操作を可能にすることでプレイヤーの勝率を不正に上げるために利用されます。以下の画面は、実際に不正なツールを使用してLeague of Legendsをプレイしているところ。


一方、ボッティングは、ゲームの入力をプログラムでシミュレーションし、自動でゲームをプレイするというもの。ボッティングは主にプレイヤーのレベルを自動的に上げるために使われます。スクリプティングもボッティングも、不正なプログラムがゲームクライアントに干渉することで可能となります。こうした不正なプログラムによる干渉を防ぐためには、ゲームクライアントそのものを分析し、プログラムの干渉を根本から妨げる予防策を採らなければならない、とライアット・ゲームズは考えました。

これまでにもLeague of Legendsには、チート対策となる設計上の工夫がいくつも施されていました。例えば、ネットワークプロトコルを難読化した上で定期的に変更することで、ネットワークを通じて外部からのゲームへの介入を防いでいます。また、ゲーム内での判定はすべてサーバー側で行うようにし、ゲームクライアントで下された判定は「信用されない情報」としてサーバーに反映されないようになっています。つまり、クライアント内で不正をしていくら自分のキャラを強くしても、サーバーにはその強さは一切反映されません。さらに、他のプレイヤーの場所や状態を必要ない時以外は共有しないように設計することで、地図上にいる全てのプレイヤーを見えるようにする「マップハッキング」を防ぎます。

そもそも不正なプログラムがゲームクライアントに干渉できるのは、プログラムの開発者がメモリ検索ツールによって、ゲームのどこでどういう動作が行われているかを把握してからプログラムを作成しているためです。つまり、メモリ検索ツールによってゲームコードを解析されないようにすれば、不正プログラムの作成も難しくなるというわけです。そこで、ライアット・ゲームズはLeague of Legendsのゲームクライアントのコードを独自の技術で暗号化しました。


また、ライアット・ゲームズは、不正なプレイヤーがチートツールを作成する際に、実行中のゲームクライアントにデバッグツールやバイナリ計測ツールを使用することがよくあると指摘。ビルドしたプログラムの各所にデバッグチェックと呼ばれるコードを挿入し、ビルドごとにデバッグチェック用コードのチェックの順番やコードの内容を変えることで、実質的にデバッグツールの使用を不可能にしました。


不正なプレイヤーは、ゲームコードのどのパラメーターが「体力」やスキル発動で消費される「マナ」などに対応しているのかを探るために、メモリ検索ツールを用いて解析します。例えば、さまざまな数字が並んだゲームデータファイルから、体力に関わるであろう「100」が入力された場所を検出しておき、その後ゲーム内でダメージを受けながら、データの数字がどれだけ変化したかをその都度確認することで、不正なプレイヤーはどのパラメーターがどのように計算されて体力になるのかを探り出すというわけです。そこで、ライアット・ゲームズはデータ部分を暗号化した上で、ゲーム内のパラメーターが変化するたびに数字を同じ場所に上書きするのではなく、全く別の場所に書き込むことによって、メモリ検索ツールによる解析を難しくしました。


ライアット・ゲームズは、今回紹介した対策はあくまでもチート対策のほんの一部であり、不正行為と戦うためにすべてを公開することはできないと述べながらも、不正行為を働くプレイヤーに対しては断固厳しい対応を取っていくという姿勢を明確に示しています。

・関連記事
「フォートナイト」で7万8000人以上のプレイヤーが不正なツールを使ったせいでマルウェアに感染したことが判明 - GIGAZINE

人気バトルロイヤルゲームのチートプログラムを作成していた15名が逮捕される - GIGAZINE

世界一プレイされているゲーム「League of Legends」のプロの試合をじっくりと観戦してみた - GIGAZINE

世界で1億人がプレイする大人気ゲーム「League of Legends」はどんなゲームなのか? - GIGAZINE

約1億円の優勝賞金をかけたオンラインゲーム世界大会のクール過ぎるPV - GIGAZINE

in ゲーム, Posted by log1i_yk