今回の開発者ブログではバグを悪用した不正行為とチームが取った対策、そして修正による今後の不正行為への影響についてご紹介します。
時系列順の説明
5月11日~12日
- 5月前半、「レインボーシックスシージ」のコミュニティ内で、Clashのシールド、クレイモア、そして展開型シールドを使った3種類の不正行為が確認されました。
- 開発チームが週末を通した作業で状況を確認したところ、これらの問題には優先的な対策が必要なことが判明しました。
5月13日
- 不正行為に関する調査を開始。まずは社内で、現象の正確かつ確実な再現を試みました。これは問題を把握し、根本原因の特定に至る手がかりを得るためのプロセスです。
- 1次調査によって、問題の影響範囲の把握には時間がかかることが判明し、早期修正が難しいという判断にいたりました。
- その間もバグの悪用がコミュニティ内で広がり続けていたため、ゲームへの影響をなるべく短期間で緩和させる方法の検討を始めました。
5月15日
- 「レインボーシックスシージ」プロジェクトのリーダー陣によるディスカッションを実施。不正行為がゲームに及ぼす正確な影響範囲を、データを使って定量的な観点から判断する必要がありました。
5月16日
- 16日朝、データ評価の結果をもとに、Clash、クレイモア、展開型シールドの稼働停止を決断しました。
- このために各チームが通常業務を一時中断し、様々な選択肢を検討しながら、この3要素をプレイできなくするための対応策を用意し、実行するため方策を検討しました。
- さらには対応策が固まりしだい、それらを1つずつテストしていきました。この段階で対応策を5つに絞り込み、多くの試行錯誤を繰り返した末に、最後に残された手段でようやく目的を達成することができたのです。
5月17日
- 他業務に優先して2度のテストを実施し、双方が成功に終わったことを確認したうえで、応急処置としてClash、クレイモア、展開型シールドの利用停止措置を施行しました。
5月24日
- 本件の全面的な修正には、パケットのサーバーへの送信順をはじめとした、システムの中核的なプロセスに触れる必要があることがわかりました。その一方で、開発チームはClashと主要ガジェットの使用禁止措置がゲームに与える影響の深刻性を鑑み、こうした抜本的な対策と並行して様々なフェイルセーフ機構の製作を開始し、安全に実装することができました。
6月
- 数週間が経過し、不正行為の報告が再浮上します。
- しかし、ゲーム要素の使用停止を行う仕組みがすでに実装されていたため、新しい報告に対する速やかな対応として、ClashとIQの使用を停止することができました。
- この時点で開発チームは、バグの根本原因に対応するために求められる、実用レベルの全面的な修正を完成させています。社内テストではすでに良好な結果が得られていましたが、実装に万全を期すために、まずはテストサーバーを使った大規模なテストを実施する必要がありました。
6月~7月
- 6月下旬、広域的な順序処理をPC版でリリースし、7月にはコンソール版にも展開。
- この間は修正の効果を観測しながら、バグ再発の兆しにも注意を払っていました。
各要素の使用停止とフェイルセーフ機構について
開発チーム内で修正作業と短期で導入可能なフェイルセーフ機構の開発作業を早い段階から分担し、より持続性の高い暫定対策の開発を目指しました。今回実装した停止機構やフェイルセーフ機構は、特定の不正を対象としたものにすぎず、根本的な解決を意図したものでははじめからありませんでした。これは、Clashと2つのガジェットの使用を止めることが、プレイに及ぼす支障の大きさを考慮して下された決断にすぎません。これらの対策はまもなくライブサーバーに実装されましたが、コミュニティには同様の問題が発生した場合の報告をお願いすることになってしまいました。
オペレーターを作品から除外し、装備品の構成に手を加えるという決断は、簡単に下せるものではありません。私たちはゲームコンテンツを解除するために、プレイヤーが費やした時間と努力を常に尊重するとともに、主要ゲームシステムの撤去が有効戦術や「レインボーシックスシージ」のエコシステムに及ぼす多大な影響を把握すべき立場にあります。しかし今回の状況においては、全面修正までの間に問題を放置することは許されないと感じていたのです。プレイヤーのために、安全かつ可及的速やかに不正を無効化してゲームプレイを正常化する必要がありました。
今回のフェイルセーフ機構による暫定措置は、バグの再発やエンバグを回避できるよう特定の対象に特化したものであること、迅速な対応のために簡単に変更できること、そして速やかな配信のためにテストを最小限に抑えることという、複数の要件を満たす必要がありました。結果としては不正の速やかな防止のために、オペレーターとガジェットの使用を止めるという措置を最初に講じることになりましたが、これが最終手段であるということも認識していたため、フェイルセーフ機構の準備とテストの実施中にのみ施行される、超短期的措置としての運用にとどめました。
広域的順序処理とは?
「レインボーシックス シージ」では、オペレーターやガジェット、グレネード、シールド、カメラ、壁、植物などはすべてがオブジェクトとして存在しています。本作のオブジェクトはアクション内の処理を実行すると必ず、サーバーへメッセージ(パケット)を送信します。例えばプレイヤーがガジェットを使用した場合、オペレーターからは「ガジェットを装備する」というメッセージが送られ、次に「ガジェットを使用する」というメッセージが送られます。それと同時にガジェットからも、「ガジェットを起動する」、「ガジェットを展開する」といったメッセージがサーバーに送信されているのです。そうしてこれらのメッセージが、サーバーから他のプレイヤーへと送信される仕組みになっています。
今回の不正が判明するまで、サーバーへと送信されるこれらのメッセージの順番は、個々のオブジェクト内でのみ守られていました。これはメッセージがサーバーに届かなかったり、間違った順番で届いてしまったりする可能性があったことを意味します。今回の不正行為は本作のこうしたネットワークプロトコルの欠陥につけこんだもので、連続で一定のアクションを繰り返すことによって、ネットワークへの正常なメッセージの送達が失敗する確率を高める仕組みとなっていました。その結果として、サーバー側でメッセージの順番を正しく再現できなくなり、プレイヤーの画面表示の乱れや、異常挙動を引き起こしていたのです。
この問題を解決するために実施したのが、広域的順序処理です。これは全てのメッセージをグローバルレベルで指示するように、ネットワークエンジンを修正したものです。また、データ送信の信頼性を高めるために、メッセージの並行送信ができるようになっています。これによって、全プレイヤーが同じ順番でメッセージを受信できるようになり、メッセージの復元を全プレイヤー間で同期できるようになりました。
この時点で問題となっていた不正行為はすべて、この中核プロセスに関連していたことが判明していたため、広域的順序処理へのアプローチはきわめて慎重に進める必要がありました。この変更によって、有害な副産物が生じないことを保証しなければならなかったのです。広域的順序処理を適用すればネットワークの通信量が増えることにはなりますが、そこから生じるメリットを鑑みれば犠牲を払う価値は十分にあると考え、これを採用することになりました。
今後の影響
広域的順序処理の実装にともない、メッセージの送信順がクライアントレベルではなく、グローバルレベルで規則化されるようになったことで、マッチにおいて、全プレイヤー間でアクションを画一的に再現できるようになりました。通信負荷の増大についても慎重な検討を重ね、通信量がわずかに増えることになっても、それでプレイ体験が損なわれることはないという結論に至りました。今回の対応によってメッセージの送信順に起因する問題や、類似した不正行為を防止することができるでしょう。
一方で今回の不正行為とコミュニティへの影響は、オペレーターとガジェットの使用禁止措置の有用性を際立たせつつ、ライブサーバーにおけるオペレーターとロードアウトの構成管理を強化する必要性を浮きぼりにしました。そのため、社内でこうしたニーズにのみ対応する人員を増やすことで、今後新たに不正が生じた場合に機動的な対応ができる体制の整備を進めています。