剑网三装备精炼分析
02 Jun 2018
剑三断断续续玩了快两年多了,越来越没有上线的动力,却怎么也a不掉。这几天比较空闲,又不想学习,就把之前做了一半的精炼装备所需的五行石计算补完了,也算是没有半途而废。 剑三的装备精炼是一种装备属性强化的手段,通过使用一级到六级六种不同的五行石,将装备依次从0级精炼到6级(对于精炼需要超出6级的橙武不作讨论,因为穷)。主要包括了三个部分,采用不同等级五行石精炼不同装备的成功率计算,达到指定成功率所需的五行石个数计算,以及一个简单精炼计算器的实现。
精炼过程分析
当我们精炼一件装备的时候,将它放入精炼框,然后可以放入一到六级五行石进行精炼,放入不同数量和等级的五行石,最后的成功率都是不一样的,最多可以放入16个五行石。为了计算出不同五行石组合的成功率,先要知道每种五行石的成功率。比如一件1080品级的剑纯武器机于物,想从0级精炼到1级,放一个一级五行石的成功率是3.72%,放一个二级的成功率是13.76%,以此类推。这里我们假设,成功率是线性叠加的,即放两个一级五行石的成功率是放一个一级五行石的两倍,放一个一级五行石和一个二级五行石的成功率是放一个一级五行石的成功率和一个二级五行石的成功率的和。
对于一件装备,假设使用一个$i$级五行石的成功率是$p_i$($i \in {1,2,3,4,5,6}$),要得到成功率$p$(通常为95%),只需要求解不等式$\displaystyle{ \sum_{i=1}^6 p_i*n_i>=p }$,即可得到各级五行石所需要的数量$n_i$。此时,只需要依次放入六种五行石,得到成功率,就可以计算所需的五行石数量。但是,每精炼成功一级,都需要放入五行石然后做记录太过于繁琐,我们希望得到一件装备就能够自动知道各个等级用各级五行石精炼的成功率,进而完成五行石数量计算。因此,需要分析影响成功率的因素,对装备精炼成功率进行建模。
成功率模型
数据
要分析成功率的计算公式,首先要得到相应的数据。通过平时精炼装备时进行记录,得到了较为完整的八件装备的精炼成功率数据,以1140品级的都荔衣为例,数据如下:
精炼等级 | 一级五行石 | 二级五行石 | 三级五行石 | 四级五行石 | 五级五行石 | 六级五行石 |
---|---|---|---|---|---|---|
0->1 | 4.418 | 16.34 | 60.48 | 100+ | 100+ | 100+ |
1->2 | 1.393 | 5.154 | 19.07 | 70.56 | 100+ | 100+ |
2->3 | 0.451 | 1.671 | 6.185 | 22.88 | 84.68 | 100+ |
3->4 | 0.152 | 0.564 | 2.089 | 7.732 | 28.6 | 100+ |
4->5 | 0.055 | 0.203 | 0.753 | 2.786 | 10.3 | 38.14 |
5->6 | 0.022 | 0.082 | 0.305 | 1.129 | 4.17 | 15.46 |
其中,每一行表示用不同等级五行石的成功率,比如从0级精炼到1级,单个一级五行石的成功率为4.418%,数据记录过程中存在误差。此外,”100+”表示精炼过程中,单个该级别的五行石,成功率即能够达到100%。
同装备同等级不同五行石之间的关系
最容易计算出的就是不同五行石成功率之间的关系,还以都荔衣为例,高一级五行石成功率与低一级五行石成功率的比值如下:
二级/一级 | 三级/二级 | 四级/三级 | 五级/四级 | 六级/五级 | |
---|---|---|---|---|---|
0->1 | 3.6985061114 | 3.7013463892 | |||
1->2 | 3.6999282125 | 3.7000388048 | 3.7000524384 | ||
2->3 | 3.7050997783 | 3.7013764213 | 3.6992724333 | 3.701048951 | |
3->4 | 3.7105263158 | 3.7039007092 | 3.7012924844 | 3.6989136058 | 3.4965034965 |
4->5 | 3.6909090909 | 3.7093596059 | 3.6998671979 | 3.6970567121 | 3.7029126214 |
5->6 | 3.7272727273 | 3.7195121951 | 3.7016393443 | 3.693534101 | 3.7074340528 |
很显然,比值$k_{stone}\approx3.7$(1/0.27),为五行石等级系数,有个别数据偏差较大,可能是记录错误,也可能不是固定比值,先采用近似值,作线性化的处理。
此时,只需得到一级五行石的成功率,即可计算出其他等级五行石的成功率。
同装备不同精炼等级一级五行石成功率的关系
再计算使用一级五行石精炼同一装备不同等级的成功率,得到如下规律:
1140都荔衣 | 1080机于物 | 1060文王帽子 | 1140战阶囊 | 1140都荔戒 | 1080敖叶戒 | 1240燕云腰带 | 1140德音剑 | |
---|---|---|---|---|---|---|---|---|
1-2/0-1 | 0.315301 | 0.315323 | 0.315270 | 0.315244 | 0.315301 | 0.315231 | 0.315259 | 0.315279 |
2-3/1-2 | 0.323762 | 0.323956 | 0.323962 | 0.324394 | 0.324121 | 0.324140 | 0.324201 | 0.323932 |
3-4/2-3 | 0.337029 | 0.336842 | 0.337278 | 0.337333 | 0.337763 | 0.338122 | 0.338028 | 0.337731 |
4-5/3-4 | 0.361842 | 0.359375 | 0.356725 | 0.359684 | 0.360656 | 0.359477 | 0.356481 | 0.359375 |
5-6/5-4 | 0.400000 | 0.391304 | 0.409836 | 0.406593 | 0.400000 | 0.400000 | 无数据 | 0.391304 |
即,在精炼1140都荔衣时,从1级精炼到2级的成功率是从0级精炼到1级的成功率的0.315301,其余同理。可以看出,不同装备的不同等级之间的比值很相似,取平均值可得到:
$k_{refine,01}$ | $k_{refine,12}$ | $k_{refine,23}$ | $k_{refine,34}$ | $ k_{refine,45}$ |
---|---|---|---|---|
0.315 | 0.324 | 0.337 | 0.359 | 0.399 |
值$k_{refine,i,j}$为精炼等级系数,表示从$j$精炼到$j+1$的成功率与从$i$精炼到$i+1$的成功率的比值,近似为固定值。目前还未找到$k_{refine,i,j}$之间的关系。
由精炼等级系数的定义可以得出$k_{refine,0i}=k_{refine,01}k_{refine,12}\cdots*k_{refine,i-1,i}$,定义$k_{refine,i} \equiv k_{refine,0i}$为从$i$精炼到$i+1$的成功率与从0精炼到1的成功率的比值。
不同装备0级精炼到1级一级五行石成功率计算
此时,根据一件装备0级时采用一级五行石的成功率即可计算出数据中给出的各等级各五行石的成功率,但是,我们还是希望能够根据装备的一些属性即可计算出该装备0级时一级五行石的成功率(以下称为基础成功率)。
一件装备的属性有很多,而明显会影响精炼成功率的除了精炼等级,还有装备的品级,装备分数,装备的部位;而装备所属的职业不会影响成功率,否则各职业间不公平;攻击防御加成等属性基于装备品级分数,受精炼影响,而不会影响精炼成功率;附魔和五行石孔镶嵌也非基础属性。因此,先从品级、分数和部位开始,看看能否分析出装备0级时一级五行石的成功率,装备分数一般与品级存在相关性。
为了得到基础成功率与装备属性之间的关系,仅有8件装备的是不可能分析出来的,需要更多基础成功率数据。好在剑三PVP装备可以在购买后的十分钟内退回,通过购买PVP装备,尝试精炼后退货可以得到所有PVP装备的基础成功率如下,注意只是查看成功率不能真精炼,精炼后不能退货。
武器 | 暗器 | 衣服 | 帽子 | 裤子 | 腰带 | 鞋子 | 护腕 | 腰坠 | 戒指 | 项链 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|
595威望 | 装备分数 | 1285 | 643 | 1071 | 964 | 1071 | 750 | 750 | 750 | 536 | 536 | 536 |
一级成功率 | 3.854 | 7.616 | 4.588 | 5.139 | 4.588 | 6.515 | 6.515 | 6.515 | 9.176 | 9.176 | 9.176 | |
1060威望 | 装备分数 | 954 | 954 | 954 | ||||||||
一级成功率 | 8.864 | 8.864 | 8.864 | |||||||||
1140威望 | 装备分数 | 2462 | 1231 | 2052 | 1847 | 2052 | 1436 | 1436 | 1436 | 1026 | 1026 | 1026 |
一级成功率 | 3.711 | 7.334 | 4.418 | 4.948 | 4.418 | 6.274 | 6.274 | 6.274 | 8.836 | 8.836 | 8.836 | |
1240威望 | 装备分数 | 1116 | 1116 | 1116 | ||||||||
一级成功率 | 8.806 | 8.806 | 8.806 | |||||||||
1350威望 | 装备分数 | 1215 | 1215 | 1215 | ||||||||
一级成功率 | ||||||||||||
1240战阶 | 装备分数 | 2678 | 1339 | 2232 | 2009 | 2232 | 1562 | 1562 | 1562 | |||
一级成功率 | 6.252 | 6.252 | 6.252 | |||||||||
1350战阶 | 装备分数 | 2916 | 1458 | 2430 | 2187 | 2430 | 1701 | 1701 | 1701 | |||
一级成功率 |
空白部分为不存在相应装备,或者威望战阶不够买不了╮(╯▽╰)╭
可以看出,同一品级,衣服和裤子有相同的装备分数和基础成功率,腰带鞋子护腕有相同的装备分数和基础成功率,腰坠戒指项链三种首饰有相同的装备分数和基础成功率。
装备分数与品级之间的关系
计算装备分数与品级的比值可得:
武器 | 暗器 | 衣服 | 帽子 | 裤子 | 腰带 | 鞋子 | 护腕 | 腰坠 | 戒指 | 项链 | |
---|---|---|---|---|---|---|---|---|---|---|---|
595威望 | 2.159664 | 1.080672 | 1.800000 | 1.620168 | 1.800000 | 1.260504 | 1.260504 | 1.260504 | 0.900840 | 0.900840 | 0.900840 |
1060威望 | 0.900000 | 0.900000 | 0.900000 | ||||||||
1140威望 | 2.159649 | 1.079825 | 1.800000 | 1.620175 | 1.800000 | 1.259649 | 1.259649 | 1.259649 | 0.900000 | 0.900000 | 0.900000 |
1240威望 | 0.900000 | 0.900000 | 0.900000 | ||||||||
1350威望 | 0.900000 | 0.900000 | 0.900000 | ||||||||
1240战阶 | 2.159677 | 1.079839 | 1.800000 | 1.620161 | 1.800000 | 1.259677 | 1.259677 | 1.259677 | |||
1350战阶 | 2.160000 | 1.080000 | 1.800000 | 1.620000 | 1.800000 | 1.260000 | 1.260000 | 1.260000 |
可以看出,不同部位(part)的装备分数(equipment score)与品级的比值装分系数$k_{score,part}$为:
部位(part) | 武器 | 暗器 | 衣服 | 帽子 | 裤子 | 腰带 | 鞋子 | 护腕 | 腰坠 | 戒指 | 项链 |
---|---|---|---|---|---|---|---|---|---|---|---|
装分系数($k_{score,part}$) | 2.16 | 1.08 | 1.80 | 1.62 | 1.80 | 1.26 | 1.26 | 1.26 | 0.90 | 0.90 | 0.90 |
基础成功率与装备品级和分数的关系
为了能够直观的分析基础成功率和装备品级/分数之间的关系,我们将分数和成功率绘制成图,具有相同装备分数和成功率的同类装备只绘制一种,得到如下散点图:
散点包含率595品和1140品各个部位装备,以及1060品和1240品的首饰。可以看出,同品级的装备,基础成功率与装分近似成反比,不同品级在不同参数的反曲线上。为了验证,将成功率取倒数,并与装分进行线性拟合,得到下图:
很显然,基础成功率的倒数与装备分数成线性关系,对于595品和1140品,拟合的曲线分别为
成功率的倒数范围在0.1到0.3之间,比拟合参数中的常数项高3个数量级,因此,可以将常数项看为0,成功率倒数与装分成正比,即成功率与装分的积为常量,常量值与装备品级有关:
将装备的装分和成功率的积与装备品级一起绘制,得到下图:
可以得到,成功率与装分积与装备品级成正比,拟合后可得如下公式
至此,根据装备的品级和部位,我们就可以计算出基础成功率,进而得到不同精炼等级使用不同五行石的成功率,得到开始给出的数据表格,可以进行五行石个数计算。
公式小结
综上所述,对于给定品级(grade)和部位(part)的装备,在从等级$r$精炼到$r+1$时,单个$s$级五行石的成功率可以表示为$prob(grade,part,r,s)$。
基础成功率$prob(grade,part,0,1)$为
而由前面的prob_score_production和score公式有
由精炼等级和五行石等级之间的关系可得
精炼等级系数$k_{refine,r}$和五行石系数$k_{stone}$由前面的表格可得,从而
精炼五行石个数计算
对于一次精炼过程,各级五行石的成功率$p_i=prob(grade,part,r,i)$($i \in {1,2,3,4,5,6}$),要得到成功率$p$,只需要求解不等式$\displaystyle{ \sum_{i=1}^6 p_i*n_i>=p }$。而通常我们只需要两种五行石进行精炼,过多的种类虽然更节省且精确接近$p$,但是会很繁琐,意义不大。
首先对于各级五行石,放满单种五行石可放16个,成功率为$16 p_i$。两种五行石中,高阶的放满需超出$p$,否则部分替换成低阶的成功率更低,达不到$p$;低阶的放满需小于$p$,否则无需部分替换成高阶。因此首先找出最小的$s$($s \in {1,2,3,4,5,6}$)使得$16p_s \ge p$且$16p_{s-1}<p$,然后使用$s-1$和$s$级的两种五行石进行精炼。
接着求解$p_s n_s+p_{s-1} n_{s-1}>=p$,为了节省,应放满低级五行石,不足之处再使用高级五行石替换,即有$n_s+n_{s-1}=16$,因此由成功率不足的部分即可计算出高级五行石的数量
其中$\lceil x \rceil$表示不小于$x$的最小整数。低阶五行石的数量为(直接用会多余)
至此,即可得到两种五行石所需的数量。对于多于两种五行石的情况,可以先按此法求出最高阶五行石的数量$n_s$,然后递归求解$s-1,s-2,\cdots$五行石的数量,使得其满足成功率$p-n_s p_s$,即可使得整体成功率大于$p$.
简单精炼计算器
基于上述方法,此处给出了简单的HTML形式的精炼计算器,可以根据装备品级和部位,给出成功率和精炼所需的五行石数量。
总结
以上得到的计算器会存在五行石数量上的误差,尤其对于5级到6级的高等级精炼。主要原因包括模型中有很多使用了线性关系进行计算,而实际过程可能并非如此;各系数有一定的误差,这个可以由最后得出的公式求解参数的最优解,但目前已经足够使用,暂不做进一步的分析;最初的数据也存在记录出错的可能,且游戏中成功率显示的精度较低,也存在误差。
精炼成功后,装备的分数会有提升,由当前分数计算成功率,并分析精炼成功前后装分的关系,也是一种分析思路。
最后,使用大的品级进行计算(比如10000品),仍然能够使用六级五行石达到指定成功率,完成装备精炼,原因是基础成功率的反比关系保证了精炼成功率的最低值。由此可见,剑三的装备精炼系统,不修改参数或模型的话,还能再用n年。