Skip to main content
XBOX services のリーダーボードは、ユーザー統計から派生し、クエリによって構築されます。これは、API にアップロードされる「スコア」で駆動される Steam のリーダーボードとは異なります。実績と同様、XBOX Game Development Kit (GDK) には、event-based と title-managed の 2 つの統計 API があります。実績とは異なり、title-managed よりも event-based の統計とリーダーボードを使用することを推奨します。このトピックではその API に焦点を当てます。この 2 つの API の違いの詳細については、Event-based と title-managed Stats を参照してください。 両方のプラットフォームは、それらのポータルでリーダーボードを定義します。違いは、XBOX services では最初に Partner Center で stat ルールを定義し、そのルールが駆動する統計に基づいてリーダーボードを構築することです。一方、Steam ではこの 2 つを区別しません: ポータルまたはプログラム的にリーダーボードを作成し、そのリーダーボードに直接ユーザー スコアをアップロードします。 Steam Leaderboard API と比較して、これらの各 API がどのように使用できるかを説明するため、Steam SDK と event-based XBOX Game Development Kit (GDK) の stats プラットフォーム上で、最長走破距離用のリーダーボードを作成する方法(この例は Steamworks API ドキュメントから)についてのコード例を提供します。以下のセクションはロジックを説明します。

ポータルで stat / リーダーボードを作成する

Steamworks

Steamworks 管理ポータルで、Stats & Achievements > Leaderboards に移動します。次のスクリーンショット(Steamworks ドキュメントから)に示すようにフォームを入力します。

XBOX Game Development Kit (GDK)(event-based)

Partner Center でゲームに移動し、XBOX services > Gameplay settings を選択します。右ペインのナビゲーション バーで、Player Stats > Stat Rules を選択し、stat の要件に合わせて構成した Show として stat ルールを追加します。stat の更新には、プレイヤー(ユーザー)が前回の更新以来どれだけ移動したかの計算値が含まれるため、サービスがこの値を取得する測定フィールドを指定します。
イベントを更新するデータを、イベントの Measurements または Dimensions フィールドに保存しても機能的な違いはありません。2 つのフィールドは Application Insights で使用するために存在します。この詳細については、[Application Insights API for custom events and
metrics](https://learn.microsoft.com/en-us/azure/azure-monitor/app/api-custom-events-metrics) を参照してください。 次のスクリーンショットは、Partner Center で stat ルールを作成するのに使用されるフォームを示しています。 保存した後、右ペインの上部バーで Leaderboard を選択し、以下のスクリーンショットに示すように、作成した stat が駆動する新しいリーダーボードを作成します。

スコアをアップロードする

Steamworks

Steamworks では、移動したフィートの新しい合計値を計算し、ISteamUserStats::UploaderLeaderboardScore メソッドを使用して API に送信する必要があります。

XBOX Game Development Kit (GDK)(event-based)

XBOX Game Development Kit (GDK) のイベントベース stats では、イベント受信時にこの stat をインクリメントすることを指定し、この diff 値を measurements JSON 文字列のどこに見つけるかを指定しているため、移動したフィートの差分を XblEventsWriteInGameEvent に渡すだけです。以下に示します。
詳細については、Writing an event to power an event-based Stat を参照してください。

グローバル リーダーボードを取得する

Steamworks SDK では、ISteamUserStats::GetLeaderboardEntries を呼び出し、callback 関数内で ISteamUserStats::GetDownloadedLeaderboardEntry を呼び出してリーダーボードの各エントリ、つまり「行」を取得することで、グローバル リーダーボードを取得できます。

Steamworks

XBOX Game Development Kit (GDK)(event-based)

XBOX Game Development Kit (GDK) API は類似のパターンに従います。どのリーダーボードが必要か、どのスコープをカバーするか、どう並べ替えるか、含める追加フィールド(ある場合)などを指定するクエリを構築します。クエリで XblLeaderboardGetLeaderboardAsync を呼び出した後、XblLeaderboardGetLeaderboardResultSizeXblLeaderboardGetLeaderboardResult を使用して、指定されたバッファに結果を入れ、次のコード例に示すようにそれらを反復処理できます。
詳細については、以下を参照してください。

ソーシャル リーダーボードを取得する

Steamworks では、ELeaderboardDataRequest::k_ELeaderboardDataRequestFriends 列挙型を使用してリーダーボードを現在のユーザーのフレンドにスコープできます。 XBOX Game Development Kit (GDK) では、これは ソーシャル リーダーボード として知られています。XBOX services からソーシャル リーダーボードを取得するには、XblLeaderboardQuery 構造体で xboxIUserId を XBOX services にサインインしている現在のユーザーの XBOX User ID (XUID) に、leaderboardNamenullptr に、socialGroupXblSocialGroupType::People または XblSocialGroupType::Favorites に設定します。前述のように XblLeaderboardGetLeaderboardAsync を呼び出します。 詳細については、XblSocialGroupType を参照してください。 Steam のようなリーダーボードを生成するために使用される通常のユーザー統計に加えて、XBOX services には Featured Stats と呼ばれる追加のコンセプトがあります。Featured Stats は、ゲームのために XBOX エコシステム全体のいくつかの異なるサーフェスに表示され、ユーザーの統計の値や既に生成されているリーダーボードを表示できます。ゲームには最大 20 個の Featured Stats を作成できます。 Featured Stats とその追加方法の詳細については、Featured Stats overviewPortal configuration of event-based Featured Stats を参照してください。

レート制限

イベントを書き込むとき、XBOX Services API (XSAPI) をあまりに頻繁に呼び出さないように注意してください。呼び出しすぎると、ゲームがレート制限に達する可能性があります。これは、ユーザーにとって予期しない挙動と悪い体験を引き起こす可能性があります。これは Steam では問題ではない XBOX services 固有の懸念です。Steam に stat 値を書き込むことは、ゲームが明示的にそれらを同期するまでサーバーへの API 呼び出しを引き起こしません。 頻繁に発生するイベントについては、ある数のイベントが発生した後に、または一定の時間間隔でサーバー上で更新するように、API 呼び出しをバッチ処理してみてください。 XBOX Live Trace Analyzer (XblTraceAnalyzer.exe) を使って API 呼び出しをデバッグできます。 XBOX services のレート制限の詳細については、Fine-Grained Rate Limiting を参照してください。
最終更新日 2026年8月24日