Momento Leaderboards が同順位ランキングに対応し、さらに便利に

Java 向け Momento Leaderboards が getCompetitionRanking による同順位ランキングに対応。ゲームに公平なリアルタイムランキングを簡単に実装できます。

Allen Helton Allen Helton
モニターとゲームのアイコンの横でヘッドセットを着けたリス

ランキングは、ゲーム、競技、その他のスコアベースのアプリケーションで、プレイヤーの順位を追跡するために欠かせません。Momento Cache では、プレイヤーデータのソート済みセットを使って、強力でスケーラブルなランキングを構築できます。そして今回、さらに便利になりました。Momento Java SDK が新しい getCompetitionRanking 呼び出しにより、同じスコアに同じ順位を付ける competition ranking に対応しました。

Momento のアーキテクチャは大規模ランキングの要件に対応するよう設計されており、数百万人のプレイヤーのライブランキングを支えます。実際に Raider.IO のような顧客の大規模なリアルタイムランキングを支えており、その最大のランキングでは 3,500 万件を超えるエントリーを管理しています。同順位ランキングの導入によって、この規模でも同点を扱いやすくなり、プレイヤーにとってさらに正確で直感的な順位表示を提供できます。

この機能が重要な理由

多くの競争型アプリでは、同じスコアを同じ順位として扱う必要があります。ゲーム、フィットネスアプリ、営業コンテストのどのランキングを作る場合でも、同順位ランキングは公平性を保ち、ユーザーが期待する順位付けを実現します。

新しくなった点

ほとんどのランキングでは序数順位を使い、同点のプレイヤーが複数いても、スコアに基づいて各プレイヤーに一意の数値の順位を割り当てます。序数順位は単純で広く使われていますが、複数のプレイヤーが同じスコアを達成した場合には不自然に感じられることがあります。Momento の新しい同順位ランキングは、同点のプレイヤーに同じ順位を割り当てることで、この問題に対応します。特に同点が頻繁に発生する場面で、ランキングがより明確かつ公平になります。ゲーマーや競技参加者が期待する順位の付け方に近づける改善です。

さらに、ランキングの構築方法を変更する必要はありません。 既存の構成は従来どおり動作し、getCompetitionRanking を使えば序数順位の代わりに同順位を考慮した順位を取得できます。

動作の仕組み

次のスコアを持つランキングを例にします。

プレイヤースコア序数順位同順位ランキング
Kenny30011
Khawaja27522
Ellery25033
Daniela25043
Allen22555

序数順位なら Daniela は 4 位です。しかし、同順位ランキングではスコアが同じ Daniela と Ellery はともに 3 位になります。次のプレイヤーである Allen は、4 位を飛ばして 5 位になります。

Java で getCompetitionRanking を使えば、既存のランキングに同順位の処理を簡単に組み込めます。プレイヤーの同順位を考慮した順位は、次のように取得します。

final Set<Integer> ids = Set.of(123, 456, 789);
final FetchResponse response = leaderboard.getCompetitionRank(ids, SortOrder.ASCENDING).join();
if (response instanceof FetchResponse.Success success) {
  for (LeaderboardElement element : success.values()) {
      System.out.printf( "id: %d, score: %.2f, rank: %d%n",
            element.getId(), element.getScore(), element.getRank());
  }
}

これだけです。追加のロジックや回避策は不要で、API を直接呼び出すだけで正しい同順位ランキングがすぐに返されます。

実装を始めましょう

getCompetitionRanking API は、最新版の Momento Java SDK で利用できます。

ゲームのランキングをさらに進化させませんか。 デモを予約 して、ランキング専用の API により、大規模でも同順位に対応したリアルタイムランキングを提供できる Momento の機能をご確認ください。

ぜひ開発にお役立てください。

あわせて読みたい