FC2ブログ
    07 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 09

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】Unity+Playfabのランキングについて(後半) 

    今日は関東でも雪が降るかも?って話ですね。
    寒い寒い坂内っす。

    さてさてUnity+Playfabでランキングを作りたい後半。
    前回はこちら

    統計情報にデータを入れるところまでやりました。


    今回はランキングとして登録されているものをとってくるところです。

    ランキングの取り方には2種類あります。

    ①トップランキング
     上位〇件のランキング
     
    ②自分周囲ランキング
     自分の周囲〇件ランキング
     
    ※①②ともに、同時に取得できる件数は100件?なんかそんな制限はあるようです。

    ①トップランキング

    public IEnumerator GetTop100Ranking() {
    bool isWait = true;
    var request = new GetLeaderboardRequest {
    StatisticName = "ranking_get_point",
    MaxResultsCount = 100
    };
    PlayFabClientAPI.GetLeaderboard(request, OnSuccess, OnError);

    while(isWait) {
    yield return null;
    }

    yield return retRankingDatas;

    void OnSuccess(GetLeaderboardResult result) {
    Debug.Log("トップ100ランキング:OnSuccess");
    foreach(var item in result.Leaderboard) {
    Debug.Log((item.Position + 1) + "位:" + item.DisplayName + "さん " + item.StatValue + "ポイント");
    }
    isWait = false;
    }

    void OnError(PlayFabError error) {
    Debug.Log("トップ100ランキング:OnError");
    Debug.Log(error.GenerateErrorReport());
    isWait = false;
    }
    }


    これでトップ100のデータをもってこれます。

    ②自分の周囲ランキング
    GetLeaderboardRequestをGetLeaderboardAroundPlayerRequestに変えることで、自分の周辺ランキングをもってこれます。


    public IEnumerator GetMyAroundRanking() {
    bool isWait = true;
    var request = new GetLeaderboardAroundPlayerRequest {
    StatisticName = "ranking_get_point",
    MaxResultsCount = 25 * 2 + 1
    };
    PlayFabClientAPI.GetLeaderboardAroundPlayer(request, OnSuccess, OnError);

    while(isWait) {
    yield return null;
    }

    yield return retRankingDatas;

    void OnSuccess(GetLeaderboardAroundPlayerResult result) {
    Debug.Log("自分の周辺ランキング:OnSuccess");
    foreach(var item in result.Leaderboard) {
    Debug.Log((item.Position + 1) + "位:" + item.DisplayName + "さん " + item.StatValue + "ポイント");
    }
    isWait = false;
    }

    void OnError(PlayFabError error) {
    Debug.Log("自分の周辺ランキング:OnError");
    Debug.Log(error.GenerateErrorReport());
    isWait = false;
    }
    }



    取得する件数は MaxResultsCountになります。
    自分を含め周辺何件かという計算になるので、今回は前後25件+1件(自分)をとってくるようにしています。

    こんな感じで簡単にランキングを作ることが可能です。








    ただし!ここはだめだというところがあります。
    この問題が大きすぎてPlayfabのランキングが使えるのか使えないかがはっきり分かれるところ。

    基本的にとってこれる情報が上記コードのDebugのところのデータのみ。

    名前、順位、バリューだけなんです。


    よって、ランキングで各ユーザの持っている他の情報(例えば選択しているキャラ、ほかのポイント、LVとか装備とか)を出したくても取ってくることができないらしいです。(※MSjpさん情報によると)

    さすがに順位と名前だけのランキングって・・・・まぁゲームによってはそれだけでもいいかもしれませんけど。
    ほかの情報もランキングの一覧表に出したりする場合はPlayfabのランキングではきつそうなので、気を付けてください。
    10件くらいのランキングなら、とってきたユーザIDから各ユーザのデータを持ってくることは可能ですけど。
    100件とかのランキングだとアクセス過多で通信料増えそうですしね・・・・
    本当ならば、CloudScriptを1回呼べば、その中で各ユーザの情報持ってきたりできそうですが、1CloudScriptからのAPI呼び出し回数が決められているらしいので、それもきつそうです。

    と、いうことで、Unity+Playfabのランキングでした。

    あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/670-3de83303
    この記事にトラックバックする(FC2ブログユーザー)