我玩过使用GameCenter制作回合制游戏。据我所知,默认情况下,GameCenter假设在一些参与者中,在任何给定时间,一个玩家持有“玩棒”,并且该玩家是唯一可以影响当前游戏状态的玩家。游戏玩法是异步的,即无论谁转向它都可以花时间,其他玩家将在轮到他们时收到通知。
到目前为止,非常好。
现在我想使用GameCenter来实现一种类似但略有不同的回合制游戏:一种异步游戏,玩家可以并行转换,而不是串行玩家继承游戏。一旦所有玩家“转入”他们的行动,游戏就会处于状态。
一个很好的模型游戏就是 Rock,Paper,Scissors :两位玩家秘密决定他们的行动(“ rock ”或“ paper < / em>“,或”剪刀“)。然后将这些顺序提交给服务器的顺序是任意的;也就是说,当他们试图在正在进行的轮次中提交移动时,任何玩家都不应该得到“不轮到你”的错误。一旦他们都进入了他们的行动,所有玩家的选择都被揭示出来,并确定/宣布当前回合的获胜者。
问题是:是否有可能通过设计或解决方案将GameCenter基础设施用于此类游戏?如果是这样,什么会被认为是一个好方法?
答案 0 :(得分:1)
使用游戏中心无法按照您的建议实现此目的,但您可以采用看起来像是设法做到这一点的方法。
当你开始回合制比赛时,它始终是本地玩家的回合。游戏中心为您提供空白比赛,或者您将收到其他人已经轮到他们的比赛。没有办法控制这个,所以你需要为两者做好准备。
你可以采取的方法是让一个玩家在你向别人展示之前总是轮到他们。只有这样你才能检查在你当地的情况下,现在每个人都轮到他们并显示结果。这将提供您所要求的错觉。在Rock-Paper-Scissors的情况下,您现在可以决定匹配结果。其他玩家将收到通知。
但是,如果不是每个人都在这一轮中轮到他们,不要显示任何内容,也要更新游戏状态,但是告诉用户你现在正在等待其他人轮到他们。当你收到通知再次出现时,你将能够显示结果,游戏状态已经显示结果。