返回列表 发帖

[转帖]揭示速度和延迟的神秘面纱

有第一次就有第二次,今天我要问那个人收转载费了...被吃定了...


本期的主题是:速度和延迟。
速度是单位时间内的判定次数,而延迟是两次同类型判定之间的最短有效时间间隔。一般,两者成倒数关系。
RO中,没有连续性的动作,从编程角度而言,所谓的速度之间的间隔其实是由1个或数个延迟所组成的。比如:一个攻击速度是2.5次/秒的攻击速度,其实是等同于每次攻击时间的间隔为0.4秒(0.4*2.5=1),攻击一次,间隔0.4秒后开始下一次的攻击。

第一部分:位移速度和延迟
RO的位移同其他游戏不同之处在于,其位移并不是连续的。一般的有控制速度的游戏,比如A3,MU等都靠“速度齿轮”控制位移速度,所谓“速度齿轮”,就是依照人物的特点,判定单位时间内允许多少位移距离的程序(让大家想到了“网三工作狂”,第一个真正意义上的“外挂”)。但是,RO没有,所以能加速位移的非法程序到现在为止还未出现。
为什么呢?因为,RO的位移不是按照单位时间内的位移来计算的。
RO计算速度的方法是:根据你的人物的状态等,运算出你的位移速度,然后,以这个位移动作的延迟(就是距离/速度,讲白了就是时间)作为一个基本的时间间隔再乘上你所要走的距离(按照格子计算)。举一个例子,正常情况下我的位移速度是3格/秒。如果我要走到12格距离的位置上,那么,系统在我发出“位移至(X,Y)”的指令后,按照我的速度计算出一个4秒的延迟,在4秒延迟内拒绝其他的位移指令。如果我只位移6格,则这一延迟是2秒。同时,客户端显示出人物的移动(但是,系统段判定你是“飘”过去的)
推论:如果在走路(位移延迟起效)过程中突然受到攻击,则位移操作中断,人物判定位置恢复到发出位移指令的最起始状态!
验证:绝大部分的法师都有位移时被怪物攻击后,人物的实际位置和显示位置不一致的状况,如图:

下图,我正在被2只三叶虫攻击,但是三叶虫明显和我有半个暴风雪的距离间隔。可见,我在位移遭受到攻击的时候,实际的位置判定已经发生了改变,图示里面的位置显示的我位移后的应该位置,但是,系统实际判定我的位置却在暴风雪边缘被三叶虫攻击的位置上。
这张图更明显说明问题。
图中我特地按照这样的位置释放了1面火墙,图中,我的判定位置和显示位置显然不一致,如果一致,则三叶虫会撞火墙自焚,可图中我仍然在受到攻击,所以系统端判定我的实际位置是在火墙下方。

现在众法师们知道RO里有这样的“漂移”了吧(和头文字D内的漂移无关...我也没看过头文字D)。

第二部分:技能延迟和攻速的关系
这也是核心的部分,也是本报告中的难点和重点。
首先说说RO里衡量攻速的标准是ASPD,ASPD和单位时间的攻速APS(Attack Per Second,自定义概念,方便以后说明)的关系式是:APS=50/(200-ASPD)。定义ADT=1/APS。
攻击速度是怎么来的呢?我上文已经分析过,是通过几个控制延迟来实现的。比如ASPD175对应攻速是2次/秒,那么两次攻击的延迟就是0.5秒。
官方目前的攻速最高锁定在ASPD190,为什么呢?这是判定的缘故,设定判定和效果作用判定的下限时间是0.1秒,一个步骤就是最低时间是0.1+0.1=0.2秒,正好对应攻速是5次/秒,即ASPD190。
如图,从单机器版的RO我可以得知,草的ASPD是200,按照上述公式,不是攻速无穷大了?那样会死机的。所以给攻速设置了一个上限:

