状态变化和丢包

时间:2013-04-07 19:18:43

标签: algorithm networking udp lag

假设我想通过仅发送位置变化而不是绝对位置来加速实时游戏中的网络连接。我怎么处理丢包?如果丢弃一个数据包,则在下次更新之前,对象的位置将是错误的。

1 个答案:

答案 0 :(得分:0)

反思@ casperOne的评论,这就是为什么有些游戏因糟糕的连接而“出现问题”的原因之一。

可能的解决方案如下:

  1. 确定您可以容忍在错误的位置显示对象/玩家的最长时间 - 比如说xx ms。放置一个看门狗定时器,每隔xx ms“或至少”计算一个对象的位置,或者每当计算一个新位置时。
  2. 根据链接的质量和场景的复杂程度,您可以缩短xx的值。基本上,如果您没有使用可用带宽,请开始发送没有发送更新的对象的当前位置。
  3. 为此,您需要按照更新顺序维护项目列表,然后轮换它。

    这意味着快速更改会立即反映出来(如果对象每隔ms更新一次,您可能会经常收到数据包,因此几乎没有任何延迟),但在获得另一次机会之前,它永远不会超过xx ms更新状态。