Skip to content

元ドキュメント: Integration Guide

連携ガイド

PCゲーム用アンチチートは、ゲームクライアントおよびサーバー上で動作する保護システムです。本ソリューションを導入する際、ゲーム開発者はクライアントとサーバーにそれぞれ対応するSDKを組み込み、クライアントのリリースパッケージおよびサーバーのデプロイパッケージに指定されたファイルを追加することで、ゲームを保護します。本ドキュメントはPCゲーム用アンチチートのクライアント部分に関するクイック統合ガイドです。導入後のゲームクライアント構成は以下の通りです:

ファイル構成

ACE-SDKクライアント部分のディレクトリ projects は以下の通りです:

+-- docs                      # ドキュメント
+-- projects
|   +-- C++                   # C++統合用ヘッダーファイルとデモ
|   +-- C#                    # C#統合用ヘッダーファイルとデモ
|   +-- dist
|   |   +-- AntiCheatExpert   # テストまたはリリース時にリリースパッケージに配置するACEメインディレクトリ
|   |   +-- ACEChecker        # 統合検証ツール
+-- tools
|   +-- AutoProtect           # ハードニングツール

リリース時、クライアントのリリースパッケージに AntiCheatExpert ディレクトリを含める必要があります。ハードニングサービスを使用している場合、ハードニング結果に自動的にこのディレクトリが含まれます。使用していない場合は、手動でゲームディレクトリ内に配置してください(具体的な配置パスについては「リリースとデプロイ」セクションを参照)。

ハードニングツールは tools\AutoProtect ディレクトリにあります。ハードニング関連の内容については ACE基本ハードニング操作ガイド を参照してください。

注意: 32ビットゲームを導入する場合、AntiCheatExpert\SGuard\x64 ディレクトリを削除しないでください。

ビルド

projects/client/C++/include をコンパイラのインクルードディレクトリに追加し、SDKインターフェースを呼び出す必要があるソースファイルに ace_sdk_client.h ファイルをインクルードしてください。

注意: 本SDKをサービス側SDKと同一のプロジェクトに統合する必要がある場合(例:UE4ゲームでの統合など)、定義の競合を避けるため、本SDKから ace_sdk_account_busi.h を削除し、サービス側SDKの include ディレクトリをインクルードディレクトリリストに追加してください。

SDKクイック統合

ゲーム初期化時、できるだけ早い段階で init_ace_client を呼び出して初期化を行います。

この関数の最初のパラメータはInitInfoで、今回のゲーム起動時に最初に起動したexeのPIDとプロセスロールIDを入力する必要があります(仕様書を参照。シングルプロセスゲームの場合は-1のみ入力してください);2番目のパラメータに入力するパスは、AntiCheatExpertの実際のパスを基準とする必要があります。デフォルトのパス設定を使用する場合(AntiCheatExpertディレクトリがゲームexeと同じディレクトリにある場合)、nullptrを渡すだけで済みます。

c++
AntiCheatExpert::IAceClient* ace_client = nullptr;
AntiCheatExpert::InitInfo init_info = { static_cast<int>(GetCurrentProcessId()), -1, nullptr };
// the 2nd parameter is the path of ACE-BaseXX.dll, use nullptr if it is in the default path
auto ret = AntiCheatExpert::init_ace_client(&init_info, nullptr, &ace_client);
if (ret != AntiCheatExpert::ACE_OK)
{
    // should exit the game
    std::cout << "Can't load ACE, err:" << (uint32_t)ret << std::endl;
    return 0;
}

ユーザーが正常にログインした後、直ちに log_on インターフェースを呼び出す必要があります。

c++
// login phase
auto open_id = get_open_id();
auto token = get_token();

AceAccountInfo acc_info = {};
AceTokenInfo token_info = {};

acc_info.account_id_.account_type_ = ACEACCOUNT_TYPE_COMMON_ID; //we login with common open id
strcpy_s(acc_info.account_id_.account_, open_id.c_str()); //openid
acc_info.plat_id_ = ACEPLAT_ID_PC_CLIENT;
acc_info.game_id_ = 888; //assigned by ACE Team, replace it with your own gameid
acc_info.world_id_ = 0; //world id, if has
acc_info.channel_id_ = 0; //channel id, if has
acc_info.role_id_ = 0; //role id, if has

strcpy_s(token_info.ace_token_, token.c_str()); //token

if (ace_client->log_on(&acc_info, &token_info) != AntiCheatExpert::ACE_OK)
{
    // should exit the game.
    std::cout << "log on failed" << std::endl;
}

ゲームのレンダリングメインループ内で tick インターフェースを呼び出します。

c++
ace_client->tick();

ユーザーログアウトおよびプロセス終了時、それぞれ log_off および exit_process インターフェースを呼び出します。

c++
// after user logging off
ace_client->log_off();

// before exiting the process
ace_client->exit_process();

統合テスト

インターフェースの統合完了後、dist/AntiCheatExpert ディレクトリをSDK初期化時に指定されたディレクトリ(デフォルトはexeと同じディレクトリ)にコピーし、dist/ACEChecker ディレクトリもexeと同じディレクトリにコピーします。その後ゲームを起動すると、SDKが正常に初期化された後に自動的にWebページが表示され、統合検証結果が示されます。

注意:ACECheckerディレクトリは内部テスト専用であり、リリースバージョンには含めないでください。また、内部のファイルを外部に漏洩しないようご注意ください。

注意:統合が完了しAntiCheatExpertディレクトリが正しく配置されると、ゲームはデバッグできなくなります。デバッグが必要な場合は、一時的にSDKの読み込みを無効にしてください。

検証ページは以下の通りです:

左カラムの Basic Info ページで基本情報を確認できます。検証時は SDK Results ページをクリックしてください。

開発者は、ゲーム起動、アカウントログイン、ゲーム起動後、最後にゲーム終了を行った後、本ページの各インターフェースの統合結果を確認する必要があります。

リリースとデプロイ

開発者のニーズに応じてACEが提供する基本ハードニングサービスを利用することができます。ハードニング後、GameBase.dllファイルが新たに生成されます。

クライアントリリース時、AntiCheatExpert ディレクトリをゲームexeと同じディレクトリに配置します(開発者の要件に応じて他の任意のディレクトリに配置することも可能ですが、AntiCheatExpert 内部のディレクトリ構造は変更しないでください)。SDK初期化時にそのパスを指定します。デフォルトのディレクトリ構造は以下の通りです:

+-- Game.exe			# ゲームのメインexe
+-- GameBase.dll        # 基本ハードニング後に新規追加されるファイル。基本ハードニングサービスを使用しない場合は存在しません
+-- AntiCheatExpert
|   +-- InGame
|   ...
|   +-- SGuard
|   ...

Tencent Cloud プロダクトドキュメント