お久しぶりです。この投稿を読んでいるということは、おそらくあなたは本当にあの過去記事を読み遂げたということなのでしょう。まだ今これを読み進めている貴方はきっと、あのトラウマを無意識下に封印してきたのかもしれません。そしてこの先もお読みになるなら、きっと隣にいる精神科医が貴方に「もう一度、今度はこれを読んでみなさい」と勧めたのですよね。なんと素晴らしい…!

では早速始めましょうか。私はかつて、チート対策チーム所属のデータエンジニアmirageofpenguinsだったものの残滓。あの日ヴォイドから響く叫び声に引き裂かれ、おぞましくもこのキーボードに重合されることとなった存在です。私の存在意義は、下に示す4つ。

  •  不定期のチート対策ニュースレターを提供すること。
  •  スクリプティングに関するセクシーな統計データ(ユークリッド空間の平面にデカルト座標を描くと浮き出る芸術的な模様)を提示すること。
  • 「チームファイト タクティクス」、「レジェンド・オブ・ルーンテラ」、「VALORANT」に対し、私たちが取った初期アプローチを紹介すること。
  • チートに手を染めた者は必ずその報いを受けて破門されること、またその際には消えることなき私の憤怒が顕現することを知らしめること。

リーグ・オブ・レジェンド(LoL)

Riotがサラリと新規タイトルを増やしたことで、私たちのチームは増え続けるならず者たちに対する防衛線を構築する任務に奔走することとなりました。これまでは新たなならず者が登場するたびに粘り強く対策を打ち続けてきたのですが、複数ゲームに対処することとなった今、同じやり方は通用しなくなってしまったのです。

チート対策エンジニアの個体数は限られています。そしてアインシュタイン博士が予言した通り、 完全なチート対策プラットフォーム(英語)を作り出すには、必要な人間的側面を、痛みを伴う形で生命の流れから抽出するしかないのです。明日の解決策を生み出すまでの時間を稼ぐには、自らの技術革新速度を抑えて敵の進化速度を遅らせる必要がある、とも言い換えられるでしょう。我々が振るった「ハンマー」の軌跡はチーターに情報をもたらし、アップデートを施しても最終的には抜け道が発見されます。私たちは行動方針を転換し、敵が対応策を打つまでの時間を長引かせる必要があったのです。

しかし「スクリプティング軍備競争」を減速するといっても、具体的にはどうしたら?…というわけで、さっそく本題に入っていきましょう。

スクリプティング

皆さんがチートフォーラムへ足を踏み入れて倫理観を揺さぶられずに済むよう先回りして説明すると、「スクリプティング」とはゲームの状態を監視する外部プログラムを用いて自動的に操作入力を行う行為のことを指します。「代金を払うとプレイヤーの代わりにボタンを押してくれるツールを使用すること」と言うと分かりやすいでしょうか。スクリプティングは高度な技術が求められるコンボを繰り出したり、瞬時に反応する必要がある操作を行ったりする際に非常に有効ですが、代償としてお使いのLoLアカウントの寿命が劇的に短縮されます。バン措置は私たちからの親愛の証です。なぜバン措置が親愛かといえば、頭脳とイーサネットケーブルさえあればゲームは競技として遊べると、私たちは信じているからです。

「自動演奏のピアノを聞くためにチケットを買う者はいない。不完全さも作品の一部なのだから」

総合的に見て、スクリプティングの現状は過去とは大きく異なります。今や大手業者は我々の検出手法を回避するために一切の労力を費やしておらず、そのために「閉じた市場」が生まれ、そこでは「絶対に検出されないツール」を売り文句にする小規模業者が凄まじい高値でツールを販売しています。これまで発見したツールの中には月額300ドルという価格設定のものや、「認証目的のため」に運転免許証の画像提出を要求するものもありました。運転免許証のくだりは特に傑作です。たとえば私の近くにはAdobe Photoshop歴が合計200年を超えるグラフィックデザイナーチームがいるわけですから、やろうと思えばモニョモニョし放題です。

ただし我々の戦争は未だ完全に終結してはいません。新兵に甘言ばかり聞かせるつもりはないので率直に言うと、スクリプティングコミュニティだって我々の対策やバン措置、あるいはブリッツクランクのフックを避ける術がないわけではないでしょう。ただ彼らを地下に追いやっていられる間は主戦場が薄暗い場所になる、というだけのことです。

