整理のための目標のタグ付け
Last updated on October 14, 2026
注釈:本資料はAI技術を用いて翻訳されています。
概要
AccelByte Gaming Services (AGS) チャレンジでは、作成したチャレンジの目標にタグを追加して、プレイヤーがグループ化およびフィルタリングできるようにすることができます。この記事では、AGS Game SDK を使用した AGS チャレンジでの目標のタグ付け、グループ化、フィルタリングの使用方法について説明します。
この記事では、プレイヤーが達成する 20 個の目標を持つ常設固定チャレンジの実装例を使用します。目標はカテゴリに基づいてグループ化され、プレイヤーが目標に関する関連情報を簡単に見つけられるようにします。

前提条件
- AGS Game SDK が Unreal または Unity プロジェクトにインストールおよび設定されていること。
- AGS チャレンジを使用してチャレンジがプロジェクトに統合されていること。
- AGS CLI の手順に従うには、AGS CLI をインストールし、これらの機能にアクセスできるアカウントでサインインしている必要があります。インストールとサインインを参照してください。例では Bash シェルを使用します。
目標にタグを追加する
AGS Admin Portal または AGS CLI で目標設定のタグを使用して、目標をグループ化できます。
- Admin Portal
- AGS CLI
- ゲームネームスペースの AGS Admin Portal で、Engagement > Challenge > Configuration に移動します。
- 目標を整理したいチャレンジを見つけ (新しいチャレンジを作成 することもできます)、その名前をクリックして設定に入ります。
- Goals and Rewards タブをクリックします。
- 名前をクリックして目標を編集するか、新しい目標を作成し、Tags フィールドに必要に応じてタグの名前を入力します。
- 追加したい各タグについて、キーボードの Enter を押します。
新しい目標にタグを追加するには、目標のリクエストファイルで tags を設定します。ゴールと報酬を作成するを参照してください。既存の目標にタグを追加するには、次の手順に従います。Fixed assignment ルールを使用するチャレンジの場合は、Admin Portal タブを使用してください。
-
目標の現在の設定をファイルに保存します。
ags challenge goals get --namespace <YourNamespace> --challenge-code <ChallengeCode> --code <GoalCode> --format json > goal.json -
goal.jsonのtagsリストにタグを追加します。例:"tags": ["Hard"]。更新では目標全体が置き換えられるため、その他の設定はそのままにしてください。 -
編集したファイルを送信します。
ags challenge goals update --namespace <YourNamespace> --challenge-code <ChallengeCode> --code <GoalCode> --json @goal.json
ゲームクライアントでタグによって目標をグループ化またはフィルタリングする
設定したタグを持つチャレンジのすべての目標のリストを取得するには、次のコードを使用できます。
- Unreal Engine
- Unity
const FString& ChallengeCode = TEXT("specific-challenge-code");
const TArray<FString> Tags = { "Hard", "Medium" };
AccelByteOnlineSubsystemPtr->GetApiClient()->Challenge.GetScheduledChallengeGoals(
ChallengeCode, THandler<FAccelByteModelsGetScheduledChallengeGoalsResponse>::CreateLambda([]
(const FAccelByteModelsGetScheduledChallengeGoalsResponse& Response)
{
for (auto ChallengeGoalData : Response.Data)
{
FString TagList{};
for (auto Tag : ChallengeGoalData.Tags)
{
if (!TagList.IsEmpty()) TagList.Append(TEXT(":"));
TagList.Append(Tag);
}
UE_LOG(LogTemp, Warning, TEXT("Goal Name: %s Description: %s IsActive: %hhd Tags: %s"),
*ChallengeGoalData.Name, *ChallengeGoalData.Description, ChallengeGoalData.IsActive, *TagList)
}
}), FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
UE_LOG(LogTemp, Warning, TEXT("[%d]: %s"),
ErrorCode, *ErrorMessage);
}), Tags);
const string challengeCode = "specific-challenge-code";
string[] tags = { "Hard", "Medium" };
AccelByteSDK.GetClientRegistry().GetApi().GetChallenge().GetScheduledChallengeGoals(challengeCode, result =>
{
if (result.IsError)
{
// Things to do when Error happens
Debug.LogWarning($"Failed to GetChallengeGoals {result.Error.Code} : {result.Error.Message}");
return;
}
Debug.Log($"GetScheduledChallengeGoals Success");
foreach (var item in result.Value.Data)
{
string collectedTags = "";
foreach (var tag in item.Tags)
{
collectedTags += item.Tags + " ";
}
Debug.Log($"Goal Name: {item.Name} Description: {item.Description} IsActive: {item.IsActive} Tags : {collectedTags}");
}
, tags
});