返回列表 发帖

揭开ASPD的面纱(修改版)

本文by snowloveyz 转载麻烦注明作者出处

再未有其他游戏像RO一样用aspd这个参数表述人物的攻击速度
最近终于在日本各网站凑齐了aspd的公式 可以发表一篇全面的文章了

先贴公式
ASPD = 200 - {[(250 - AGI - DEX/4)/250] x (200 - BaseASPD)}

APS(attack per second每秒攻击次数)=50/(200-ASPD)

ASPD'(使用加速技能如加速药后)=ASPD+(200-ASPD)*t%(加速因子如波水为15%)

第三个是凭记忆的 若有不对敬请谅解

一部分日服网站认为 aspd保留至小数点后一位 且RO一次最短攻击时间需要0.02秒
另外 目前官服最高aspd锁定为190

很明显的看出 攻击威力是跟APS直接相关的 而且是线性关系
我们改写一下公式 为什么改写看完就明白了

APS=1/[(200-ASPD)*0.02]

在此 我们改写全部公式 令ADT(attack delay time)=200-ASPD
因为AGI和DEX/4的作用相当 且不管配点可能与否
一个agi100 dex100的人 就当作是agi125来计算是相同的
令AGI'(等效AGI)=AGI+DEX/4

全部公式变成

ADT=(1-AGI'*1/250)* BaseADT  (1)

APS=1/(ADT*0.02)             (2)

使用加速技能/道具后 ADT'=ADT(1-t%)   t为加速因子 (3)

看看上边 公式是不是简单多了

引入ADT的意义是什么呢?
写过计算机程序的人应该有这个概念
如果你是gravity的程序员 我现在要你写一个决定攻击频率的程序
你如何写呢? 你可以直接写某个函数让电脑1秒钟演算15次还是20次攻击么?
实现起来很困难吧 正常人类大概都会使用一个延时的函数或者循环
你要0.1秒攻击一次? ok我写一个函数造成延时0.02秒
每循环或者调用5次就调用一次演算攻击的函数就是了 很简单的方法

若RO最小时间单元设定为0.02秒
那么每次攻击延迟过后隔 ADT个循环之后发出一次攻击动作
也就是每ADT*0.02秒发出一次攻击

熟悉法师的人再仔细看看公式(1) 有没有似曾相识?

ADT=(1-AGI'*1/250)* BaseADT  (1)

施法时间=(1-DEX*1/150)*基础施法时间 (4)

这并不是巧合 同一个小组在设计一个系统的时候往往使用类似形式的公式
或许因为ADT跟攻击速度正好是反比的 gravity认为不够直观
才取了200-ADT作为ASPD的代表吧 总之ASPD看着越大 攻击速度就越高

彻底抛弃ASPD而采用ADT的概念 能使很多事情变得清晰而自然
你的aspd175 我的aspd180比你高5点 嗯 不错 爽
但是高5点aspd差了多少呢? 你能说出来么?
现在好了 看看公式(2) ADT和攻击速度是完全反比的
你的ADT25 我的ADT20 我的攻击频率或者说攻击速度是你的25/20=1.25倍
也就是 单位时间造成的伤害是你1.25倍
BINGO!

再来看看武器的选择
把公式(1)带入公式(2)
APS=1/{0.02*[(1-AGI'*1/250)* BaseADT]}
在人物一定的情况下 APS=1/(k*BaseADT)
换句话说 APS也跟武器的基础ADT成反比
拿常见的铁匠武器选择问题来说
单手斧BaseASPD=135         BaseADT=65
炼锤 BaseASPD=132.5       BaseADT=67.5
因此 无论体铁敏铁均铁打造铁 攻击力相同的情况下单位时间内造成的伤害
使用单手斧是炼锤的67.5/65=1.04倍 比较两种武器直接攻击力再乘这个系数就可以了
次式也同时清楚的说明武器的选择与agi无关

接着看看加速药
喝了波水之后单位时间内伤害增加了多少呢? 15%?
APS'=1/ADT*(1-t%)*0.02 
t=15代入得 APS'=APS*1/0.85=1.18*APS
也就是说 单位时间伤害约增加了18%
而2HQ和速度激发则实际增加了约43%的单位时间伤害
你现在明白铁匠练级该开凶砍还是速度激发了么?
(一般铁匠只能常驻一样且不考虑怪物减算防御)

最后我们来讨论aspd取整问题
大家都知道gravity设计程序很爱取整的 在这一项上也不例外
由公式 APS=1/(ADT*0.02) 和 APS=1/[(200-ASPD)*0.02]          
可以看到 延时函数的调用次数ADT 必须是整数
(以前有人提出过 施法时间=(1-DEX*1/150)*基础施法时间 的最小可分辨时间单元也是0.02秒 所以dex也要凑整5的理论 但是没有验证
个人认为重力社实在没有必要写两个延时函数 除非有特殊理由好的程序员一般不会这么做
所以有可能施法和攻击的最小时间单元相同 考虑到零偷的最小几率0.02%....重力社实在很喜欢0.02这个数 不过有什么内在联系也说不定)


感谢点点滴滴给出的实测和其他网友提供的KE封包
我个人现在基本认为APS=1(ADT*10*0.002)
也就是说 ADT或者是ASPD小数点后保留一位有效数字
从KE的封包来看系统间传送的数据就是ADT*10=(200-ASPD)*10
ASPD只是一个显示数据 很可能运算中根本不碍它的事
ASPD=200-ADT 这个公式里的200实际上是随意定的罢了
如果有一天gravity的程序员心血来潮把所有公式里的200改成300
各位的aspd会显示成275这样 但实际的攻击速度根本没有任何改变
起作用的是锁定ASPD190 或者说是锁定ADT为10 也就锁定了攻击速度的极限是每秒5下
这也从侧面说明了ASPD的数字基本上就是一无用的概念 仅仅拿来看的


若ADT如KE封包和实测中描述的那样是精确到小数点后一位的话
那么实际上可能性比较大的就是运算中对10*ADT那个变量取整
配人物点的时候仍然还要凑整
即是对ADT=BaseADT*(1-AGI'/250) 两边都乘10凑整
也即是 10*ADT=BaseADT*(10-AGI'/25)凑整
对盗贼拿短剑的情形 Base ADT=50 右边为500-2AGI'=500-2AGI-DEX/2
DEX是偶数刚好为整数
而对炼金拿钝器的情形 右边写成
10*ADT=135*(10-AGI'/25)=1350-27*(4agi+dex)/20
也就是说 dex+4agi需要是20的倍数

但是这里略有不同,我们需要ADT尽量小,若在整数的基础上再增加一点dex
则10*ADT则会变成 1799.9XXX这样 小数部分将要舍去
所以在炼金的例子里有可能dex+4agi除20余1是最合算的
重力社确实在给我们发红利 但这个红利实在是太小了
以aspd189.9-aspd190.0来算
增加的0.1aspd提升了0.1/(200-190)=1%的每秒伤害
由于常见的aspd大约是180上下 这时的额外伤害就只有0.5%
估计还不如网络延迟的影响大 基本可以忽略掉
因此结论就是 配点的时候agi和dex随便点就好了 <han2>
这里的问题是0.002秒的时间单元太小了 程序里基本体现不出来
一个比较合理的做法是如点点所说用不均匀的攻击把"丢掉"的攻击次数补回来
这个似乎跟我们平时练功的直观也比较吻合

本文主要是为了提出ADT的概念 让攻击速度的概念更加直观和容易比较而已
其他的有待证实

找个人过来加精!
把路径复制下,贴上面去!
好贴……

TOP

顶技术贴

TOP

精华!

TOP

看了下~确实分析很完整~~

那能否告诉下~现今大陆官服的最大可能性是那一种呢?~~?
取整?还是整数多0.1?比如170.1,180.1等等

TOP

assassin template的例子

Q ASPDの小数点ってあるの? ▲

あります。
Lv85/AGI122/DEX60な暗殺ですが、表示が177のままにもかかわらず体感では
AGI120/DEX60─(上昇)→AGI121/DEX60─(上昇)→AGI122/DEX60
な感じでした。
今会社なので家に帰ったら検証して見たいと思います。
検証方法はMISS表示ONで不死か毒属性の敵にEP後攻撃、MISSの回数で比較でOKですよね?
ステータス:Lv85/AGI120~122/DEX60
検証方法:EP3をかけて不死に当てたMISS回数を測定(各10回測定)
AGI120/DEX60(ASPD177):58-59-59-59-58-59-58-60-59-59(計588)
AGI121/DEX60(ASPD177):61-62-61-61-61-61-60-62-61-62(計612)
AGI122/DEX60(ASPD177):63-62-63-63-63-63-62-63-63-63(計628)
微妙に誤差はありますがASPDが上がってるので間違いないかと思います
AGI120の状態で残りSP尽きるまで試してみましたが、59を超えることは
ありませんでした。
听说只要两人一起ALT+F4就能得到幸福哦^_^

TOP

补1个.
二刀刺客的情形则为
ASPD = 200 - [ 1.4* (仅装备右手武器时的ASPD+仅装备左手武器时的ASPD)/ 2]

其他的正在研究ing ... 晚上有事做了.呼呼.
麻烦楼上的4D大大每次发日文资料都翻译成中文好么.
实在头疼.都要发给偶老婆翻译 ....

Summer has come and passed,
The innocent can never last,
Wake me up when september ends.

Like my fathers come to pass,
Seven years has gone so fast,
Wake me up when september ends.

TOP

似乎在那里看见过 类似的帖
但不可否认 是好贴

TOP

“考虑到零偷的最小几率0.02%”

这个是真的?

TOP

gdd,2004-06-20, 21:45:35
“考虑到零偷的最小几率0.02%”

这个是真的?
这里说的不清楚
我的意思是零偷的基础是建立在最小偷窃几率为0.02%基础上的
所以0.02这个数字确实很受gravity钟爱
赫赫

TOP

有这种故事……
有没有根据

以前想过0偷的问题,猜来猜去感觉要实现这个bug实在要满足很多条件,韩国人居然都满足了着实令我吃惊,不过假如真的设定一个最低值倒是可以理解,这个程序员感觉太好了,完全没有想到外挂的力量……

TOP

BTW:ADT的概念早就是公认的了。。。。一直都没去想过ASPD的问题。。只是个相对比较直观的观赏数字而已。。
关键是0.02,真的确认是0.02吗。。。。。——+
听说只要两人一起ALT+F4就能得到幸福哦^_^

TOP

十字伤,2004-06-20, 21:43:30
补1个.
二刀刺客的情形则为
ASPD = 200 - [ 1.4* (仅装备右手武器时的ASPD+仅装备左手武器时的ASPD)/ 2]

其他的正在研究ing ... 晚上有事做了.呼呼.
麻烦楼上的4D大大每次发日文资料都翻译成中文好么.
实在头疼.都要发给偶老婆翻译 ....

汗。。。主要是我懒得打字了。。。我承认我很懒。。。所以很多东西都拖着。。。
听说只要两人一起ALT+F4就能得到幸福哦^_^

TOP

说明了ASPD的数字基本上就是一无用的概念 仅仅拿来看的

最后一句话看懂勒..

TOP

这贴一定要顶
海利翁任务是尼罗任务..

基尔哈尔学院任务是卡册任务..

抓贼任务是速水任务..

The Sign任务是暗水任务..

TOP

返回列表