【发布时间】:2014-05-09 13:41:47
【问题描述】:
我正在考虑创建一款网络游戏。
游戏应该是 2D 平台射击游戏,使用 Libgdx 和 Box2D 创建。
对于网络,我计划了以下结构:
- 服务器和客户端是 2 个程序
- 服务器处理所有游戏逻辑
- 客户端发送键/鼠标输入
- 服务器对这些做出反应并更新整个关卡
- 服务器发送这些更新(如果可能,每秒 45 次,因此不需要客户端插值)
- 客户端获取更新并使用收到的更新更新其本地级别/世界
- 客户端在其
view frustum中绘制东西
第一个问题:您如何看待这种结构?
下一个问题:每秒45次可能是从服务器端上传大量数据,如果有几个玩家射出很多子弹(需要发送玩家和子弹位置)。
为了限制所需的上传,我考虑使用 view frustum culling 并仅发送客户端实际看到的数据/更新。
现在我看到了KryoNet 方法sendToAllTCP 并想知道,这种方法是否更有效,并且可以以某种方式只上传一次数据,而不是每个客户端一次。
我对网络没有那么丰富的经验,我真的不认为可以为一个以上的客户上传 1 个文件。但可以肯定的是我问。
那么使用sendToAllTCP 发送关卡的每次更新更有效,还是为每个客户发送一次然后只发送他们可以看到的内容更有效?
【问题讨论】:
标签: java networking tcp libgdx kryonet