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

コンテンツ閲覧のための高度なフィルターを設定する

Last updated on July 15, 2026

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

概要

開発者による公式コンテンツ、あるいはプレイヤーによるユーザー生成コンテンツ (UGC) など、多くのコンテンツが作成される中で、コンテンツの閲覧は困難で時間のかかる作業になりがちです。AccelByte Gaming Services (AGS) では、プレイヤーが自分のニーズに合わせてコンテンツを選択・フィルタリングできる仕組みを提供しており、これによりプレイヤーは自分の個性、好み、スタイルを反映したコンテンツを選ぶことができます。

このガイドでは、コンテンツにタグ、タイプ、サブタイプを実装する方法、およびそれらを使ってゲームクライアントからコンテンツをフィルタリングする方法を学びます。

browsing content sample image 01 browsing content sample image 02

目標

このガイドの目標は、以下の方法を説明することです。

  • 事前定義されたタグ、タイプ、サブタイプを設定する。
  • コンテンツにタグ、タイプ、サブタイプを追加する。
  • コンテンツフィルタリングを実装する。

前提条件

以下へのアクセスが必要です。

コンテンツのタグ、タイプ、サブタイプを設定する

UGC を分類するために使用できるタイプタグを作成できます。例えば、車のカスタムデザインでは、タイプとしてVehicleサブタイプとしてBodyWheelsを設定できます。タグにはCarVehicleBodyなどを含めることができます。

事前定義されたタグを設定する

  1. ゲームの名前空間で、Engagement > UGC > Tags に移動します。

  2. Tags ページで、+ New Tag ボタンをクリックします。

    New Tag button

  3. Add New Tag フォームで、新しいタグの名前を入力し、Add をクリックします。

    Add New Tag form

    新しいタグがタグリストに追加されます。

    Tags list

事前定義されたタイプを設定する

  1. ゲームの名前空間で、Engagement > UGC > Types に移動します。

  2. Types ページで、+ New Type ボタンをクリックします。

    New Type button

  3. Add New Type フォームで、新しいタイプの名前を入力し、Add をクリックします。新しいタイプがリストに追加されます。

    Add New Type form

  4. タイプの Action メニューにある View をクリックすることで、サブタイプを追加することもできます。

事前定義されたサブタイプを設定する

  1. ゲームの名前空間で、Engagement > UGC > Types に移動します。Types ページが表示されます。

  2. タイプのリストから、サブタイプを追加したいタイプを見つけ、その横にある View オプションをクリックします。

    Types list

  3. タイプの詳細ページで、+ New Subtype ボタンをクリックします。

    New Subtype button

  4. Add New Subtype フォームで、新しいサブタイプの名前を入力し、Add をクリックします。

    Add New Subtype form

    新しい Subtype がリストに追加されます。

    Subtypes list

コンテンツのタグ、タイプ、サブタイプを更新する

  1. Admin Portal のサイドバーで、Engagement > UGC > Lookup UGC に移動します。

  2. Lookup UGC ページでは、コンテンツ名、ID、タイプ、サブタイプ、タグ、共有コード、ユーザー ID を使ってコンテンツを検索できます。

  3. 検索結果から、更新したいコンテンツを見つけて開きます。

    Contents search results

  4. コンテンツの詳細ページで、以下のようにコンテンツを更新できます。

    • タイプとサブタイプを変更する。Type または Subtype フィールドの横にある編集(鉛筆)アイコンをクリックします。

      Edit type or subtype

      Edit Type and Subtype フォームで、必要に応じて値を変更し、Add をクリックして変更を保存します。

      Edit type and subtype form

    • タグを追加する。Tag フィールドの Add More オプションをクリックします。

      Add more tags

      Add New Tag フォームで、追加したいタグを作成するか、事前定義されたタグリストから選択します。その後、Save をクリックします。

      Add new tag

クライアント SDK を使ってコンテンツにタグ、タイプ、サブタイプを追加する

以下の関数を使うと、コンテンツを作成する際にタグ、タイプ、サブタイプなどのプレイヤーコンテンツメタデータを設定できます。

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString ChannelId = "YourChannelId";
FAccelByteModelsCreateUGCRequestV2 UGCRequest = {};
UGCRequest.ContentType = "application/octet-stream";
UGCRequest.FileExtension = "bin";
UGCRequest.Name = "Custom sports body";
UGCRequest.Type = "Vehicle";
UGCRequest.SubType = "Body";
UGCRequest.Tags = { "Red", "Sporty"};

ApiClient->UGC.CreateV2Content(ChannelId, UGCRequest, THandler<FAccelByteModelsUGCCreateUGCResponseV2>::CreateLambda([](const FAccelByteModelsUGCCreateUGCResponseV2& Result)
{
// Do something if CreateV2Content succeeds
}), FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if CreateV2Content fails
}));

以下の関数を使うと、タグ、タイプ、サブタイプなどのプレイヤーコンテンツメタデータを更新できます。

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString ChannelId = "YourChannelId";
FString ContentId = "YourContentId";

FAccelByteModelsModifyUGCRequestV2 ModifyRequest = {};
ModifyRequest.Name = "Custom sports body";
ModifyRequest.Type = "Vehicle";
ModifyRequest.SubType = "Body";
ModifyRequest.Tags = { "Blue", "Sporty", "Body"};

