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

シーズンパスをゲームに統合する

Last updated on February 4, 2026

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

概要

この記事では、Client SDKまたはExtend SDKを通じて、AccelByte Gaming Services (AGS) シーズンパスサービスをゲームに統合する方法を説明します:

  • ゲームクライアントから現在のシーズンパス情報を取得する
  • ゲームクライアントからユーザーのシーズン進行状況を取得する
  • ゲームクライアントからXPを付与してティアをレベルアップする
  • ゲームクライアントからシーズンパスの報酬を獲得する

前提条件

次へのアクセスが必要です:

  • AGS Admin Portal
    • AccelByte Unreal SDK、AccelByte Unity SDK、またはAccelByte Extend SDK(必要な権限を含む):
      • クライアントID
      • クライアントシークレット
  • さらなる参照のためのAccelByte シーズンパス API ドキュメント

また、シーズンパスをゲームに統合するために、Admin Portal経由でシーズンパスを設定していることを確認する必要があります。

現在のシーズンパスを取得する

ゲームクライアントは、現在アクティブなシーズンパスをクエリして、必要なXPや各ティアの報酬パスを含むティア進行情報などの情報を返すことができます。

FString Language = TEXT("en");

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto SeasonPassApi = ApiClient->GetSeasonPassApi().Pin();
SeasonPassApi->GetCurrentSeason(
Language,
THandler<FAccelByteModelsSeasonInfo>::CreateLambda([&](const FAccelByteModelsSeasonInfo& Result)
{
// Do something when successful
}),
FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something when failed
})
);

プレイヤーの現在のシーズンパス進行状況を取得する

ゲームクライアントは、プレイヤーのシーズンデータをクエリして、プレイヤーにシーズンの進行状況と獲得可能な報酬を表示できます。

FString Language = TEXT("en");

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto SeasonPassApi = ApiClient->GetSeasonPassApi().Pin();
SeasonPassApi->GetCurrentUserSeason(
THandler<FAccelByteModelsUserSeasonInfo>::CreateLambda([](const FAccelByteModelsUserSeasonInfo& Result)
{
// Do something when successful
}),
FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something when failed
})
);

Server APIを使用してプレイヤーにXPを付与する

ゲームサーバーは、Server APIを使用してプレイヤーに経験値(XP)を付与し、プレイヤーがシーズンを進行するのを支援できます。たとえば、プレイヤーがシーズン中にタスクやチャレンジを完了すると、XPを付与できます。

int32 EXP = 300;
FString UserId = "TargetUserId";

auto ServerApiClient = AccelByteOnlineSubsystemPtr->GetServerApiClient();
ServerApiClient->ServerSeasonPass.GrantExpToUser(
UserId, EXP,
THandler<FAccelByteModelsUserSeasonInfoWithoutReward>::CreateLambda(
[](const FAccelByteModelsUserSeasonInfoWithoutReward& Result)
{
// Do something when successful
}),
FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something when failed
})
);

ティアでレベルアップする

プレイヤーは2つの方法でティアを上げることができます: シーズンチャレンジでXPを獲得するか、ティアへのアクセスを購入するかです。プレイヤーがXPを獲得してティアを上げた場合、ティアは自動的にレベルアップし、XPは0にリセットされ、前のティアから残ったXPはプレイヤーのXPに追加されます。プレイヤーは、上位ティアへのアクセスを購入することもできます。

ティアアクセスを購入する前に、ティアアイテムの詳細情報を持っていることを確認してください。それ以外の場合は、Ecommerceサービスからティアアイテムをクエリして、アイテムの詳細を取得する必要があります。

FAccelByteModelsItemCriteria ItemCriteria;
ItemCriteria.ItemType = EAccelByteItemType::SEASON;
ItemCriteria.CategoryPath = TEXT("/seasonpass");
int32 Offset = 0;
int32 Limit = 32;

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto ItemApi = ApiClient->GetItemApi().Pin();
ItemApi->GetItemsByCriteria(
ItemCriteria, Offset, Limit,
THandler<FAccelByteModelsItemPagingSlicedResult>::CreateLambda([](const FAccelByteModelsItemPagingSlicedResult& Result)
{
// Do something when successful
}),
FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something when failed
})
);

