我正在使用 Game Center 创建实时比赛,并且正在研究重新启动按钮。游戏结束后,您将进入另一个屏幕,显示每个人的得分,并且该屏幕上有一个重新启动按钮。如果有人按下它,他们的名字就会变成绿色,如果他们离开游戏,他们的名字就会变成红色。一旦每个人都点击重新启动或离开游戏,游戏将通过再次呈现游戏场景来重新启动。
问题是,他们在执行此操作的时间略有不同,有时其中一个设备会在其他设备到达游戏场景之前向其他设备发送信号,因此消息不会被解释并且只是丢失。所以我的问题是,有什么办法可以确保所有玩家完全相同的时间进入下一个场景?
最佳答案
场景加载后,您可以进行同步步骤。您永远无法保证每个人都以相同的时间/速率加载。
所以,
- 1-示意大家加载,
- 2-每个人都在加载,
- 3-暂不显示场景或渲染任何相关内容,
- 4-等待每个人都发出就绪信号(有些人可能必须 重复发送就绪信号以解决边界加载问题 问题),
- 5-每个人都收到就绪信号,
- 6-用户现在可以显示场景,
- 7- 通过向每个人发送另一个“就绪信号”来进行最后一次检查 (同样,有些可能需要多次广播),
- 8- 当收到每个人的最后一个信号确认后,比赛就可以开始了。
这种冗余是为了确保用户能够在展示场景之前和之后适本地进行广播。当然,在这个过程中有很多隐式的错误检查和超时检查,如果有一个流浪用户无法广播,那么他们可能只需要考虑在给定的时间后启动比赛,这样其他人就可以了玩家仍然可以玩。
此外,这是我将尽可能多的内容同步到您可以尝试并确保信号不会丢失的最佳方法。执行同步程序,然后开始发送相关信号。
您无法保证不同用户下一屏幕的准确时间,您可以让它们尽可能接近。
重要的部分不是屏幕显示,而是确保所有用户处于正确的状态以接收其他人广播的下一组数据。
不同的互联网速度和不同的设备速度总是会阻碍完美的视觉同步。
关于ios - 重新启动游戏游戏中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32179423/