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

-
起動引数を使用してAGS SDKの設定を変更できるようにし、サーバーログを確認できるようにするため、Development Build を有効にしてから Build ボタンをクリックします。
-
ファイルエクスプローラーウィンドウが表示されます。パッケージ名を
ByteWars.x86_64とし、linux-server-buildという名前のフォルダに保存します。 -
ビルドプロセスが完了するまで待ちます。
サーバーイメージをAMSにアップロードする
専用サーバーをAMSにアップロードするには、AMS実行ファイルをダウンロードする必要があります。このセクションでは、その方法を説明します。
-
AccelByte Gaming Services (AGS) 管理ポータルにログインし、ゲームのネームスペースダッシュボードに移動します。
-
Multiplayer > Multiplayer Servers > Download Resource に移動します。
-
AMSコマンドラインインターフェース (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 Public 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 > Multiplayer Servers > Server Images に移動して確認することもできます。
専用サーバーを管理するためのフリートを作成する
AMSフリートは、リージョン設定に基づいて仮想マシンをスケールし、それらの仮想マシン内でホストされている専用サーバーを管理する役割を担います。このセクションでは、ゲーム用のフリートを作成する方法を学びます。
-
管理ポータルにログインし、ゲームのネームスペースダッシュボードに移動します。
-
Multiplayer > Multiplayer Servers > 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 > Multiplayer Servers > Fleet Manager に移動し、作成したフリートの名前をクリックします。
-
Fleet Information セクションで、Add More ボタンをクリックします。このチュートリアルでは、unity-ds-ams という名前の新しいクレームキーを入力する必要があります。
セッションテンプレートを設定する
-
管理ポータルにログインし、ゲームのネームスペースダッシュボードに移動します。
-
Multiplayer > Game Sessions > 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 クレームキーを追加する必要があります。新しいクレームキーを追加するには、Add Key ボタンをクリックします。
備考セッションテンプレートに設定できるクレームキーには、Preferred Claim Keys と Fallback Claim Keys の2種類があります。
- Preferred Claim Keys: ゲームセッションがAMS専用サーバーをクレームする際の最優先クレームキーです。
- Fallback Claim Keys: Preferred Claim Keys を使用してもAMS専用サーバーが見つからない場合のフォールバッククレームキーです。
-
AMSフリートから専用サーバーをクレームするようにセッションテンプレートを設定したら、Save をクリックします。または、新しいセッションテンプレートを作成している場合は、Next をクリックして新しいセッションテンプレートの設定を完了します。
開発フリートを使用して専用サーバーを管理する
デフォルトでは、以前に作成したフリートはプロダクションフリートです。プロダクションフリートは本番稼働中のゲーム向けで、専用イメージやコマンドライン引数などの設定は、フリートを停止して再起動しない限り変更できません。
代わりに、開発フリートを作成することもできます。開発フリートは、同じフリート内で複数の専用サーバーイメージバージョンやコマンドラインのパターンを実行できるようにすることで、より高い柔軟性とコスト効率を提供します。このタイプのフリートは、リクエストがあったときにのみ専用サーバーを起動します。このセクションでは、開発フリートを設定し、ゲームセッションで使用する方法を学びます。
開発フリートを作成する
-
管理ポータルにログインし、ゲームのネームスペースダッシュボードに移動します。
-
Multiplayer > Multiplayer Servers > 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 > Multiplayer Servers > Development Servers > Build Configurations に移動します。次に、Create Config > Create New をクリックして新しい構成を作成します。
-
Name & Image タブで、以下のガイドを使用して構成を設定します。完了したら、Next をクリックします。
-
Build Configuration Name: ゲームの正確なバージョンを入力する必要があります。
-
Image: 使用したい専用サーバーのバージョンを選択します。Build Configuration Name と正確に同じゲームバージョンであることを確認してください。
ヒントUnity Engineプロジェクトの場合、Unityエディタの 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 > Multiplayer Servers > Fleet Manager に移動します。次に、前のセクションで作成した開発フリートの名前をクリックします。
-
Fleet Information セクションで、Claim Keys 属性の隣にある Add More ボタンをクリックします。このチュートリアルでは、unity-ds-ams-dev という名前の新しいクレームキーを入力します。
開発フリートを使用するようにセッションテンプレートを設定する
-
管理ポータルにログインし、ゲームのネームスペースダッシュボードに移動します。
-
Multiplayer > Game Sessions > 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 の値を設定します。
// Set client version for matchmaking
MatchmakingV2CreateTicketRequestOptionalParams optionalParams = new MatchmakingV2CreateTicketRequestOptionalParams();
optionalParams.attributes.Add("client_version", Application.version);
// Set client version for match session
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>();
...
// Add client version
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 属性の値を確認できます。