今天在玩一款网络游戏的时候,发现一个问题,当用键盘操作主角的时候。
同时按住两个方向键,人物并不是往那两个方向的夹角走直线,而是在围绕一个点做圆周
运动,对于这种运动方式,如果用传统的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的改进模型。相关推荐

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

    原文来自Gamasutra的Dead Reckoning: Latency Hiding for Networked Games,作者是Jesse Aronson.可以通过这个地址http://www ...

  2. 定位相关论文-A Novel Pedestrian Dead Reckoning Algorithm for Multi-Mode Recognition Based on Smartphones

    这里写目录标题 0.Abstract: 0.1逐句翻译 0.2总结 1. Introduction 1.1逐句翻译 第一段(当前的定位应用很发达,但是室内定位是一个缺口) 第二段(当前的主要方式-基于 ...

  3. PDR (Pedestrian Dead Reckoning)行人航位推算基本原理及实现

    PDR (Pedestrian Dead Reckoning)行人航位推算算法是利用加速度计.磁力计.陀螺仪等多种传感器数据进行处理.对行人行走的步数.步长.方向进行测量和统计,推算出步行者行走轨迹, ...

  4. GAN ZOO - 第1节: 分析GAN的缺陷与改进方向,介绍典型的改进模型:CGAN、InfoGAN

    0. "GAN ZOO"系列文章开更说明 GAN到底有多"热"? 据统计,GAN的相关论文正在以指数趋势增长,如上图所示. But, GAN论文这么多,而且都是 ...

  5. 【目标检测】YOLOv5针对小目标检测的改进模型/添加帧率检测

    问题背景 众所周知,YOLOv5会对输入的图片进行放缩,并进行32倍下采样.对于一些分辨率很高的遥感/无人机图片,小目标难以被训练识别. 本篇博文就来尝试这篇博文YOLOV5 模型和代码修改--针对小 ...

  6. Believable Dead Reckoning for Networked Games (为联网游戏而设计的可信的导航预测)

    Believable Dead Reckoning for Networked Games (为联网游戏而设计的可信的导航预测) Curtiss Murphy Alion Scence and Tec ...

  7. DKT改进模型及论文名称

    DKT改进模型及论文名称 零.原论文链接 一.结构图![](https://img-blog.csdnimg.cn/43de8154d71f41b1956a3efe81df89a4.jpeg) 二.模 ...

  8. Python小白的数学建模课-B6. 新冠疫情 SEIR 改进模型

    传染病的数学模型是数学建模中的典型问题,常见的传染病模型有 SI.SIR.SIRS.SEIR 模型. SEIR 模型考虑存在易感者.暴露者.患病者和康复者四类人群,适用于具有潜伏期.治愈后获得终身免疫 ...

  9. Dead Reckoning - 航位推测法

    原文地址: http://www.gamasutra.com/view/feature/131638/dead_reckoning_latency_hiding_for_.php Programmer ...

最新文章

  1. rust房子 如何拆除_小产权房“依法拆除”?中央新文件透露“1个新信号”
  2. SpringSecurity认证流程分析
  3. P2550 [AHOI2001]彩票摇奖(python3实现)
  4. 大三软件工程小项目-小技术集合-读取XML文件及运行外部程序
  5. (转) POJO和javabean的异同
  6. 热门还是长尾?大中型网站的关键词优化策略
  7. 解决Numpy 报错 ValueError: zero-size array to reduction operation maximum which has no identity
  8. simpleHandleData
  9. SharePoint 2013 添加Ribbon菜单
  10. NYOJ题目37-回文字符串
  11. 转: 参数修饰符ref,out ,params的区别
  12. c语言ASCII码表详解(一)
  13. 重装系统(用U盘+wepe)
  14. antd-vue 划上表格内容显示气泡框及提示内容
  15. 大西瓜支付宝/QQ/微信收款码三合一源码+实测可用
  16. 数据驱动测试(DDT)入门
  17. Android studio Intent
  18. 遇到【java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter】的解决方案
  19. Tika 1.16架构及核心模块
  20. PADS-VX入门到精通实战项目讲解(下)—layout部分-覃小刚-专题视频课程

热门文章

  1. git新建分支及切换
  2. mysql乐观锁重试_乐观锁失败重试
  3. 图片在section上下居中_HTML5中的section标签是什么?HTML5中的section标签怎么居中?...
  4. 细胞生命游戏一维c语言,生命游戏一维细胞自动机 笔记
  5. pte模拟考试_PTE考试:模拟题
  6. 阿里图库,svg资源总结
  7. Vue编写静态页面框架的基本步骤(实现基本的页面链接跳转)
  8. wps公式如何加序号_WPS表格怎么只打印部分内容?_金山WPS_办公软件_软件教程
  9. jQuery.parseJSON() 函数详解
  10. 开源密码管理器更安全吗?(1)