增进平滑移动效果的Dead Reckoning算法

更新时间:2023-08-31 16:49:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

DR,增进平滑移动效果的Dead Reckoning算法

2 0 年 8月 O6

电大理工 Di d Lg n a a io g n

第 3期

总第 2 8期 2

增进平滑移动效果 的 D a ek nn ed co ig算法 R

任广伟

辽宁广播电视大学 (沈阳 103 104)

■ 曩 网络游戏中一个最常见的问题就是, 互联网自身存在的延时问题,当新数据包到来的时候,游戏界面上

的角 色就会 产生抖动现 象。解 决这 个问题 的最重要 的方法就是 Da eknn 算法。本文对传 统的 D 算法 进行 了改 edRco ig R 进, 在其平滑机 制 中引 了 “ 入 三次参数”方法,并在 3 游戏中引入 了方向预测 方法 。改进后 的算法在性能和游戏真实 D

性方 面取得 了较好的效果.

美■调

D a ekn g 算法 平滑技术 ed coi R n

0 引言

和有 效性 。 当新 数据 包 到来 的时 候 ,游 戏 角色 会 产 生抖 动 。同时 ,对 网络 带 宽和 服务 器 的压 力也很 大 。 通 常 的解 决办 法 包括 :增 加包 发 送 的频 率 ,通 过压 缩减 少包 的大 小 , 最重 要 的就是 DR( a D ̄d ̄ k m g o ) 算法 。 1 DR算法 I 2 游 戏 中的 DR算 法 由两 部 分组成 :位 置预 测和平 滑 移 动 。位 置 预测 :用 于 减 少在 游戏 中延 迟 产 生的 影 响 ,这种 技 术尽 力猜 测 对象 将 要 采取 的行 动 ,按

MMO ( 型 多 人 在 线 游 戏 , Mas e O 大 si l vy

Mut lyrOnn me) lpae l eGa s中存 在 的最 主要 的 问题 就 i i

是延迟 问题,这意味着在信息到达接收方之前需要

定 的 时 间 。虽然 有 一些 技 术 方法 能 够减 少 或 者 限

制这些 延迟 ,但 是有 一些 延迟 是永远 都不 会 消失 的。 对 于 网络游 戏 来 说 ,其 最 吸引 入 的地 方 是 多人 的 交 互性 和 协 作性 ,视 听觉 效 果 的作 用 已经 退 到 次要 的 位 置 。由于 MMoG 中存在 着不 可避 免 的延迟 问题 ,

怎样提高游戏的一致性和响应性避免 由于 网络延迟 而 产 生 的玩 家 界面 不 一致 的问题 ,就成 了 网络游 戏 平 台研究的首要 问题L  ̄ IX 虽然 目前运行的游戏 中也 JJ L 采用了一些方法来保证玩家界面的一致性,但是在 性能和效果方面都存在着一些问题 。

本 文所 做 的研 究 正 是针 对 这 方面 问题 。传 统 的

照位置预测公式推算实体的移 动位置。这样就可以

避 免每 次 玩 家移 动 都 发送 一 个 更 新包 ,减 少 了对 网 络 带 宽和 服 务器 的压 力 。平 滑 移 动 :

用 于 在玩 家 接 收 到 更新 包 以后玩 家 实 体从 初 始位 置平 滑 移 动到 更

新后的位置。 但是, 当前的 D R算法所采用的平滑算 法 存在 着 一些缺 陷 , 由于 没有 考虑 玩 家速度 的 更新 , 玩 家实体移动到新位 置后的移动方 向看起来会很不 真实,影响游戏的真实性 。 而且 ,当前 的 D R算法没

有考 虑 玩 家 实体 位 置 方 向 的预 测 ,无 法 更真 实 的表 现 实体 的 自身 的旋 转 等信 息 。

D 算法是美国国防部为了解决军事模拟 中存在 的 R 延迟 问题而提 出的。主要用于解决 同步过程中带宽

