ゲームで複数のレジストリのサポートを有効にする (Unreal)
注釈:本資料はAI技術を用いて翻訳されています。
概要
AccelByte Gaming Services (AGS) の複数のレジストリ機能は、単一のゲームプロセスでマルチプレイヤーをサポートします。この記事では、Unreal Engine ゲームをシングルトンベースのレジストリから複数のレジストリに移行し、複数のレジストリをサポートできるようにする方法について説明します。
ゲームクライアント
FApiClient ゲームクライアントは、FMultiRegistry から作成できるクラスです。FApiClient を構築するためのキーを準備する必要があります。キーは管理されたユーザーを表すか、識別子として機能します。同時に複数のユーザーを処理するには、この方法を使用して複数のキーを作成するか、ゲームに 1 つのゲームプロセスまたは実行可能ファイルに 1 人のプレイヤーしかいない場合は、空のままにして default ユーザーを使用できます。
FRegistry を FMultiRegistry に移行するには、次の手順に従います:
-
すべて検索 を使用して、プロジェクト内のすべての
FRegistry::*クラスを見つけます。次に、シングルトンクラスの場合は、FRegistry::をFMultiRegistry::GetApiClient()->に置き換えます。警告FRegistry::Settings、FRegistry::Credentials、またはFRegistry::HttpRetrySchedulerは変更しないでください。 -
名前を変更した後、コンパイルがまだ実行されることを確認します。そうでない場合は、以前の変更を元に戻し、これらの手順を繰り返します。
- API Client
- Previous Usage
FMultiRegistry::GetApiClient()->User.LoginWithUsername(
TEXT("user+a@example.com"),
TEXT("Password321"),
FVoidHandler::CreateWeakLambda(this, [this]()
{
UE_LOG(LogTemp, Log, TEXT("Login successful"));
}), FCustomErrorHandler::CreateWeakLambda(this, [](int32 ErrorCode, const FString& ErrorMessage, const FJsonObject& ErrorObject)
{
UE_LOG(LogTemp, Error, TEXT("Login Failed : %d, %s"), ErrorCode, *ErrorMessage);
}));
FRegistry::User.LoginWithUsername(
TEXT("user+a@example.com"),
TEXT("Password321"),
FVoidHandler::CreateWeakLambda(this, [this]()
{
UE_LOG(LogTemp, Log, TEXT("Login successful"));
}), FCustomErrorHandler::CreateWeakLambda(this, [](int32 ErrorCode, const FString& ErrorMessage, const FJsonObject& ErrorObject)
{
UE_LOG(LogTemp, Error, TEXT("Login Failed : %d, %s"), ErrorCode, *ErrorMessage);
}));
ゲームサーバー
FRegistry を FMultiRegistry に移行するには、次の手順に従います:
-
すべて検索 を使用して、プロジェクト内のすべての
FRegistry::*シングルトンクラスを見つけ、FRegistry::*をFMultiRegistry::GetServerApiClient()->に置き換えます。警告FRegistry::ServerSettingsは変更しないでください。
- API Client
- Previous Usage
auto ServerApiClient = FMultiRegistry::GetServerApiClient();
ServerApiClient->ServerOauth2.LoginWithClientCredentials(FVoidHandler::CreateWeakLambda(this, [this]()
{
UE_LOG(LogTemp, Log, TEXT("Login With Credentials success"));
}), FErrorHandler::CreateWeakLambda(this, [this](int32 ErrorCode, const FString& ErrorMessage)
{
UE_LOG(LogTemp, Error, TEXT("Login With Credentials failed, Error Code: %d Error Message: %s"), ErrorCode, *ErrorMessage);
}));
FRegistry::ServerOauth2.LoginWithClientCredentials(FVoidHandler::CreateWeakLambda(this, [this]()
{
UE_LOG(LogTemp, Log, TEXT("Login With Credentials success"));
}), FErrorHandler::CreateWeakLambda(this, [this](int32 ErrorCode, const FString& ErrorMessage)
{
UE_LOG(LogTemp, Error, TEXT("Login With Credentials failed, Error Code: %d Error Message: %s"), ErrorCode, *ErrorMessage);
}));
クライアント SDK で AGS OSS を使用する
ゲームが AGS Online Subsystem (OSS) を使用してログインを処理している場合に ApiClient を取得するには、次の手順に従います:
-
DefaultEngine.ini設定ファイルを確認します。単一のゲームプロセスに複数のローカルプレイヤーがいる場合は、bMultipleLocalUsersEnabledがtrueであることを確認します。[OnlineSubsystemAccelByte]
bEnabled=true
bAutoLobbyConnectAfterLoginSuccess=false
bMultipleLocalUsersEnabled=true -
AGS Online Identity Interface を使用してユーザーをログインします。これはプレイヤーの認証とプロファイルに使用されます。
-
ログイン後、渡された
LocalUserNumをメモします。virtual bool Login(int32 LocalUserNum, const FOnlineAccountCredentials& AccountCredentials) override; -
[OnLoginCompleteDelegates](https://docs.unrealengine.com/4.27/en-US/API/Plugins/OnlineSubsystem/Interfaces/IOnlineIdentity/OnLoginCompleteDelegates/index.html)を使用して、Identity Interface からのログイン結果を見つけます。 -
ユーザーがログインした後、AGS Identity Interface から次の関数を呼び出します:
IOnlineSubsystem* SubsystemAB = IOnlineSubsystem::Get(ACCELBYTE_SUBSYSTEM);
const FOnlineIdentityAccelBytePtr IdentityPtr = StaticCastSharedPtr<FOnlineIdentityAccelByte>(SubsystemAB->GetIdentityInterface());
FApiClientPtr ApiClient = IdentityPtr->GetApiClient(in32 LocalUserNum); -
ログインに使用したのと同じ
LocalUserNumを渡します。FApiClientPtrが返され、指定されたユーザーによるさまざまな API 呼び出しに使用できます。
ブループリント実装
次のブループリント図は、Unreal Engine で API を使用して Login with Username API を呼び出すために必要なフローを示しています。
UI の実装は、ゲームと選択したログイン方法によって異なる場合があります。

このフローを作成するには、次の手順に従います:
-
Get Api Clientを呼び出します。 -
Return Valueで、使用する API を呼び出します。この場合、UserAPI になります。 -
この API が正常に呼び出されたら、
Login with UsernameAPI を呼び出すことができます。
Login with Username API が正常に呼び出されたら、セットアップは完了です。