【问题标题】:Using GameCenter for parallel turn based games?将 GameCenter 用于并行回合制游戏?
【发布时间】:2013-01-14 19:50:31
【问题描述】:

我玩过使用 GameCenter 制作回合制游戏。我理解默认情况下,GameCenter 假定在任何给定时间,在众多参与者中,只有一名玩家持有“接力棒”,并且该玩家是唯一可以影响当前游戏状态的玩家。游戏玩法是异步的,即轮到谁都可以慢慢来,轮到其他玩家时会收到通知。

到目前为止,一切都很好。

现在我想使用 GameCenter 来实现一种类似但略有不同的回合制游戏:一种异步游戏,其中玩家不是连续的玩家连续,而是并行地进行回合,然后合并成一个新的一旦所有玩家“上交”他们的动作,游戏状态。

一个很好的模型游戏是Rock, Paper, Scissors:两个玩家都秘密决定他们的动作(“rock”或“paper”或“剪刀”)。然后将它们提交到服务器的顺序是任意的;即,当玩家尝试在正在进行的回合中提交移动时,任何玩家都不应该出现“不轮到你”类型的错误。一旦他们都上交了动作,就会显示所有玩家的选择,并确定/宣布当前回合的获胜者。

问题是:是否可以通过设计或变通方法将 GameCenter 基础架构用于此类游戏?如果是这样,什么是好的方法?

【问题讨论】:

    标签: iphone ios objective-c ipad game-center


    【解决方案1】:

    无法按照您建议的方式使用 Game Center 来实现这一点,但您可以采取一种看起来好像您确实设法做到这一点的方法。

    当您开始回合制比赛时,总是轮到本地玩家。游戏中心要么为您提供空白比赛,要么您将收到一场已经轮到其他人参加的比赛。没有办法控制这一点,因此您需要为两者做好准备。

    您可以采取的方法是让玩家在向他们展示其他人的动作之前始终轮到他们。只有这样,您才能检查在您当地的情况下,每个人现在是否都轮到他们了,并且您会显示结果。这将提供您所要求的错觉。在石头剪刀布的情况下,您现在可以决定比赛结果。其他玩家会收到通知。

    但是,如果不是每个人都在这一轮中轮到他们,请不要显示任何内容,同时更新游戏状态,但告诉用户您现在正在等待其他人轮到他们。当您被通知再次轮到您时,您将能够显示结果,并且游戏状态已经指示结果。

    【讨论】:

    • 感谢您的信息和详细建议;对此,我真的非常感激。你的方法似乎很合理。我会试一试,看看感觉如何。我的期望是,对于有两个玩家的游戏,也许是三个玩家,这会是相当不错的,但是对于更多的玩家实际上在每个人的回合中循环(即使它对用户隐藏)将开始让事情陷入困境。
    • 是的,如果有超过一回合,超过两个玩家,那会很烦人。但这就是您使用 Game Center 所能获得的一切。什么可以帮助将所有回合(可能是三个?)压缩成一个回合,因为无论如何石头剪刀布都没有策略。在这种情况下,至少在每轮淘汰赛中,可以无阻碍地为任意数量的玩家提供服务。祝你好运。
    猜你喜欢
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多