因为草的HIT是0,所以打我MISS的时候不发生伤害判定而显示MISS,从最底下到最顶一共1秒时间,扣除打到我的2次,共10次,所以我将RO的每次判定的最短时间判定为0.1秒不是没有道理的,用雷鸣飞出MISS也是10次MISS/秒。
技能的延迟属于固有延迟,技能延迟只能影响下一个技能的释放,而不影响普通攻击,反之亦然。技能的固有延迟可以通过布莱齐诗歌加以缩短!

第三部分:浮动延迟
为了对抗日益泛滥的加速大军,去年圣诞节前一周,RO中诸多技能实装了和ASPD有关的浮动延迟,ASPD越高浮动延迟越低。但两者具体是什么关系呢?
首先要明确是什么技能加了浮动延迟,浮动延迟的特性是什么。
EP6.0的时候无咏唱无延迟的技能追加了浮动延迟!
浮动延迟只能通过提升ASPD来缩短,不能用布莱齐!
浮动延迟不仅能够影响下一个技能释放,还能影响普通攻击!

可见,此类技能已经变相成为“普通”物理攻击了。
而我主要在于测试延迟和浮动的关系。
测试没有附图,因为是大量的数据。
测试者:我
测试方法:利用治愈术1,观察浮动延迟和ASPD的关系。人物分别在:手杖+不喝水,空手+不喝水;手杖+喝水;空手+喝水下测试。装备骷髅手杖,喝波色克药水。
状态 |     ASPD|  APS(计算值)| ADT|   60秒内治愈术个数|
手杖+不喝水|  146|     0.926|     1.08|        41|
空手+不喝水|  157|     1.163|     0.88|        51|
手杖+喝水|   156|     1.136|     0.86|        49|
空手+喝水|   165|     1.429|     0.70|        55|
(接上表)
60秒内延迟个数|     浮动延迟时间|
   40|              1.5|
     50|              1.2|
     48|              1.25|
     54|              1.11|
从上表分析,可以看出,浮动时间喝ADT大约成正比关系,正比因子是0.7,即:ADT*0.7=浮动延迟时间。
带入ADT和ASPD公式,线性优化后,排除反应和判定的影响后,得到数据公式:
浮动延迟=5.7-0.03ASPD,ASPD=190的时候浮动延迟免除。
进一步测试发现,该公式对于ASPD低于180的时候吻合较好,而高ASPD由于受到个人操作和统计影响会有较大偏差。
测试:我让地狱诗人到天地数干打草,光芒草20HP,任何攻击均为1,二连上去伤害仍然为1。看地狱诗人能够在多少时间内拔除光芒草。
实际测试:地狱诗人ASPD173,带入此公式,得到浮动延迟为0.51秒,则一个攻速为0.6秒/次(考虑到系统响应和判定影响),消灭一株草需要12秒钟,实际测试为13秒(精度限制,因为我的计算表只能读到秒)。
截图印证测试:

熟悉二连的玩家应该可以估算出这个攻速是多少了。

第四部分:250毫秒的强制延迟
250毫秒的强制延迟的效力是:
在使用一个技能后紧接着250毫秒的时间内,服务端拒绝响应下一个技能命令。这是系统端的设定,任何程序无法突破!
但目前,250毫秒被取消了,而且尚未装入!!

证据1:EP8.0圣诞后我依然用装备手杖无任何状态下使用治愈术1,每15秒恢复9次。而EP8.5的时候,同样状态下每15秒可以恢复10~11次,平均每次相差了0.303秒(计算值)。
证据2:请看截图

使用雷鸣10攻击光芒草,光芒草20HP,2个雷鸣放平。但是这是第2次雷鸣,图中清楚显示了游标指示为10级雷鸣,游标还显示光芒草已经死亡,但是,我依然在释放第3个雷鸣。如果250毫秒技能响应延迟存在,那么我在第2个雷鸣结束后,系统拒绝我释放下一个雷鸣,250毫秒时间也足够让系统发出“光芒草已死亡”的讯息,我也就不可能再释放出第3个雷鸣。处于连击状态下雷鸣没有0.6秒甩手缓冲数据的时间。这个巫师是最最清楚的了。
据此我判定:250毫秒技能响应延迟已经取消了。
也许是为了方便以后实装禁言系统吧。

