Gs2-Rankingを使おうとしています。
以前使っていたmbaasからランキングデータを移行するために
UnityではなくC#のコンソールアプリから
ユーザーの新規作成とスコアの登録を15回繰り返しました。
APIがエラーを返している様子はなく、
マネージメントコンソールからも
ユーザーIDに対してスコアが登録されているのが見えるにも関わらず、
一部のスコアがランキングに反映されていないように見えます。
スコアの最小最大値にも引っかかっていないはずです。
ネームスペースを作り直してやり直してみたところでは
同じような結果に見えるのでランダム発生ではないのかもしれませんが、
今のところ規則性も不明です。
以下にコードの抜粋を載せます。
ConnectAndLogin();
string category = "HiScore_Normal4";
//string category = "HiScore_Normal_Archer5";
//string category = "HiScore_Hard4";
//string category = "HiScore_Hard_Archer5";
string ranking_namespace = "Fanatic_Zeal4";
using (var sr = new System.IO.StreamReader($"{category}.json"))
{
string sample = sr.ReadToEnd();//補足を参照
Console.WriteLine("json形式に変換");
JObject jsonObj = JObject.Parse(sample);
Console.WriteLine("読み込み結果表示");
foreach (JObject element in jsonObj["results"])
{
string name = element["name"].ToString();
long score = (long)element["score"];
string stage = element["stage"].ToString();
string item = element["item"].ToString();
string area = element["area"].ToString();
Console.WriteLine($"name={name},score={score},stage={stage},item={item},area={area}");
(string, string) userpass = CreateNewUser();
//Login(userpass.Item1,userpass.Item2);
var request = new Gs2.Gs2Ranking.Request.PutScoreByUserIdRequest();
//var request = new Gs2.Gs2Ranking.Request.PutScoreRequest();
request.CategoryName = category;
request.Score = score;
request.Metadata = $"{name},{ stage},{ item},{ area}";
//request.AccessToken = accesstoken;
request.UserId = userpass.Item1;
request.NamespaceName = ranking_namespace;
if (score <= 100000)
{
var result = ranclient.PutScoreByUserIdAsync(request);
//var result = ranclient.PutScoreAsync(request);
result.Wait();
if(!result.IsCompletedSuccessfully)
{
throw new Exception("失敗");
}
}
}
}
{
//Login("0579bd04-aa59-4337-8082-6f3de56bea5e", "qAzCZtmRgcboXlaAjRcREyudmxyAeVCE");
var request = new Gs2.Gs2Ranking.Request.CalcRankingRequest();
request.CategoryName = category;
request.NamespaceName = ranking_namespace;
var result = ranclient.CalcRankingAsync(request);
result.Wait();
while (result.Result.Processing.Value) ;
}
ご教示のほどよろしくお願いいたします。