热共振长矛的各个参数的具体含义的解释与验证
cosmoteer吧
全部回复
仅看楼主
level 8
汽灵 楼主
最近我发现热共振长矛的热泵的供电需求改了,于是就想重新分析一下炮塔数的选择相关问题,结果发现热共振长矛的参数很复杂,游戏里也没有完整的解释,于是我就用了几天时间,通过修改文件中的参数的值,然后在游戏里观察发生的变化,用这种方法搞清楚了一些重要参数的含义,对于热炮的具体参数有疑问的可以来看看[呵呵]
2025年12月27日 10点12分 1
level 8
汽灵 楼主
如何改的文件?
首先,热炮的加热效果可以分为2部分:“基础加热”与“池加热”,基础加热的逻辑为只要敌方部件在热炮的作用范围内,就会受到一个加热,加热的总面积越大,受到的总的“基础加热”的热量就越大,这个“基础加热”与游戏中的参数“80.0兆焦/格/秒”有关。而池加热则*可能*可以想象为一个有确定容量的热量池,池中的热量按照一些规则分配给所有的被加热部件,即使加热面积增大,这些被加热格子受到的“总热量”不变,这个“池加热”与游戏中的参数“2250.0兆焦/秒”有关。后面我会详细解释我观察到的现象。
于是我制作了2个mod部件,一个把“80.0兆焦/格/秒”改成了0,也就是说只有“池加热”,另一个部件把“2250.0兆焦/秒”改成了0,也就是说只有“基础加热”,用于独立的观察这两种加热的情况。
此外,还将heat.rules里面的有关热传导的参数改成了0,热量无法传导,有助于观察
2025年12月27日 11点12分 2
level 8
汽灵 楼主
加热面积如何确定?游戏如何得到被加热的部件?
这是原版游戏的加热区域:
而在热共振长矛光束的射弹文件里有这几个控制着加热哪些格子:
HitDirectionCostFactor = 0.5;
FalloffPadding = 0.5;
EmptyTileCost = 1000
AllowDiagonals = true
如果把第一个HitDirectionCostFactor = 0.5; 改成 HitDirectionCostFactor = 1;加热区域就会变成一个8边形:
因此这个参数可能控制着被加热区域的不均匀程度,这个值越接近0,后边的加热长度不会变,而前方的加热会变长一些
2025年12月27日 11点12分 3
level 8
汽灵 楼主
FalloffPadding = 0.5;
EmptyTileCost = 1000 这两个我看不懂,改了也好像没用,或许与池加热的热量分布有关,而第4个:
AllowDiagonals = true ,改成 AllowDiagonals = false之后,被加热区域变成了4角形:
然后我试图测试了一下如果加热范围中有空的格子会发生什么,结果如下:
有一个横着的空格子组成的隔离带
而加热结果是这样的:
似乎加热区域绕过了隔离带,然后又扩散出了一个新的三角形:
这或许提示游戏中的被加热区域是用一个邻接的“爬行”方法生成的,每爬行一步,就给新爬到的格子增加一个热量,作为热共振长矛光束的加热效果,然后爬下一个格子
2025年12月27日 11点12分 4
level 8
汽灵 楼主
另一种”隔离带“的情况:
而如果隔离带中有一块结构,就没有效果了,这也符合爬行规则的特性:
2025年12月27日 11点12分 5
level 8
汽灵 楼主
在确定加热范围之后,游戏会判定”基础加热“
基础加热的参数:80热量/格/秒在游戏中无法改变,因此所有热共振长矛的基础加热都相同。基础加热的特点是:不论加热面积多大,加热的破坏出现的时间一致,破坏程度一致,破坏范围的大小与加热面积成正比:如图所示:这是3个只有基础加热,没有池加热的热炮,它们有不同的扩散泵,因此加热面积不同:
三个热炮在同一时间开始加热,加热一段时间后如图所示:整个的加热情况是有一个比例的
三个被加热物体也同时开始从中间融解
2025年12月27日 11点12分 6
level 8
汽灵 楼主
另一种基础加热的特性:对于相同扩散泵情况的基础加热(也就是说最大加热长度相同),不论实际加热面积如何,加热是同步的,被加热物体的损伤在同一时间内如图所示:
即使两个被加热物体的大小悬殊,受到的损伤也是同步的:
这就是称其为”基础加热“的原因:加热的情况既与增幅(Amp)无关,也与被加热面积无关,而扩散(Dil)只会等比例的扩大被加热面积,只要有热共振长矛在,作用范围内的部件就会受到基础加热
这使得我们认为:每一个扩散泵会增加一份受热面积,而由于加热的等比例性,每个受热面积能带来一份有相同总热量的基础加热,因此可以认为在加热一个巨大平板物体时(要保证加热物体足够大,侧面能包含基础加热的范围,同时接触面笔直,保证加热区域的形状一致,能等比例变化),每一个扩散泵带来一份相同的总热量
2025年12月27日 12点12分 7
level 8
汽灵 楼主
池加热的情况:
与池加热的相关量是“2250热量/秒”,该数值收到增幅倍率(Amp)的加成,具体关系为:
池加热热量=基础池加热热量*(Amp)^0.67
而Amp可以用热管网络中的增幅热泵增加
用同样的测试方法,测试只有池加热的热炮(与基础加热相关的参数"80热量/格/秒"被改成了0),分别测试了相同的加热面积下,不同的池加热热量的效果;与相同的Dli(相同的最大加热长度),相同的池加热热量,但是实际加热面积不同的情况:
这3个热炮都为只有池加热,没有基础加热:可以看到,3个热炮的增幅泵数量不同,因此Amp不同,因此池加热热量不同,结果在相同的加热面积下,加热效果不同
而下面这3个则为3个仅池加热的热炮,三者的Dli与Amp都相同,但是对于不同的实际加热面积,加热效果不同
我进一步推测:不论加热面积如何,池加热热量会按照一个比例分配给实际上被加热的部件,被加热的部件越少,每个部件受到的热量越多。而我还认为即使被加热的格子数不同,如果把每个格子受到的热量全部加起来,这个加和的值就应当是池加热的总热量,这点我没有验证。总之上面的现象足以说明“池加热”与“基础加热”不同,两者是独立计算的,然后热共振长矛会每次造成2种不同的热量增加
2025年12月27日 12点12分 8
吧务
level 11
好帖,设置成精华了。
2025年12月27日 13点12分 9
level 8
汽灵 楼主
池加热与基础加热如何比较?如何等同?
虽然两者的加热机制不同,但是在加热巨大的平板物体时,它们能产生完全相同的效果,在这种情况下,我们可以认为这是一种粗略的等同
下面用2个热炮加热巨大平板物体,两个热炮的Dil(最大加热长度)相同,一个热炮只有基础加热,另一个只有池加热:
基础加热的热炮为256膨胀泵,然后在这个256膨胀泵引起的加热范围中进行了基础加热,而池加热热炮有256个膨胀泵,使得池加热热炮与基础加热热炮的加热范围一致,然后池加热热炮安装了64个增幅泵,同时开始加热,结果如上图:加热效果几乎相同
为了简单的计算,我把增幅指数改为了1,也就是池加热热量 = 基础池加热热量 * Amp,没有0.67次方
上面的图是两种泵数量翻倍的情况:膨胀泵数量为512,而增幅泵数量为128,两者效果基本相同
因此,我们可以认为,在增幅指数为1的情况下,1个增幅泵带来的池热量=4个膨胀泵带来的基础热量
而一个增幅泵带来的池热量为2250*110%=2475,128个增幅泵总共的池热量为2475*128,加上热共振长矛无加成时的2250,可以得到总的池热量,而512个膨胀泵+基础Dil相当于513个膨胀泵,计算得到622池热量相当于1个膨胀泵的基础热量
2025年12月27日 13点12分 10
level 8
汽灵 楼主
在增幅指数为0.67时,增辐泵情况如何?
在增幅指数为0.67时,622池热量依旧等同于1个膨胀泵带来的基础热量,这个关系没有改变。而在Amp=100%时,1个增幅泵带来的池热量与4个膨胀泵带来的基础热量相同。而当Amp=69.12时,即增幅系数Amp=6912%时,此时每增加一份Amp,给Heat_pool(池热量)带来的提升是Amp=1时的1/4(其实就是f(x)=x^0.67,f(x)在x=69.12时的导数为f(x)在x=1时的导数的1/4时),1个增幅泵带来的池热量的增加等同于1个膨胀泵带来的基础热量的增加,当然这些结论的前提是加热巨大的平板物体
2025年12月27日 13点12分 11
上面的计算有误,应当是当Amp=18.97时,即Amp=1897%时,增加一个增幅泵,与增加一个扩散泵相比较,池热量的增加值与基础热量的增加值大约相同
2025年12月29日 04点12分
level 8
汽灵 楼主
炮塔数选择的相关情况
假设一个单炮塔热炮,只有一个炮塔,100个膨胀泵,100个增幅泵,如果将其改为2个炮塔,需要多少膨胀泵,多少增幅泵?
2个炮塔要与1个炮塔相同,就需要加热面积相同,而且加热总热量相同:
先计算总热量:Dil代表一个膨胀泵带来的基础热量,在计算中我们带入Dil = 622
Heat_total = 101 * Dil + Heat_pool
Heat_pool = 2250 * (Amp) ^ 0.67
Amp = 1 + 1.1 * 100
得到
Heat_total = 101 * Dil + 52785
而如果要2个热炮炮塔,每个的加热面积都与单炮塔时的加热面积相同,就会使得新的2个炮塔:其中每个炮塔都拥有101 * Dil的基础热量,也就是说:
Heat_total = Heat_total_new
Heat_total_new = 202 * Dil + Heat_pool_new
得到Heat_pool_new为负值
这个计算结果揭示了:如果把单个炮塔,100个膨胀泵,100个增幅泵要改成2个炮塔,不论2个炮塔的增幅泵有多少个,2个炮塔的总热量都不等于之前的总热量,或者说是大于之前的总热量
2025年12月27日 13点12分 12
level 8
汽灵 楼主
假设一个单炮塔热炮,只有一个炮塔,100个膨胀泵,150个增幅泵,如果将其改为2个炮塔,需要多少膨胀泵,多少增幅泵?
先计算总热量:Dil代表一个膨胀泵带来的基础热量,在计算中我们带入Dil = 622
Heat_total = 101 * Dil + Heat_pool
Heat_pool = 2250 * (Amp) ^ 0.67
Amp = 1 + 1.1 * 150
得到
Heat_total = 101 * Dil + 69120
而如果要2个热炮炮塔,每个的加热面积都与单炮塔时的加热面积相同,就会使得新的2个炮塔:其中每个炮塔都拥有101 * Dil的基础热量,也就是说:
Heat_total = Heat_total_new
Heat_total_new = 202 * Dil + Heat_pool_new
得到 Heat_pool_new = 3110
有0个增幅泵时, Heat_pool = 2250
有1个增幅泵时, Heat_pool = 3442 , 最接近于3110 , 因此有1个增幅泵
现在计算膨胀泵的个数:由于膨胀系数需要相同,而每个膨胀泵提供的膨胀系数变为了[0.5 * (num_turrets -1) +1]^(-0.5)倍,即0.816倍,因此新的膨胀泵个数 = 旧的膨胀泵个数 / 0.816 = 100 / 0.816 = 122
因此如果要把单个炮塔,100个膨胀泵,150个增幅泵要改成2个炮塔,需要122个膨胀泵,1个增幅泵:
结果确实很好,2个的效果几乎相同
2025年12月27日 14点12分 13
level 8
汽灵 楼主
增幅系数确实是0.67吗?Heat_pool = Heat_pool_base * (Amp)^0.67吗?
(这个应该写在前面,但是我忘了)
如图:3个热炮系统都是纯池加热热炮,没有基础加热,以此来对比池加热的总热量,用适当的膨胀泵个数使得4炮塔与1炮塔的加热面积非常接近,在这种情况下,单炮塔的增幅系数Amp = 14180%,而4个炮塔的2组,其中一个的Amp = 1770%,4 * (1770)^0.67 略小于 (14180)^0.67,而另一个的增幅系数为Amp = 1839%,4 * (1839)^0.67 略大于 (14180)^0.67,在这种情况下,同时打开热炮,结果如图:
可以看到加热效果相当接近,说明Heat_pool = Heat_pool_base * (Amp)^0.67是对的
2025年12月27日 14点12分 14
level 8
汽灵 楼主
行路至此,也够令人满意了[哈哈],虽然被加热的格子的具体产生机制我还不懂,而且Heat的机制我也不太懂,但是这足以使我在原版做出好的热炮了,或许我有精力了可以研究一下Heat的具体机制
2025年12月27日 14点12分 15
1 2 尾页