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

ゲームサーバーにフルフィルメントを実装する

Last updated on February 4, 2026

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

概要

この記事では、コード引き換えの実装方法と、ゲームサーバーがプレイヤーにアイテムを付与できるようにする方法について説明します。

コード引き換え

プレイヤーはキャンペーンコードを引き換えて、ゲーム、ゲーム内アイテム、コインなどのエンタイトルメントを受け取ることができます。コードを引き換えるには、Fulfillment APIからRedeemCodeを呼び出します。次の条件下で、コードが引き換えられ、プレイヤーはエンタイトルメントを受け取ります:

  • コードがゲームネームスペースに存在する
  • 最大引き換え制限に達していない
  • 引き換えの日時が引き換え期間内である
FString Code = FString("MyRedeemCode");
FString Region = FString("US"); // Leave it blank if you want to use the default value from user token
FString Language = FString("en"); // Leave it blank if you want to use the default value from user token

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto FulfillmentApi = ApiClient->GetFulfillmentApi().Pin();

FulfillmentApi->RedeemCode(Code, Region, Language, THandler<FAccelByteModelsFulfillmentResult>::CreateLambda([](const FAccelByteModelsFulfillmentResult& Result)
{
// Do something if RedeemCode succeeds
}),
FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if RedeemCode fails
UE_LOG(LogTemp, Log, TEXT("Error RedeemCode, Error Code: %d Error Message: %s"), ErrorCode, *ErrorMessage);
}));

ゲームサーバーがプレイヤーにアイテムを付与する

**FulfillUserItem()**関数を使用すると、ゲームサーバーがフルフィルメントサービスをトリガーし、プレイヤーにアイテムを付与できます。これは、プレイヤーが特定のアチーブメントを獲得したときに即座にアイテムを付与したり、特定のゲームモードのマッチ内のすべてのプレイヤーに特別なアイテムを付与し、マッチが終了したらそのアイテムをプレイヤーのインベントリから消去したりするために使用できます。


#include "GameServerApi/AccelByteServerEcommerceApi.h"
...
FString UserId = FString("SomeUserId");
FAccelByteModelsFulfillmentRequest FulfillmentRequest;
FulfillmentRequest.ItemId = FString("SomeItemId");
FulfillmentRequest.OrderNo = FString("SomeOrderNo");
FulfillmentRequest.Language = FString("en");
FulfillmentRequest.Region = FString("US");
FulfillmentRequest.Quantity = 1;
FulfillmentRequest.Source = EAccelByteItemSource::ACHIEVEMENT;

auto ServerApiClient = AccelByteOnlineSubsystemPtr->GetServerApiClient();
ServerApiClient->ServerEcommerce.FulfillUserItem(UserId, FulfillmentRequest, THandler<FAccelByteModelsFulfillmentResult>::CreateLambda([](const FAccelByteModelsFulfillmentResult& Result)
{
// Do something if FulfillUserItem succeeds
}),
FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if FulfillUserItem fails
UE_LOG(LogTemp, Log, TEXT("Error FulfillUserItem, Error Code: %d Error Message: %s"), ErrorCode, *ErrorMessage);
}));