ApiClient->UGC.ModifyV2Content(ChannelId, ContentId, ModifyRequest, THandler<FAccelByteModelsUGCModifyUGCResponseV2>::CreateLambda([](const FAccelByteModelsUGCModifyUGCResponseV2& Result)
{
// Do something if ModifyV2Content succeeds
}), FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if ModifyV2Content fails
}));

コンテンツフィルタリング

コンテンツフィルタリングとは、タグ、キーワード、タイプなどのさまざまな条件に基づいて UGC を検索、並べ替え、表示するプロセスです。コンテンツフィルタリングは、プレイヤーが自分の好み、興味、スキルレベルに合った UGC を見つけて楽しむ助けにもなります。

コンテンツ名でコンテンツを検索する

コンテンツ名を使ってコンテンツをフィルタリングするには、次の関数を使用します。

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FAccelByteModelsUGCFilterRequest Filter = {};
Filter.Name = "Content Name";

ApiClient->UGC.SearchV2Contents(Filter,
THandler<FAccelByteModelsUGCGetPaginatedUGCContentsResponse>::CreateLambda([](const FAccelByteModelsUGCGetPaginatedUGCContentsResponse& Result)
{
// Do something if SearchV2Contents succeeds
}), FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if SearchV2Contents fails
}));

タグを使ってコンテンツをフィルタリングする

高度なタグフィルタリングでは、AND 演算子として &OR 演算子として |、優先順位を示すために括弧 () を使用できます。例:

tags=sporty
tags=sporty&red
tags=sporty|red
tags=sporty&red|classic
tags=sporty&(red|classic)

論理演算子の優先順位は AND > OR であるため、括弧がない場合は AND 論理演算子が先に実行されます。

オペランドで使用できる文字: 英数字、アンダースコア _、ダッシュ -
演算子で使用できる文字: & | ( )
tags=sporty&red|classic は次と等価です: tags=sporty,red|classic および tags=sporty&tags=red|classic

タグを使ってコンテンツをフィルタリングするには、次の関数を使用します。

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FAccelByteModelsUGCFilterRequest Filter = {};
Filter.Tags = { "Sporty", "Red|Classic" };

ApiClient->UGC.SearchV2Contents(Filter,
THandler<FAccelByteModelsUGCGetPaginatedUGCContentsResponse>::CreateLambda([](const FAccelByteModelsUGCGetPaginatedUGCContentsResponse& Result)
{
// Do something if SearchV2Contents succeeds
}), FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if SearchV2Contents fails
}));

タイプとサブタイプを使ってコンテンツをフィルタリングする

タイプとサブタイプを使ってコンテンツをフィルタリングするには、次の関数を使用します。

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FAccelByteModelsUGCFilterRequest Filter = {};
Filter.Type = "Content Type";
Filter.SubType = "Content Subtype";

int32 Limit = 1000;
int32 Offset = 0;

EAccelByteUGCContentSortBy SortBy = EAccelByteUGCContentSortBy::CREATED_TIME_DESC;

ApiClient->UGC.SearchV2Contents(Filter,
THandler<FAccelByteModelsUGCGetPaginatedUGCContentsResponse>::CreateLambda([](const FAccelByteModelsUGCGetPaginatedUGCContentsResponse& Result)
{
// Do something if SearchV2Contents succeeds
}), FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if SearchV2Contents fails
}), Limit, Offset, SortBy);

コンテンツを並べ替える

並べ替えフィールドを使用して、ゲーム内で UGC を表示する方法をカスタマイズできます。AGS は、いいね数、作成日時、ダウンロード数、コンテンツ名に基づくコンテンツリストの並べ替えに対応しています。

サポートされている並べ替えオプションは以下の通りです。

  • createdTimecreatedTime:desccreatedTime:asc
  • downloaddownload:descdownload:asc
  • likelike:desclike:asc
  • namename:descname:asc

例えば、最新の UGC を確認したい場合は createdTime:desc を使用して作成日を降順で並べ替えることができます。最も人気のある UGC を確認したい場合は like:desc を使用していいね数を降順で並べ替えることができます。UGC をアルファベット順に表示したい場合は name:asc を使用して名前を昇順で並べ替えることができます。ダウンロード数で並べ替えるには download を使用することもできます。

コンテンツを並べ替えるには、次の関数を使用します。

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FAccelByteModelsUGCFilterRequest Filter = {};
Filter.Name = "Content Name";
Filter.Type = "Content Type";
Filter.SubType = "Content Subtype";
Filter.Tags = { "Sporty", "Red|Brown" };

int32 Limit = 1000;
int32 Offset = 0;

EAccelByteUGCContentSortBy SortBy = EAccelByteUGCContentSortBy::CREATED_TIME_DESC;

ApiClient->UGC.SearchV2Contents(Filter,
THandler<FAccelByteModelsUGCGetPaginatedUGCContentsResponse>::CreateLambda([](const FAccelByteModelsUGCGetPaginatedUGCContentsResponse& Result)
{
// Do something if SearchV2Contents succeeds
}), FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if SearchV2Contents fails
}), Limit, Offset, SortBy);