GMCloud和GameMaker第6部分:高分和排名

GMCloud的“高分”服务可用于跟踪玩家的分数和等级。 当前,只有高分服务可用。 玩家排名模式(每位玩家只允许在分数表中输入一个条目,每次提交新分数时都会更新)。

假设您到目前为止已经阅读了所有先前的部分(特别是第1部分,第2部分和第3部分以及第5部分),那么应该使用highscore系统。

提交高分

高分与玩家帐户相关,因此玩家需要已经与游戏相关联(如前所述)。 就像使用Cloud Saves一样,发出高分提交请求的库函数如下所示,假设我们登录的播放器的linkId和linkSecret存储在ds_map中:

  uuid = gmcloud_add_score(data [?“ linkId”],data [?“ linkSecret”],score); 

分数是0到999,999,999,999之间的整数。 分数将四舍五入; 并且超出此范围的数字将被限制。

该请求的结果是一个与该新分数在“高分”表中的等级相对应的等级。 如果分数高于表中所有其他分数,则排名将为1。如果分数低于表中所有其他分数,则排名将等于表中分数的数量。

可以像前面部分一样从结果中提取排名:

 如果(gmcloud_result_exists(uuid)){ 
var rank = real(gmcloud_result_pop(uuid));
//现在我们有了等级值
}
否则(gmcloud_error_exists(uuid)){
var error = gmcloud_error_pop(uuid));
//这是一个错误
}

获得玩家当前的高分

玩家当前在游戏中的最高得分以及该得分的排名可以通过以下方式找到:

  uuid = gmcloud_get_myscorerank(data [?“ linkId”],data [?“ linkSecret”]); 

请求的结果是一个JSON,其中包含玩家迄今为止已提交的最高得分的score键,以及一个包含该得分等级的rank键。 要解码,我们可以这样做:

 如果(gmcloud_result_exists(uuid)){ 
var scores = gmcloud_result_pop(uuid);
var data = json_decode(scores);

//我们现在对数据做些什么? “分数”]和数据[? “秩”]

ds_map_destroy(数据);
}

玩家当前的最高分数也存储在他们的游戏资料中highScore键下

获得游戏的高分

获取领导者表有两种方法:登录和不登录。

如果登录,则可以使用以下内容:

  uuid = gmcloud_get_topscoresowner(data [?“ linkId”],data [?“ linkSecret”],5); 

最后一个参数是要下载的高分的数量,当前最高为20分。

如果未登录,则可以使用以下内容:

  uuid = gmcloud_get_topscores(5); 

两者都请求相同的数据,但是gmcloud_get_topscoresowner将包含一个名为you的额外密钥you指示高分是否属于您。 这是为了便于在用户界面中突出显示玩家自己的分数。

返回格式类似于以下JSON:

  [ 
{
“ displayName”:“ meseta”,
“您”:是的,
“等级”:1
“分数”:999999,
“创建”:1547297937
},
{
“ displayName”:“ steve”,
“您”:错误,
“等级”:2
“分数”:9999,
“创建”:1547297922
},
{
“ displayName”:“匿名”,
“您”:错误,
“等级”:3,
“得分”:55,
“创建”:1547297788
},
...

注意:使用GML的json_decode导入时,将使用包含列表的default密钥创建ds_map。 处理此问题的代码可能类似于:

 如果(gmcloud_result_exists(uuid)){ 
var scores = gmcloud_result_pop(uuid);
var data = json_decode(scores);
var score_list = data [? “默认”];

for(var i = 0; i <ds_list_size(score_list); i ++){
var score_entry = score_list [| 一世];
//现在可以使用以下值:
// score_entry [? “秩”]
// score_entry [? “显示名称”]
// score_entry [? “得分了”]
// score_entry [? “创建”]
// score_entry [? “ you”]-如果您使用了gmcloud_get_topscoresowner
}
  ds_map_destroy(数据); 
}

在线查看高分

高分也可以在GMCloud网站上的游戏页面上找到,并且可能看起来像这样(如果我是您的唯一玩家)

注意记分乏味的重复等级6。 当多个得分条目具有相等的值时,它们将获得相同的排名。 但是,这将导致省略下一个等级。 在上面的示例中,由于等级6出现了额外的2次,因此等级7和8将被跳过,而下一个等级为9。 而排名6是最高的第六名。

而已! 您现在可以在GM内部提交和阅读高分。 GMCloud网站上游戏页面上也提供了一个仪表板,为人们查看高分提供了一个中心位置。