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

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

Last updated on February 4, 2026

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

警告

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

はじめに

複数のレジストリは、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 移行 [ガイド].

非推奨。移行 [ガイド] を参照してください。
#include "Core/AccelByteMultiRegistry.h"

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

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

AccelByteInstance

  //⚠️ MultiRegistry を使用して ApiClient を取得する非推奨のメソッド
//// ユーザー A を定義
//FApiClientPtr ApiClientA = FMultiRegistry::GetApiClient(TEXT("0"));
//// ユーザー B を定義
//FApiClientPtr ApiClientB = FMultiRegistry::GetApiClient(TEXT("1"));

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

AccelByteInstance

//⚠️ MultiRegistry を使用して ApiClient を取得する非推奨のメソッド
//FApiClientPtr ApiClientA = FMultiRegistry::GetApiClient(TEXT("0"));
//FApiClientPtr ApiClientB = FMultiRegistry::GetApiClient(TEXT("1"));

AccelByteInstance を使用して ApiClient を取得する最新のメソッド
auto ApiClientA = AccelByteInstancePtr->GetApiClient(TEXT("0"));
auto ApiClientB = AccelByteInstancePtr->GetApiClient(TEXT("1"));

// ユーザー名でログイン
ApiClientA->User.LoginWithUsername(
TEXT("user+a@example.com"),
TEXT("Password321"),
FVoidHandler::CreateWeakLambda(this, [this]()
{
UE_LOG(LogTemp, Log, TEXT("Login User A successful"));
}), FCustomErrorHandler::CreateWeakLambda(this, [](int32 ErrorCode, const FString& ErrorMessage, const FJsonObject& ErrorObject)
{
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"));
}), FCustomErrorHandler::CreateWeakLambda(this, [](int32 ErrorCode, const FString& ErrorMessage, const FJsonObject& ErrorObject)
{
UE_LOG(LogTemp, Error, TEXT("Login User B Failed : %d, %s"), ErrorCode, *ErrorMessage);
}));

次のステップ

シングルトンベースのレジストリから複数のレジストリにゲームを移行する方法を学びます。