Dead reckoning的改进模型。

原创 2004年10月29日 10:37:00
今天在玩一款网络游戏的时候,发现一个问题,当用键盘操作主角的时候。
同时按住两个方向键,人物并不是往那两个方向的夹角走直线,而是在围绕一个点做圆周
运动,对于这种运动方式,如果用传统的dead reckoning模型,其方向将不停的在变,则
会带来大量的网络流量,那么如何解决这样的问题呢。低头沉思若干时间,终于恍然大悟。

首先用数学模型来描叙传统的dead reckoning模型:
s(t) = v(0) * t + (a * t ^ 2) / 2
对于这个模型,当a为常数,或者变化频率不高的情况下,我们可以用linear approximation来进行预测。
但对于圆周运动这种每一时刻a都在变化的情况来说,这种模型就不太可取了。

如果看明白了我上面讲的,就可以忽略下面我将要讲的这个例子:
两个盲人一前一后的在沙漠里行走,他们中间有根绳子,绳子上绑了个炸弹,其规则是
当绳子绷紧到一定的程度之后,炸弹就会爆炸。而且呢,前面带路的那个盲人的左脚有
点问题,所以走出的路线实际上是一个向左的弧线。而后面那个盲人则是个正常人。

刚刚开始的时候,他们之间的绳子总是会因为前后两个盲人的速度方向不一致而经常会
出现险情。后来后面那个盲人痛定思痛,不敢拿自己的生命开玩笑,于是就跟着前面的
盲人一样,也逐渐的把自己的方向往左边拐,于是,绳子绷紧的发生的次数就越来越少了。

这个例子可以用来比较三种同步方法,最原始的同步方法,dead reckoning,和改进版
的dead reckoning:

最原始的方法就是前面那个盲人后面拖的是一块大石头,由于跟地面有摩擦力,只有在
绳子绷紧的情况下才会往盲人那边靠近一段距离,所以他们之间的绳子定时的每隔一段
时间就会产生绷紧的情况。

而dead reckoning就是前面那个盲人后面拖的是辆小车,有四个轮子,在走直线的时候,
表现得非常完美,几乎不会产生任何绳子绷紧的情况,只有在拐弯的时候才会发生绷紧
的情况,对此前面那个盲人很满意。

但是对于前面那个盲人脚出现问题的时候,小车也就出问题了,小车会在绳子绷紧的时候
改变到和盲人一样的方向,但是仍然是直线,这个时候当盲人走的是曲线的情况下,小车
就会一左一右的不停的走直线,每次走到绳子绷紧的时候就换到往另一个方向走直线。

而改进版的dead reckoning,更具智能一些,已经从石头升级到小车,升级到另外一个盲
人,俗话说,了解盲人的还只有盲人,i'm blind not deaf,肉眼看不见不要紧,还有心
眼。

恩,那么改进版的数学模型是什么样的呢。
其实很简单,大家都学过的数学知识,就是距离和时间的三阶导数方程。
一阶导数是速度,二阶导数是加速度,三阶导数就是加速度/时间
单位就是s/t^3,暂时给它取个名字叫k。
那么距离在时间t的预测就是:
s(t) = v(0) * t + a(0) / 2 + (k * t ^ 3) / 4

理论上讲,导数的阶数越多,预测得越精确。但是,有必要么?键盘只有两种状态:
按下/松开,不会存在我按下3/4键盘的说法吧,那么如果键盘的按下和松开能改变加
速度A的话,这个量就一定是个定量,所以通过给加速度求导来获取一个方程已经足够
决大多数网络游戏使用。

什么?没价值?这是有实际的应用价值的。网络游戏的瓶颈主要是在于网络,而不是在
于客户端的显示,否则也不会在网络游戏中出天堂II那种夸张得不考虑显示效率的高多
边型模型。那么尽大可能的减少网络传输的情况下,仍然保证比较良好的同步效果就成
了比较重要的问题。在解决这个问题的同时,您获得的将是允许在服务器端实现更复杂
的逻辑或者支持更多的游戏人数。

原创文章,如需转载,请联系作者。

网游同步算法之导航推测(Dead Reckoning)算法

在了解该算法前,我们先来谈谈该算法的一些背景资料。大家都知道,在网络传输的时候,延迟现象是很普遍的,而在基于Server/Client结构下的网络游戏的同步也就成了很头疼的问题,在保证客户端响应用户本...
  • czh3642210
  • czh3642210
  • 2016年11月30日 20:02
  • 1174

游戏网络同步——dead reckoning

网游中,玩家的位置同步经常会用到dead reckoning算法,中文翻译叫导航推测,下文简称DR。 DR提供了隐藏延时和减少带宽的方法。DR在本地模拟其他联网玩家状态(主要是位置信息),减少网络带宽...
  • cubesky
  • cubesky
  • 2014年08月22日 11:55
  • 1960

Dead Reckoning: 在网络游戏中消除延时影响

原文来自Gamasutra的Dead Reckoning: Latency Hiding for Networked Games,作者是Jesse Aronson。可以通过这个地址http://www...
  • hygol
  • hygol
  • 2006年05月26日 21:16
  • 6724

[转]网游同步算法之导航推测(Dead Reckoning)算法

在了解该算法前,我们先来谈谈该算法的一些背景资料。大家都知道,在网络传输的时候,延迟现象是非常普遍的,而在基于Server/Client结构下  的网络游戏的同步也就成了非常头疼的问题,在确保客户端...
  • qq_29804289
  • qq_29804289
  • 2015年11月09日 10:00
  • 269

Dead reckoning的改进模型。

今天在玩一款网络游戏的时候,发现一个问题,当用键盘操作主角的时候。 同时按住两个方向键,人物并不是往那两个方向的夹角走直线,而是在围绕一个点做圆周 运动,对于这种运动方式,如果用传统的dead rec...
  • tarkey
  • tarkey
  • 2004年10月29日 10:37
  • 2644

dead reckoning 网络游戏中的应用

  • 2017年08月23日 22:09
  • 239KB
  • 下载

Dead reckoning in Unreal

  • hygol
  • hygol
  • 2006年05月01日 13:43
  • 801

LDA模型改进

这里只是说明模型的概率图,具体实现算法以后研究。文章综述参考Probabilistic topic models (DaviD m. Blei)LDA模型文献参考LDA数学八卦、parameter e...
  • deltaququ
  • deltaququ
  • 2015年05月17日 16:35
  • 1896

Dead reckoning的改进模型。

今天在玩一款网络游戏的时候,发现一个问题,当用键盘操作主角的时候。 同时按住两个方向键,人物并不是往那两个方向的夹角走直线,而是在围绕一个点做圆周 运动,对于这种运动方式,如果用传统的dead rec...
  • tarkey
  • tarkey
  • 2004年10月29日 10:37
  • 2644

游戏开发---影子跟随算法

http://www.skywind.me/blog/archives/1145 算法简述   动作类游戏如何在高延迟下实现同步?不同的客户端网络情况,如何实现延迟补偿?十年前开...
  • u014737138
  • u014737138
  • 2016年04月04日 15:38
  • 853
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Dead reckoning的改进模型。
举报原因:
原因补充:

(最多只允许输入30个字)