占用 过 大和 服 务 器压 力 过大 的 问题 。同样 ,在 网络 游 戏 同步 中也 存 在着 类 似 的 问题 。所 以在本 文 中,

对传统的 D R算法进行了研究,并对其进行 了改进。 改进后 的算法在游戏预测方法 中引入了方向预测算 法,并且对传统 D R算法中的平滑算法进行 了改进, 使其更适合在线游戏。而且 ,改进后的算法在性能

2 增进平滑移动效果的 D R算法

增进平滑移动效果的 D 算法主要 由三部分组 R

成 :位 置 预测 ,方 向预 测和 平滑 移动 。

21 位 置预 测 , .

和视觉效果方面取得 了很大的改善。 l 相关工作 1 网络游戏同步机制中存在的问题 . 1 由于网络 传输 中存在 的延迟现 象 ,基 于 cS 结 ,

位 置预 测是 DR算法 用 于推 测实 体 下一步 将 要移

动到的位置的公式 ,文中的位置预测方案采用 了传 统的D R算法中的位置预测方法,即:

P=Po +Vo t A

构下的网络游戏 的同步在保证客户端响应本地用户

指令流畅的情况下,没法有效的保证同步 的及时性

P

o t /Ao t A +l2 A ‘

DR,增进平滑移动效果的Dead Reckoning算法

第3 期

任 广伟 : 增进平滑移动效果 的 D a ek nn edR c o ig算法

使用这两个公式可以计算推测 出在 △ 时间后 , t

实体将要处于哪个位置。

2 方 向预测方案 i 2

数等式。首先考虑输入的四个 ( ,Y )数对。第 x ,z

个数对代表 了对象的起始位置(0 P) 。类似 的,第三

个数对表示数据的更新位置(2 P) 。通常 ,为了实现更

方 向预测用于推算实体 自身的偏移、旋转等移

好的同步,拟采用终点位置后 的一点预测位置 1 , ) 3

P 是实体以更新速度运行 T时间后的位置 。然后让 3 实体以一个较快的速度 V= PP) ( .0T移动到 P 点, / 3 同

动 。引入 了方 向预测 以后,实体 自身的运动状态更 . 加丰富,这

样玩家感受到的游戏更加真实、可信 。

在时间 tAt + 时,w r oria 变换为 b d o dcod t l ne oy codnt or a i e的方向矩 阵为:

时 ,把 P 点作为第四个数对 。最重要的数对就是第 3

二个和第三个 ;它们代表 了对象的速度 。第二个数

对用来计算 以对象现在的速度 , △t 在. . 时间之后这个 对象将在哪里 出现 。第三个数对是更 新位置 ,同时 一_ 曩 以对象的更新速度运动 。

J] =D 。 - R [RI w> R b

da coig ed eknn 矩阵的计算方法 r 把时间 t的实体的 b d ori t 变换为时间 o oy cod a ne o t At + 的实体的b d odnt o y o ri e的矩阵定义为: c a

A 下面就是用来创建曲线的参数等式 .

) At Bt+ t D 【 3 2 c+ = + y Et F 2 Gt H = 3 t + + +

【R=1 o( II )∞∞T I∞ I+o( D 】(cs I( △t ) ) , cs 1 ( I )s ( I Q III I Ii II ) At.n ) At , ( )

因为上面用到的角速度是 b d o r nt 中的 o ycod a i e

z I+t K . =t J + H 2 L

