游戏网络同步——dead reckoning

来源:互联网 发布:论坛发帖软件平台 编辑:程序博客网 时间:2024/06/11 02:37

网游中,玩家的位置同步经常会用到deadreckoning算法,中文翻译叫导航推测,下文简称DR。
DR提供了隐藏延时和减少带宽的方法。DR在本地模拟其他联网玩家状态(主要是位置信息),减少网络带宽消耗的同时尽可能的还原实际情况。

在飞机游戏中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算法的基础上,还需要在很多细节上进一步完善,才能减少网络延时带来的影响。

0 0
原创粉丝点击