AGS Unreal Engine SDK での AccelByte Instance の使用
Last updated on February 4, 2026
注釈:本資料はAI技術を用いて翻訳されています。
概要
AGS Unreal Engine SDK の以前の実装は、シングルトンパターンに大きく依存していました。 現在、シングルトンパターンは非推奨となっています。
- 非推奨化は
FRegistryとFMultiRegistryクラスに影響します。 - 非推奨化は
ApiClientとその使用には影響しません。 - シングルトンは AccelByteInstance(自己完結型インスタンス)に置き換えられました。
FRegistry や FMultiRegistry クラスを使用している開発者は、ApiClient/API クラス(User、Lobby、Chat など)へのアクセス方法を変更し、AccelByteInstance を使用するように実装を移行する必要があります。
AccelByte Instance の取得
AccelByte Instance を取得するには、以下の2つの方法があります:
- [推奨] AccelByte OnlineSubsystem (OSS) インスタンスを使用する
- 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(...);