学院派报告结束!欢迎大家交流!
本文作者阿甘拜托转载
这世上没有什么偶然,所有的事都是注定...

原来ODIN 的~~不顶没道理,知道意思了,谢谢!
以后W4 要喝波色克了~~

TOP

我感覺雷鳴念得越慢越好接下一個,還有就是雷鳴+雷鳴可以出現連擊,放第三個的時候就會有明顯的延遲

TOP

芊芊,2005-04-04, 16:28:19
[QUOTE]Again,2005-04-04, 16:19:04
但具体250毫秒是被吸收了?还是改起效原理?要拿ASPD190的做试验了。
那要看有没有人愿意贡献个有死灵卡的ID测试了。
用不着。。找个AD猎人全套好之后空手放陷阱去就是了

其实彩音的猜测跟我的猜测是相同的。

另外:服务端完成,本身有延迟的技能不在此之列 这点也是错的。技能延迟和ASPD延迟是同时存在的。取他们中间最大的一个,你可以试试布赖齐下的天怒就知道了 [/QUOTE]
请看我的回复

TOP

奇迹的杨,2005-04-04, 17:37:46
那个非常可能是因为ASPD的问题,推荐空手波色克+刺客黄昏
因此我还是想找个ASPD190的,因为按照我的理论,ASPD190浮动延迟免除。
不过,跟贴的倒是提醒了我。
然而,高ASPD测试有点难度,因为,随着浮动延迟的缩短,判定时间和网络延迟等时间在一个动作单元内所占的时间就会越长越明显,其误差也就越厉害。

TOP

那个非常可能是因为ASPD的问题,推荐空手波色克+刺客黄昏

TOP

芊芊,2005-04-04, 16:39:37
我已经说过了。。攻击指令暂时寄存在服务器指令区排序做下一次指令,中间不判断目标是否有效

你举的那个例子是建立在魔物死亡的判断时间问题。
雷鸣本身是无延迟的,所以就依照序列排列进指令暂存区(我这么称呼的,更准确的要去问RO程序员)
对于客户端来说。魔物死亡是雷鸣动画表现结束之后才会转到魔物死亡画面
而你的最后一个雷鸣实际上已经发出了指令,服务器判断技能施展延迟之后按时间排列在后面自动发出。


关于你编辑后加的一些句子我不了解你的意思。不过看起来你似乎觉得ASPD浮动延迟有超过1秒的时间?
用惯了10雷,没感觉到什么问题啊。
崩裂的问题,是这样的。
我测试的时候是无状态装备手杖,按照我自己的理论计算,延迟是1.5S,实际上我感觉崩裂5的延迟比1.5短很多。
所以我并不认为:浮动延迟和固定延迟取其大者。
在PVP里用BUG测试无唱雷鸣就是,1秒2个雷鸣10。装备手杖,除天赐外无加速喝水状态……
不过,可以考虑去测试3雷,火墙等。

TOP

嗯。。我也是置疑文章这一点

某人辛辛苦苦练好的双冰就因为这个表演不出来了。。
再盛大的宴席,也终有他落幕的一刻

TOP

据此我判定:250毫秒技能响应延迟已经取消了。


偶只对这段话有异意.....雷鸣10确实可以连起来的,可是去试试雷鸣3呢....依然要一个一个分开来放的......可怜我这用惯3雷鸣的人了

TOP

WS石化后马上10雷鸣+1雷鸣,不喝水的话10雷鸣后接不了1雷鸣
用内挂死全家

TOP

