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 にログインし、ゲームネームスペースのダッシュボードに移動します。
-
サイドバーメニューから Multiplayer > Multiplayer Servers > Download Resource を選択します。Windows 用の AMS Simulator を探してダウンロードします。amssim.exe ファイルがダウンロードされます。
-
AMS Simulator を実行する前に、シミュレータ用の新しい IAM クライアント ByteWars-AMSSim をセットアップする必要があります。これを作成するには、サーバーおよび AMS CLI IAM をセットアップしたときと同じ手順に従いますが、今回は以下の設定を使用します。
- AGS Public Cloud
- AGS Private Cloud
AMS Simulator の IAM クライアントを作成する際は、Create Options フィールドで Create from Template オプションを選択します。次に、Select Template フィールドで Dedicated Server Tools オプションを選択します。この IAM クライアントテンプレートには、AMS Simulator を使用するために必要な権限が含まれています。
AMS Simulator の IAM クライアントを作成した後、以下の権限を追加します。
リソース 権限 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 Public 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 セクションでゲームネームスペースを探し、gear アイコンをクリックします。新しいページで 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 -
ds statusを実行して、AMS Simulator でデディケートサーバーのステータスを確認します。ゲームサーバーが正常に登録されると、以下のログが表示されます。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 のダッシュボードのサイドバーメニューから Multiplayer > Multiplayer Servers > Development 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 log はパッケージ化したサーバーの Saved フォルダにあります。例:
C:/WindowsServer/AccelByteWars/Saved/Logs/AccelByteWars.log - AMS Simulator Log は
<Your AMS Simulator Directory>/sessionフォルダにあります。
- DS log はパッケージ化したサーバーの 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