Anti-Cheat インターフェース

EOS 製品への Anti-Cheat の導入に関する前提条件、ネットワーク アーキテクチャ、プラットフォーム コンポーネントなどについて説明します。

9 分で読めます

Anti-Cheat インターフェースは EOS SDK 1.12 以上の使用が必要となります。

インターフェースは、Anti-Cheat Client インターフェースと Anti-Cheat Server インターフェースの 2 種類があります。

  • Anti-Cheat Client インターフェースは Windows、macOS、ChromeOS、Linux 64 ビット オペレーション システムのみをサポートします。仮想マシン (VM) はサポートしません。
  • Anti-Cheat Server インターフェースは VM を含む、すべてのプラットフォームをサポートします。

(Anti-Cheat Interfaces は Easy Anti-Cheat としても知られています。)

オンラインのマルチプレイヤーゲームでの不正行為を減らすために、Anti-Cheat インターフェースを使用できます。このインターフェースでは、ゲーム クライアントを、ゲーム サーバー (Anti-Cheat Server インターフェースを使用) またはその他のゲーム クライアント (Anti-Cheat Client インターフェースを使用) によって検証されるアンチチート プロテクト モードで起動するためのツールを提供します。これらのインターフェースは、デジタル著作権管理 (DRM) やコードの難読化のツールではなく、オフラインまたはソロのプレイには有用ではありません。

Anti-Cheat インターフェースには 2 種類の保護機能があります。

  • チートの防止:直接的な方法を使用してゲーム プロセス メモリを読み取ったり書き込んだりするなどの一般的なチート技法を受動的に防止します。
  • チートの検知:チートに対する措置を講じるため、より専門的な方法でゲームを操作しているアカウントを特定します。

Anti-Cheat インターフェースを使用するには、次の手順を実行する必要があります。

  1. 開発の 前提条件 を確認し、遵守します。
  2. ネットワーク アーキテクチャ および クライアント ポリシー タイプを決定します。
  3. クライアント モジュールAnti-Cheat Integrity ToolAnti-Cheat Bootstrapper 実行可能ファイル を設定します。
  4. (Windows のみ) Windows サービス インストーラー を設定します。
  5. Anti-Cheat インターフェースをゲーム コードに統合するには、次の手順に従います。
    1. Connect インターフェース を使用して、ユーザー ID を生成します。
    2. クライアントサーバー モード または ピアツーピア モード のコールバックを登録します。
    3. 保護されたセッションの通知 を設定します。
  6. 統合チェック リスト で Anti-Cheat インターフェースが正しく動作していることを確認します。

開発の前提条件

不正対策サービスを効果的に行なうために、セキュリティのベスト プラクティスを遵守し、発生したゲームの問題に積極的に対処する、強固なゲーム基盤の上に実行されるものでなければなりません。

ゲーム アーキテクチャ

できるだけ多くのゲーム ステートの権限のある専用のゲーム サーバーの使用を強くお勧めします。

たとえば、プレイヤーが空を飛んだり、テレポートしたり、超高速で移動したりできる不正は通常、ゲーム サーバーにプレイヤーの位置や動きの権限を与えることでゲーム アーキテクチャの段階で完全に防ぐことができます。

ゲームの脆弱性

多くの場合、ゲーム ロジックのエラー、バグ、エッジ ケースはプレイヤーに発見され悪用されます。しかし、アンチチート サービスはゲーム コードが書き込まれたとおりに動作していると理解し、問題の解決はできません。開発を続けて新しい脆弱性が見つかった場合、ゲーム デベロッパーとして問題を解決しなければなりません。

ゲーム レベルの不正対策

自身の開発チームが、ゲームに特化した知識を活かして、ゲーム レベルでチートを防止および検知することができます。チート販売者のターゲットになったゲームは、不正対策サービスを補完してゲームの問題を解決する少人数の開発チームを持つことで大きなメリットを得られます。

プレイヤー レポート