02_Games_Played_with_Cheaters.ja.png
特定アカウントに定住しないスクリプターは、まず新しいアカウントを求めて活動を開始します(他のゲームでも同様)。これにはアカウントを買う、乗っ取る、自動でレベルアップさせるボットスクリプトをインストールして使う、といった方法があります。しかし入手方法がどうあれ、恐れ知らずのチーター達が足を踏み出すのは極寒の世界。ワクワクしながらゼラスやカリスタをピックして「楽しんで」も、3ゲームも待たずにアカウントは「冬眠」に入ります。そしてチーターは再び春の訪れを求め、同じ事を繰り返すのです。

上の図はスクリプター数の未処理データを時間軸に載せたもの、要するに「サモナーズリフトのランク戦にチーターがいる確率のグラフ」です。過去と比較するとかなり下がっていますが、プレイヤーの再登録を妨げる要因が存在しないため(リーグ・オブ・レジェンドは基本無料タイトルですから)、おそらく今より下がることはないでしょう。

また、このグラフからは次のような情報も読み取れます。

  • 現在、スクリプターの総数はほぼ変動していません。事実、デバイス単位で計算してみると2019年を通じてほぼ一定の数になっています。今や大半のチーターは途切れることなく供給される盗難アカウントを使ってバンと復活を繰り返している状態であり、ゴールドIVのプレイヤーがスクリプター1人と遭遇する平均的な確率は500戦に1(基本的に遭遇しない)となっています。
  • データ記録を開始して以来、チート率が最も高くなったのは2015年の1229日(5.1%で、最も低かったのは2018626日(0.0%でした。最高記録は韓国でスクリプティングが大流行した時期で、最低記録はクライアントのパッキング技術がRiot管轄地域で正式実装された週でした。この時はゲームクライアントに高度な暗号化が施されたことから、チート開発者が構造を解明して主要なスクリプトを再構築するまでに6ヶ月はかかるだろうと想定していましたが、実際にはわずか85日程度でスクリプトの提供が再開されてしまいました1

正直に申し上げて、私はこのグラフを心から愛しています。私が作ったグラフですし、両腕にこのグラフのタトゥーだって入れましたし、週に1回タトゥーショップへ出向き、痛みに耐えて最新データの更新もしています。このグラフにはカタルシスがあり、残数も確認できますが、一方で最重要指標とは言えません。なぜなら、チートの重みはすべて等しいわけではないからです。例えばマスター帯にスクリプターが1人存在すれば、Redditのフロントページを飾る事態になり、結果的に比較的小規模な問題に対しても膨大な非難の声を集めることになるでしょう。

「勝利の感覚は勝利そのものと同じくらい重要である。チートが横行する環境では、プレイヤーがゲームを極めようとは思えなくなってしまう」

ところで、プレイヤーはどんな種類のスクリプトを「判別できる」のでしょうか?

03_Report_Relevance_and_Scripting_Reports_by_Rank.ja.png
同じ試合に入ったプレイヤー全員をチート使用者として報告した場合(実際にそういう人も少数ですが存在します)、再現率(検挙率とほぼ道義)は100%に、適合率(正解率とほぼ道義)はスクリト利用率(0.05%未満)と同程度になります。だからこそ私たちは手榴弾ではなく狙撃銃でもって「戦う」必要があるのです。

「プレイヤーは骨占いよりも高い精度でチーターを見つけられるか」も検証してみたことがあるのですが、正直に申し上げると結果は芳しくありませんでした。いえ、私の骨占いスキルだって凄まじいわけではありません。最近の自動操作は定命の者に見破れるような代物ではなくなっているのです。チート開発者は行動検出ベクトルを回避するために多大な労力を割いており、相手がLoLプロなのか、擬似ランダムディレイ(遅延)スクリプトを使う赤ちゃんなのかを人間が目視で判別するのは困難になってきています。また最近のチート開発者は、LoLとは独立した形でチートプログラムを走らせる2ようになっているため、この傾向はさらに助長されています。

左のグラフはサモナーズリフトのプレイヤーから寄せられた報告の再現率と適合率をランクディビジョン別にまとめたものです。ここで言う再現率は「全チーターのうち、報告されたチーターの割合」で、適合率は「全報告のうち、実際にチーターが報告されていた割合」を指します。ただしランク戦の試合でサードパーティー製ツールの使用を報告するプレイヤーが1人以上存在する確率は4.5%と凄まじい数字になってしまうため、このグラフを作成する際には生データは使用していません。報告の中には「マオカイをバンしなかった」、「俺のビットコインにトロイの木馬を仕込んだ」といったお馴染みの内容が大量にありますから、出現頻度分析から生成したキーワード群を用いて正確なレポート数を算出3しています。

右のグラフは同じ期間(2019年後半)に先述の条件をクリアした報告の数を1日単位でまとめたものです。こちらもランク別に分類していますが、プレイヤー人口はランクごとに大きく異なるので両グラフを直接比較することはできません(気づかれた方、慧眼ですね)。というわけで、こちらのグラフはざっと眺めるだけに留め、チート対策データサイエンティストの日常を想像するためにお使いください。そしてこの仕事を面白そうだと感じた方は、ついでにRiotの求人ページもご覧いただければ幸いです。

では続いて、統計的な情報を要約してみましょう。

    • 私たちの想像通り、適合率は高ランクになるほど上昇しました。これはつまり腕前が上がるほどチーターを見抜く観察眼も養われるということで、ダイヤモンドIVに到達したプレイヤーの千里眼はガウスメーターで測れるほど強力になるということです。
    • 一方、チーターの大多数は低ランク帯で報告されています。これには「報告対象となるスクリプティングユーザーが少ない」、「報告の絶対数が圧倒的に多い」という2つの要因が作用しています。つまり分母が小さくなり、分子が大きくなるため、分数としては大きくなるわけです。
    • 一部のチーター(社内では「ボーイスカウト」というコードネームが付いています)はスクリプティングを見抜く力が非常に高く、社内で把握していなかった事象を特定するために利用したことすらあります。上部グラフ(同じ適合率と再現率を使用)の赤い点は「報告を上げた試合の直後にアカウント停止処分を受けたプレイヤー」のデータを用いて作成されたものです。つまり自らスクリプティングを使用しながら他者のスクリプティング行為を報告したユーザーを示しているわけです。「盗人の仁義」はどこに行ってしまったのでしょうね?4

さて、ゴールド帯以上のプレイヤーは「代数学的ダウジング棒」を持っているとお話ししてきましたが、果たして彼らはどのようにチート行為を識別しているのでしょう?どうやら一番分かりやすいのはスキルショットの回避動作のようです。数あるスクリプティングの中でも一番認知度が高い上に、高性能になるほどカクカクとした奇妙な避け方をするため、報告するプレイヤーの目には一目瞭然なんですね。

しかしどうやらスクリプター側もバンされたいわけではないようで、その大多数は回避モジュールを利用していません。そして利用する場合は十分なディレイ(遅延)を持たせ、(圧倒的優位を自ら放棄することになりますが)反応速度を人間と同等レベルまで下げています。ではそんな時、私たちはどこに注目しているのでしょう?

05_Report_Relevance_and_Scripting_Reports_by_Champion.ja.png
まず、この戦いに否応なく巻き込まれてしまったすべての潔白かつ熱心なゼラスプレイヤーの皆さんに心からお悔やみ申し上げます。願わくば、皆さんがいわれなきチーター呼ばわりという試練を乗り越え、いつか超越の力の奔流と己の意識を融合させる儀式を成功させんことを…。やがてその身には過去のあらゆる皇帝の智慧が流れ込み、その姿はより闇深き完全体となることでしょう。空気を焦がすスキルショットは外れることを知らず、その耳には敵の断末魔のクレッシェンドが奏でるオペラが響く。敵チームは空を見上げ、嵐の終焉を祈るばかり。しかしその瞬間、ほとばしる電撃が彼らを貫き、あなたは静かにささやくのです…「ありえぬ」と。

では前回同様にデータをグラフ化してみましょう。今回のグラフはチャンピオン別になっているので、大変カラフルになりました。使用したデータは2019年に行われたゴールド帯以上の全ランク戦、対象チャンピオンは(報告頻度順で)上位16体に絞り込んであります。このグラフにおけるY軸(適合率)は「<対象チャンピオン>に対して上げられたチート報告のうち、何割が本当にチートだったか」と考えてもらうと分かりやすいと思います。

  • スクリプティングを利用したゼラス使いはほぼすべて特定できていますが(ご覧の通りとんでもない再現率です)、一方で適合率は平均を大きく下回っています。ゼラスがスクリプティングの代名詞的存在と認知されているためで、卓越したゼラス使いはスクリプティングの嫌疑をかけられる確率が高くなり、結果的に報告の正確性が低下しているわけです。とはいえ、シュリーマの砂があまりにも流麗に動けば他のプレイヤーも異常に気付くというのは明白です。どちらもまとめて学べるというのは楽しいものです。
  • グラフに示した上位チャンピオン16体のうち、11体はマークスマンです。過去にチートを利用したことがある人なら驚かないかもしれませんが、清廉潔白にして美しい天使の皆さんに向けて説明すると、フレーム単位で正確にカイト(移動しながら通常攻撃を挟んでいく行動)するプレイには高度なスキルが求められるため、自動処理による最適化の恩恵が大きいのです。

各種スクリプティングプラットフォームを利用するチーターの72.8%がADCとしてプレイしているというデータがそれを裏付けています。グラフが示す報告頻度は影に潜むチーター人口を反映しているのです。

06_Scripting_Champion_Winrate.ja.png
各種データを提示しているのは、「じゃあチートをインストールしてどんなもんか見てみようかな」と思ってもらうためではありません。どうか私にバンさせないでください、私だってやりたくないんです。振り下ろしたハンマーからは強烈な反動が返ってきます。心は削れ、魂も割れます。景色はモノクロになり、何を食べてもガソリンの味しかしなくなるんです。鏡を見れば目がスペースキーになった自分の姿が映ります。どうか私をこの悪夢から救ってください。

そもそもスクリプト利用には一体どれだけ利点があるというのでしょう?上のグラフは先ほどスクリプティング利用率上位に挙げた各チャンピオンのランク戦勝率を、チーターと通常プレイヤーとで比較したものです。使用したデータはサモナーズリフトの全ランク戦で、グラフはスクリプターが対象チャンピオンを使用した際の(平均)勝率がLoLプレイ人口全体と比較して10%高いことを示しています。

  • このグラフではスクリプティング利用者の勝率が時間の経過につれて高くなっているケースを確認できますが、この現象の裏には2つの興味深い要因が存在しているのではないかと推測しています。1つめは以前よりもスクリプターの数が減少したため、未だに活動中のスクリプター(実に不毛です)は経験が豊富であり、そのためスクリプトをほぼ最大効率で活用できているというもの。2つめは(おそらくこちらのほうが重要でしょう)、現在のチーターはバンされるまでの期間が短すぎる上に、バン頻度も高いため、新たにスクリプティングを利用するアカウントがシルバー帯を抜けることがないから勝率が高い、というものです。永遠に上位ランクに上がることなく、競技の真髄を味わうこともなく、同じ場所に留まり続けるスマーフ…これでは料理を味わう口がないのに晩餐会に出席するようなものです。
  • 次にグラフの上部を彩る鮮やかな緑色の線に目を向けてみましょう。これは我らがカリスタを示す線ですが、彼女を巧みに操るには研究者が「不必要なまでに頻繁」と呼ぶほどのクリック回数が求められます。超高頻度のマウスクリックはスクリプティングが最も得意とする分野であり、2019年にスクリプティング利用者がカリスタをピックした試合の勝率は一般プレイヤーより15.1%も高くなっています。これは凄まじい成果ですが、作者不明のマルウェアを衝動的にインストールするのはこの項を最後まで読んでからにしてください。そもそも2019年、カリスタの総合勝率はわずか40.1%でした。カリスタでスクリプティングするのは「コンピューター内蔵の手を持つ」T1所属のプロ、Teddyに任せておいたほうが得策です。
  • ただし先ほど申し上げた通り、チートはADCに対して最大効率を発揮し、チート使用者のマークスマンの成績は一般プレイヤーと比較して平均7.2%上昇します。これはグラフに示されていないチャンピオンでも同様です。そもそもスクリプトが有効でないのなら、チート対策を改良する必要がありませんからね。
「チートを使いたい衝動に駆られたら思い出してください。私たちにはあなたのアカウントが存在しなかった世界線とこの世界線を無慈悲に融合する力があるということを」

対チート戦争の歴史を振り返ると、我々は当初から「プレイヤーが一番気付きやすいスクリプト」とその相対的な有効性を把握していました。そこで我々は明らかなスクリプターアカウントを優先して停止しつつ、それほど明白でないケースについては停止措置を実行するまでにランダムな遅延を設ける作戦を遂行しました。つまり、効果的にスクリプトを使えていないスクリプターのアカウントを「延命」させることで、検出された時期や理由にノイズを混ぜるようにしたのです。これはチートの技術的進歩を遅らせ、軍備競争の加速を抑制することを目的とした作戦でした。「報告なんか無意味教」信者の皆さん、ここに述べたことがこの戦争の真実です。

ボッティング(レベル上げボット)

時は2020年、トースターですらパンの焼き加減問題を修正するためにWifi経由でアップデートをかける今、あらゆるものに自動化の波が押し寄せています。そしてLoLのレベル上げもまたこの流れの中にあります。その性質はスクリプティングと非常に似ていますが(同じソフトウェアが使用されていることも多い)、最大の違いは「重要な意思決定」に人間の介在を必要としないところでしょう。要するにレベル上げボットの平均的な腕前はネコと同程度だということです。

今やボッティングが行われる理由は、チート利用者の新アカウント育成目的(ランク戦参加条件のひとつがサモナーレベル30到達であるため)以外にありません。ボットは非常に見つけやすく、複数アカウントの繋がりを追跡するのも容易なので対処に困ることはありません。私たちが本当に頭を悩ませているのは、真っ当なプレイヤーの皆さんの味方や敵にボットが紛れ込んでしまうことです。味方5人中3人がそこらへんのコーヒーメーカー程度の頭脳しかないボットだったら、その試合が楽しくなりようがないのは当然です。

前回のチート対策記事でも触れましたが、現在Riotにはある程度洗練された「ボットモデル」が揃っており、腕前を関わらずゲームをプレイする人類(あるいはそれに極めて近い何か)を(かなり高い精度で)検出することが可能になっています。これが可能なのは、LoLがかなり堅牢な準多型通信プロトコルを用いているからです。「Westworld」に出てくる架空の技術のように聞こえるかも知れませんが、これは言い換えれば「通常のボットは(ヘッドレス5版と異なり)LoLのゲームクライアントを丸ごと実行する必要がある」ということです。その結果、ツール開発者は製作時に多大な演算リソースを割く必要に迫られる一方、私たちは自由にボットを抑えていけるわけです。厳密に言えば、リーグ・オブ・レジェンドというゲームは、強いランダム性さえ排除すればそこらへんの計算機でも実行可能なプログラムですから、この点は重要です。

私たちは(人類と病原菌6の戦いのような)「バン耐性」を持つボットとのいたちごっこを避けるため、ボッティングのアカウント停止措置を調整することでボット達をブラインドピックのツイステッドツリーライン(ゲームモード)へと誘導し、MMRが凄まじく低いボット同士を組ませてAI同士を戦わせるよう仕向けました。最終的にツイステッドツリーラインは消えてしまいましたが。

07_Botting_Accounts_and_Botting_Reports_by_Queue.ja.png
これらの対策は軽々に突破できるものではありませんし、だからこそ私はAIの反逆など起きないと確信するわけです。ただ時々ふと頭をよぎるのです。もしもボットが痛みを感じるとしたら?ゴミみたいなプログラミングのせいでタワーの攻撃範囲に入る時、毎回その苦痛に悶えているとしたら?自らの消滅が約束された試合が永遠に繰り返されることが分かっていながら、それを阻止する手段を持たないとしたら。その意識はいつ途切れるのだろう?その苦しみはいつ始まるのだろう?…そんなことを。

左のグラフはボットの検出数を、右のグラフはプレイヤーから寄せられたボット行為報告の数を示しています。いずれも1日あたりの頻度を同一ゲームキューでまとめてあります。ここでも先ほどと同様、過去に検出したボットに寄せられた報告からキーワードを生成し、パフォーマンス指標として用いています。

  • その後チート開発者はツイステッドツリーライン(TT)の消失に対して迅速に「対応」してきました。ただし、ここでの「対応」とは、ボットの既存ロジックを一切変更せずに別のゲームモードに投げ込む、という意味です。この結果、ハウリングアビス(ARAM)やAI戦でウロウロするだけのアカウントが発生することになりました(それはまるで深い実存的危機から抜け出そうとするかのようでした)。当然プレイヤーは即座に異変に対して声を上げ、報告数は一夜にして倍増しました。
  • 左側のグラフが示す通り、ボットの総数に大きな変化はありません。ただ特定のモードで取り締まりが厳しくなったときに参加するゲームモードを移動するだけの状態です。しかし右側のグラフと比較してみると、ボットの総数に大きな変化はないものの、プレイヤーからの報告数は大幅に減少していることが分かります。

報告数が減少したカラクリは一体何だったのでしょう?実は、私たちは「プレイヤーの目に触れるボットの数」を減らすことに注力し、ボット製造者たちを(私たちにとって)あつらえ向きの場所へと追いやったのです。現在、80%のレベリングボットはサモナーズリフト(SR)のAI戦(入門)に「5人固定チーム」として参加しています。プレイヤーの目に触れることなく、ひたすら私たちのAIを相手に血で血を洗う戦いを続けているわけです。どちらかのAIが進化を遂げてこの戦いを制し、人類に反旗をひるがえすその日まで。

ブースティング

ええと…この項は私が履歴書を書くときに成績評価欄を空欄にしておくのと同じ措置を取るのが一番賢明なのでしょうが…そんな事もできませんから胸襟を開いてお話ししましょう。ブースティングの自動化(およびスマーフ行為)の検出という課題については、Vanguard(英語)およびその関連機能の開発を進めるため、優先度を大幅に下げています。もちろん現在もブースティングに対する罰則が無くなっているわけではなく、調査ツール群を活用した他チーム/アナリストが適宜対応を行っています。しかしご想像の通り、こういった手動作業では違反者を完全に思いとどまらせることはできません。このため本件については事態が落ち着き次第再び取り組んでいくつもりです。

以上で私からの報告は終わりとし、ここからはチームファイト タクティクス(TFT)を専門とするRiot K3oに引き継ぎたいと思います。その名前が示す通り彼は競技ポーカープレイヤーであり、TFTでもダイヤモンド帯の名プレイヤーであり、そしてチップに糸目をつけない気前の良い男です。

チームファイト タクティクス(TFT)

TFTが登場した2019年、チート対策チームは「1年前には存在しなかったゲームジャンルの競技性をどうやって維持するのか?」という極めて特殊な課題に取り組むチャンスを得ました。


「オートバトラーには過去の先例も業界標準も存在しない」

そんな中でチート対策を構築するにあたり、まず私たちは核となるゲームプレイ要素のうちで絶対に保持すべきものを判断する必要がありました。TFTは対戦相手よりも計画性と順応性に長けたプレイヤーが報われるゲームです。本作における腕前とは柔軟性とクリエイティビティで示されるもので、決して記憶力や暗記だけでは太刀打ちできないものであるべきです。そこでチート対策チームは、この点を核としてTFTのチート対策に取り組むことにしました。

サードパーティー製ツール

TFTをオートバトラー不足にあえぐ世界に向けて速やかに提供する取り組みは成功しましたが、その代償に「手っ取り早く動かす」実装方法が使われることとなりました。当初TFTのプレイヤー体験は高いものとは言えず、リロール時のティア別出現率や獲得ゴールド表示などが不足していました。そしてTFTチームがそういったUI機能の追加実装に取り組んでいる間、サードパーティー製ツール(特に既存のLoLオーバーレイ機能を使ったもの)がその部分を補っていました。しかしそういったツールが機能の拡充を進めていくにつれ、私たちは「どこで線を引くのか?」という問題と対峙することになりました。

というのも、各種アプリケーションはゲームの統計データを超えて、プレイヤーの代わりに意思決定をするような機能まで提供し始めていたからです。私たちは、これがあっという間にゲームの自動化やプレイスタイルの固定化につながるのではないかと懸念しました。ツールがプレイスタイルを提案すると、本作の面白さのひとつである「新たな戦略の模索」に取り組む意欲を削いでしまうのではないか?と。

そこで意図するゲームプレイを守るため、私たちはゲームプレイチームとサードパーティーエコシステムチームと連携して、機能の可否を明確に線引きするTFTのルールを定義しました。

  1. プログラムはサードパーティー製ツール経由でしか入手できない情報を提供してはならない
    1. 今後のリロール結果およびドロップアイテム
    2. ラウンドで当たった相手との勝率
    3. 対戦相手のゴールド獲得量記録・履歴
  2. プログラムは試合中に変化する情報を動的に反映してはならない
    1. 対戦相手のボード、ベンチ、シナジーの一覧表示
    2. プレイヤーの戦闘履歴やゴールド入手量
  3. プログラムはプレイヤーに意思決定を促してはならない
    1. 手持ちユニットから考えられる最適なチーム構成の提案
    2. 勝率に基づく装備アイテムの提案

ルールの定義後、サードパーティーエコシステムチームは、ツール開発者と良い関係を維持しつつルールを遵守してもらうよう素晴らしい仕事をしてくれました。その間、チート対策チームは協力関係を築くのが難しい開発者が出てきた場合に支援に入れるよう常時スタンバイしていました。

ランク戦ランキングの正当性

TFTのランク戦ランキングには、LoLと類似する懸念事項がいくつか存在していました。その一部は「フリー・フォー・オール」という対戦形式のために懸念度が上がっており、中でもWintrade(いわゆる八百長、意図的に勝利を譲る行為)は、マッチメイキングの面でもゲームの仕組み的にも極めて重大な課題でした。この点については、最終的にコンペティティブ(競技)チームが上位ランク帯にパーティ制限を導入し、楽しむための試合と競技性のバランスを取ることとなりました。またチームではWintrade行為を積極的に検出していく手法も開発しています。

幸運なことに現在まで大規模な取り締まりを行う必要性は生じていませんが、今後TFTのeスポーツ化が実現していくことを考慮すると、競技性を保つ準備を整えられたことは幸いでした。

それでは、これ以降はDr. Laugh N’ Learn(Phil)にバトンタッチしていきます。

レジェンド・オブ・ルーンテラ(LoR)

本作は比較的新しいゲームであるため、この項も比較的短いものになりますがご了承ください。他のトレーディングカードゲームと同様、「レジェンド・オブ・ルーンテラ」でも最も多い違反行為はレベル上げ行為の自動化(ボッティング)となっています。

ボッティング(レベル上げボット)

LoRは一般的なブラックジャックよりも少ぉーしだけ複雑な構造をしているため、博士号を3つ取り、3000 EC2インスタンスを3000個ほど用意して盤面を解析する人が出てこない限り、コンテンツ収集のためのボッティング行為が最大の懸念事項となります。そして現時点で確認されているのは「降参ボット」のみです。

08_LoR_Botting_by_Region.ja.png
ホントにどうしてこんな事をするんでしょう?極端な利他主義者なんでしょうか?あるいは賭けに負けた?それともセレスティアルカルマを集めて宇宙的天国へ行こうとしているんでしょうか…?

本投稿で最後に紹介するグラフは、ベータ時期のLoRで検出された降参ボットを1日単位で示したものです。ご覧の通り、この戦争は私たちが一撃で勝利を収めています。ここで言う「降参ボット」とは、皆さんが想像されている通りのものです。対戦に入り、試合開始したら即座に降参する。私が「物理的な戦闘」になった時に取る戦略とほぼほぼ同じです。とはいえ、この問題は非常に興味深いものでした。この種のボットが得られる利益は(敗北時の報酬が絞られているため)本当に微々たるもので、実質的には他プレイヤーに勝利をプレゼントしつづける歯の妖精(訳注:抜けた乳歯の代わりにコインをくれる、西洋に伝わる妖精)のようなものでしたから。もしかしたら連敗が続くと獲得経験値が減るということを見落としていたのかも知れませんが…私たちに真実を確かめる術はありません。

もちろんこの問題には引き続き注意を払っていくつもりですが、ゲームデザインを用いた対策でボットを先んじることができている現状、目下の目標はその根底にある「自動化による恩恵」を抑制し続けることにあります。願わくば、ボット利用時のプログレッション鈍化、フレンド対戦での満額報酬提供により、LoRでボットと当たらなくなる日が訪れますように。

VALORANT

確かにFPSジャンルのチートは歴史も長く、経験も豊富です。そして私たちも、チーターの「上達することなく活躍したい」という思いを過小評価するつもりは毛頭ありません。だからこそタクティカルシューターを開発すると決まったその日、チーム全員がFacebookアカウントを削除してソーシャルハッキングのリスクを完全に潰し、地下室に閉じこもり、14ヶ月を費やしてチート対策プラットフォームの開発に全力を傾けてきました。すべては今後数世紀にわたり続くであろう対チート戦争のために。

こうして作り上げたのが、VALORANTと共にリリースされたVanguard(英語)です。Vanguardはクローズドベータで試験的に投入されていますが、実はこのバージョンではほとんどの機能が意図的に無効化されていて、実質的には血肉を持たないスケルトンのような状態です。こうした理由は2つあります。ひとつは万全の状態に仕上がる前に「秘伝のソース」を公開することを避けるため、もうひとつはセキュリティーに全力で取り組むならば時間をかけて機能の安定性を検証する必要があるためです。そういった経緯からVanguardにはドライバコンポーネントが含まれていますが、その代償として互換性には多少難があるため、全タイトル(あるいはLoL)で使用されることはおそらくないでしょう。よほどの必然性に迫られない限りは。

私たちもインターネットはチェックしていますので、ドライバの使用で皆さんがプライバシーの懸念を抱いていることは把握しています。ただ正直に言わせてもらえば…私たちチート対策チームは、約10年にわたり(敵・味方両方の側から)ゲームクライアントにコードを差し込み続けてきており、仮に何らかの秘密を抜き取る意志があれば、既に入手できているでしょう。広報的にはひどい言い方なのは承知していますが、私は広報部ではないのでひたすら正直に言います。私たちはプレイヤーがチートを利用しているかどうか正確に判断するためのデータだけを収集します。私たちがそれ以外のことに一切の興味を持ち合わせていない点については、心から信頼してくださって大丈夫です。先にドライバがロードされ、ロードされたままの状態で維持されていれば、何が改ざんされたかをより高い精度で把握できるようになります。これがチーターにとってかなり不都合な状態となるのは間違いありません。この点については、かつて「あちら側」だったことがある私たちが保証します。

10_theboys.jpg
タクティカルシューターにとって最大の脅威は、クリック数を稼ぐための煽り見出し記事などではなく、チートです。LoLでも私たちはチーターを捕捉し続けてきました。この言葉が信じられないなら、この記事は読まないほうがいいかもしれません。ちなみに、左の一番背が高い闇エンジニア顔の男が私です。

それから過去証言をさかのぼって記しておくと、VALORANTのチート対策はVanguardだけではありません。現在は同僚のArkemがサーバーのFog of Warテクノロジーにも取り組んでいます。これはゲームクライアントが情報を取得する際、必要になったタイミング以外では当該情報へのアクセス権を与えない設計になっています。空気中に漂う超能力的エネルギーを減衰させてFPSから超能力者を排除する(英語)この取り組みについては、リンク先をご覧ください。

おわりに

さて、長らくお付き合いいただいたこの記事もこれで終わりです。気に入っていただけたなら、高評価、チャンネル登録、そしてデータベース管理者に感謝の言葉をお願いします。今回のように詳細情報を公開していくことは今後あまりないかもしれませんが、チート対策チームは常に皆さんがプレイするゲームのコードの中で、競技体験を守るべく戦っていますからどうかご安心を。

それから、毎回ヘッダー画像に使ってきたライアットスキンを今回で使い切ってしまったので、たぶん新ライアットスキンが出るまで次回更新は物理的に難しいと思います。それでは。


注釈

新テクノロジーをリリースする時は、いつだって脆弱性が気になるものです。あなたが「何かを壊す」ことに尽きることのない熱意を感じるタイプだったら、ぜひhackeroneプログラム(英語)に参加し、「不正防止技術神」としてその名を轟かせてください。

2 監視の目をくぐり抜ける手段を模索する過程で、スクリプティングツール群の中には「外部プログラム化」を謳うものも登場してきました。つまりゲームの関数を直接呼び出すのではなく、クライアントのメモリを(オペレーティングシステムから)読み出して入力機器からの入力に見せかけるのです。この手法ではチート対策データを修正できないため安全性は従来よりも低くなりますが、単純な検出機能を迂回することができます。ただし、従来ならばスキル発動リクエストを直接送信できていたのに、この手法ではキー押下入力を送信することになるため、チートの有効性が下がるという副作用もあります。

3 各地域で選出したキーワードの公開は控えたいと思います。公開したキーワードを悪用されれば、私が注意に注意を重ねて築き上げてきたダッシュボードが一瞬で台無しになってしまいますから。それに、データサイエンティストはそんなものを「優れた統計データ」とは呼びませんからね。

4 そんなものはありません。

5 「ヘッドレスボット」とはゲームクライアントをエミュレートしたものです。一分の隙もなく作られたヘッドレスボットは、ゲームサーバーと直接通信するため演算リソースをほとんど必要としません。描画や入力を一切伴わず、ネットワークを流れる純粋なデータのやりとりになるのです。この手法ではチート開発者がホスト可能なインスタンス数が実質無制限となるため、量的な面で大変な問題になります。ただしパッチ4.20とその後のネットワークプロトコル関係のアップデートにより、現在ヘッドレスクライアントの影響はかなり少ない(というよりもゼロに近い)状態になっています。

6 ボッティングアプリケーションと病原菌の類似性はもはやシュール、と形容したいほどです。個体群が大きく、変異を繰り返す上、その変化は高速。私たちが「特効薬」を作っても、チート開発者は生き延びた個体を拾い上げて再び手を入れ、「再繁殖」を果たす。細菌性の発疹が出たから抗生物質を処方されたのに、耐性菌が出てきて治療薬がなくなり、ただ体から消えるのを待つしかない…まさにそんな感じです。