字号:

让角色更强力!理论党的属性收益深度优化

时间:2014-06-05 09:48 作者:llxibo 手机订阅 参与评论(0) 【投稿】
文 章
摘 要
重度理论研究强迫症型玩家的深度属性收益优化分享,高端玩家都是这么玩游戏的!

0. 前言

这个帖子写给拥有强力CPU的强迫症患者,以及希望自己做理论研究的玩家。

由于每个角色的种族、专业、饰品等级、武器等级等变量会轻微的影响DPS峰值位置,[@斷齿]等强迫症患者一直在要求我深度的优化属性收益。

另外,对于部分混合战斗,属性收益会有一些变化,你可以使用这里介绍的方法来更精确的衡量自己的属性收益。

请注意,这个过程需要使用SimC进行几十分钟至几十个小时不等的满负荷运算,CPU不强力,或者非强迫症患者请绕行。

不建议笔记本用户进行这样的优化,移动版CPU运算慢散热差,连续几个小时满负荷下来,烧坏了不要怪我没提醒过。

本文中的算法,本来准备写入[SimulationCraft完全手册],不过那个坑太大,扔一篇进去完全没感觉的样子,就单独发吧。

首先,我假定你已经按通用的收益峰值进行了重铸,也就是说角色属性已经接近了最优点。如果没有的话,参见5.4.8的属性收益峰值:点此查看

下载最新的SimC,[@fhsvengetta]维护的[[灰谷黑科技] SimulationCraft简体中文版]。

本贴中使用的是英文版SimC,相关设置将同时写明中文和英文名。

1. 设置

打开SimC之后,翻到Options(选项) - Globals(全局),将Armory Region(英雄榜地区)改为你所在的地区,cn为国服。

将Iterations(迭代次数)改为10000或更高,具体数值取决于你CPU的运算能力,以及你愿意等多长时间。如果有余力,建议使用2-5万。

将Threads(线程数)改为你需要的数字,如果运算期间你不需要做其他的事,可以选择为CPU的逻辑核心数,如果你希望算的时候看网页或视频,可以适当降低1-2个线程。不建议同时进行其他高CPU占用的应用。

这里进行一点解释,一个线程基本可以将一个CPU核心占满,所以如果你是双核,2个线程就可以将两个核心都占满,此时CPU基本不能做其他的事。对于i7和至强等高端CPU,可能支持超线程,每个物理核心可以当做2个逻辑核心来用,此时“四核”的i7等价于8个逻辑核心,可以运行8个线程。双路的土豪我就不解释了。

可以打开Windows的任务管理器,看性能页,有几个CPU图表就是几个逻辑核心。

2. 导入角色

翻到Import(导入)页,找到你的英雄榜,点击右下角的Import!(导入)将角色导入SimC。

导入之后,你应该看到一大坨代码,这是你的角色配置描述。

在这一大坨代码前面插入一行,写上这个:

strict_gcd_queue=1

3. 试运算

然后点击右下角的Simulate!(模拟)进行一次模拟测试,得到一份基准DPS报告,你应当注意到这次运算的时间,一般桌面四核i5满负荷进行10000次迭代在12秒左右,50000次在55秒左右,如果你的运算时间差的太大,看看运算时CPU是不是满负荷。

4. 进行运算

如果运算时间还算满意,我们回到Options(选项)页设置重铸收益计算。

翻到Reforge Plots(重铸收益图)页,选择要重铸的属性,也就是暴击等级(Crit Rating)、急速等级(Haste Rating)、精通等级(MasteryRating)。

然后选择Reforge Amount(重铸范围)和Step Amount(步长)。重铸范围越大,运算量越大,范围扩大2倍,运算量约扩大4倍;步长越小,运算量越大,步长缩小至一半,运算量约扩大4倍。

大体估算一下所需时间:

(范围 / 步长 + 1)2* 3 * 一次运算时间,例如:我一次50000的迭代需要55秒,重铸范围1000,步长100,则运算时间大概是:(1000 / 100 + 1)2* 3 * 55 = 19965 秒 ~= 332 分钟 ~= 5.5 小时,如果我将步长改为50,则运算时间大概是:(1000 / 50 + 1)2* 3 * 55 = 72765 秒 ~= 20.2 小时。

一般来说,步长越小,相邻的点越难区分,相应的需要迭代次数更高,请量力而行。

你也可以先做范围稍大一些,步长也比较大的模拟,然后再在局部做精细的模拟。

最后按右下角的Simulate进行仿真,这个过程会很久,去干点别的吧。

运算完成后,在SimC文件夹里会出现一个simc_plot_data.csv,这个文件里面包含了重铸范围内各个属性组合的DPS值,下面我们把它提取出来。

用Excel或者WPS打开这个文件,可以看到第一列A是暴击,第二列B是急速,第三列C是精通,第四列D是DPS。如下示例:(数据仅供演示用)

将整个工作表按D列排序,可以看到DPS最高的属性组合,一般来说前几位DPS相差很小。

这里的各属性,都是与当前属性的偏差。

下图中急速为-200,精通为200,意味着你需要将200急速重铸为200精通。

5. Matlab绘图

如果你有Matlab,那么可以用Matlab画出3D曲面图或者等高线图。

点击上方工具栏里的导入数据,打开simc_plot_data.csv,然后你可以看到类似Excel工作表的界面。

Matlab应当会自动识别标题栏和数据,不要动数据,在上方工具栏确认选择的是Column vectors(列向量),然后点工具栏绿色的对号导入即可将数据导入当前工作区。

输入下列命令创建插值后的数据矩阵:

range = [-范围: 步长 : 范围]; % 重铸范围

[xi, yi] = meshgrid(range, range); % 根据重铸范围生成网格

zi = griddata(crit_rating, haste_rating, DPS, xi, yi); % 将数据插值填入网格

然后使用命令绘制图像:

contourf(xi, yi, zi);% 等高线图

surf(xi, yi, zi);% 3D曲面图

实例中,等高线图不太理想,这是因为取样点较少。3D图不平整,则是因为迭代数量偏低。

你可以选择图表上面的Rotate(旋转),来拖动旋转整个图像,观察属性收益的走势。

加入17173玩家俱乐部,100%领《原神》月卡、《王者荣耀》888点券、《魔兽世界》T恤等周边好礼!
加入方式:微信关注“17173服务号”

热点推荐

游戏头条