0

我正在开发一个使用游戏中心的回合制游戏。我不在本地保存任何匹配数据。游戏进行时,其中一名玩家结束游戏并为他自己提交分数。当其他玩家启动游戏时,他会从游戏中心获取所有匹配项(包括已完成的匹配项)。我的问题是,我无法确定我已经提交了哪个游戏的分数。为了更好地理解,我列出了场景的步骤。

  • 鲍勃开始比赛
  • 爱丽丝接受比赛
  • 爱丽丝上场并结束回合
  • 鲍勃上场并结束回合
  • ...
  • ...
  • ...
  • Bob 结束比赛并将他的分数提交到排行榜
  • Alice 启动游戏并从游戏中心获得 10 场已完成的比赛。

现在我怎么知道我提交了哪些比赛的分数。据我所知,比赛结束后我无法更新比赛数据。所以我不能再保存任何标志来匹配数据了。

我是不是出了点问题,过早结束了比赛?所有玩家都必须等待其他玩家提交他们的分数吗?

我必须在本地保存比赛数据吗?

我还想使用比赛的最后回合日期并在本地保存“最后得分提交日期”。

在本地保存匹配数据或日期对多个设备不利。

4

3 回答 3

1

要尝试的另一件事:如果您使用的是 Game Center 的排行榜,您可以检查contextplayerID[1] 属性。然后,当客户端注意到游戏 G 已经结束但不确定分数是否已经发布时,首先从排行榜下载本地的排行榜分数,playerID并检查是否context与刚刚完成的游戏 G 的分数相同matchID

如果没有,请发布分数并在分数属性中留下matchID作为提示。context

[1] https://developer.apple.com/library/mac/#documentation/GameKit/Reference/GKScore_Ref/Reference/Reference.html#//apple_ref/occ/instm/GKScore/reportScoreWithCompletionHandler

于 2013-05-16T12:42:21.683 回答
0

I have found a solution after NSSplendid had pointed me the context property. Every time I set the context property of the score timeIntervalSince1970 and I compare the last turn date of the match with it. Actually the GKScore has already the date property, but setting context worked for me better. Because of multiple matches and single player score reports.

于 2013-06-10T08:36:55.550 回答
0

每个GKTurnBasedMatch人都有matchID财产。使用它来唯一标识游戏并在本地记住本地用户是否已经提交了分数。

如果用户在一个帐户但许多设备上玩游戏,我建议通过 iCloud 键值存储同步提交的分数列表,以避免高分中的双重分数。

于 2013-05-14T13:29:05.280 回答