専用サーバーを AMS にアップロードする - AccelByte Multiplayer Servers (AMS) による専用サーバー - (Unreal Engine モジュール)
注釈:本資料はAI技術を用いて翻訳されています。
専用サーバーを AMS にアップロードする
専用サーバーを AccelByte Multiplayer Servers (AMS) にアップロードするには、ゲームを Linux ゲームサーバーとしてパッケージ化する必要があります。そのためには、Cross-Compile Toolchain をインストールする必要があります。詳細については、Unreal の開発要件を参照してください。Cross-Compile Toolchain をダウンロードしてインストールしたら、コンピューターを再起動し、以下の手順に従ってください。
-
Unreal Engine エディターで Byte Wars プロジェクトを開きます。
-
Platforms > Linux に移動し、Shipping と AccelByteWarsServer を選択して Package Project をクリックし、プロジェクトをパッケージ化します。その後、プロジェクトをコンピューター上の任意の場所に保存します。
-
Admin Portal にログインし、ゲームのネームスペースダッシュボードに移動します。
-
サイドバーメニューから Multiplayer > Multiplayer Servers > Download Resource を選択します。
-
次に、AMS コマンドラインインターフェース (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 Public 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 に表示されます。ダッシュボードのサイドバーメニューから Multiplayer > Multiplayer Servers > Server Images を選択して確認できます。アップロード処理後には、次の2つの状態があります。
- Uploaded: 専用サーバーのバイナリが正常にアップロードされた状態です。
- Complete: 専用サーバーイメージが正常に作成され、使用準備が完了した状態です。DS イメージの状態が Uploaded から Complete に変わるまでには数分かかります。
-
おめでとうございます!専用サーバーを AMS に正常にアップロードできました。次のステップでは、DS をデプロイして管理するためのフリートを作成します。
専用サーバーを管理するフリートを作成する
AMS フリートは、リージョン設定に基づいて仮想マシンをスケーリングし、それらの仮想マシン内でホストされる専用サーバーを管理する機能を持ちます。このセクションでは、ゲーム用のフリートを作成する方法を学びます。
-
Admin Portal にログインし、ゲームのネームスペースダッシュボードに移動します。
-
サイドバーメニューから 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} -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 列の下にある鉛筆アイコンを見つけ、フリートによってデプロイされる専用サーバーの数を編集します。このチュートリアルでは、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 ウォッチドッグへの準備完了メッセージの送信はまだ行われていません)。
- Ready: 専用サーバーが AMS に準備完了信号を送信し、使用可能な状態です。
- Claiming: フリートマネージャーが、クレームキーを使用して専用サーバーをセッションに割り当てている最中です。
- Claimed: 専用サーバーはすでにゲームセッションに紐付けられ、現在ゲームが進行中です。
- Removed: 専用サーバーがフリートから削除された状態です。
-
おめでとうございます!AMS フリートの作成に成功しました。次のステップでは、Byte Wars のマッチメイキングでこのフリートを使用するようにセッション設定を調整します。
AMS 専用サーバーを使用するようにゲームセッションを設定する
このセクションでは、新しく作成した AMS フリートの専用サーバーを使用するようにゲームセッションを設定する方法を学びます。
フリート用のクレームキーを作成する
-
Admin Portal にログインし、ゲームのネームスペースダッシュボードに移動します。
-
サイドバーメニューから Multiplayer > Multiplayer Servers > Fleet Manager を選択します。次に、前のチュートリアルで作成したフリートの名前をクリックします。
-
Fleet Information セクションで、Claim Keys 属性の横にある Add More ボタンをクリックします。このチュートリアルでは、unreal-ds-ams という新しいクレームキーを入力する必要があります。
セッションテンプレートを設定する
-
Admin Portal にログインし、ゲームのネームスペースダッシュボードに移動します。
-
サイドバーメニューから 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 フリートに設定したクレームキーと一致する新しいクレームキーを追加します。このチュートリアルの場合、unreal-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 ボタンをクリックし、新しいセッションテンプレートの設定を完了させてください。
-
おめでとうございます!AMS フリートを使用するゲームセッションの設定に成功しました。
開発用フリートを使用して専用サーバーを管理する
デフォルトでは、これまで作成したフリートは本番フリートです。本番フリートは実際に稼働しているゲーム向けで、専用イメージやコマンドライン引数などの設定は、フリートを停止して再起動しない限り変更できません。
代わりに、開発用フリートを作成することもできます。開発用フリートでは、同じフリート内で複数の専用サーバーイメージバージョンやコマンドラインの組み合わせを実行できるため、より柔軟でコスト効率が良くなります。このタイプのフリートは、リクエストがあったときにのみ専用サーバーを起動します。このセクションでは、開発用フリートを設定し、ゲームセッションで使用する方法を学びます。
開発用フリートを作成する
-
Admin Portal にログインし、ゲームのネームスペースダッシュボードに移動します。
-
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 をクリックし、フリートを有効化します。
ビルド設定を作成する
開発用フリートは、リクエストがあったときにのみ専用サーバーを起動できますが、どの設定を使用して専用サーバーを起動すべきかを把握していません。そのため、ビルド設定を作成する必要があります。
ビルド設定には、専用サーバーイメージやコマンドラインなど、開発用フリートが専用サーバーインスタンスを起動するために使用する専用サーバーの設定が保存されます。これにより、ゲームバージョンごとに多数のビルド設定を作成し、同じ開発用フリート上にデプロイできます。ビルド設定を作成するには、以下の手順に従ってください。
-
Admin Portal にログインし、ゲームのネームスペースダッシュボードに移動します。
-
Multiplayer > 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 にログインし、ゲームのネームスペースダッシュボードに移動します。
-
Multiplayer > Multiplayer Servers > Fleet Manager に移動します。次に、作成した開発用フリートの名前をクリックします。
-
Fleet Information セクションで、Claim Keys 属性の横にある Add More ボタンをクリックします。このチュートリアルでは、unreal-ds-ams-dev という名前の新しいクレームキーを入力します。
開発用フリートを使用するようにセッションテンプレートを設定する
-
Admin Portal にログインし、ゲームのネームスペースダッシュボードに移動します。
-
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 開発用フリートに設定したクレームキーと一致する新しいクレームキーを追加します。このチュートリアルの例に従う場合は、unreal-ds-ams-dev クレームキーを追加する必要があります。新しいクレームキーを追加するには、Add Key をクリックします。Preferred Claim Keys または Fallback Claim Keys のいずれかに追加できます。
-
これで、AMS 開発用フリートから専用サーバーをクレームするようにセッションテンプレートを設定できました。既存のセッションテンプレートを変更している場合は、Save をクリックしてセッションテンプレートの設定を保存します。新しいセッションテンプレートを作成している場合は、通常の手順で作成を完了させてください。
おめでとうございます!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 属性の値を確認できます。