假设我想通过仅发送位置变化而不是绝对位置来加速实时游戏中的网络连接。我该如何处理丢包?如果丢弃一个数据包,则对象的位置将是错误的,直到下一次更新。
问问题
36 次
1 回答
0
回顾@casperOne 的评论,这是一些游戏因连接不良而“出故障”的原因之一。
一个可能的解决方案如下:
- 确定您可以容忍对象/玩家显示在错误位置的最长时间 - 例如
xx
毫秒。放置一个看门狗计时器,该计时器“至少”每 xx ms 或每当计算新位置时发送对象的位置。 - 根据链接的质量和场景的复杂性,您可以缩短 xx 的值。基本上,如果您没有使用可用带宽,请开始发送最长未发送更新的对象的当前位置。
为此,您需要按照更新它们的顺序维护项目列表,并在其中轮换。
这意味着快速更改会立即反映(如果对象每毫秒更新一次,您可能会经常收到一个数据包,因此几乎没有任何延迟),但是在您获得另一个更新状态的机会之前,它永远不会超过 xx ms .
于 2013-04-10T12:13:49.910 回答