速度 ,而角速度是用 E l w r ori t)角度 ue ol cod a r( d ne

来表示的,所以下面要给 出一些转换公式 :

Wol co i t E l )角速度转变 为 b d r or n e( ue d da r ov cod a 角速度的公式: ori t ne

( = d- t I dO/ t dWd) ) ( cy ( / t +dg d) i cs o - d a d) ( q ts  ̄ n oO (z 一 / ts O ( t o c s I= ( ) d d) i + dWd) s n c oO

t 是时间变量。它的范围从最初点0到终点T 。

B 描述参数方程 中的系数变量的解法

①给定 n个互异节点 X 及对应的函数值 y i i =

f iiI n, 以 x( 1 n为节点的插值多项式 ()- , )若 x ( …, i- ,· ) i ·,

为 :y c+2+ CX 。 = lcx …+nw

求该多项式的系数 cil n即为三次参数方 i= , ) ( …, 程 中的系数 。

②应用 V n e o d 矩阵的方法求得: adr ne m

初始的方向矩阵 I I一b 的计算

时间 t 的初始方向的矩阵可以从实体状态 P U o D

c=n =n Y ∑A ∑b k

k

=l k l = 工J 1i

中的 E l 角度计算得 出,定义为:【 = ur e

l cB cs o o O

c 口0 i 0 sn

b = l iS + , = 一 k bk X+ l k n 1,“ , + k ·1

l 玎 B 0 — ∞ 加 n 爹n s s j | c i I b s &o + i#n #n 8 c i o ss n i

s s i O i n +C Seo n n加i O ̄ s .

cs nOi —s o 加i s n i n细 s

C一旦这些等式被创建了, 下一步就是要决定在 游戏中怎么实现它。下面的方法是很简单和有效的。

T e ( : 0 s - 3 h m 0) =i 【 ] n AI

①允许一个对象遵循物理法则移动 ( 根据速度

和 加速 度 ) 。

