専用サーバーをAMSにアップロードする - AccelByte Multiplayer Servers (AMS) を使用した専用サーバー - (Unity モジュール)
注釈:本資料はAI技術を用いて翻訳されています。
専用サーバーをAMSにアップロードする
サーバーをローカルでテストして動作を確認したので、このチュートリアルでは専用サーバーをAccelByte Multiplayer Servers (AMS) にアップロードします。
Linux専用サーバーをパッケージ化する
-
UnityでByte Warsを開きます。
-
File > Build Settings に移動します。プラットフォームとして Dedicated Server を選択し、Switch Platform をクリックします。

-
Development Build を有効にして、起動引数を使用してAGS SDK設定を変更できるようにし、サーバーログを表示できるようにしてから、Build ボタンをクリックします。
-
ファイルエクスプローラーウィンドウが表示されます。パッケージに
ByteWars.x86_64という名前を付け、linux-server-buildという名前のフォルダーに保存します。 -
ビルドプロセスが完了するまで待ちます。
サーバーイメージをAMSにアップロードする
専用サーバーをAMSにアップロードするために、AMS実行可能ファイルをダウンロードする必要があります。このセクションでは、その方法を説明します。
-
AccelByte Gaming Services (AGS) 管理ポータルにログインし、ゲームの名前空間ダッシュボードに移動します。
-
Multiplayer Server Configuration > Download Resource に移動します。
-
AMS Command Line Interface (CLI) For Windows (amd64) をダウンロードします。ams.exe ファイルがダウンロードされます。
-
AMS CLIを使用してLinux専用サーバーをアップロードします。以下のコマンドを使用して Windows PowerShell で ams.exe を実行します。CLI IAM クライアントのクライアントIDとクライアントシークレットを使用して、
<AMSCLI_ClientID>と<AMSCLI_ClientSecret>を置き換えます。.\ams.exe upload -H <AMS_HostURL> -c <AMSCLI_ClientID> -s <AMSCLI_ClientSecret> -n <DSImageName> -p <DSAbsoluteLocalPath> -e ByteWars.x86_64備考専用サーバーをアップロードするためのAMS CLIコマンドの詳細は次のとおりです。
-H: AGS名前空間を実行する場所に応じたAMSホストURL。AGS Private Cloudの場合、ホストURLは<studio_name>.accelbyte.ioです。AGS Shared Cloudの場合、ホストURLはprod.gamingservices.accelbyte.ioです。-c: 認証に使用されるIAMクライアントID。作成したAMS CLI IAMクライアントのIAMクライアントIDに設定します。-s: 認証に使用されるIAMクライアントシークレット。作成したAMS CLI IAMクライアントのIAMクライアントシークレットに設定します。-n: アップロードプロセス完了後の専用サーバーイメージの名前。任意の名前を付けることができますが、意味のある名前にしてください。例えば、サーバーバージョンを示す1.0.3-unity-bytewarsなど。-p: アップロードするサーバーディレクトリへの絶対ローカルパス。例:C:/Documents/ByteWars/LinuxServer。-e: サーバーディレクトリ内の専用サーバー実行可能ファイル。この場合、実行可能ファイルはByteWars.x86_64ファイルです。
-
アップロードプロセスが完了すると、管理ポータルに新しい専用サーバーイメージがリストされます。Multiplayer Server Configuration > Server Images に移動して確認することもできます。
専用サーバーを管理するフリートを作成する
AMSフリートは、仮想マシンをスケーリングし、地域設定に基づいてそれらの仮想マシン内でホストされている専用サーバーを管理する機能を持っています。このセクションでは、ゲーム用のフリートを作成する方法を学びます。
-
管理ポータルにログインし、ゲームの名前空間ダッシュボードに移動します。
-
Multiplayer Server Configuration > Fleet Manager に移動します。
-
Region List セクションで、専用サーバーをデプロイしたい地域を切り替えます。このチュートリアルでは、ap-southeast-1 と us-east-2 を有効にします。
-
Create Fleet > Create New をクリックして新しいフリートを作成します。
-
新しい Fleet & Image タブで、フリート名を入力し、アップロードしたサーバーイメージを選択します。フリート名は任意ですが、簡単にするためにサーバーイメージ名と同じ名前を使用できます。完了したら、Next ボタンをクリックします。
-
Deployment Profile タブで、Timeout と Port Configuration の設定はデフォルトのままにします。Command Line 設定には、専用サーバーがAMSによって管理されるように設定する以下のデフォルトコマンドを入力します。完了したら、Next をクリックします。
-dsid ${dsid} -port ${default_port} -
DS Host & Region タブで、ニーズに基づいて仮想マシン (VM) インスタンスタイプを選択できます。このチュートリアルでは、小さいインスタンスを使用しましょう。Host Instance に ttx1.s を選択し、Dedicated Servers の数を 2 に設定します。この設定は、選択したVMインスタンス上で2つの専用サーバーを起動するようフリートに指示します。
-
引き続き DS Host & Region タブで、Regional Configuration セクションに移動します。次に、希望する地域を有効にします。この例では ap-southeast-1 と us-east-2 を使用します。このチュートリアルでは、Min Servers を 0、Max Servers を 2、Buffer Value を 1 に設定します。
備考- Min Servers: サーバーが「Ready」(ウォームバッファー) 状態であるか「In Session」(ゲームセッションを提供中) 状態であるかに関係なく、デプロイメントが維持する必要がある最小サーバー数。
- Max Servers: 地域が維持できる最大サーバー数。この値は、ゲームサーバーのコストが予算を超えないようにするためのリミッターとして役立ちます。
- Buffer Value: バッファー値は、ウォームバッファーとして維持するサーバー数をフリートに指示します。
-
Log & Artifacts Sampling タブで、専用サーバーがログを生成できるようにします。これを行うには、Enable Log Sampling オプションを有効にし、サンプルを 100% に設定します。この設定により、専用サーバーはすべてのイベントをログに記録します。完了したら、Next ボタンをクリックします。
-
Summary タブで、フリート設定を確認できます。次に、Create ボタンをクリックして新しいフリートを作成します。
-
フリートが作成され、フリートリストで利用可能になります。フリート名をクリックしてフリートの詳細を開きます。
-
フリートがアクティブ化されていない場合は、フリート名の下の左上隅にある Fleet Status トグルを見つけます。必ず Active に切り替えてください。
-
フリート詳細ページで、Dedicated Server List セクションを見つけます。そこで、専用サーバーとそのステータスを確認できます。
備考新しいフリートは通常、リストに表示される前に専用サーバーが起動して実行されるまで約3分かかります。以下は、フリート上の専用サーバーの状態です。
- Creating: 専用サーバーは現在初期化中です (まだAMSウォッチドッグに準備完了メッセージを送信していません)。
- Ready: 専用サーバーはAMSに準備完了信号を送信し、準備が整っています。
- Claiming: フリートマネージャーは現在、クレームキーを使用してセッションに専用サーバーをクレームしています。
- Claimed: 専用サーバーはすでにゲームセッションにバインドされており、ゲームは現在進行中です。
- Removed: 専用サーバーはフリートから削除されました。
AMS専用サーバーを使用するようにゲームセッションを設定する
このセクションでは、新しいAMSフリートから専用サーバーを使用するようにゲームセッションを設定する方法を学びます。
フリートのクレームキーを作成する
-
管理ポータルにログインし、ゲームの名前空間ダッシュボードに移動します。
-
Multiplayer Server Configuration > Fleet Manager に移動し、作成したフリートの名前をクリックします。
-
Fleet Information セクションの下で、Add More ボタンをクリックします。このチュートリアルでは、unity-ds-ams という名前の新しいクレームキーを入力する必要があります。
セッションテンプレートを設定する
-
管理ポータルにログインし、ゲームの名前空間ダッシュボードに移動します。
-
Multiplayer > Matchmaking > Session Configuration に移動し、Session Template タブをクリックします。
-
ここから、Add Session Template ボタンをクリックして新しいセッションテンプレートを作成するか、セッションテンプレート名をクリックして既存のセッションテンプレートを変更できます。
-
セッションテンプレートの General タブで、Server セクションを見つけます。次に、DS - AMS オプションを選択します。これにより、ゲームセッションが作成されたときにAMSフリートから専用サーバーを使用するようセッションテンプレートに指示します。
-
DS - AMS オプションを選択すると、Requested Regions という名前の新しい設定が表示されます。Add Region ボタンをクリックして、有効にしたすべてのAMS地域を追加します。
-
Fallback Claim Keys で、AMSフリートで設定したクレームキーと一致する新しいクレームキーを追加します。チュートリアルの例では、unity-ds-ams クレームキーを追加する必要があります。新しいクレームキーを追加するには、Add Key ボタンをクリックします。
備考セッションテンプレートに設定できるクレームキーには2つのタイプがあります: Preferred Claim Keys と Fallback Claim Keys。
- Preferred Claim Keys: ゲームセッションがAMS専用サーバーをクレームするための最優先クレームキー。
- Fallback Claim Keys: Preferred Claim Keys を使用してAMS専用サーバーが見つからない場合のフォールバッククレームキー。
-
これで、AMSフリートから専用サーバーをクレームするようにセッションテンプレートを設定しました。Save をクリックします。または、新しいセッションテンプレートを作成している場合は、Next をクリックして新しいセッションテンプレートの設定を完了します。
開発フリートを使用して専用サーバーを管理する
デフォルトでは、以前に作成したフリートは本番フリートです。本番フリートはライブゲーム用であり、専用イメージやコマンドライン引数などの設定は、フリートを停止して再起動しない限り不変です。
代わりに、開発フリートを作成することもできます。開発フリートは、同じフリート内で複数の専用サーバーイメージバージョンとコマンドラインの組み合わせを実行できるようにすることで、より柔軟性とコスト効率を提供します。このタイプのフリートは、リクエストされたときにのみ専用サーバーを起動します。このセクションでは、開発フリートを設定してゲームセッションに使用する方法を学びます。
開発フリートを作成する
-
管理ポータルにログインし、ゲームの名前空間ダッシュボードに移動します。
-
Multiplayer Server Configuration > Fleet Manager に移動します。次に、Create Fleet > Create New をクリックして新しいフリートを作成します。
-
新しい Fleet & Image タブで、フリート名を入力します。次に、Development Fleet オプションをオンにします。完了したら、Next をクリックします。
-
Deployment Profile タブで、すべてをデフォルトのままにし、Command Line は空のままにします。これは後で説明するビルド設定によって入力されます。完了したら、Next をクリックします。
-
DS Host タブで、VM Instance に ttx1.s を選択し、Number of servers を 1 に設定します。この設定は、選択した仮想マシン (VM) インスタンス上で1つの専用サーバーを起動するようフリートに指示します。次に、Next をクリックします。
-
Region タブで、有効な地域を展開します。Action 列の下にある鉛筆アイコンを見つけて、フリートによってデプロイされる専用サーバーの数を編集します。本番フリートとは異なり、開発フリートのバッファーは、準備ができたVM上で起動する余地を持たせたいDSの数であるため、少なくとも1つのバッファーが必要です。このチュートリアルでは、Min Servers を 0、Max Servers を 1、Buffer Value を 1 に設定します。
-
Log & Artifacts Sampling タブで、専用サーバーがログを生成できるようにします。これを行うには、Enable Log Sampling オプションを有効にし、サンプルを 100% に設定します。この設定により、専用サーバーはすべてのイベントをログに記録します。完了したら、Next をクリックします。
-
Summary タブで、開発フリートの設定を確認できます。次に、Create をクリックしてフリートをアクティブ化します。
ビルド設定を作成する
開発フリートはリクエストされたときにのみ専用サーバーを起動し、専用サーバーを起動するために使用する設定を知りません。したがって、ビルド設定を作成する必要があります。
ビルド設定には、専用サーバーイメージやコマンドラインを含む専用サーバー設定が保存され、開発フリートが専用サーバーインスタンスを起動するために使用されます。これにより、各ゲームバージョンに対して多くのビルド設定を作成し、同じ開発フリートにデプロイできます。このセクションでは、ビルド設定を作成します。
-
管理ポータルにログインし、ゲームの名前空間ダッシュボードに移動します。
-
Multiplayer Server Configuration > Development Servers > Build Configurations に移動します。次に、Create Config > Create New をクリックして新しい設定を作成します。
-
Name & Image タブで、以下のガイドを使用して設定を行います。完了したら、Next をクリックします。
-
Build Configuration Name: ゲームの正確なバージョンを入力する必要があります。
-
Image: 希望する専用サーバーバージョンを選択します。Build Configuration Name と同じ正確なゲームバージョンであることを確認してください。
ヒントUnity Engineプロジェクトの場合、Unity Editorから Edit > Project Settings > Player に移動することでゲームバージョンを見つけることができます。そこで、Version フィールドにゲームバージョンが表示されます。
または、スクリプトでゲームバージョン値を出力することもできます。
Debug.Log(Application.version); -
-
Command Line タブで、Command セクションに以下のコマンドを入力します。これにより、専用サーバーがAMSによって管理されるように設定されます。完了したら、Next をクリックします。
-dsid ${dsid} -port ${default_port} -watchdogUrl ${watchdog_url} -
Summary タブで、設定を確認します。準備ができたら Create をクリックし、設定をアクティブ化します。
開発フリートのクレームキーを作成する
-
管理ポータルにログインし、ゲームの名前空間ダッシュボードに移動します。
-
Multiplayer Server Configuration > Fleet Manager に移動します。次に、前のセクションで作成した開発フリートの名前をクリックします。
-
Fleet Information セクションの下で、Claim Keys 属性の横にある Add More ボタンをクリックします。このチュートリアルでは、unity-ds-ams-dev という名前の新しいクレームキーを入力します。
開発フリートを使用するようにセッションテンプレートを設定する
-
管理ポータルにログインし、ゲームの名前空間ダッシュボードに移動します。
-
Multiplayer > Matchmaking > Session Configurations に移動します。次に、Session Template タブに移動します。
-
ここから、Add Session Template をクリックして新しいセッションテンプレートを作成するか、セッションテンプレート名をクリックして既存のセッションテンプレートを変更できます。
-
General タブで、Server セクションの DS - AMS オプションを選択します。これにより、ゲームセッションが作成されたときにAMSフリートから専用サーバーを使用するようセッションテンプレートに指示します。
-
DS - AMS オプションを選択すると、Requested Regions という名前の新しい設定が表示されます。Add Region ボタンをクリックして、有効にしたすべてのAMS地域を追加します。
-
次に、Fallback Claim Keys で、AMS開発フリートで設定したクレームキーと一致する新しいクレームキーを追加します。このチュートリアルの例に従っている場合は、unity-ds-ams-dev クレームキーを追加する必要があります。新しいクレームキーを追加するには、Add Key をクリックします。Preferred Claim Keys または Fallback Claim Keys に追加できます。
-
これで、AMS開発フリートから専用サーバーをクレームするようにセッションテンプレートを設定しました。既存のセッションテンプレートを変更している場合は、Save をクリックしてセッションテンプレート設定を保存します。新しいセッションテンプレートを作成している場合は、Next をクリックして、通常どおりセッションテンプレートの作成を完了します。
おめでとうございます!AMS開発フリートを使用するようにゲームセッションを正常に設定しました。
開発フリートにリクエストを送信するようにゲームを設定する
ゲームバージョンに基づいて開発フリートにリクエストを送信するようにゲームを設定するには、client_version という名前のゲームセッション属性を設定する必要があります。この属性は、ゲームのゲームバージョンです。
client_version が設定されると、ゲームセッションは最初に、リクエストされたゲームセッションと同じクレームキーを持つ開発フリートから専用サーバーをリクエストします。この場合、使用するクレームキーは unity-ds-ams-dev になります。
次に、開発フリートは、作成したビルド設定に基づいて新しい専用サーバーインスタンスを起動します。フリートは、ゲームセッションの client_version 属性と同じ Build Configuration Name を持つビルド設定を選択します。専用サーバーインスタンスが作成されると、フリートはそれをクレームしてゲームセッションに通知します。
Byte Wars プロジェクトで client_version 属性を設定するには、TutorialModuleConfig.json の以下の設定を true に設定します。この設定により、ゲームがマッチメイキングまたはマッチセッションを通じてゲームセッションをリクエストするときに、client_version 値がUnityのプロジェクトバージョンに設定されます。
"overrideDSVersion": true
上記の設定は、マッチメイキングを開始したりマッチセッションを作成したりする前にセッション設定を追加することで、client_version 値を設定します。
// マッチメイキングのクライアントバージョンを設定
MatchmakingV2CreateTicketRequestOptionalParams optionalParams = new MatchmakingV2CreateTicketRequestOptionalParams();
optionalParams.attributes.Add("client_version", Application.version);
// マッチセッションのクライアントバージョンを設定
SessionV2GameSessionCreateRequest request = new SessionV2GameSessionCreateRequest();
request.clientVersion = Application.version;
Byte Wars プロジェクトの MatchmakingSessionWrapper および GameSessionConfig クラスからサンプルコードを確認することもできます。
public async Task StartMatchmakingAsync(string matchPool, bool isLocal = false)
{
...
MatchmakingV2CreateTicketRequestOptionalParams optionalParams = new MatchmakingV2CreateTicketRequestOptionalParams();
optionalParams.attributes = new Dictionary<string, object>();
...
// クライアントバージョンを追加
optionalParams.attributes.Add("client_version", TutorialModuleUtil.IsOverrideDedicatedServerVersion() ? Application.version : string.Empty);
...
matchmakingV2.CreateMatchmakingTicket(matchPool, optionalParams, OnStartMatchmakingComplete);
}
private static readonly string UnitySessionClientVersion = TutorialModuleUtil.IsOverrideDedicatedServerVersion() ? Application.version : string.Empty;
public static readonly Dictionary<InGameMode, Dictionary<
GameSessionServerType, SessionV2GameSessionCreateRequest>>
SessionCreateRequest =
new Dictionary<InGameMode, Dictionary<GameSessionServerType, SessionV2GameSessionCreateRequest>>()
{
...
{ InGameMode.CreateMatchElimination, new Dictionary<GameSessionServerType,
SessionV2GameSessionCreateRequest>()
{
...
{
GameSessionServerType.DedicatedServerAMS, new SessionV2GameSessionCreateRequest()
{
type = SessionConfigurationTemplateType.DS,
joinability = SessionV2Joinability.OPEN,
configurationName = UnitySessionEliminationDSAMS,
matchPool = UnitySessionEliminationDSAMS,
clientVersion = UnitySessionClientVersion
}
}
...
}
},
...
};
...
ゲームセッションが作成されたら、管理ポータルでゲームセッション属性を確認できます。これを行うには、Multiplayer > Matchmaking > Sessions and Parties に移動します。次に、ゲームセッションを選択します。Session Details ページで、Session Data (JSON) タブを選択します。そこで、clientVersion 属性値を確認できます。