ローカル専用サーバーをAMSに登録する
注釈:本資料はAI技術を用いて翻訳されています。
はじめに
AMS Simulatorを使用して、ローカルで実行されている専用サーバー(DS)をAMSに登録できます。これにより、マッチメイキングやセッションの作成を含むゲームフローをエンドツーエンドでテストでき、専用サーバーをAMSにアップロードする必要がありません。このガイドでは、ローカル専用サーバーをAMSに登録する手順を説明します。
このセクションでは、AMS Simulatorを「クラウド統合」モードで実行することについて説明します。このモードでは、Matchmaking・Sessionサービスで使用するために、ローカル専用サーバーがAMS環境に登録されます。AMS Simulatorを初めて使用する場合、またはAMS Simulatorをスタンドアロンモード(完全にローカル)で実行したい場合は、AMS Simulatorの実行(スタンドアロンモード)を参照してください。
各ネームスペースは、最大10台のローカル専用サーバーを登録できます。
ローカル専用サーバー認証用のIAMクライアントを設定する
ローカル専用サーバーをAMSに登録する前に、以下の権限を持つconfidentialのIAMクライアントをAdmin Portalで設定する必要があります。
| 権限名 | アクション |
|---|---|
NAMESPACE:{namespace}:AMS:LOCALDS | Create |
AccelByte Public 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 Public Cloudのお客様の場合、AGSEnvironmentURLは<studionamespace>-<gamenamespace>.prod.gamingservices.accelbyte.ioになります。
-
AGSNamespace:ローカル専用サーバーを登録したい環境内のネームスペースを指定します。Public 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に接続すると、Simulatorはconfig.jsonファイルで指定された環境に、ローカル専用サーバーを自動的に登録します。登録に成功すると、サイドバーのAccelByte Multiplayer Serversセクション内、Admin PortalのLocal Serverタブにエントリが表示されます。

ローカル専用サーバーをクレームする
ローカル専用サーバーはリージョンを持たないものとして扱われ、クレームリクエストで指定されたリージョンよりも_常に_優先的に選択されます。AMSに登録されたローカルサーバーをクレームするには、サーバーが「ready」状態になっていることと、クレームリクエストに、config.jsonにリストされたクレームキーまたはサーバー名のいずれかに一致するクレームキーが少なくとも1つ含まれていることを確認するだけで済みます。
このドキュメントの残りの部分では、マッチメイキングとセッション管理にAccelByte Gaming Services(AGS)を使用していることを前提とし、ゲームクライアントがローカルDSにマッチメイキングできるようにするための、より詳細な例を示します。
AGSを使用する場合、セッションタイプがDS - AMSで、amssimのconfig.jsonファイルで指定されたクレームキーのいずれかに一致するクレームキーを持つAGSセッションテンプレートを設定できます。なお、以下で説明するように、マッチメイキング/セッション作成リクエストにserver_nameを指定していれば、クレームキーを空欄にしておくこともできます。
regionsフィールドは空欄にしておくことができます。また、非ローカル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を参照してください。
マッチメイキングとセッションテンプレートの詳細については、以下のガイドを参照してください。
トラブルシューティング
ローカルAMS Simulatorに接続済みであるにもかかわらず、DSがAdmin PortalのLocal Serverタブに表示されない場合は、session/<sessionid>.logのログファイルでより詳細なログを確認できます。よくある原因は、権限エラーによりローカルAMS Simulatorが(fleet-commandである)AMSへの接続に失敗していることです。IAMクライアントに不足している権限を追加し、config.jsonが正しいことを確認してください。Public Cloudの場合、AGSNamespaceとAGSEnvironmentURLが、完全なネームスペース<studionamespace>-<gamenamespace>を使用していることを確認してください。