【最后的宝藏】关于暴击模型和战斗引擎的说明
刀塔传奇吧
全部回复
仅看楼主
level 13
大元宝🍄 楼主
今天带来两个重磅分析,一次看个够。
2022年01月11日 21点01分 1
level 13
大元宝🍄 楼主
第一个是元宝关于暴击属性和暴击判定的一套说辞,姑且叫它“井底之蛙”猜想吧。
过往无数前辈一直没能验证出来的暴击公式,可能,可能是他们都想复杂了。
2022年01月11日 21点01分 2
level 13
大元宝🍄 楼主
简述一下发现过程。元宝在无数次与30层白塔交锋的战斗中偶然发现,在暴击等级不变的情况下,穿甲数值越高,越容易出现暴击。经实验得出,0护甲时,1100多的暴击等级就能打出全爆的效果。(当然,这里没有考虑30层BOSS等级可能造成的等级压制或影响)
因为元宝是资深魔兽世界表面玩家,突然想起来魔兽世界里面关于近战攻击结算的“圆桌理论”。由此想到小冰冰传奇的伤害结算原封不动的借用DOTA,那暴击判定借鉴“圆桌理论”也并不是没有可能。因此有了元宝的“井底之蛙”猜想。
2022年01月11日 21点01分 3
level 13
大元宝🍄 楼主
我们假设,每一次攻击的暴击判定,都是一只井底的青蛙在努力向上跳。如果青蛙成功跳出井口,则判定暴击;反之,则不暴击。
青蛙的弹跳最高高度就是暴击等级的数值。但是青蛙并不是每次都能跳到最高高度。
井的深度就是暴击判定的阈值范围,只要青蛙本次跳起高度超过井高,即判定暴击。
2022年01月11日 21点01分 4
level 13
大元宝🍄 楼主
真实护甲的存在相当于继续挖井,原本青蛙10次里面能跳出去5次,挖深井之后10次只能跳出去2、3次。继续挖井,井深超过青蛙的弹跳能力上限之后,就永远跳不出去了。那就是永远不会暴击。
2022年01月11日 21点01分 5
level 13
大元宝🍄 楼主
然而增加穿甲属性,相当于在井下垫石头,抵消掉被挖的井深。如果继续垫高石头会发生什么呢?
2022年01月11日 21点01分 6
level 13
大元宝🍄 楼主
青蛙只要随便动一下,证明自己是个活蛙就算暴击。现在重新优化一下模型
青蛙每次跳动的高度依然是个随机值,但是最低起跳高度不会低于上限减1000(假设是1000)
需要注意!护甲和暴击等级并不是1:1的对应关系,不能直接加减比较。
假设暴击等级是5000,那么青蛙最低也能跳4000;
假设暴击等级是100,那么当青蛙理论最低跳-900;(我知道这很抽象,就当他灵魂是瘫痪在石头之下吧。。。)
2022年01月11日 21点01分 7
level 13
大元宝🍄 楼主
现在再来看实战的数据。当1w1暴击的剑豪分别面对7500护甲的圣域、5500护甲的谢师傅、4500护甲的山羊时,剑豪自带1000穿甲。圣域几乎难减暴击(因为圣域自己还要增加护甲)、面对谢师傅暴击接近一半,面对山羊暴击显著增多。
所以可以抽象出来这样一个模型。
系统随机生成一个[0,10)零到十之间的数字(这种写法表示不会生成数字10),该数字大于等于5,则判定暴击
2022年01月11日 21点01分 8
level 13
大元宝🍄 楼主
当真实护甲为0时,1000暴击等级可以做到全暴击,相当于给系统生成的结果直接+5,哪怕你生成的是0,加5之后等于5,依然算作暴击;
当真时护甲为3500时,1w1暴击等级都还距离全暴击有不小的距离。这一看就不是一个直线能画出来的函数图。从塔罗的词条上看,暴击等级和穿甲大概是个2-400换100的比例,具体记不清楚了,所以明显穿甲提升的暴击率要更多,因为暴击等级收益递减太严重。如果不暴击,暴击等级收益为0,而穿甲或多或少还能降低一丢丢免伤;如果必爆,暴击等增益为0,穿甲在未0甲之前提依然提供降低免伤的价值。怎么比都是穿甲优于等价值暴击(就是参考塔罗比例就好)
2022年01月11日 21点01分 9
level 13
大元宝🍄 楼主
猜想到这儿就结束了,后面需要正在,在1000暴击等级的情况下,目标拥有多少护甲可以做到一次都不暴击。目前元宝用1100+暴击的狮子去带着200+穿甲的30层BOSS,偶尔可以看到零星暴击。想要继续这个实验,那就需要保持某个0护甲状态全爆的暴击值,依次减少火枪神域的个数(保持英雄自带200护甲,每次减少一枚火枪等于-200护甲),然后观察和统计战斗的暴击次数,每组数值进行十场战斗,要求战斗持续90秒,然后取平均值作为暴击率。
根据统计值在坐标图里描点绘制曲线,观察曲线特征再推测函数类型。或者用Excel直接绘制结果的对数函数,更直观。
还需要再大概测试500护甲、1000护甲、1500护甲、2000护甲情况下的必暴所需的暴击等级。
观察一下3000真实护甲必爆需求的暴击等级到底是个什么天文数字
2022年01月11日 21点01分 10
level 13
大元宝🍄 楼主
由此得出一个结论,目标护甲越是趋近于零,需求的暴击等级越低。当面对高护甲(5000以上吧),物理攻击就要靠高系数高伤害来压血,很难打出暴击。面对中等护甲就尽量减甲,不需要暴击等级转而提升攻强,进一步提升输出空间,智力低甲目标基本直接覆盖掉了,两次必爆的攻击就带走。
2022年01月11日 21点01分 11
level 13
大元宝🍄 楼主
另外据说攻强也会影响暴击率,需要保持某个固定不为零的护甲值不变的情况下,大幅提升攻强,然后各取十场战斗作为统计样本,取平均值作为暴击率,观察是否有变化。当然做的次数越多越好。
元宝是没工夫测更具体的东西了。马上给大家分析一个更劲爆的内容。
2022年01月11日 21点01分 12
level 13
大元宝🍄 楼主
对了,也是原来元宝的挖的一个大坑,简单填一下吧。
一个关于游戏引擎的推测。姑且叫它【滚筒洗衣机】理论吧。(这个命名还有个彩蛋,猜猜看吧)
每个英雄的设定都是一个可执行的序列,遵循一个技能优先级进行动作。英雄丢入引擎后,需要额外遵循一些关于目标的判断规则,然后再执行动作。质点(英雄的模型判定点)的位移、范围(距离)的判定这些都是由引擎完成。场景内是个二维空间,只有横向距离,上天和离场一样,只是一种特殊状态而已。所谓的位移中可能出现的碰撞体积(看起来像是两个英雄靠近之后一个好像被另一个阻挡,前行变慢),其实仅仅是一个模拟碰撞体积的规则而已,通过质点距离就可以判定,其实很容易实现。
2022年01月11日 21点01分 13
level 13
大元宝🍄 楼主
每个英雄带着自己的属性和设定,进入一个大的滚筒里面,遵循既有的规则相互纠缠。设定一个时间,最终呈现出一种结果。90秒内仅存一方,或90秒到双方都有存活,各项统计数据出炉,指定其中一项作为胜利条件。这就是今天我们常见的:竞技场、传奇、气球、女神、星门的战斗模式。都是由这个【滚筒洗衣机】引擎支撑的。
反正设定好规则,任意丢10个英雄进去,肯定能给你滚出个结果来。
2022年01月11日 21点01分 14
level 13
大元宝🍄 楼主
引擎除了上述说的动作(运动)规则负责让英雄们滚起来,还有一整套结算用的规则。分别用于伤害结算、效果结算等其他奇奇怪怪的判定。
比如伤害结算就是根据攻击力、技能系数、附加伤害算出一个期望伤害值,然后根据目标的护甲/魔抗计算减伤,再增减伤状态和数值、阵营克制依次计算生效伤害值,最后再按一定顺序判定:暴击/不暴击、命中/闪避。最最后得到的伤害值,就是屏幕上跳字显示的结算伤害。
效果结算更简单,依次判定目标状态,是否能被附加某效果,然后判定增减益属性确定效果时长,附加在动作规则中,以最高优先级影响后续动作。
2022年01月11日 21点01分 15
1 2 3 4 5 尾页