メインコンテンツまでスキップ

Debugging Dedicated Servers Locally

Last updated on May 6, 2024
note

Armada はまだ AGS Starter ティアではご利用いただけません。まもなく公開します!

概要

サーバーを Armada にアップロードする必要があるマネージドの専用サーバーとは異なり、ローカルの専用サーバーはローカルコンピュータで実行されます。これにより、Armada にビルドをアップロードすることなく専用サーバービルドをテストし、デバッグして、プロファイルできます。

目標

  • Armada にローカルの専用サーバーを登録する方法を学ぶ。
  • ローカルの専用サーバーでマッチメイキングを行う方法を学ぶ。

前提条件

このガイドを開始する前に、次の手順を完了する必要があります。

  • 次の権限で専用サーバー用の IAM クライアントを設定する。
権限の名前アクション
NAMESPACE:{namespace}:DSM:SERVERアップデート
Best practice

すべての専用サーバーが使用する 1 つの IAM クライアントを維持します。

  • 専用サーバー実行ファイルを準備します。これは Linux アーキテクチャを使用して構築されます。

  • プロジェクト用の AccelByte Game SDK をインストールして設定します。AccelByte Game SDK はUnrealおよびUnityの両方で利用できます。

Armada にローカルの専用サーバーを登録する

ローカルの専用サーバーを Armada に登録するには、適切な SDK から次の API を呼び出します。これは、専用サーバーを統合した SDK になります。マネージドの専用サーバーの登録とは異なり、ローカルの専用サーバーの IP アドレスとポート、サーバー名を Armada に提供する必要があります。

マッチメイカーがローカルの専用サーバーを見つける手段であるため、サーバー名は特に重要です。

Best practice

Armada にマネージドの専用サーバーを登録するのと同様に、専用サーバーがゲームセッションを開始する準備ができたに、これらの API を呼び出してください。


FString IpAddress = FString("https://127.0.0.1");
int32 Port = 7777;

FString ServerName = FString("my-awesome-game-server");

FRegistry::ServerDSM.RegisterLocalServerToDSM(IpAddress, Port, ServerName, FVoidHandler::CreateLambda([]()
{
// Do something if RegisterLocalServerToDSM has been successful
}), FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if RegisterLocalServerToDSM has an error
UE_LOG(LogTemp, Log, TEXT("Error RegisterLocalServerToDSM, Error Code: %d Error Message: %s"), ErrorCode, *ErrorMessage);
}));

ローカルの専用サーバーの検証

  1. 登録エンドポイントを呼び出したら、管理者ポータルにログインし、サイドバーの[Dedicated Server Management (専用サーバー管理)]セクションの[Server (サーバー)]ボタンをクリックします。

  2. 次のページでローカルサーバーを実行しているものを見ることができます。ローカルサーバーを調べるには、ローカルサーバータブ内の矢印ボタンをクリックします。

  3. これで、ローカルサーバーのステータスを確認できます。

ローカルの専用サーバーの登録解除

ローカルの専用サーバーは、24 時間登録状態が続いた後、自動的に削除されます。または、管理者ポータルのローカルサーバーエントリーの横にある[Delete (削除)]ボタンをクリックして、セッションを削除することもできます。ただし、プログラムで実行する場合は、次の API を呼び出します。


FString ServerName = FString("my-awesome-game-server");
FRegistry::ServerDSM.DeregisterLocalServerFromDSM(ServerName, FVoidHandler::CreateLambda([]()
{
// Do something if DeregisterLocalServerFromDSM has been successful

}), FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)

{
// Do something if DeregisterLocalServerFromDSM has an error

UE_LOG(LogTemp, Log, TEXT("Error DeregisterLocalServerFromDSM, Error Code: %d Error Message: %s"), ErrorCode, *ErrorMessage);
}));

ローカルの専用サーバーとのマッチメイキング

ローカルの専用サーバーを使用する主な利点は、マッチメイキングの使用が可能になる点です。これにより、プレイヤーがサーバーに接続されるため、ローカルでサーバーをデバッグしてプロファイルすることができます。以下の図は、ローカルの専用サーバーがマッチメーカーとゲームクライアントとどのように対話するかを表しています。

プレイヤーをローカルサーバーにマッチメイキングするには、先の手順で記録したサーバー名を入力します。


FString GameMode = FString(""); //game mode is irrelevant to matchmaking into a local server
FString ServerName = FString("my-awesome-game-server");

FRegistry::Lobby.Connect();
FRegistry::Lobby.SetMatchmakingNotifDelegate(AccelByte::Api::Lobby::MatchmakingNotif.CreateLambda([](const FAccelByteModelsMatchmakingNotice& Result)
{
if (Result.Status == EAccelByteMatchmakingStatus::Done)
{
FString MatchId = Result.MatchId;
}
}));
FRegistry::Lobby.SendStartMatchmaking(GameMode, ServerName);

Note

ローカルサーバーでは、ローカルマシン上でプレイヤーをマッチメイクすることができますが、自動的にポート転送を行うわけではありません。また、これらのプレイヤーがローカルサーバーに接続する場合のリレーとして機能するわけでもありません。マシンがルーター下にある場合でも、コード内のポート転送を処理する必要があります。

トラブルシューティング

シャットダウン後にローカルサーバーエントリーが残る

ローカルサーバーエントリーは 24 時間残った後、自動的に削除されます。サーバーエントリーを削除する場合は、管理者ポータルで手動で削除するか、ローカルの専用サーバーの登録解除 の手順に従ってプログラムで削除する必要があります。