同じゲームセッションに参加している他のプレイヤーにチート行為が疑われる場合にプレイヤーが報告できるよう、Reports インターフェース を実装することが重要です。これにより、各ゲームのアンチチート プロテクションの有効性に関して重要な状況とフィードバックが得られます。

プレイヤー進行度管理

進行状況が後でゲームのサーバーに同期されるオフラインやソロ プレイのシナリオの場合、アンチチート サービスは効果的に保護することはできません。

ゲーム ネットワーク アーキテクチャ

Anti-Cheat インターフェースは、各種ゲーム ネットワーク アーキテクチャのさまざまなモードをサポートしています。Anti-Cheat クライアント インターフェースが各ゲーム ネットワークをサポートするのに対し、Anti-Cheat サーバー インターフェースは、専用サーバーに特化して動作します (クライアント サーバー モード)。

専用サーバー (クライアント サーバー モード)

このモードを権限あるゲーム サーバーで使用し、Anti-Cheat クライアントと Anti-Cheat サーバー両方のインターフェースを実装します。

Communication flow of the Client-Server mode of network architecture

個々のゲーム サーバーのオペレータは、ネットワーク接続を操作するなどしてサーバー内の Anti-Cheat を意図的に無効化または切断することができます。これは、コミュニティが運営するサーバーをサポートするゲームのリスクとして許容されています。このリスクを軽減するために、「公式」と「非公式」のゲーム サーバーのユーザー インターフェースを区別できます。

ゲームに参加し、ゲーム サーバーをトリガーして EOS_AntiCheatServer_RegisterClient を呼び出す直前にクライアントが EOS_AntiCheatClient_BeginSession を呼び出すように、クライアント プロテクト セッションとゲーム サーバーの呼び出しを一致させる必要があります。

ピアツーピア メッシュ (ピアツーピア モード)

このモードは、ゲーム クライアントが他のすべてのゲーム クライアントとネットワーク メッセージを交換するが、どのゲーム クライアントもゲーム セッションに対する全権限を持たないフルメッシュ レイアウトに使用します。

Communication flow of the Peer-to-Peer mode of network architecture

このモードでは、Anti-Cheat サーバー インターフェースは使用しません。その代わり、プレイヤーは Anti-Cheat クライアント インターフェースを使用し、他のプレーヤーがアンチチートを有効にしているかどうかを確認します。

ローカル ユーザーとして同じゲームセッションに参加する各ピアに EOS_AntiCheatClient_RegisterPeer 関数を呼び出します。

リッスン サーバー

ゲーム セッションにおいてシングル プレイヤーが権限のあるゲーム ホストとしての役割を果たす場合、ピアツーピアまたはクライアント サーバー モードのどちらかを使用しなければいけません。

Communication flow of the Listen Server mode of network architecture

ピアツーピア モードの場合

  • 権限のあるゲーム ホスト クライアントは、各プレイヤーをピアとして登録し、必要に応じてデータを交換することで、ゲームセッションのすべてのプレイヤーを検証してください。
  • ピアの削除操作が必要なコールバックが発生した場合、権限のあるゲーム ホスト クライアントは、そのプレイヤーをゲーム セッションから退出させてください。
  • 権限のないゲーム ホスト クライアントは、特定のクライアントをピアとして登録し、必要に応じてデータを交換することによってのみ、ゲーム ホスト クライアントを検証してください。
  • ゲーム ホストの削除操作が必要なコールバックが発生した場合、権限のないクライアントは、接続を切断し、適切なエラーメッセージを表示してください。

クライアント サーバー モードの場合

  • よりシンプルなアプローチですが、権限のあるゲーム ホスト クライアントはより特権のある役割となり乱用の可能性があります。特に、悪意のある権威のあるゲーム ホスト クライアントは、アンチチートがセッションで機能するのを意図的にブロックする可能性があります。これが懸念される場合は、代わりにピアツーピア モードの実装を使用する必要があります。
  • 実装は、ログインしているローカル プレイヤーを EOS_AntiCheatServer_BeginSession の呼び出しで指定しなければいけないことを除いて、専用のサーバーと同じです。

