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

AGS Unreal Engine SDK での AccelByte Instance の使用

Last updated on February 4, 2026

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

概要

AGS Unreal Engine SDK の以前の実装は、シングルトンパターンに大きく依存していました。 現在、シングルトンパターンは非推奨となっています。

  • 非推奨化は FRegistryFMultiRegistry クラスに影響します。
  • 非推奨化は ApiClient とその使用には影響しません
  • シングルトンは AccelByteInstance(自己完結型インスタンス)に置き換えられました。

FRegistryFMultiRegistry クラスを使用している開発者は、ApiClient/API クラス(User、Lobby、Chat など)へのアクセス方法を変更し、AccelByteInstance を使用するように実装を移行する必要があります。

AccelByte Instance の取得

AccelByte Instance を取得するには、以下の2つの方法があります:

  1. [推奨] AccelByte OnlineSubsystem (OSS) インスタンスを使用する
  2. AccelByte Instance を手動で作成・管理する

AccelByte OSS を使用する

AccelByte OSS には既に AccelByteInstance が含まれています。 そのため、開発者は既存のインスタンスを簡単に利用できます。

    #include "OnlineSubsystemAccelByteDefines.h"
...
auto ABSubsystem = IOnlineSubsystem::Get(ACCELBYTE_SUBSYSTEM);
if(ABSubsystem == nullptr)
{
return;
}

FOnlineSubsystemAccelByte* CastABSubsystem = static_cast<FOnlineSubsystemAccelByte*>(ABSubsystem);
if(CastABSubsystem == nullptr)
{
return;
}

FAccelByteInstancePtr AccelByteInstancePtr = CastABSubsystem->GetAccelByteInstance().Pin();

AccelByte Instance を手動で作成・管理する

AccelByte OnlineSubsystem (OSS) プラグインを使用しない場合は、AccelByteInstance を手動で取得・管理できます。 AccelByteInstancePtr のライフタイムが適切に管理されていることを確認してください。

    #include "AccelByteUe4SdkModule.h"
...
auto AccelByteInstancePtr = IAccelByteUe4SdkModuleInterface::Get().CreateAccelByteInstance();
if (!AccelByteInstancePtr.IsValid())
{
return;
}

API クラスへのアクセス

上記の AccelByteInstance スニペットの続き:

    // ゲームクライアント用
auto ApiClient = AccelByteInstancePtr->GetApiClient();
auto LobbyGameClient = ApiClient->GetLobbyApi().Pin();

// ゲームサーバー用
auto ServerApiClient = AccelByteInstancePtr->GetServerApiClient();

// API 呼び出しの例
LobbyGameClient->RequestFriend(...)
ServerApiClient->ServerInventory.GetInventories(...);

FRegistry/FMultiRegistry シングルトンから AccelByte Instance への移行

移行を開始するには、上記のガイドに従って AccelByteInstance を取得してください。 以下の例で移行前後の違いを確認できます。

変更前

    const FString ApiClientId = TEXT("YOUR_CUSTOM_API_CLIENT");
auto ApiClient = FMultiRegistry::GetApiClient(ApiClientId);
ApiClient->User.LoginWithDeviceId(...);

変更後

    const FString ApiClientId = TEXT("YOUR_CUSTOM_API_CLIENT");

auto ApiClient = AccelByteInstancePtr->GetApiClient(ApiClientId);
auto User = ApiClient->GetUserApi().Pin();
if (!User.IsValid())
{
return;
}
User->LoginWithDeviceId(...);