AMS フローをローカルでテスト実行する - AccelByte Multiplayer Servers (AMS) による専用サーバー - (Unreal Engine モジュール)
注釈:本資料はAI技術を用いて翻訳されています。
はじめに
このチュートリアルでは、AMS Simulator を使用して AccelByte Multiplayer Servers (AMS) 上の専用サーバーフローをローカルでテストする方法を学びます。AMS Simulator は、AMS から発生する状態変化や予期しないイベントに対して専用サーバーがどのように反応するかを検証するツールです。これにより、専用サーバーを最初にアップロードすることなく、フローが正しく動作することを確認できます。
ローカル専用サーバーを実行する
Unreal Engine でローカル専用サーバーをテストする方法は 2 つあります。パッケージ化された専用サーバーとして実行するか、エディタを使用してアンクックサーバーを実行するかです。パッケージ化された専用サーバーは実行に必要なリソースが少ないですが、ビルドに時間がかかります。一方、エディタを使用する場合はより多くのリソースを使用しますが、ビルド時間は短くなります。ニーズに応じていずれかの方法を選択してください。
専用サーバーをパッケージ化する
プロジェクトをコンパイルし、Unreal Engine エディタで開きます。次に、ゲームサーバーを Windows 用にパッケージ化します。
Unreal プロジェクトのパッケージ化の詳細については、Packaging Projects をご覧ください。
このチュートリアルでは、デバッグ目的でログを有効にするために Development ビルドを使用します。Shipping としてビルドするとログが無効になります。
アンクック専用サーバーを実行する
PowerShell を使用して次のコマンドを実行し、エディタでゲームサーバーを起動します。
& "<your_ue5_dir>\UnrealEditor.exe" "<your_project_dir>\AccelByteWars.uproject" -server
専用サーバーをローカルでテスト実行する
このセクションでは、パッケージ化されたゲームサーバーをローカルでテストし、AMS のライフサイクル内の状態変化を処理できるかどうかを確認します。
-
Admin Portal にログインし、ゲーム名前空間のダッシュボードに移動します。
-
サイドバーメニューから AccelByte Multiplayer Servers > Download Resource を選択します。Windows 用の AMS Simulator を見つけてダウンロードします。amssim.exe ファイルがダウンロードされます。
-
AMS Simulator を実行する前に、ByteWars-AMSSim というシミュレータ用の新しい IAM クライアントを設定する必要があります。作成するには、サーバーと AMS CLI IAM を設定したときと同じ手順に従いますが、今回は以下の設定を使用する必要があります。
- AGS Shared Cloud
- AGS Private Cloud
AMS Simulator IAM クライアントを作成する際、Create Options フィールドで Create from Template オプションを選択します。次に、Select Template フィールドで Dedicated Server Tools オプションを選択します。この IAM クライアントテンプレートには、AMS Simulator を使用するために必要な権限があります。
AMS Simulator IAM クライアントを作成した後、以下の権限を追加します。
Resource Permission NAMESPACE:{namespace}:AMS:LOCALDSCreate -
AMS Simulator をダウンロードして IAM クライアントを作成したら、Windows PowerShell を開き、次のコマンドを使用して AMS Simulator 実行ファイルを実行し、設定ファイルを生成します。
.\amssim.exe generate-config -
AMS Simulator 実行ファイルと同じパスに
config.jsonが表示されます。テキストエディタでファイルを開き、以下の情報で設定を入力します。ClientIDとClientSecretを、作成した ByteWars-AMSSim IAM クライアントの情報に置き換えます。また、ゲーム名前空間と AGS 環境に基づいて、他のプレースホルダー値も置き換えます。- AGS Shared Cloud
- AGS Private Cloud
{
"WatchdogPort": 5555,
"AGSEnvironmentURL": "<game_namespace_id>.prod.gamingservices.accelbyte.io",
"AGSNamespace": "<game_namespace_id>",
"IAM": {
"ClientID": "<ams_sim_iam_client_id>",
"ClientSecret": "<ams_sim_iam_client_secret>"
},
"LocalDSHost": "127.0.0.1",
"LocalDSPort": 7777,
"ClaimKeys": [],
"ServerName": "Your Local Server Name"
}{
"WatchdogPort": 5555,
"AGSEnvironmentURL": "<studio_name>.accelbyte.io",
"AGSNamespace": "<game_namespace_id>",
"IAM": {
"ClientID": "<ams_sim_iam_client_id>",
"ClientSecret": "<ams_sim_iam_client_secret>"
},
"LocalDSHost": "127.0.0.1",
"LocalDSPort": 7777,
"ClaimKeys": [],
"ServerName": "Your Local Server Name"
}備考- WatchdogPort は、アプリが専用サーバーに接続するために使用するポートです。
- AGSEnvironmentURL は、ローカル専用サーバーを登録する環境の URL で、
http://は含みません。 - IAM は、前の手順で作成した AMS Simulator を認証するために使用される
ClientIDとClientSecretです。 - LocalDSHost と LocalDSPort は、それぞれローカル専用サーバーを実行するマシンの IP とポートで、プレイテスターが接続先を知るために使用されます。
- ClaimKeys は、セッションサービスがローカル専用サーバーをクレームするために使用するクレームキーのリストを提供します。デフォルトでは、ServerName がクレームキーの 1 つとして登録されます。
- ServerName は、ローカル専用サーバーに付ける名前です。デフォルトでは、クレームキーの 1 つとして登録され、コンピュータ名を使用して自動生成されますが、好みに応じて変更できます。
ヒント- ゲーム名前空間 ID を見つけるには、Admin Portal に移動し、ゲーム名前空間がリストされている Namespace ページに移動します。次に、GAMES セクションでゲーム名前空間を見つけ、歯車アイコンをクリックします。新しいページで、Namespace ID プロパティを見つけると、ゲーム名前空間 ID の値が表示されます。
-
設定が完了したら、AMS Simulator 実行ファイルを実行します。
.\amssim.exe run以下は AMS Simulator の出力です。ローカル専用サーバーの ID 形式の例が提供されていることに注意してください。この例は
ds_018c1f42-5eb6-7ca3-9650-a732ed75ce6aです。次のステップで必要になるため、コピーしてください。AMS simulator url ws://0.0.0.0:5555/watchdog
AMS simulator session id: 01hfaxxvfqhe9gkk2zesfx0b66.
AMS simulator session log path: session\01hfaxxvfqhe9gkk2zesfx0b66.log
Ready to accept local DS
Start the local DS with a valid DS ID that conforms to uuid standards
An example that can be copied and pasted is:
ds_018c1f42-5eb6-7ca3-9650-a732ed75ce6a
==================================Command list=================================================
help show the command list again
info show AMS simulator info
ds
status show status of the ds
ready explicitly set ds into ready state.
claim claim the ds for a game session.
drain drain the ds
exit, quit exit ams simulator
============================================================================================= -
Windows PowerShell で以下のコマンドを使用して、ゲームサーバー実行ファイルまたは Unreal Editor を使用したアンクックサーバーを実行します。前のステップの
ds_018c1f42-5eb6-7ca3-9650-a732ed75ce6aをローカル専用サーバー ID として使用していることに注意してください。- Packaged
- Uncooked
C:/WindowsServer/AccelByteWarsServer.exe -server -log -nosteam -dsid=ds_018c1f42-5eb6-7ca3-9650-a732ed75ce6a -watchdog_url="ws://localhost:5555/watchdog"& "<your_ue5_dir>\UnrealEditor.exe" "<your_project_dir>\AccelByteWars.uproject" -server -log -nosteam -dsid=ds_018c1f42-5eb6-7ca3-9650-a732ed75ce6a -watchdog_url="ws://localhost:5555/watchdog"備考- -log はゲームサーバーのログを表示します。
- -nosteam は、ゲームサーバー側で Steam プラグインを実行しないために使用されます。
- -server は、ゲームをサーバーとして実行するために使用されます。
- -dsid は、ゲームサーバーが AMS 設定を初期化するために使用する専用サーバー識別子です。AMS Simulator によって提供される例の ID を使用できます。この例は
ds_018c1f42-5eb6-7ca3-9650-a732ed75ce6aです。この起動パラメータは、この専用サーバーが AMS で起動されるときに AMS 側で自動的に入力されることに注意してください。 - -watchdog_url は、ゲームサーバーを AMS に接続するために使用される URL とポートです。この例では、AMS Simulator のデフォルトの IP とポートであるため、値として
ws://localhost:5555/watchdogを使用しています。AMS Simulator の設定はconfig.jsonで変更できます。この起動パラメータは、専用サーバーが AMS で起動されるときに AMS 側で自動的に入力されることに注意してください。
-
ゲームサーバーが実行されたら、サーバーログを確認して、ローカルサーバーが AMS に接続されていることを確認します。以下のように AMS ログの
LogAccelByteAMSに表示されます。LogAccelByteAMS: Connecting to ws://localhost:5555/watchdog
LogAccelByteAMS: ConnectedAMS Simulator からも接続の成功を確認できます。
amssim> DS Connected -
AMS Simulator を使用して
ds statusを実行し、専用サーバーのステータスを確認します。ゲームサーバーが正常に登録されると、以下のログが表示されます。DS StateがReadyに変更されていることに注意してください。ds statusAMS Simulator は次のログを表示します。
amssim> ds status
ID: xxxxx
Connected at: 2023-XX-XX 10:00:00
Last Heartbeat: 2023-XX-XX 10:00:00
DS State: Ready備考Admin Portal からローカル専用サーバーのステータスを確認することもできます。ダッシュボードのサイドバーメニューに移動し、AccelByte Multiplayer Servers > Local Server を選択します。
-
ローカル専用サーバーのログを確認するには、パッケージ化されたプロジェクトの
/Savedフォルダに移動します(この例ではC:/WindowsServer/AccelByteWars/Saved/Logs/AccelByteWars.log)。以下のログ行が表示されている場合、サーバーは完全に初期化されています。// IAM に正常にログインしました
LogAccelByteOSS: Verbose: >>> FOnlineAsyncTaskAccelByteLoginServer::Initialize (AsyncTask method) was called.
LogAccelByteOSS: Verbose: >>> FOnlineAsyncTaskAccelByteLoginServer::TriggerDelegates (AsyncTask method) was called. Args: bWasSuccessful: true
// AMS に接続して登録されました(ready メッセージが送信されました)
LogAccelByteAMS: Connecting to ws://localhost:5555/watchdog
LogAccelByteAMS: Connected
LogAccelByteAMS: Send ready message to AMS
{"ready":{"dsid":"testid"}}
// DS Hub に接続されました
LogAccelByteDSHub: Connecting to wss://demo.accelbyte.io/dshub/
LogAccelByteDSHub: Connected
LogAccelByteDSHub: New message received from DSHub:
{"MessageID":"","Code":200,"topic":"","payload":{}}
// ラッパーログ、サーバーが完全に初期化されました
LogMultiplayerDSEssentials: UMultiplayerDSEssentialsSubsystem_Starter::OnRegisterServerComplete succeeded: TRUE備考- DS ログは、パッケージ化されたサーバーの Saved フォルダにあります。例:
C:/WindowsServer/AccelByteWars/Saved/Logs/AccelByteWars.log - AMS Simulator ログは、
<Your AMS Simulator Directory>/sessionフォルダにあります。
- DS ログは、パッケージ化されたサーバーの Saved フォルダにあります。例:
-
以下のコマンドを使用して、ゲームセッションが専用サーバーをクレームするシミュレーションを行うこともできます。
DS StateがInSessionに変更されていることに注意してください。ds claimAMS Simulator は次のログを表示します。
amssim> ds status
ID: xxxxx
Connected at: 2023-XX-XX 10:00:00
Last Heartbeat: 2023-XX-XX 10:00:00
DS State: InSession -
ds drainを実行して、ゲームサーバーがドレイン状態を処理できるかどうかを確認することもできます。以下のログ行が表示されている場合、サーバーはドレイン状態を正常に処理しています。DS StateがDrainingに変更されていることに注意してください。ds drainAMS Simulator は次のログを表示します。
amssim> ds status
no connected dedicated serverゲームサーバーログには以下が表示され、その後サーバーがシャットダウンします。
LogMultiplayerDSEssentials: Received AMS drain message; Shutting down the server now! -
AMS Simulator を終了するには、次のコマンドを実行します。
quit