クライアント資格情報とポリシー設定

Anti-Cheat インターフェースの クライアント資格情報 を設定する場合、ネットワーク アーキテクチャ とユース ケースを考慮してください。

Anti-Cheat クライアント インターフェースには、定義済みの GameClient ポリシー タイプを使用してください。ユーザー必須フィールド フラグは、ゲーム クライアントでは常に有効にしてください。

Anti-Cheat サーバー インターフェースと信頼できる公式サーバーのみを使用するゲームでは、predefined TrustedServer policy タイプを使用し、資格情報を秘密にしてください。

次のポリシー アクションを使用できます。

authenticateForLocalUser 必須 クライアントの資格情報保持者が、クライアント サーバーまたはピアツーピアのいずれかの Anti-Cheat クライアント モードを使用して、不正対策バックエンドで自分自身を認証することを可能にします

authenticateForAnyUser このポリシー アクションは、クライアントがクライアント サーバー モードを使用してリッスン サーバーをホストする場合のみ使用します。 クライアントの資格情報保持者が、Anti-Cheat サーバー インターフェースを使用してその他のユーザーを認証することを可能にします

sendTrustedGamePlayDataForAnyUser このポリシー アクションは、信頼できる、公式の専用サーバーにのみ使用します。ゲーム クライアントまたはコミュニティがホストのゲーム サーバーに使用したり公開したりしないでください。 クライアントの資格情報保持者が、どのユーザーのアンチチート ゲームプレイ データを提出できるようにします。改ざんされていないと確信している、信頼できる公式の専用サーバーにのみ使用してください。

プラットフォーム コンポーネント

Anti-Cheat インターフェースを使用するには、EOS SDK パッケージに含まれる、バイナリをゲーム クライアントに配布する必要があります。EOS SDK ZIP ファイル内で、[SDK] > [Tools (ツール)] > [EOS_AntiCheatTools] へ移動します。「dist」サブディレクトリ内のファイルは、ゲーム クライアントの一部としてプレイヤーにのみ配布してください。その他のファイルは、開発のみに使用し、配布しないでください。EOS SDK の新しいバージョンに更新するたびに、使用中のプラットフォーム コンポーネント ファイルを更新する必要があります。

Windows

Anti-Cheat クライアントは 64-bit Windows バージョンのみをサポートしています。32 ビット版のゲームは、64 ビット版のオペレーティング システムで動作している場合にのみサポートされます。

コンポーネントファイル名Description
サービス インストーラEasyAntiCheat_EOS_Setup.exe(必須)Anti-Cheat Windows サービスのインストール、修復、アンインストールに使用します。
Anti-Cheat Bootstrapperstart_protected_game.exeアンチチートを準備し、利用可能な通常のアンチチート クライアント保護を使用しゲーム プロセスを開始します。
Anti-Cheat サービスEasyAntiCheat_EOS.exe実行可能な Windows サービスで、これにより Anti-Cheat が他のコンポーネントを初期化することができます。

Windows 'dist' サブディレクトリ構造体

Windows サービス インストーラー

Windows の場合、ゲームとともに不正対策システム サービスがインストール、アンインストールされるよう設定しなければいけません。このため、Windows ユーザーはゲームをインストールする際、管理者権限が必要ですが、そのあとゲームを起動するのに管理者権限は必要ありません。アンチチート対策が取られたゲームを起動すると、Anti-Cheat Bootstrapper が Windows サービスを自動的に起動します。ゲームを終了すると、Windows サービスは自動的に終了します。

