はじめに
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();