GS2 Blog

Game Server Services(https://gs2.io/) の最新情報をお届けします

GS2-Ranking に期間スコープ機能が追加されました

はじめに

GS2-Ranking はスコアやクリアタイムをプレイヤー間で競う仕組みを提供します。

機能追加の背景

これまで、GS2-Ranking は2種類のランキング機能を提供してきました。
1つ目はグローバルランキング、2つ目はスコープランキングというものです。

グローバルランキング

プレイヤー全体でスコアを競う仕組みです

スコープランキング

フレンド内など、フォローしたプレイヤー内でスコアを競う仕組みです。
今回機能が追加されたのは 《グローバルランキング》 です。

これまで、グローバルランキングは全てのプレイヤーのスコアを受け付け、原則スコアは削除されません。
そのため、週間ランキングのような一定期間で区切ったグローバルランキングを実現したい場合、定期的にスコアの登録を受け付けるランキングカテゴリを切り替えるといった対応が必要でした。

追加された機能の詳細

ランキングカテゴリのパラメーターに《追加集計期間スコープ》という概念が追加されました。
従来の全てのスコアを対象にランキングを計算するのとは別に、この機能により指定した期間に登録されたスコアのみを対象としたランキングを計算することが可能となります。

例えば、以下のようにスコアが登録されたとします。

日付 ユーザーID スコア
2023-01-01 user-0001 100
2023-01-01 user-0002 200
2023-01-10 user-0003 300
2023-01-10 user-0004 400

これを従来のグローバルランキングで昇順でならべると、以下のように順位が計算されます。

順位 ユーザーID スコア
1 user-0001 100
2 user-0002 200
3 user-0003 300
4 user-0004 400

それでは、今回追加された《追加集計期間スコープ》に過去7日に登録されたスコアのみを対象として集計するようにし
2023年1月11日に集計を行なった結果は以下です。

順位 ユーザーID スコア
1 user-0003 300
2 user-0004 400

このように、プレイヤーの新陳代謝にあわせてランキングの内容も新陳代謝することができるようになります。

利用料金に関する注意点

GS2-Ranking のグローバルランキングは15分〜24時間で指定した周期で集計処理を実行します。
集計処理にはランキング参加者1万人ごとに2円の集計コストが発生します。

今回の《追加集計期間スコープ》を利用する場合、スコープごとに別途集計費用が発生します。

Unity からの使用例

         var result = await gs2.Ranking.Namespace(
                "ranking"
        ).Me(
                GameSession
        ).RankingsAsync(
                "category-0003",
                "weekly" // ここに《追加集計期間スコープ名》を指定できるようになりました。省略すると従来通り全てのスコアを対象としたランキングを取得できます
        ).ToListAsync();
(C) Game Server Services, Inc.