我正在开发一个实时游戏使用雪碧套件和游戏套件。该游戏的特点是一个多人模式,其中4名玩家可以玩彼此。我一直在阅读游戏工具包程序指南,并看到了以下段落:
尽管GKMatch对象在所有参与者之间创建了完全的对等连接,但可以通过在其之上分层环形或客户端服务器网络体系结构来减少网络流量。图8-1显示了四人游戏的三种可能的网络拓扑.在左边,点对点游戏在不同的设备之间有12个连接.但是,您可以通过指定其中一个设备作为主机,在此基础上对客户端服务器架构进行分层。如果您的游戏只发送到或从主机,您可以将连接的数量减半。环形结构允许设备仅将网络分组转发到下一个设备,但进一步减少了连接的数量。每个拓扑提供不同的性能特征,所以您需要测试不同的模型,以找到一个提供您的游戏所需的性能。
这就是我困惑的地方。目前在我的游戏中,我已经实现了点对点拓扑,其中每个用户发送他们的位置给每个其他玩家在游戏中。这最终总共发送了12条消息,因为每个玩家发送3条消息。
然而,根据文档,如果我在我的游戏中分层了一个客户机-服务器拓扑,我可以通过减少连接的数量来减少网络流量。如果我这样做,那么每个客户端都会将其位置发送到主机,然后主机将需要将这些位置转发给其余的客户端。因此,现在有一个播放器(主机)需要额外工作,因为客户端不再相互通信。最后我们还是收到了12条信息。主机发送9条消息(每个播放器3条消息,再加上6条用于中继其他客户端位置的消息),然后每个客户端向主机发送1条位置消息。9+1+1+1= 12条消息。这是有道理的,我们所做的只是不均匀地分发信息,所以现在一个玩家需要更努力地补妆,以减少其他玩家所做的工作。
此外,中继客户端消息需要额外的时间,因为每个客户端的位置现在都需要通过主机。
因此,虽然现在连接较少,但一个播放器发送的消息更多(9个消息),而不是每个播放器平均分配工作负载(即每个播放器发送3条消息)。这似乎会导致更大的机会发生断开连接,因为它将更容易的主机断开与比赛。
那么,有人能向我解释如何通过分层客户机-服务器拓扑来减少网络流量吗?即使整体消息是相同的,但在比赛中连接较少这一事实是否减少了网络流量?请记住,这里没有专门的服务器,我(和文档)正在讨论在对等匹配之上分层客户机-服务器拓扑。也不是主机有更大的机会断开连接,因为他发送的3X信息与其他球员一样多。毕竟,在一个短时间的数据包丢失之后,GKMatch将断开一个播放器的连接。或者仅仅是有12个连接的事实有一个更大的机会断开连接,因为应该增加的流量?
发布于 2015-04-22 00:05:27
很抱歉,对于一个描述性很强、写得很好的问题,我的回答非常简短,但答案很简单。服务器(您使用了"host“一词,但这令人困惑)不必向每个客户端发送3条单独的消息。服务器收集所有信息,只向每个客户端发送一条包含所有信息的消息。
https://stackoverflow.com/questions/29785106
复制相似问题