専用サーバーを AMS にアップロードする - AccelByte Multiplayer Servers (AMS) による専用サーバー - (Unreal Engine モジュール)
注釈:本資料はAI技術を用いて翻訳されています。
専用サーバーを AMS にアップロードする
専用サーバーを AccelByte Multiplayer Servers (AMS) にアップロードするには、ゲームを Linux ゲームサーバーとしてパッケージ化する必要があります。これを行うには、Cross-Compile Toolchain をインストールする必要があります。詳細については、Unreal の Development Requirements を参照してください。Cross-Compile Toolchain をダウンロードしてインストールした後、コンピューターを再起動し、以下の手順に従ってください。
-
Unreal Engine エディターで Byte Wars プロジェクトを開きます。
-
Platforms > Linux に移動し、Shipping と AccelByteWarsServer を選択し、Package Project をクリックしてプロジェクトをパッケージ化します。次に、プロジェクトをコンピューター上の場所に保存します。
-
Admin Portal にログインし、ゲーム名前空間ダッシュボードに移動します。
-
サイドバーメニューから、AccelByte Multiplayer Servers > Download Resource を選択します。
-
次に、AMS Command Line Interface (CLI) For Windows (amd64) をダウンロードします。ams.exe ファイルがダウンロードされます。
-
次のステップは、AMS CLI を使用して Linux 専用サーバーをアップロードすることです。以下のコマンドを使用して、Windows PowerShell で ams.exe を実行します。
<AMSCLI_ClientID>と<AMSCLI_ClientSecret>を CLI IAM クライアント のクライアント ID とクライアントシークレットに置き換えてください。.\ams.exe upload -H <AMS_HostURL> -c <AMSCLI_ClientID> -s <AMSCLI_ClientSecret> -n <DSImageName> -p <DSAbsoluteLocalPath> -e AccelByteWarsServer.sh備考専用サーバーをアップロードするための 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: アップロードプロセスが完了した後の専用サーバーイメージの名前。何でも構いませんが、意味のあるものにしてください。例えば、サーバーバージョンを示す2.7.5-unreal-bytewarsなどです。-p: アップロードするサーバーディレクトリへの絶対ローカルパス。例えば、C:/Documents/ByteWars/LinuxServerです。-e: サーバーディレクトリ内の専用サーバー実行可能ファイル。この場合、実行可能ファイルはAccelByteWarsServer.shファイルです。
-
アップロードプロセスが完了すると、新しい専用サーバーイメージが Admin Portal にリストされます。ダッシュボードのサイドバーメニューから、AccelByte Multiplayer Servers > Server Images を選択して確認できます。アップロードプロセス後には 2 つの状態があります。
- Uploaded: 専用サーバーバイナリが正常にアップロードされました。
- Complete: 専用サーバーイメージが正常に作成され、使用可能です。DS イメージの状態が uploaded から complete に変わるまでに数分かかります。
-
おめでとうございます!専用サーバーを AMS に正常にアップロードしました。次のステップは、DS をデプロイおよび管理するためのフリートを作成することです。
専用サーバーを管理するためのフリートを作成する
AMS フリートは、地域設定に基づいて仮想マシンをスケーリングし、それらの仮想マシン内でホストされている専用サーバーを管理する機能を持っています。このセクションでは、ゲーム用のフリートを作成する方法を学びます。
-
Admin Portal にログインし、ゲーム名前空間ダッシュボードに移動します。
-
サイドバーメニューから、AccelByte 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} -log=${log_file} -watchdog_url=${watchdog_url} -
DS Host タブで、VM Instance に glx1.2x を選択し、Number of server を 1 に設定します。この設定は、選択した仮想マシン (VM) インスタンス上に 1 つの専用サーバーを生成するようフリートに指示します。次に、Next ボタンをクリックします。
-
Region タブで、有効な地域を展開します。この例では ap-southeast-1 と us-east-2 です。Action 列の下にある Pencil アイコンを見つけて、フリートによってデプロイされる専用サーバーの数を編集します。このチュートリアルでは、Min Servers を 0、Max Servers を 1、Buffer Value を 1 に設定します。
備考- Min Servers: サーバーが「Ready」(ウォームバッファ) 状態であるか「In Session」(ゲームセッションを提供中) 状態であるかに関係なく、デプロイメントが維持する必要があるサーバーの最小数。この値は、十分な数のサーバーが準備できていることを確認することで、ベースラインの同時ユーザーを処理するのに役立ちます。
- Max Servers: 地域が維持できるサーバーの最大数。この値は、ゲームサーバーのコストが予算を超えないようにするためのリミッターとして役立ちます。
- Buffer Value: バッファ値は、ウォームバッファとして維持するサーバーの正確な数をフリートに指示します。
-
Log & Artifacts Sampling タブでは、専用サーバーがログを生成できるようにします。これを行うには、Enable Log Sampling オプションを有効にし、サンプルを 100% に設定します。この設定により、専用サーバーはすべてのイベントをログに記録します。完了したら、Next ボタンをクリックします。
-
Summary タブで、フリート設定を確認できます。次に、Create ボタンをクリックしてアクティブ化します。
-
これで、フリートが作成され、フリートリストで利用可能になります。フリート名をクリックすると、フリートの詳細を開くことができます。
-
フリート詳細ページで、Dedicated Server List セクションを見つけます。そこに、専用サーバーとそのステータスが表示されます。
備考新しいフリートは、リストに表示される前に専用サーバーが起動して実行されるまで約 10 分かかります。以下は、フリート上の専用サーバーの状態です。
- Creating: 専用サーバーは現在初期化中です (まだ AMS watchdog に ready メッセージを送信していません)。
- Ready: 専用サーバーは AMS に ready シグナルを送信し、使用可能です。
- Claiming: フリートマネージャーは現在、クレームキーを使用してセッションに専用サーバーをクレームしています。
- Claimed: 専用サーバーはすでにゲームセッションにバインドされており、ゲームは現在進行中です。
- Removed: 専用サーバーはフリートから削除されました。
-
おめでとうございます!AMS フリートを正常に作成しました。次のステップは、Byte Wars マッチメイキングにフリートを使用するようにセッション設定を調整することです。
AMS 専用サーバーを使用するようにゲームセッションを設定する
このセクションでは、新しい AMS フリートから専用サーバーを使用するようにゲームセッションを設定する方法を学びます。
フリートのクレームキーを作成する
-
Admin Portal にログインし、ゲーム名前空間ダッシュボードに移動します。
-
サイドバーメニューから、AccelByte Multiplayer Servers > Fleet Manager を選択します。次に、前のチュートリアルで作成したフリートの名前をクリックします。
-
Fleet Information セクションの下で、Claim Keys 属性の横にある Add More ボタンをクリックします。このチュートリアルでは、unreal-ds-ams という新しいクレームキーを入力する必要があります。
Session Template を設定する
-
Admin Portal にログインし、ゲーム名前空間ダッシュボードに移動します。
-
サイドバーメニューから、Multiplayer > Matchmaking > Session Configuration を選択します。次に、Session Template タブを見つけます。
-
ここから、Add Session Template ボタンをクリックして新しい Session Template を作成できます。または、Session Template 名をクリックして既存の Session Template を変更できます。
-
Session Template の General タブで、Server セクションを見つけます。次に、DS - AMS オプションを選択します。これにより、ゲームセッションが作成されたときに AMS フリートから専用サーバーを使用するよう Session Template に指示します。
-
DS - AMS オプションを選択すると、Requested Regions という新しい設定が表示されます。Add Region ボタンをクリックして、有効なすべての AMS 地域を追加します。
-
次に、Fallback Claim Keys で、AMS フリートに設定したクレームキーと一致する新しいクレームキーを追加します。このチュートリアルの場合、unreal-ds-ams クレームキーを追加する必要があります。新しいクレームキーを追加するには、Add Key ボタンをクリックします。
備考Session Template に設定できるクレームキーには 2 つのタイプがあります。Preferred Claim Keys と Fallback Claim Keys です。以下は、この 2 つの違いです。
- Preferred Claim Keys: ゲームセッションが AMS 専用サーバーをクレームするための最優先クレームキーです。
- Fallback Claim Keys: Preferred Claim Keys を使用しても AMS 専用サーバーが見つからない場合のフォールバッククレームキーです。
-
これで、AMS フリートから専用サーバーをクレームするように Session Template を設定しました。右下隅の Save ボタンをクリックして Session Template 設定を保存します。または、新しい Session Template を作成している場合は、右隅の Next ボタンをクリックし、新しい Session Template 設定を完了してください。
-
おめでとうございます!AMS フリートを使用してゲームセッションを正常に設定しました。
開発フリートを使用して専用サーバーを管理する
デフォルトでは、以前に作成したフリートはプロダクションフリートです。プロダクションフリートはライブゲーム向けであり、専用イメージやコマンドライン引数などの設定は、フリートを停止して再起動しない限り変更できません。
代わりに、開発フリートを作成できます。開発フリートは、同じフリート内で複数の専用サーバーイメージバージョンとコマンドラインの組み合わせを実行できるようにすることで、より柔軟性とコスト効率を提供します。このタイプのフリートは、リクエストされたときにのみ専用サーバーを生成します。このセクションでは、開発フリートを設定し、ゲームセッションに使用する方法を学びます。
開発フリートを作成する
-
Admin Portal にログインし、ゲーム名前空間ダッシュボードに移動します。
-
AccelByte 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 をクリックし、アクティブ化します。
ビルド設定を作成する
開発フリートは、リクエストされたときにのみ専用サーバーを生成でき、専用サーバーを生成するために使用する設定を知りません。したがって、ビルド設定を作成する必要があります。
ビルド設定には、開発フリートが専用サーバーインスタンスを生成するために使用する専用サーバーイメージやコマンドラインを含む専用サーバー設定が保存されます。これにより、各ゲームバージョンに対して多くのビルド設定を作成し、同じ開発フリートにデプロイできます。ビルド設定を作成するには、以下の手順に従ってください。
-
Admin Portal にログインし、ゲーム名前空間ダッシュボードに移動します。
-
AccelByte Multiplayer Servers > Development Servers > Build Configurations に移動します。次に、Create Config > Create New をクリックして新しい設定を作成します。
-
Name & Image タブで、以下のガイドを使用して設定を行います。完了したら、Next ボタンをクリックします。
-
Build Configuration Name: ゲームの正確なゲームバージョンを入力する必要があります。
-
Image: 希望する専用サーバーバージョンを選択します。Build Configuration Name と同じゲームバージョンであることを確認してください。
ヒントUnreal Engine プロジェクトの場合、
DefaulGame.iniのProject Version属性でゲームバージョンを確認できます。[/Script/EngineSettings.GeneralProjectSettings]
GitHash=xxxxxxx
ProjectID=xxxxxxxxxxxxxxxxxxxxxxxxxxxx
ProjectVersion=mygame-x.xx.x-dev
BuildNumber=xxx -
-
Command Line タブで、Command セクションに以下のコマンドを入力します。これにより、専用サーバーが AMS によって管理できるように設定されます。完了したら、Next をクリックします。
-dsid=${dsid} -port=${default_port} -log=${log_file} -watchdog_url=${watchdog_url} -
Summary タブで、設定を確認します。準備ができたら、Create をクリックしてアクティブ化します。
開発フリートのクレームキーを作成する
-
Admin Portal にログインし、ゲーム名前空間ダッシュボードに移動します。
-
AccelByte Multiplayer Servers > Fleet Manager に移動します。次に、作成した開発フリートの名前をクリックします。
-
Fleet Information セクションの下で、Claim Keys 属性の横にある Add More ボタンをクリックします。このチュートリアルでは、unreal-ds-ams-dev という新しいクレームキーを入力します。
開発フリートを使用するようにセッションテンプレートを設定する
-
Admin Portal にログインし、ゲーム名前空間ダッシュボードに移動します。
-
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 開発フリートに設定したクレームキーと一致する新しいクレームキーを追加します。このチュートリアルの例に従う場合、unreal-ds-ams-dev クレームキーを追加する必要があります。新しいクレームキーを追加するには、Add Key をクリックします。Preferred Claim Keys または Fallback Claim Keys に追加できます。
-
これで、AMS 開発フリートから専用サーバーをクレームするようにセッションテンプレートを設定しました。既存のセッションテンプレートを変更している場合は、Save をクリックしてセッションテンプレート設定を保存します。新しい Session Template を作成している場合は、通常どおり作成を進めて完了してください。
おめでとうございます!AMS 開発フリートを使用するようにゲームセッションを正常に設定しました。
開発フリートにリクエストを送信するようにゲームを設定する
このセクションは、Byte Wars が開発フリートをリクエストする方法とゲームの例に関する情報として提供されています。これはチュートリアルのステップではありません。
ゲームバージョンに基づいて開発フリートにリクエストを送信するようにゲームを設定するには、client_version という名前のゲームセッション属性を設定する必要があります。この属性は、ゲームのゲームバージョンです。
client_version が設定されると、ゲームセッションは最初に、リクエストされたゲームセッションと同じクレームキーを持つ開発フリートから専用サーバーをリクエストします。このチュートリアルの例では、使用するクレームキーは unreal-ds-ams-dev です。
次に、開発フリートは、作成したビルド設定に基づいて新しい専用サーバーインスタンスを生成します。フリートは、ゲームセッションの client_version 属性と同じ Build Configuration Name を持つビルド設定を選択します。専用サーバーインスタンスが作成されると、フリートはそれをクレームし、ゲームセッションに通知します。
Byte Wars プロジェクトで client_version 属性を設定するには、DefaultEngine.ini の以下の設定を true に切り替えます。この設定は、マッチメイキングまたはマッチセッションを通じてゲームセッションのリクエストを送信するときに、client_version 値を Unreal のプロジェクトバージョンに設定します。
[/ByteWars/TutorialModule.DSEssentials]
bOverrideDSVersion=true
上記の設定は、マッチメイキングを開始またはマッチセッションを作成する前にセッション設定を追加することで、client_version 値を設定します。
-
マッチメイキング用のクライアントバージョンセッション設定を設定します。
void UAccelByteWarsOnlineSession::StartMatchmaking(
const APlayerController* PC,
const FName& SessionName,
const EGameModeNetworkType NetworkType,
const EGameModeType GameModeType, const EGameStyle GameStyle)
{
// ...
// Set up matchmaking search handle, it will be used to store session search results.
TSharedRef<FOnlineSessionSearch> MatchmakingSearchHandle = MakeShared<FOnlineSessionSearch>();
MatchmakingSearchHandle->QuerySettings.Set(SETTING_SESSION_MATCHPOOL, MatchPoolId, EOnlineComparisonOp::Equals);
MatchmakingSearchHandle->QuerySettings.Set(GAMESETUP_GameModeCode, GameModeCode, EOnlineComparisonOp::Equals);
// Check for DS version override.
const FString OverriddenDSVersion = UTutorialModuleOnlineUtility::GetDedicatedServerVersionOverride();
if (!OverriddenDSVersion.IsEmpty())
{
MatchmakingSearchHandle->QuerySettings.Set(SETTING_GAMESESSION_CLIENTVERSION, OverriddenDSVersion, EOnlineComparisonOp::Equals);
}
// ...
} -
マッチセッション用のクライアントバージョンセッション設定を設定します。
void UAccelByteWarsOnlineSession::CreateSession(
const int32 LocalUserNum,
FName SessionName,
FOnlineSessionSettings SessionSettings,
const EAccelByteV2SessionType SessionType,
const FString& SessionTemplateName)
{
// ...
if (SessionType == EAccelByteV2SessionType::GameSession)
{
// Check for DS version override.
const FString OverriddenDSVersion = UTutorialModuleOnlineUtility::GetDedicatedServerVersionOverride();
if (!OverriddenDSVersion.IsEmpty())
{
SessionSettings.Set(SETTING_GAMESESSION_CLIENTVERSION, OverriddenDSVersion);
}
// ...
}
// ...
}
ゲームセッション属性は、作成後に Admin Portal で確認できます。これを行うには、Multiplayer > Matchmaking > Sessions and Parties に移動します。次に、ゲームセッションを選択します。Session Details ページで、Session Data (JSON) タブを選択します。そこで、clientVersion 属性値を確認できます。