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

複数のレジストリを実装する

Last updated on April 7, 2026

注釈:本資料はAI技術を用いて翻訳されています。

警告

AGS Unreal Engine SDK の複数のレジストリは AccelByte Instance の下にラップされています!
AccelByte OnlineSubsystem は影響を受けません。
[移行ガイド]を参照してください。

はじめに

複数のレジストリは、AccelByte Gaming Services (AGS) の同じゲームインスタンスに複数のローカルユーザーがログインできるよう設計された機能です。複数のレジストリを使用することで、ゲーム開発者はローカルマルチプレイヤーをサポートできるゲームを作成できます。コントローラーにリンクされたアカウントに基づいて、各プレイヤーのプレイヤー情報と進行状況を独立して保存します。

複数のレジストリは、ログイン済みのプレイヤー情報を保存し、AGS API を呼び出す際にプレイヤーとして機能する API クライアントのコンテナです。

現在の SDK には、同じゲームインスタンス内の任意の時点で 1 つのアカウントしかログインできないシングルトンクラスを使用してプレイヤーを表現していたため、制限がありました。これらの制限を克服するために、プレイヤーを表現する新しいクラス ApiClient を作成しました。これは同じ目的で機能し、AGS API にアクセスするための同じエントリーポイントを使用します。ゲーム開発者はこの新しいクラスを使用する必要があり、複数のレジストリはこのクラスを管理します。

ApiClient インフラストラクチャは以下の利点を提供します:

  • シングルトンおよびスタティッククラスの使用を削減します。
  • 開発者が ApiClient インスタンスを簡単に作成および削除できるため、管理が容易です。
  • ApiClient がカスタム API クラスを作成するためのエントリーポイントとして使用されるため、より拡張性があります。

ApiClient クラスを実装した後、API 呼び出しは以前の SDK と同様の方法で動作します。これらの SDK の変更はゲームサーバーの実装にも影響します(以前はクライアントとサーバーの実装が混在していました)。そのため、ゲームサーバー関連の API の管理に特化した新しいクラス ServerApiClient が作成されました。

前提条件

クライアント SDK を使用した複数のレジストリの実装

  1. 複数のレジストリを実装する前に、クラスの先頭に以下のライブラリをインクルードします。

AGS Unreal Engine SDK 移行[ガイド]

DEPRECATED. Please refer to migration [guide].
#include "Core/AccelByteMultiRegistry.h"

ApiClient はゲーム内のプレイヤーを表し、バックエンドサービスへのリクエストを作成・送信するために必要な追加の API を保持します。

  1. GetApiClient() を呼び出すことで各プレイヤーを分離できるよう、各プレイヤーに一意のキーを使用してこのクラスで各プレイヤーを定義します。

AccelByteInstance

  //⚠️ Deprecated method to obtain the ApiClient using MultiRegistry
//// Define User A
//FApiClientPtr ApiClientA = FMultiRegistry::GetApiClient(TEXT("0"));
//// Define User B
//FApiClientPtr ApiClientB = FMultiRegistry::GetApiClient(TEXT("1"));

The latest method to obtain the ApiClient using AccelByteInstance
// Define User A
auto ApiClientA = AccelByteInstancePtr->GetApiClient(TEXT("0"));
// Define User B
auto ApiClientB = AccelByteInstancePtr->GetApiClient(TEXT("1"));
注意
  • 一意のキーには以下のルールを適用してください:
    • Unreal Engine: デフォルトとして default を持つ FString を使用。
    • Unreal (OSS): デフォルト値なしの int を使用。
    • Unity: デフォルトとして default を持つ string を使用。
  • 他のクラスで関数を呼び出す場合は、同じキーを使用してください。
  1. これはゲートウェイであるため、各プレイヤーが AGS サービスにアクセスする前に認証する必要があります。これを行うには、AGS ログインメソッドを設定します。以下の例の username メソッドなど、AGS が許可するログインメソッドを使用できます:

AccelByteInstance

//⚠️ Deprecated method to obtain the ApiClient using MultiRegistry
//FApiClientPtr ApiClientA = FMultiRegistry::GetApiClient(TEXT("0"));
//FApiClientPtr ApiClientB = FMultiRegistry::GetApiClient(TEXT("1"));

Latest method to obtain ApiClient using AccelByteInstance
auto ApiClientA = AccelByteInstancePtr->GetApiClient(TEXT("0"));
auto ApiClientB = AccelByteInstancePtr->GetApiClient(TEXT("1"));

// Login with username
ApiClientA->User.LoginWithUsername(
TEXT("user+a@example.com"),
TEXT("Password321"),
FVoidHandler::CreateWeakLambda(this, [this]()
{
UE_LOG(LogTemp, Log, TEXT("Login User A successful"));
}), FErrorHandler::CreateWeakLambda(this, [](int32 ErrorCode, const FString& ErrorMessage)
{
UE_LOG(LogTemp, Error, TEXT("Login User A Failed : %d, %s"), ErrorCode, *ErrorMessage);
}));

ApiClientB->User.LoginWithUsername(
TEXT("user+b@example.com"),
TEXT("Password321"),
FVoidHandler::CreateWeakLambda(this, [this]()
{
UE_LOG(LogTemp, Log, TEXT("Login User B successful"));
}), FErrorHandler::CreateWeakLambda(this, [](int32 ErrorCode, const FString& ErrorMessage)
{
UE_LOG(LogTemp, Error, TEXT("Login User B Failed : %d, %s"), ErrorCode, *ErrorMessage);
}));

次のステップ

シングルトンベースのレジストリから複数のレジストリへのゲームの移行方法を学びましょう。