Alv*_*das 3 java data-transfer
我正在尝试编写一个小型在线平铺游戏.我已经与套接字建立了游戏 - 服务器连接,因此我可以轻松地将Strings从客户端发送到服务器,反之亦然.
我不明白的是,我应该以什么形式存储数据以便能够有效地传输数据?我应该使用数据对象,序列化并通过它发送?我应该将数据存储在一个长字符串中吗?或者还有另一种方式吗?
如果重要的是我将发送什么样的数据,它将是关于其他玩家,地图对象等的信息.
我现在已经浏览了几天,但仍然没有结果(可能是因为我不确定如何调用此问题).
谢谢 !
这里最重要的是:这是一个回合制游戏吗?
对于回合制游戏,您可以使用TCP套接字并通过套接字传输完整的游戏状态(或基于前一个游戏状态的增量).它的编码方式并不重要.
对于实时游戏,尝试尽可能频繁地更新状态非常重要.如果数据包丢失并不重要; 也许另一个数据包仍在传输中,它会覆盖先前的数据包.这就是您应该使用UDP套接字而不是TCP的原因.
考虑到您正在谈论基于图块的游戏,请考虑与您的客户沟通所需的信息.也许只有球员移动,而其余的是静止的?
这是一个难以解决的问题.需要考虑很多设计决策,涉及主要游戏模拟循环的设计,作弊,网络架构测试等.请参阅https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking以获取一个小例子.你面临的问题.
我能给你的最简单的解决方案是:
ENTITY NUMBER - NEW POSITION.(即两个32位整数).当您需要一次通信多个更新时,请确保它们包含在同一TCP数据包中,并且TCP发送缓冲区立即在两端刷新.400ms及以后的客户交易时将面临的所有时间问题.如果需要,您可以像这样转换数据包:ENTITY NUMBER - NEW POSITION - CURRENT SPEED VECTOR这将允许客户端估计实体位置,包括滞后延迟.| 归档时间: |
|
| 查看次数: |
1468 次 |
| 最近记录: |