ティアアイテム情報を取得した後、ゲームクライアントはCreateNewOrder関数を呼び出してティアへのアクセスを購入できます。

FAccelByteModelsOrderCreate OrderTier;
OrderTier.CurrencyCode = TEXT("CurrencyCode");
OrderTier.DiscountedPrice = 100;
OrderTier.Price = 100;
OrderTier.Quantity = 1;
OrderTier.ReturnUrl = TEXT("https://example.com");
OrderTier.ItemId = TEXT("ItemId");
OrderTier.Region = "US";
OrderTier.Language = "en";

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto OrderApi = ApiClient->GetOrderApi().Pin();
OrderApi->CreateNewOrder(
OrderTier,
THandler<FAccelByteModelsOrderInfo>::CreateLambda([&](const FAccelByteModelsOrderInfo& Result)
{
// So something when successful
}),
FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something when failed
})
);

プレミアムパスをアンロックする

プレイヤーは、プレミアムパスを購入して、シーズンイベントから追加の報酬へのアクセスを獲得できます。プレミアムパスアイテムを購入する前に、その詳細情報を持っていることを確認してください。それ以外の場合は、プレミアムパスアイテムをクエリして、アイテムの詳細を取得する必要があります。

FAccelByteModelsItemCriteria ItemCriteria;
ItemCriteria.ItemType = EAccelByteItemType::SEASON;
ItemCriteria.CategoryPath = TEXT("/seasonpass");
int32 Offset = 0;
int32 Limit = 32;

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto ItemApi = ApiClient->GetItemApi().Pin();
ItemApi->GetItemsByCriteria(
ItemCriteria, Offset, Limit, THandler<FAccelByteModelsItemPagingSlicedResult>::CreateLambda(
[](const FAccelByteModelsItemPagingSlicedResult& Result)
{
// Do something when successful
}),
FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something when failed
})
);

プレミアムパスアイテム情報を取得した後、ゲームクライアントはCreateNewOrder関数を呼び出してプレミアムパスを購入できます。

FAccelByteModelsOrderCreate OrderPass;
OrderTier.CurrencyCode = TEXT("CurrencyCode");
OrderTier.DiscountedPrice = 100;
OrderTier.Price = 100;
OrderTier.Quantity = 1;
OrderTier.ReturnUrl = TEXT("https://example.com");
OrderTier.ItemId = TEXT("ItemId");
OrderTier.Region = "US";
OrderTier.Language = "en";

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto OrderApi = ApiClient->GetOrderApi().Pin();
OrderApi->CreateNewOrder(
OrderPass,
THandler<FAccelByteModelsOrderInfo>::CreateLambda([&](const FAccelByteModelsOrderInfo& Result)
{
// Do something when successful
}),
FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something when failed
})
);

報酬を獲得する

シーズンがプレイヤーの獲得した報酬を自動的に付与するように設定されていない場合、ゲームクライアントはプレイヤーの報酬を手動で獲得する必要があります。ClaimRewards関数を使用して、プレイヤーの報酬を獲得できます。

FString PassCode = TEXT("PremiumPassCode");
int32 TierIndex = 0;
FString RewardCode = TEXT("RewardCode");

FAccelByteModelsSeasonClaimRewardRequest ClaimRequest{
PassCode, TierIndex, RewardCode
};
auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto SeasonPassApi = ApiClient->GetSeasonPassApi().Pin();
SeasonPassApi->ClaimRewards(
ClaimRequest,
THandler<FAccelByteModelsSeasonClaimRewardResponse>::CreateLambda(
[&](const FAccelByteModelsSeasonClaimRewardResponse& Result)
{
// Do something when successful
}),
FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something when failed
})
);

すべての報酬を獲得する

プレイヤーが獲得可能な複数の報酬を持っている場合、ゲームクライアントはすべての報酬を一度に獲得できます。BulkClaimRewardsを使用して、複数の報酬を同時に獲得できます。

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto SeasonPassApi = ApiClient->GetSeasonPassApi().Pin();
SeasonPassApi->BulkClaimRewards(
THandler<FAccelByteModelsSeasonClaimRewardResponse>::CreateLambda(
[&](const FAccelByteModelsSeasonClaimRewardResponse& Result)
{
// Do something when successful
}),
FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something when failed
})
);