Pi )  ̄ c s AlCS0 *g [ 2 s( : f o [ l O ] snA1 = / 】 P i :  ̄= O A  ̄ o ]snA 3 h( ) CS [3cs0 *g [2 / 】

23 平 滑移 动 .

② 当一个数据包到达 的时候开始 创建到下一个

位 置 的 曲线 。

三次参数方法提供 了一个最现 实的方式来创建 个 da co i 路径。 ed ek n g r n 这是因为我们在三次参数 方法中考虑 了起点的位置\ 速度和终点的位置、 速度。

③ 曲线上 的数对一 和数对 2可以通过使用现在 1

的位置和速度来找到

Co r l= Xl od o d Co r 2= X1 od o d+V i o d

其产生的结果是 :采用三 次参数方法 的对象 的运动

没有急进的现象产生,除非是延迟特别严重的情况

下。

④数对 3和数对 4更难获得 。他们取决于更新 数据包的速度 。如果在从位置 1到位置 4的过程中 有新的 P U到达 , D 那么我们定义它为 N w a k g 。 e P ca e

() I -次参数方法 使用三次参数方法来创建路径 是一些简单的代

对数对 4来说,使用新数据包来计算在 T秒之后的 最终位置 。同样的信息也可以被用来计算在新时间

DR,增进平滑移动效果的Dead Reckoning算法

电大理工

总第 2 8 2 期

的对象 的速度。

C o ̄ =C od ( 们 e p  ̄ ) or o r4-V口k +a= t t t

Co r4= x c+V a c t 05 aakI od t pe t + . pc k e

到更新后的位置上 。使用这种方法,实体的每 一次

更新运动都是按直线方式运动的,这样实体 B 在玩 家 A 屏幕上移动起来变得非常的不现 实,经常会 出

现 很生 硬 的拐角 。

这个方法联合 了 da e oi

算法的两种形 ed r k n g c n

式: 立方抖动方法和二次方程移动方法。 这样结果看

起来更加现实。

在 “ udac q art ”方法中,实体以二次方路径 的形 i 式运动到更新后的位置上。 使用这种方法, 可以使 B

⑤让这个对象沿着这条 曲线走时间 T 。

⑥ 曲线的末端 ,再从第一步重新开始。

这样结果看起来就会像下面的一样平滑:

在玩家 A屏幕上的移动变得 比较 的有人性化一些。 但是该方法的考虑也是不周全的,仅仅只考虑 了初

始位置到更新位置的方向,而没有考 虑新的 P U包 D

中的方 向描述,那么实体 B 从更新位置开始模拟行

走的时候,仍然是会 出现 比较生硬的拐角, 在 “ 三次参数 ”方法 中,实体按照三 次参数方

程 的路径形式从初始位置运动到更 新位置上 。在此 种方法中不仅考虑 了路径的运动形式 ,而且还考虑 了更新 P U 中包含的方向描述, D 这样当实体 B在玩

p k tde 日 po n eo e t it

家 A 屏幕上从更新后的位置开始新的行走模拟 时, 就不会 出现生硬的拐角,使玩家 A屏幕上看到的实 体 B的运动更加真实、生动 。 4 结束语

圈1

平滑路径

Fg1 i.:Smo tigp t ohn ah

3 改进后平滑算法的性能分析

本小节主要对同步机制算法进行简单的性能分 析,并对同步机制中采用的平滑算法在游戏中取得

的视觉效果进行测试。

本文通 过对消息进行分类管理和在实现 同步 的 关键技术—DR算法 中引入方向预测方法,并对其平

滑方案进行改进并进行了测试 。提高了游戏中同步 的性能 ,并且改进后 的算法使得游戏在画面的稳定 性和真实性方面取得 了较好的效果。

参考文献

【】 u i me , i u oat, n ar H k nn ” p cs l o n d TmoKak rna adH r a o e. Aset J S i

平滑算法效果图如下:

“ier l a”方式 n

o ewokn n mut ly r o ue a s,’e E e to i fn t r ig i lp a e. mp trg me "Il lcrnc i c rt

Li rr Vo . O No 2 2 0 : 7 9 . b ay, 1 2 , . , 0 2 8 - 7

【] ui me , i oK u oat adHarHao e . Reiw 2J n d T m ak rna n r k n nA ve o S , i

o t rig a dM ut ly r mp trGa s Tu

k ne nNewo kn n lpa e i Co ue me . r uCe tr frCo ue ce c , 5 , rl 0 2 o mp tr in e 4 4 Ap i2 0 . S

q art ”方法 udac i

“ 次参数 ”方法 三

【]h ntu f l tc l dEet nc n ier, 3T eIstt o e r a a l r i E gn es ie E ci n c o s

S a d r fr tn ad o Ditiu d n rc v Smua o Ap l a o sr t It at e i lt n be e i i pi t n ci

F g2 PHf螂咖曲' a ay i fs ohn i .t a 七 n lsso mo tigmeh di h loil to nteag rtm a

啊 2 算法中平滑方案的性能分析

P oo os S a d rs o mi e n nea t e i u a o S I 1 r t l, t ad m t e t c v m lt n( C S c n C t o I r i S i

o teI E Co ue o it , S pe e 1 1 9 : 1 3 1 9 fh EE mp tr cey S e tmb r2 , 9 5 2 -2 。

在 " on t p i ”方法 中,实体被简单的从 旧 pi - - n to o t 位置拖拽到更新后的位置上 。采用这种方法 实现很

【]o a P tl,L r C Wof nte mp c o D l n 4L tr a e h n as . l ,O h I at f ea yo

Re l meMm t ly r m e , a- Ti i ae p Ga s ACM ,Newo kIs e o d o t r su sfr Vie n m s 0 22 -9 a dGa e , 2 0 :3 2 .

简单,但是对实体的每一次移动都要发送一个更新 包,对本来就很紧张的带宽来说是一个很大的压力: 同时在玩家的屏幕上,实体也是一跳一跳的前进的, 给人一种很不真实的视觉效果。 在 “ na”方法中,实体以一条直线路径运动 le i r

【] o etF uh e , De y C mpna o n Ne re 5R b r .B chi t l o e st n i t kd a i wo

Co ue m e ,I E r sc o so d sra lcr nc mp trGa s EE T a a t n nI u t l e t is, n i n i E o vo. , . , cmb r 0 4 15lNo 6 De e e o . 2 一

本文来源:https://www.bwwdw.com/article/l5xi.html

Top