ゲームクライアントでのチャレンジインタラクションの統合
Last updated on February 4, 2026
注釈:本資料はAI技術を用いて翻訳されています。
概要
AccelByte Gaming Service (AGS) チャレンジでは、目標とチャレンジの達成時にプレイヤーに仮想報酬を付与できます。これは、AGS Identity and Access Management (IAM)、AGS 統計、AGS E-Commerce、AGS 実績など、AGS 内の他のサービスと統合することで機能し、プレイヤーが仮想報酬を獲得するために達成しなければならない目標の要件を定義するために使用されます。
この記事では、AGS Game SDK を使用した AGS チャレンジでのプレイヤーチャレンジインタラクションと報酬の受け取りを統合する方法について説明します。
前提条件
- AGS Game SDK が Unreal または Unity プロジェクトにインストールおよび設定されていること。
- ゲーム用に IAM クライアントがセットアップされており、その IAM クライアントの ID とシークレットにアクセスできること。
- AGS チャレンジを使用してチャレンジがプロジェクトに統合されていること。
チャレンジの評価
important
目標設定で統計とエンタイトルメントを使用する場合は、この手順を実行する必要があります。それ以外の場合、AGS チャレンジは自動的に評価します。
チャレンジ評価は、指定された目標の最新の進捗とステータスを計算するために指定されています。このエンドポイントを呼び出すと、最新の進捗更新が取得されます。次のコードを使用して、ゲームクライアントからチャレンジを評価できます。
- Unreal Engine
- Unity
FAccelByteModelsChallengeEvaluateProgressOptionalParameter OptionalParam;
OptionalParam.ChallengeCodesToEvalute.Add(TEXT("challenge-1"));
OptionalParam.ChallengeCodesToEvalute.Add(TEXT("challenge-2"));
AccelByteOnlineSubsystemPtr->GetApiClient()->Challenge.EvaluateChallengeProgress(OptionalParam
, FVoidHandler::CreateLambda([]()
{
// on evaluate challenge progress success
}), FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
UE_LOG(LogTemp, Warning, TEXT("[%d]: %s"),
ErrorCode, *ErrorMessage);
}));
AccelByteSDK.GetClientRegistry().GetApi().GetChallenge().EvaluateChallengeProgress(result =>
{
if (result.IsError)
{
// Things to do when errors happen
Debug.Log($"Failed to EvaluateChallengeProgress {result.Error.Code} : {result.Error.Message}");
return;
}
Debug.Log($"EvaluateChallengeProgress Success");
});
報酬を受け取る

次のコードを使用して、ゲームクライアントから達成された特定の目標の報酬をプレイヤーが受け取れるようにすることができます。
- Unreal Engine
- Unity
FAccelByteModelsChallengeRewardClaimRequest RewardClaimRequest{};
// You are able to retrieve reward IDs from this method: Challenge::GetRewards
RewardClaimRequest.RewardIDs = {"RewardId1"};
AccelByteOnlineSubsystemPtr->GetApiClient()->Challenge.ClaimReward(RewardClaimRequest,
THandler<TArray<FAccelByteModelsChallengeReward>>::CreateLambda([]
(const TArray<FAccelByteModelsChallengeReward>& Response)
{
for (auto ChallengeReward : Response)
{
UE_LOG(LogTemp, Warning, TEXT("Item Name: %s Qty: %f"),
*ChallengeReward.ItemName, ChallengeReward.Qty);
}
}), FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
UE_LOG(LogTemp, Warning, TEXT("[%d]: %s"),
ErrorCode, *ErrorMessage);
}));
// You are able to retrieve rewards IDs from this method: GetChallenge().GetRewards()
string[] rewardIds = {
"RewardId1"
};
AccelByteSDK.GetClientRegistry().GetApi().GetChallenge().ClaimReward(rewardIds, result =>
{
if (result.IsError)
{
// Things to do when errors happen
Debug.Log($"Failed to ClaimReward {result.Error.Code} : {result.Error.Message}");
return;
}
Debug.Log($"ClaimReward Success");
foreach (var item in result.Value)
{
Debug.Log($"Item Name: {item.ItemName} Qty: {item.Quantity}");
}
});
すべての報酬を受け取る

次のコードを使用して、ゲームクライアントから特定のチャレンジの下で達成されたすべての目標からすべての報酬をプレイヤーが受け取れるようにすることができます。
- Unreal Engine
- Unity
FAccelByteModelsChallengeRewardClaimRequest RewardClaimRequest{};
// You are able to retrieve rewards IDs from this method: Challenge::GetRewards
RewardClaimRequest.RewardIDs = {"RewardCompletedId1", "RewardCompletedId2"};
AccelByteOnlineSubsystemPtr->GetApiClient()->Challenge.ClaimReward(RewardClaimRequest,
THandler<TArray<FAccelByteModelsChallengeReward>>::CreateLambda([]
(const TArray<FAccelByteModelsChallengeReward>& Response)
{
for (auto ChallengeReward : Response)
{
UE_LOG(LogTemp, Warning, TEXT("Item Name: %s Qty: %f"),
*ChallengeReward.ItemName, ChallengeReward.Qty);
}
}), FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
UE_LOG(LogTemp, Warning, TEXT("[%d]: %s"),
ErrorCode, *ErrorMessage);
}));
// You are able to retrieve rewards IDs from this method: GetChallenge().GetRewards()
string[] rewardIds = {
"RewardCompletedId1",
"RewardCompletedId2"
};
AccelByteSDK.GetClientRegistry().GetApi().GetChallenge().ClaimReward(rewardIds, result =>
{
if (result.IsError)
{
// Things to do when errors happen
Debug.Log($"Failed to ClaimReward {result.Error.Code} : {result.Error.Message}");
return;
}
Debug.Log($"ClaimReward Success");
foreach (var item in result.Value)
{
Debug.Log($"Item Name: {item.ItemName} Qty: {item.Quantity}");
}
});