ゲームラグ白書 › L1 クライアントのゲームプロセス
ゲームのセキュリティモジュール(アンチチート)の検査 Anti-cheat scan and heartbeat
原因ID cg-anticheat · 主担当 ゲーム開発チーム・クライアント開発 · 副担当 ゲーム開発チーム・サーバー開発
図と実験のあるメインページでこのカードを開く →
チートを防ぐためにゲームと一緒に動くセキュリティモジュールが、定期的に検査を行います。検査が重かったり、セキュリティサーバーとやり取りするハートビート(定期的な生存確認の信号)が遅れたりすると、カクついたり切断されたりします。
なぜ セキュリティモジュールが定期的に、ゲームのメモリ・実行中のプログラム・ドライバーを検査 → すると 検査の間ゲームスレッドが止まるか、ハートビートが時間どおりに届かない → 画面では 一定の間隔で一瞬止まり、ひどいとセキュリティエラーの案内とともに切断
症状 カクつき , フリーズ , 切断
要因 ストール
誰に起きるか 自分だけ
いつ 一定の周期で, 接続直後・メンテ明け, ときどきランダムに
担当 主担当 ゲーム開発チーム・クライアント開発 · 副担当 ゲーム開発チーム・サーバー開発
ゲーム開発チームの対応 クライアント:重い検査はゲームスレッドの外で少しずつ分けて実行、セキュリティモジュールのバージョン別にカクつきや落ちた件数の統計を比較(アップデート直後に集中していればセキュリティモジュールのベンダーに連絡)。サーバー:ハートビートが1〜2回遅れる程度は許容。
数値の目安 軽い検査は通常1msもかかりませんが、ゲームスレッドで動く重い検査は、実装によっては1回で数十〜数百msを占めることもあります。
グラフでは 周期的なスパイク · フレームタイム、アンチチートによるキック数
確認箇所 PresentMonのフレームタイムで跳ねる間隔を測り、サーバーが受け取ったアンチチートのキック理由(EOSではClientActionReasonのAuthenticationFailed / Authentication Timed Outなど)を、セキュリティモジュールのバージョン・スペック別に集計 該当する場合 ゲームの状況と関係なく一定間隔の短い停止が繰り返され、セキュリティモジュールのアップデート直後に、特定のスペックでカクつき・認証タイムアウトによるキックが増える 該当しない場合 セキュリティモジュールのバージョンと関係なく、すべてのスペックで同じ間隔なら「クライアントのガベージコレクション」か「バックグラウンドプロセスによるCPU占有」 確認手段 ゲームサーバー・クライアントのログ・メトリクスが必要
もっと詳しく セキュリティモジュールはドライバーとしてOSの深い部分に入り込んでいるため、ウイルス対策ソフト・オーバーレイ・ほかのゲームのセキュリティモジュールと衝突することもあります。セキュリティモジュールのアップデート直後に、特定のスペックでだけカクつく・落ちるという報告が集中したら、まずこれを疑います。
出典 Using the Anti-Cheat Interfaces Epic Games サーバーが決まった時間(RegisterTimeout)内にクライアントのアンチチートメッセージを受け取れないと、認証タイムアウトとしてキックする(ロードで止まったクライアントがよくある原因)。最近のモジュール更新が問題なら以前のモジュールに戻す PresentMon Capture Application (README-CaptureApplication.md) Intel FrameTime(フレーム間のCPU時間)でフレームごとの時間を記録
あわせて読みたい原因
同じ層:L1 クライアントのゲームプロセス
同じ症状(カクつき)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る