我正在使用Sprite Kit和Game Kit开发实时游戏。该游戏具有多人游戏模式,其中4个玩家可以互相玩耍。我一直在阅读Game Kit编程指南,并看到了以下段落:
尽管GKMatch对象创建了完整的对等连接 在所有参与者之间,可以减少网络流量 在其上层叠环网或客户端 - 服务器网络架构。 图8-1显示了四个播放器的三种可能的网络拓扑 游戏。在左边,一个点对点游戏之间有12个连接 各种设备。但是,您可以分层客户端 - 服务器体系结构 最重要的是通过提名其中一个设备充当主机。如果 您的游戏仅向主机发送或从主机发送,您可以将号码减半 连接。环形架构允许设备转发网络 数据包只能到下一个设备,但进一步减少了数量 连接。每种拓扑提供不同的性能 特征,所以你会想要测试不同的模型来找到一个 它提供了游戏所需的性能。
所以这里是我困惑的地方。目前在我的游戏中我已经实现了对等拓扑,其中每个用户将他们的位置发送给游戏中的每个其他玩家。这最终总共发送了12条消息,因为每个玩家发送3条消息。
但是根据文档,如果我在游戏中分层客户端 - 服务器拓扑,我可以通过减少连接数来减少网络流量。如果我这样做,那么每个客户端都会将他们的位置发送给主机,然后主机需要将这些位置转发给其余的客户端。所以现在一个玩家(主机)需要额外工作,因为客户端不再相互通信。然后我们最终得到12条消息。主机发送9条消息(每个播放器发送3条消息,加上6条消息,用于中继其他客户机的位置),然后每个客户机向主机发送1条消息。 9 + 1 + 1 + 1 = 12条消息。这是有道理的,我们所做的只是不均匀地分发信息发送,所以现在一个玩家需要更努力地化妆,以减少其他玩家正在做的工作。
此外,中继客户端消息需要额外的时间,因为现在每个客户端的位置都需要通过主机。
因此,虽然现在有更少的连接,但是一个玩家正在发送更多消息(9个消息),而不是每个玩家均匀地分配工作量(即每个玩家发送3个消息)。这似乎会导致断开连接的可能性更大,因为主机更容易与匹配断开连接。
有人可以通过分层客户端 - 服务器拓扑向我解释网络流量是如何减少的吗?即使整体消息相同,匹配中连接较少的事实是否会减少网络流量?请记住,这里没有专用服务器,我(和文档)谈论的是在点对点匹配之上分层客户端 - 服务器拓扑。主机也没有更大的机会断开连接,因为他发送的消息数量是其他玩家的3倍。毕竟,GKMatch会在短暂的数据包丢失后断开播放器的连接。或者只是因为所谓的流量增加,有12个连接的事实有更大的机会断开连接?
答案 0 :(得分:1)
对于一个描述性很好且写得很好的问题,我很抱歉,答案很简单。服务器(您使用术语“主机”,但这令人困惑)不必向每个客户端发送3个单独的消息。服务器收集所有信息,并仅向每个客户端发送包含所有信息的一条消息。