我正在考虑创建一个网络游戏。
游戏应该是一个2D平台射击,由Libgdx和Box2D创建。
就联网而言,我计划了以下结构:
view frustum中绘制内容第一个问题:你认为这个结构怎么样?
下一个问题:每秒45次可能是从服务器端上传的大量数据,如果有几个玩家发射了大量子弹(玩家和子弹位置需要发送)。
为了限制所需的上传,我考虑使用view frustum culling,只发送客户机实际看到的数据/更新。
现在我已经看到了KryoNet方法sendToAllTCP,并想知道这个方法是否更有效,并且可以只上传一次数据,而不是每个客户端上传一次。
我没有那么有经验的人际关系,我不认为这是真的有可能有一个以上的客户端上传1。但我一定会问。
那么,用sendToAllTCP发送每个级别的更新是否更有效,还是为每个客户端发送一次,然后只发送他们可以看到的内容更有效?
发布于 2014-05-10 16:15:46
KryoNet是开源的,您可以看到它在这里做什么:https://github.com/EsotericSoftware/kryonet
sendToAllTCP方法在这里:https://github.com/EsotericSoftware/kryonet/blob/master/src/com/esotericsoftware/kryonet/Server.java#L447
sendToAllTCP方法只是在TCP连接上循环并向每个连接发送相同的数据。源中有一个注释,它们应该只序列化数据一次,并多次发送序列化对象,但它还没有这样做。
通常,在一次发送中向多个主机发送数据的能力称为“多播”。由于许多原因,它不是一般可用的,只有在高度专业化的情况下才有用。请参阅IPMulticasting.htm
与服务器发送数据包的原始能力相比,您将要遇到的性能问题更有可能发生在internet延迟上。我不会太担心优化TCP连接发送的问题。
https://stackoverflow.com/questions/23566162
复制相似问题