有第一次就有第二次,今天我要问那个人收转载费了...被吃定了...
本期的主题是:速度和延迟。 速度是单位时间内的判定次数,而延迟是两次同类型判定之间的最短有效时间间隔。一般,两者成倒数关系。 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毫秒技能响应延迟已经取消了。 也许是为了方便以后实装禁言系统吧。
学院派报告结束!欢迎大家交流! 本文作者阿甘拜托转载
|