한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

ゲームラグ白書 › L1 クライアントのゲームプロセス

ゲームのセキュリティモジュール(アンチチート)の検査 Anti-cheat scan and heartbeat

原因ID cg-anticheat · 主担当 ゲーム開発チーム・クライアント開発 · 副担当 ゲーム開発チーム・サーバー開発

図と実験のあるメインページでこのカードを開く →

チートを防ぐためにゲームと一緒に動くセキュリティモジュールが、定期的に検査を行います。検査が重かったり、セキュリティサーバーとやり取りするハートビート(定期的な生存確認の信号)が遅れたりすると、カクついたり切断されたりします。

なぜ セキュリティモジュールが定期的に、ゲームのメモリ・実行中のプログラム・ドライバーを検査 → すると 検査の間ゲームスレッドが止まるか、ハートビートが時間どおりに届かない → 画面では 一定の間隔で一瞬止まり、ひどいとセキュリティエラーの案内とともに切断

症状
カクつき, フリーズ, 切断
要因
ストール
誰に起きるか
自分だけ
いつ
一定の周期で, 接続直後・メンテ明け, ときどきランダムに
担当
主担当 ゲーム開発チーム・クライアント開発 · 副担当 ゲーム開発チーム・サーバー開発
ゲーム開発チームの対応
クライアント:重い検査はゲームスレッドの外で少しずつ分けて実行、セキュリティモジュールのバージョン別にカクつきや落ちた件数の統計を比較(アップデート直後に集中していればセキュリティモジュールのベンダーに連絡)。サーバー:ハートビートが1〜2回遅れる程度は許容。
数値の目安
軽い検査は通常1msもかかりませんが、ゲームスレッドで動く重い検査は、実装によっては1回で数十〜数百msを占めることもあります。
グラフでは
周期的なスパイク · フレームタイム、アンチチートによるキック数
確認箇所
PresentMonのフレームタイムで跳ねる間隔を測り、サーバーが受け取ったアンチチートのキック理由(EOSではClientActionReasonのAuthenticationFailed / Authentication Timed Outなど)を、セキュリティモジュールのバージョン・スペック別に集計
該当する場合
ゲームの状況と関係なく一定間隔の短い停止が繰り返され、セキュリティモジュールのアップデート直後に、特定のスペックでカクつき・認証タイムアウトによるキックが増える
該当しない場合
セキュリティモジュールのバージョンと関係なく、すべてのスペックで同じ間隔なら「クライアントのガベージコレクション」か「バックグラウンドプロセスによるCPU占有」
確認手段
ゲームサーバー・クライアントのログ・メトリクスが必要
もっと詳しく
セキュリティモジュールはドライバーとしてOSの深い部分に入り込んでいるため、ウイルス対策ソフト・オーバーレイ・ほかのゲームのセキュリティモジュールと衝突することもあります。セキュリティモジュールのアップデート直後に、特定のスペックでだけカクつく・落ちるという報告が集中したら、まずこれを疑います。

出典

  1. Using the Anti-Cheat Interfaces Epic Games
    サーバーが決まった時間(RegisterTimeout)内にクライアントのアンチチートメッセージを受け取れないと、認証タイムアウトとしてキックする(ロードで止まったクライアントがよくある原因)。最近のモジュール更新が問題なら以前のモジュールに戻す
  2. PresentMon Capture Application (README-CaptureApplication.md) Intel
    FrameTime(フレーム間のCPU時間)でフレームごとの時間を記録

あわせて読みたい原因

同じ層:L1 クライアントのゲームプロセス

同じ症状(カクつき)を起こすほかの層の原因

図と実験のあるメインページでこのカードを見る