ローカル専用サーバーをAMSに登録する
注釈:本資料はAI技術を用いて翻訳されています。
はじめに
AMS Simulatorを使用して、ローカルで実行している専用サーバー(DS)をAMSに登録できます。これにより、専用サーバーをAMSにアップロードすることなく、マッチメイキングやセッション形成を含むゲームフローをエンドツーエンドでテストできます。このガイドでは、ローカル専用サーバーをAMSに登録する手順を説明します。
このセクションは、AMS Simulatorを「クラウド統合」モードで実行することについて説明しています。つまり、ローカル専用サーバーをAMS環境に登録して、MatchmakingおよびSessionサービスで使用できるようにします。AMS Simulatorを初めて使用する場合、またはAMS Simulatorをスタンドアロンモード(完全にローカル)で実行したい場合は、AMS Simulatorの実行(スタンドアロンモード)を参照してください。
各ネームスペースは、最大10台のローカル専用サーバーを登録できます。
ローカル専用サーバー認証IAMクライアントのセットアップ
ローカル専用サーバーをAMSに登録する前に、Admin Portalで次の権限を持つconfidential IAMクライアントをセットアップする必要があります。
| Permission name | Action |
|---|---|
NAMESPACE:{namespace}:AMS:LOCALDS | Create |
AccelByte Shared Cloudのお客様の場合、AMS->Watchdogs PermissionsでCreate権限を持つconfidential IAMクライアントを使用してください。
IAMクライアントは、AMS Simulatorの身元を確認するために使用されます。認可について詳しくは、Authorizationを参照してください。
AMS Simulatorの設定
コマンドamssim generate-configを実行して、現在のディレクトリにデフォルトのconfig.jsonファイルを生成します。AMS Simulatorは、amssim runを実行するときにこのファイルを使用します。config.jsonで次の値を変更します。
AGSEnvironmentURL:ローカル専用サーバーを登録したい環境のURLを使用します。スキーム(例:http://)は含めません。
AccelByte Shared Cloudのお客様の場合、AGSEnvironmentURLは<studionamespace>-<gamenamespace>.prod.gamingservices.accelbyte.ioです。
-
AGSNamespace:ローカル専用サーバーを登録したい環境内のネームスペースを使用します。Shared Cloudの場合は、<studionamespace>-<gamenamespace>を使用します。 -
IAM:AMS Simulatorの認証に使用されたClientIDとClientSecretを使用します。 -
LocalDSHost、LocalDSPort:ローカル専用サーバーを実行するマシンのIPとポートを使用して、プレイテスターが接続先を知ることができるようにします。 -
ClaimKeys:セッションサービスがローカル専用サーバーをクレームするために使用するクレームキーのリストを提供します。デフォルトでは、ServerNameがクレームキーの1つとして登録されます。 -
ServerName:ローカル専用サーバーに付けたい名前を提供します。デフォルトでは、コンピュータ名を使用して自動的に生成されますが、好みに応じて変更できます。デフォルトでは、これがクレームキーの1つとして登録されることに注意してください。
たとえば、config.jsonは次のようになります。
{
"WatchdogPort": 5555,
"AGSEnvironmentURL": "mystudio-mygame.prod.gamingservices.accelbyte.io",
"AGSNamespace": "mystudio-mygame",
"IAM": {
"ClientID": "00000000000000000000000000000001",
"ClientSecret": "00000000000000000000000000000002"
},
"LocalDSHost": "127.0.0.1",
"LocalDSPort": 7777,
"ClaimKeys": [],
"ServerName": "JohnV1-MAC-AB",
"HeartbeatTimeoutSeconds": 30
}
ローカル専用サーバーの実行
ローカル専用サーバーがAMS Simulatorに接続すると、シミュレータはconfig.jsonファイルで指定された環境にローカル専用サーバーを自動的に登録します。登録が成功すると、サイドバーのAccelByte Multiplayer Serversセクションの下にあるLocal ServerタブのAdmin Portalにエントリが表示されます。

ローカル専用サーバーのクレーム
ローカル専用サーバーはリージョンを持たないと見なされ、クレームリクエストで指定されたリージョンよりも_常に_優先されます。AMSに登録されたローカルサーバーをクレームするには、サーバーが「ready」状態にあることを確認し、クレームリクエストにconfig.jsonでリストしたクレームキーまたはサーバー名のいずれかと一致する少なくとも1つのクレームキーが含まれていることを確認する必要があります。
このドキュメントの残りの部分では、マッチメイキングとセッション管理にAccelByte Gaming Services(AGS)を使用していることを前提とし、ゲームクライアントをローカルDSにマッチメイクするためのより詳細な例を提供します。
AGSを使用する場合、セッションタイプDS - AMSでAGSセッションテンプレートをセットアップし、amssimのconfig.jsonファイルで指定されたクレームキーのいずれかと一致するクレームキーを設定できます。以下で説明するように、マッチメイキング/セッション作成リクエストでserver_nameを提供している限り、クレームキーを空白のままにすることもできます。
リージョンフィールドを空白のままにすることも、非ローカルDSに同じセッションテンプレートを使用していて、そのデフォルトのリージョンが必要な場合は、必要なリージョンを設定することもできます。これにより、マッチメーカーはセットアップしたセッションテンプレートを使用して、プレイヤーをローカル専用サーバーに配置できます。
ローカルDSでのテスト用に新しい専用セッションテンプレートを作成する必要はありません。次の条件が満たされている限り、既存のセッションテンプレートを再利用できます。
- Unreal Engine
- Unity
- 使用されているマッチプールが、タイプ
DS - AMSのセッションテンプレートを参照している - ゲームクライアントが、
FOnlineSessionV2AccelByte::StartMatchmaking()(またはマッチメイキングではなく直接セッション作成を行っている場合はFOnlineSessionV2AccelByte::CreateSession())にSETTING_GAMESESSION_SERVERNAME属性を含めている
SETTING_GAMESESSION_SERVERNAMEの値は、ams config.jsonで定義されたServerNameと一致する必要があります- ローカルでDS単独でテストしたい場合は、ams config.jsonの
ClaimKeysの値を空白のままにできます。デフォルトでは、ServerNameがクレームキーの1つとして登録されます。
以下は、マッチメイキングリクエスト中にゲームクライアント内からローカルサーバー名をルーティングする方法の例です。
// Set local server name for matchmaking request, if any.
// This is useful if you want to try matchmaking using a local dedicated server.
FString ServerName;
FParse::Value(FCommandLine::Get(), TEXT("-ServerName="), ServerName);
if (!ServerName.IsEmpty())
{
UE_LOG_MATCHMAKINGDS(Log, TEXT("Requesting local server with name: %s"), *ServerName)
MatchmakingSearchHandle->QuerySettings.Set(SETTING_GAMESESSION_SERVERNAME, ServerName, EOnlineComparisonOp::Equals);
}
...
GetSessionInt()->StartMatchmaking(
LocalPlayers,
SessionName,
FOnlineSessionSettings(),
MatchmakingSearchHandle,
CompletionDelegate);
完全なコード例については、Byte Wars: Matchmaking with DSを参照してください。
- 使用されているマッチプールが、
DS - AMSセッションテンプレートを参照している - ゲームクライアントが、
AccelByteSDK.GetClientRegistry().GetApi().GetMatchmakingV2().CreateMatchmakingTicket(またはマッチメイキングではなく直接セッション作成を行っている場合はAccelByteSDK.GetClientRegistry().GetApi().GetSession().CreateGameSession)にserver_name属性を含めている
server_nameの値は、AMS config.jsonで定義されたServerNameと一致する必要があります。- ローカルでDS個別にテストしたい場合は、AMS config.jsonの
ClaimKeysの値を空白のままにできます。デフォルトでは、ServerNameがクレームキーの1つとして登録されます。
以下は、マッチメイキングリクエスト中にゲームクライアント内からローカルサーバー名をルーティングする方法の例です。
var matchmaking = AccelByteSDK.GetClientRegistry().GetApi().GetMatchmakingV2();
// Set local server name for matchmaking request, if any.
// This is useful if you want to try matchmaking using a local dedicated server.
string serverName = "your-server-name";
string matchPoolName = "your-match-pool-name-ams";
var optionalParams = new MatchmakingV2CreateTicketRequestOptionalParams
{
attributes = new Dictionary<string, object>
{
{ "server_name", serverName }
},
};
matchmaking.CreateMatchmakingTicket(matchPoolName, optionalParams, result =>
{
if (result.IsError)
{
// Do something if CreateMatchmakingTicket has an error
Debug.Log($"Error CreateMatchmakingTicket, Error Code: {result.Error.Code} Error Message: {result.Error.Message}");
return;
}
// Do something if CreateMatchmakingTicket has been successful
});
Byte Wars: Matchmaking with DSを参照してください。
マッチメイキングとセッションテンプレートの詳細については、次のガイドをご覧ください。
トラブルシューティング
DSがローカルAMS Simulatorに既に接続しているのに、Admin PortalのLocal Serverタブに表示されない場合は、session/<sessionid>.logのログファイルでより詳細なログを見つけることができます。一般的なケースは、権限エラーのためにローカルAMS SimulatorがAMS(fleet-command)への接続に失敗したことです。IAMクライアントに欠落している権限を追加し、config.jsonが正しいことを確認してください。Shared Cloudの場合は、AGSNamespaceとAGSEnvironmentURLが完全なネームスペース<studionamespace>-<gamenamespace>を使用していることを確認してください。