我有一个有两个玩家的GKMatch游戏,我用match.send((.将数据从一个玩家发送到另一个玩家
正如我所理解的,在没有服务器的对等比赛中,其中一名玩家将充当主机,从主机的设备中确定一些游戏逻辑。
我不知道如何将玩家设置为游戏主机,因为除了chooseBestHostingPlayer((之外,我看不到GameKit中的任何帮助功能,但返回是可选的,那么确定主机的保证方法是什么?
此外,在确定主机后,我是否仍会使用相同的sendMethod(如match.send(((来更新游戏状态,然后检查以确保只有当玩家是主机时才发送?
如对本主题有任何澄清,我们将不胜感激。
chooseBestHostingPlayer()
实际上只是一个帮助找到网络连接最好的玩家的工具。你不必使用这个函数。
你可以用自己的方式来决定谁是";主机";或";服务器";。例如:通过投掷骰子
- 在游戏开始之前,每个客户端生成一个随机数并将其发送给其他玩家
- 编号最高的一个将成为主机
- 每个客户都会知道他们是否是主机,因为他们都有相同的随机数列表
- 在此之后;协商";,主机客户端然后可以发送开始游戏的命令
这里可以找到一个例子:https://www.kodeco.com/2485-game-center-tutorial-how-to-make-a-simple-multiplayer-game-with-sprite-kit-part-2-2(这是旧的Objc代码,但对其机制进行了解释(。
- 如果主机断开连接,每个客户端都会收到一条断开连接的消息,他们可以再次检查号码列表,以确定谁现在是新主机