DR算法

  • Post author:
  • Post category:其他


在飞机游戏中DR的一个例子:

1. 飞机的运动速度都是固定的,两台游戏机联机玩,分别是A和B;

2. 对于A和B来说,是否需要发送PDU(protocoldataunit,协议数据)是通过阈值控制的。实际运动位置是P1,而DR算法模拟得到的运动位置是P1′,如果P1-P1′大于预先设置的阈值就发送PDU通知对方。

3. 每次收到对方的PDU,则更新对方的位置。

4. 在没有收到PDU的时候,需要模拟对方的运动,DR提供了几种经典算法:

(1)位置1 = 位置0,就是保持不变

(2)位置1 = 位置0 + 速度 × (T1 – T0),相当于根据PDU中的数据,做匀速运动

(3)位置1 = 位置0 + 速度 × (T1 – T0)+ 1/2 × 加速度 × (T1 –T0)平方,比2)中多了加速度的方向

在游戏中应用的比较多的是2)和3)。

总结: 1. DR的阈值是一个需要测试衡量的关键参数。阈值设置的越低,游戏画面会越平滑,但是网络带宽也会消耗的越快。 2. DR可以忍受一定程度上的丢包,所以可以用udp来提高时效性,避免tcp重传。 3. 网络游戏的位置同步,是比较复杂的情况,在应用DR算法的基础上,还需要在很多细节上进一步完善,才能减少网络延时带来的影响。