我已经说过了。。攻击指令暂时寄存在服务器指令区排序做下一次指令,中间不判断目标是否有效

你举的那个例子是建立在魔物死亡的判断时间问题。
雷鸣本身是无延迟的,所以就依照序列排列进指令暂存区(我这么称呼的,更准确的要去问RO程序员)
对于客户端来说。魔物死亡是雷鸣动画表现结束之后才会转到魔物死亡画面
而你的最后一个雷鸣实际上已经发出了指令,服务器判断技能施展延迟之后按时间排列在后面自动发出。


关于你编辑后加的一些句子我不了解你的意思。不过看起来你似乎觉得ASPD浮动延迟有超过1秒的时间?
再盛大的宴席,也终有他落幕的一刻

TOP

芊芊,2005-04-04, 16:28:19
用不着。。找个AD猎人全套好之后空手放陷阱去就是了

其实彩音的猜测跟我的猜测是相同的。

另外:服务端完成,本身有延迟的技能不在此之列 这点也是错的。技能延迟和ASPD延迟是同时存在的。取他们中间最大的一个,你可以试试布赖齐下的天怒就知道了
这我认为不是如此。
最明显的反例还是我圈雷鸣。
如果延迟按照两者较长者算,就不会出现我圈光芒草第3个雷鸣的现象了。
另外,ASPD190可能是由于一次“延迟”的下限,也有可能是1次设定判定+1次攻击判定造成的。
另外,浮动延迟可以影响到物理攻击,但技能本身的固定延迟不行。
浮动延迟不能用布莱齐缩短。

再拿雷鸣说,延迟的定义是发生在最开始的效果判定后到下一个设置判定前。
如果真的是浮动延迟和本身技能延迟两者取大值,那么雷鸣就会有非常长的延迟。
退一步,我拿崩裂5测试,崩裂5的延迟为1S,小于我理论计算的浮动延迟。按照浮动延迟和固有延迟取大者的说法,那么我在崩裂画面效果未消失前不能使用技能,但事实是,我起一个崩裂后,攻击完成我可以立刻再起第二个。

TOP

Again,2005-04-04, 16:19:04
但具体250毫秒是被吸收了?还是改起效原理?要拿ASPD190的做试验了。
那要看有没有人愿意贡献个有死灵卡的ID测试了。
用不着。。找个AD猎人全套好之后空手放陷阱去就是了

其实彩音的猜测跟我的猜测是相同的。

另外:服务端完成,本身有延迟的技能不在此之列 这点也是错的。技能延迟和ASPD延迟是同时存在的。取他们中间最大的一个,你可以试试布赖齐下的天怒就知道了
再盛大的宴席,也终有他落幕的一刻

TOP

你不用多次声明了么

当初我让你自己来发的

捏哈哈
这世上没有什么偶然,所有的事都是注定...

TOP

水城彩音,2005-04-04, 08:33:06
我的意思是
最初是
技能发动->受aspd的浮动延迟(这段aspd只在客户端校验,所以可以加速)
后来被变成技能->受aspd的浮动延迟->300ms不接受任何命令的强制延迟
再改成技能->受aspd的浮动延迟->250ms不接受任何命令的强制延迟
最后是现在
技能->受aspd的浮动延迟和250ms延迟的最大值

上面只是猜测。。。
关于这个,我是这样想的:
最初:
设定判定-效果判定-ASPD校验(客户端完成)
去年圣诞节:
设置判定-效果判定-300(250)毫秒强制技能响应延迟-(ASPD校验)(服务端完成,本身有延迟的技能不在此之列)
现在:
设置判定-效果判定-(ASPD校验)(本身有延迟的技能不在此之列)

但具体250毫秒是被吸收了?还是改起效原理?要拿ASPD190的做试验了。
那要看有没有人愿意贡献个有死灵卡的ID测试了。

文章不是楼主写的,是我写的!!

TOP

返回列表