首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KryoNet sendToAllTCP vs sendTCP

KryoNet sendToAllTCP vs sendTCP
EN

Stack Overflow用户
提问于 2014-05-09 13:41:47
回答 1查看 1.2K关注 0票数 0

我正在考虑创建一个网络游戏。

游戏应该是一个2D平台射击,由Libgdx和Box2D创建。

就联网而言,我计划了以下结构:

  • 服务器和客户端是两个程序。
  • 服务器处理所有的ingame逻辑。
  • 客户端发送键/鼠标输入
  • 服务器对这些响应并更新整个级别。
  • 服务器发送这些更新(如果可能的话,每秒发送45次,这样就不需要客户端插值)
  • 客户端通过使用接收到的更新获取并更新其本地级别/世界。
  • 客户端在其view frustum中绘制内容

第一个问题:你认为这个结构怎么样?

下一个问题:每秒45次可能是从服务器端上传的大量数据,如果有几个玩家发射了大量子弹(玩家和子弹位置需要发送)。

为了限制所需的上传,我考虑使用view frustum culling,只发送客户机实际看到的数据/更新。

现在我已经看到了KryoNet方法sendToAllTCP,并想知道这个方法是否更有效,并且可以只上传一次数据,而不是每个客户端上传一次。

我没有那么有经验的人际关系,我不认为这是真的有可能有一个以上的客户端上传1。但我一定会问。

那么,用sendToAllTCP发送每个级别的更新是否更有效,还是为每个客户端发送一次,然后只发送他们可以看到的内容更有效?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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连接发送的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23566162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档