Last updated on February 4, 2026
注釈:本資料はAI技術を用いて翻訳されています。
Unreal SDK への API 呼び出しの追加
はじめに
AccelByte Gaming Services(AGS)Unreal SDK は、さまざまな API 呼び出しで構成されています。既存の SDK に新しい API 呼び出しを統合することは、その機能を拡張し、進化するバックエンドサービスと整合させるための重要なステップです。 このガイドでは、AGS Unreal SDK に API エンドポイントをシームレスに追加するプロセスを説明します。
基本情報
変更する SDK ディレクトリ
Source/AccelByteUe4Sdk/Public/ApiSource/AccelByteUe4Sdk/Private/ApiSource/AccelByteUe4Sdk/Public/Models
UE Blueprint に機能を公開するために変更する SDK ディレクトリ
Source/AccelByteUe4Sdk/Public/BlueprintsSource/AccelByteUe4Sdk/Private/Blueprints
ファイル名の形式
Apiディレクトリ内:AccelByte<service name>Api.hBlueprintsディレクトリ内:AB<service name>.hModelsディレクトリ内:AccelByte<service name>Models.h
一般的な手順
- API Explorer を開き、追加したいエンドポイントを見つけます
- AccelByte SDK フォルダに移動し、これらのディレクトリ内のファイルを見つけて変更します。変更するファイルは、呼び出したいサービスエンドポイントに基づいて決まります:
3.
Source/AccelByteUe4Sdk/Public/Api4.Source/AccelByteUe4Sdk/Private/Api5.Source/AccelByteUe4Sdk/Public/Models - Blueprint で呼び出しを利用可能にするには、AccelByte SDK フォルダに移動し、これらのディレクトリ内のファイルを見つけて変更します。変更するファイルは、呼び出したいサービスエンドポイントに基づいて決まります:
7.
Source/AccelByteUe4Sdk/Public/Blueprints8.Source/AccelByteUe4Sdk/Private/Blueprints
例
ケース: SDK の機能として ListGlobalStatItem を追加し、UE Blueprint からアクセスできるようにしたいと考えています。
SDK への変更の実装
注意: このセクションで注目するディレクトリは次のとおりです:
Source/AccelByteUe4Sdk/Public/ApiSource/AccelByteUe4Sdk/Private/ApiSource/AccelByteUe4Sdk/Public/Models
- API Explorer を開き、左側のドロップダウンメニューで「Storage」に移動し、「List Global」を検索します
- List Global Stat Items Endpoint が見つかります。このページの情報を使用して、SDK で API 呼び出しを実装します。
- AccelByte Unreal SDK で、
Source/AccelByteUe4Sdk/Publicディレクトリに移動します。その中にApiとModelsディレクトリがあり、機能を追加するには両方の内容を変更する必要があります。このケースでは、追加したいエンドポイントは Statistics サービスの一部であるため、Api/AccelByteStatisticApi.hに関数呼び出しを追加する必要があります。また、サービスレスポンスからデータを受信するモデルがまだ存在しないため、Models/AccelByteStatisticModels.hにstruct定義を追加する必要があります - まず、モデルを追加しましょう。エンドポイント情報に基づいて、次の json を返します
{
"data": [
{
"statCode": "string",
"statName": "string",
"namespace": "string",
"value": 0,
"tags": [
"string"
],
"createdAt": "2025-05-26T08:00:45.196Z",
"updatedAt": "2025-05-26T08:00:45.196Z",
"globalAggregationMethod": "TOTAL"
}
],
"paging": {
"previous": "string",
"next": "string"
}
}
Models/AccelByteStatisticModels.hに、上記の json を表す対応する構造体を追加します
USTRUCT(BlueprintType)
struct ACCELBYTEUE4SDK_API FAccelByteModelsGlobalStatItemPagingSlicedResult
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AccelByte | Statistic | Models | StatItemPagingSlicedResult")
TArray<FAccelByteModelsGlobalStatItemValueResponse> Data{};
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AccelByte | Statistic | Models | StatItemPagingSlicedResult")
FAccelByteModelsPaging Paging{};
};
- 次に、
Api/AccelByteStatisticApi.hに移動し、次の関数宣言を追加します。先ほど作成したFAccelByteModelsGlobalStatItemPagingSlicedResult構造体を使用します:
FAccelByteTaskWPtr ListGlobalStatItems(THandler<FAccelByteModelsGlobalStatItemPagingSlicedResult> const& OnSuccess
, FErrorHandler const& OnError
, TArray<FString> const& StatCodes = {}
, int32 Limit = 20
, int32 Offset = 0);
- それでは、.cpp ファイルに実装を作成しましょう。
Source/AccelByteUe4Sdk/Private/Api/AccelByteStatisticApi.cppに移動し、次の関数定義を追加します:
FAccelByteTaskWPtr Statistic::ListGlobalStatItems(THandler<FAccelByteModelsGlobalStatItemPagingSlicedResult> const& OnSuccess
, FErrorHandler const& OnError
, TArray<FString> const& StatCodes
, int32 Limit
, int32 Offset)
{
FReport::Log(FString(__FUNCTION__));
const FString Url = FString::Printf(TEXT("%s/v1/public/namespaces/%s/globalstatitems")
, *SettingsRef.StatisticServerUrl
, *CredentialsRef->GetNamespace());
TMultiMap<FString, FString> QueryParams {
{ TEXT("limit"), FString::FromInt(Limit) },
{ TEXT("offset"), FString::FromInt(Offset) },
};
if(!StatCodes.IsEmpty())
{
QueryParams.Emplace(TEXT("statCodes"), FString::Join(StatCodes, TEXT(",")));
}
else
{
// Don't add statCodes into the QueryParams
}
return HttpClient.ApiRequest(TEXT("GET"), Url, QueryParams, FString(), OnSuccess, OnError);
}
- 完了です。エンドポイントが適切に呼び出されることを確認するためにテストを実行できます。
機能を Blueprint からアクセス可能にする
注意: このセクションで注目するディレクトリは次のとおりです:
Source/AccelByteUe4Sdk/Public/BlueprintsSource/AccelByteUe4Sdk/Private/Blueprints
SDK に機能を追加した後、Blueprint 経由でアクセスできるようにする場合は、次の手順に従います:
- レスポンスデリゲートを追加する必要があります。これを行うには、
Source/AccelByteUe4Sdk/Public/Blueprints/ABStatistic.hに移動し、次のデリゲート宣言を追加します:
DECLARE_DYNAMIC_DELEGATE_OneParam(FDModelsGlobalStatItemPagingSlicedResultResponse, FAccelByteModelsGlobalStatItemPagingSlicedResult, Response);
- 関数宣言を追加し、上記で作成したデリゲートを使用します:
UFUNCTION(BlueprintCallable, Category = "AccelByte | Statistic | Api")
void ListGlobalStatItemsWithFilter(
FDModelsGlobalStatItemPagingSlicedResultResponse const& OnSuccess,
FDErrorHandler const& OnError,
TArray<FString> const& StatCodesFilter,
int32 Limit = 20,
int32 Offset = 0
);
UFUNCTION(BlueprintCallable, Category = "AccelByte | Statistic | Api")
void ListGlobalStatItems(
FDModelsGlobalStatItemPagingSlicedResultResponse const& OnSuccess,
FDErrorHandler const& OnError,
int32 Limit = 20,
int32 Offset = 0
);
- UE Blueprint は関数のオーバーロードをサポートしていないため、統計コードフィルタを指定せずにエンドポイントを呼び出すサポートが必要なため、2 つの関数を作成しました。
- 上記の宣言の関数定義を実装します:
void UABStatistic::ListGlobalStatItemsWithFilter(
FDModelsGlobalStatItemPagingSlicedResultResponse const& OnSuccess,
FDErrorHandler const& OnError,
TArray<FString> const& StatCodes,
int32 Limit,
int32 Offset)
{
const auto StatisticPtr = ApiClientPtr->GetStatisticApi().Pin();
if (StatisticPtr.IsValid())
{
StatisticPtr->ListGlobalStatItems(
THandler<FAccelByteModelsGlobalStatItemPagingSlicedResult>::CreateLambda(
[OnSuccess](FAccelByteModelsGlobalStatItemPagingSlicedResult const& Response)
{
OnSuccess.ExecuteIfBound(Response);
}
),
FErrorHandler::CreateLambda(
[OnError](int32 Code, FString const& Message)
{
OnError.ExecuteIfBound(Code, Message);
}
), StatCodes, Limit, Offset);
}
else
{
OnError.ExecuteIfBound(static_cast<int32>(AccelByte::ErrorCodes::InvalidRequest), TEXT("Api already destroyed!"));
}
}
void UABStatistic::ListGlobalStatItems(
FDModelsGlobalStatItemPagingSlicedResultResponse const& OnSuccess,
FDErrorHandler const& OnError,
int32 Limit,
int32 Offset)
{
// Call with empty array
ListGlobalStatItemsWithFilter(OnSuccess, OnError, TArray<FString>(), Limit, Offset);
}
- 完了です。UE Blueprint からエンドポイントが適切に呼び出されることを確認するためにテストを実行できます。