構成
  1. [Developer Portal] から ProductId を取得します。
  2. 次のコマンドを実行するよう、インストーラを設定します。
    • EasyAntiCheat_EOS_Setup.exe install <Your ProductId>
    • EasyAntiCheat_EOS_Setup.exe uninstall <Your ProductId>
  3. 成功すると、このコマンドのプロセス終了コードは 0 になります。プロセス終了コードが 0 ではない場合は失敗です。
ストア固有の前提条件
Epic Games Store

Epic Games Store についてのドキュメントを参照してください。

Steam

Steamworks Installscript ドキュメント を参照してください。通常は、サービスのインストール操作を行なうために「プロセスの実行」ブロックを定義し、サービスのアンインストール操作を行なうために「アンインストール時のプロセス実行」ブロックを定義します。

Steam Installscript 機能は、Windows 以外のプラットフォームでは利用できない場合があります。

Mac

コンポーネントファイル名Description
Anti-Cheat Bootstrapperstart_protected_game.appアンチチートを準備し、利用可能な通常のアンチチート クライアント保護を使用しゲーム プロセスを開始します。

Mac dist サブディレクトリ構造

Linux

コンポーネントファイル名Description
Anti-Cheat Bootstrapperstart_protected_gameアンチチートを準備し、利用可能な通常のアンチチート クライアント保護を使用しゲーム プロセスを開始します。

Linux dist サブディレクトリ構造

Linux Wine / Proton のサポート

Wine または Proton 互換性レイヤーを使用して Linux 上で多くの Windows ゲームの実行が可能であり、アンチチート クライアント保護はこの構成をサポートできます。このサポートをゲームで有効にするには、SDK version 1.14 以上を使用し Linux プラットフォームに対して クライアント モジュール をアクティブにする必要があります。

Wine または Proton でゲームを実行しているプレーヤーは、Linux クライアント モジュールを使用するため、Windows に加えて、Linux のクライアント モジュールの更新を定期的にテストしてアクティブにする必要があります。

コンソール サポート

通常、コンソール プラットフォームは、任意のコードの実行防止をハードウェアのセキュリティ機能に依存しており、これは、ほとんどのタイプの不正の前提条件です。プラットフォームに特化したセキュリティ機能がほとんどのニーズに対応するため、アンチチート クライアント保護は、コンソールには提供されません。ピアツーピア モードの Anti-Cheat Client インターフェイスを使用して、クロスプラットフォーム プレイをサポートできます。

コンピュータ ユーザーとコンソール ユーザー間のクロス プラットフォーム プレイをサポートするには、保護されたゲーム セッションにプレイヤーが参加するときにクライアント保護が必要ないプラットフォームを使用しているかどうかをまず判断しなくてはいけません。この確認は、プレイヤーのゲーム クライアントが改ざんされていないことに依存してはいけません。悪意のあるユーザーが不正対策を回避するためにこの値を操作する可能性があるため、ゲーム クライアントに使用しているプラットフォームを示すメッセージを送信させるだけでは十分ではありません。

EOS Connect インターフェースは、プレイヤーが一般的なコンソールからゲームを実行していることを安全に確認するために使用できるデバイス タイプ フィールドを含む EOS ID トークン を提供します。他のプラットフォームをサポートするには、プラットフォーム ベンダー独自のドキュメントを参照し、ゲーム クライアントが生成し、ゲームサーバー、バックエンド、またはピア プレイヤーが独自に検証するプラットフォーム チケットまたはトークンを使用して、堅牢なチェックを行う方法を見つける必要があります。これらのチェックでユーザーが不正対策クライアント保護が必要ないコンソール プラットフォームを使用していることが確認できた場合、EOS_ACCCT_UnprotectedClient フラッグを使用してクライアントを不正対策に登録し、不正対策のクライアント チェックからクライアントを除外できます。これにより、保護された PC プレイヤーとのピアツーピアモード セッションに引き続き参加したり、サーバー側のアンチチート ゲームプレイ データ収集で参照したりすることができます。

ID トークンの詳細については「EOS ID Tokens」、Epic アカウントについては「EAS ID Tokens」を参照してください。