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