黑暗之魂2吧 关注:149,249贴子:2,388,603

【黑暗之魂2:原罪学者】迅速与闪避无敌帧关系表

只看楼主收藏回复

(原帖镇楼图清晰度较低,这次重新发一个清晰度较高的)
目前,所有关于魂2闪避(翻滚、后撤步)无敌帧的数据均存在错误。例如,闪避无敌帧最后一个阈值在以往常常被认为是迅速=116,但实际上是迅速=120。再如,翻滚无敌帧的上限是17帧,而并非16帧。
//
我在使用LordRadai提供的MorphemeConnect程序的基础上,查看了游戏解包文件中关于基础闪避无敌时间、补正闪避无敌时间(即迅速提供的那部分)的规定。同时,我也查看了游戏解包文件PhysicalStatsPerLevelStatValuesParam.param当中对迅速(实际上并非游戏中显示的迅速)与闪避无敌时间的补正系数之间关系的规定。此外,我还结合了LordRadai提供的DebugManager程序,在游戏中进行了实测。这样,完全使用游戏解包文件的计算结果、与较为科学的实测验证,可以确保我给出的表格的准确性。
//
当前版本的表格如下(移动端如果图片不清晰,可以用“查看原图”功能),后续如有美化调整,会在2楼的楼中楼(回复)中发布链接,谢谢大家!


IP属地:山东1楼2024-07-19 21:39回复
    2楼留空,后续如有美化调整,会在本楼的楼中楼(回复)中发布链接。


    IP属地:山东2楼2024-07-19 21:40
    收起回复
      本帖后续将陆续对无敌帧的计算过程进行说明。


      IP属地:山东3楼2024-07-19 21:40
      收起回复
        先给出闪避(包括翻滚、后撤步)无敌帧的计算公式:
        //
        翻滚无敌帧 = 基础翻滚无敌帧 + 翻滚补正系数 * 补正翻滚无敌帧 - 1
        后撤步无敌帧 = 后撤步补正系数 * 补正后撤步无敌帧
        //
        其中,“基础翻滚无敌帧”在解包文件c000100_pl.tae中称作InvokeInvincibility,它表示角色拥有的翻滚无敌时间的初始值。在30帧游戏下,其值固定为4帧。
        “翻滚补正系数”在解包文件PhysicalStatsPerLevelStatValuesParam.param中被称作agility_roll,它表示迅速对翻滚无敌帧的补正系数。在解包文件中,其值单位为百分比,初始值为25%、最大值为100%。
        “补正翻滚无敌帧”在解包文件c000100_pl.tae中称作InvokeScaledInvincibility,它表示角色可以通过迅速来获得翻滚无敌时间的补正值。在30帧游戏下,其值固定为14帧。
        “后撤步补正系数”在解包文件PhysicalStatsPerLevelStatValuesParam.param中被称作agility_backstep,它表示迅速对后撤步无敌帧的补正系数。在解包文件中,其值单位为百分比,初始值为20%、最大值为100%。
        “补正后撤步无敌帧”在解包文件c000100_pl.tae中同样称作InvokeScaledInvincibility、只不过它所属于后撤步相关的条目,它表示角色可以通过迅速来获得后撤步无敌时间的补正值。在30帧游戏下,其值固定为11帧。
        //
        翻滚与后撤步无敌帧计算公式之间的最大区别,就在于翻滚无敌帧是同时拥有基础和补正的,而后撤步无敌帧没有基础、只有补正。同时,翻滚无敌帧的基础和补正之间的窗口重叠了1帧,因此在计算时要减去这1帧。


        IP属地:山东4楼2024-07-19 21:41
        收起回复
          下面,用MorphemeConnect打开相应解包文件,这里选择DodgeRollingLong对应的条目(Short的闪避无敌帧也是一致的),TimeAct窗口中的InvokeInvincibility就表示了“基础翻滚无敌帧”,而InvokeScaledInvincibility就表示了“补正翻滚无敌帧”。
          这里是按照每秒30帧来呈现的,也就是说1帧≈0.03333……秒。可以得到,“基础翻滚无敌帧”被规定为了4帧。同理,“补正翻滚无敌帧”被规定为了14帧。
          同时也可以发现,InvokeInvincibility和InvokeScaledInvincibility之间重叠了1帧。所以,“补正翻滚无敌帧”的第一帧是没有意义的、在计算上应该把这一帧减掉。所以,翻滚无敌帧的上限应该 = 4 + 1 * 14 - 1 = 17帧。


          IP属地:山东5楼2024-07-19 21:41
          回复
            如图,“翻滚无敌帧”的上限为0.567秒,即17帧。


            IP属地:山东6楼2024-07-19 21:42
            回复
              这张图是关于后撤步无敌时间的规定,这里只有InvokeScaledInvincibility,那就是说后撤步无敌时间仅有补正部分、而不存在基础部分。
              “补正后撤步无敌帧”从第5帧(0.133秒)开始、到第15帧(0.500秒)结束,共计11帧(0.367秒)。


              IP属地:山东7楼2024-07-19 21:42
              回复
                下图是我根据解包文件MenuStatsParam.param和PhysicalStatsPerLevelStatValuesParam.param所整理的有关数据。由于截图长度问题,本楼先给出“灵魂等级”从1到30的图。
                //
                其中第1列表示“灵魂等级”(soul level),每级代表角色的所有属性均为该等级。例如,当角色的“灵魂等级”=50时,记忆力=适应力=50。
                //
                第2列表示“显示迅速”(stat_agility),之所以称之为显示,是因为这个参数的数值正好是游戏中状态栏里呈现的“迅速”的取值。实际上,该值并不能解释“迅速”是如何发挥作用的。
                //
                第3列表示“后撤步补正系数”(agility_backstep),第4列表示“翻滚补正系数”(agility_roll)。这两个参数才是真正决定了“迅速”与闪避无敌帧之间关系的因素,可以看到它们在不同“灵魂等级”下都是不同的、逐级提升。
                这两个参数在解包文件中的单位是百分比(%),而在实际计算中为了更为方便,我们在接下来的计算中会将其转化为小数的形式。例如,当“灵魂等级”=19、也就是记忆力=适应力=19、“面板迅速”=99的情况下,“后撤步补正系数”=0.62、“翻滚补正系数”=0.643。


                IP属地:山东8楼2024-07-19 21:42
                回复
                  下图是“灵魂等级”从31到60时的情况。


                  IP属地:山东9楼2024-07-19 21:42
                  回复
                    下图是“灵魂等级”从61到90的情况。


                    IP属地:山东10楼2024-07-19 21:43
                    回复
                      下图是“灵魂等级”从91到99的情况。


                      IP属地:山东11楼2024-07-19 21:43
                      回复
                        如果硬要找一个能够准确衡量闪避无敌帧变化的指标,那么肯定不能是“显示迅速”。从上面给出的列表就不难发现,当“后撤步补正系数”和“翻滚补正系数”在不断变化的时候,“显示迅速”在110之后却出现了间歇性停滞的情况。稍加思考,不难想到是“灵魂等级”更为合适,因为游戏就是这么来规定的。但是就实用性来看,“灵魂等级”这种1记忆力+1适应力的组合并不能满足实际应用的需求。
                        //
                        就“迅速”(而不是“显示迅速”)的取值规则来看,适应力的作用是记忆力的3倍,因此我们可以规定一个新的指标:“适应力*3+记忆力”。顾名思义,这个指标就是适应力乘以3、再加上记忆力的数值。
                        首先,这个指标可以完全涵盖“灵魂等级”的取值。“灵魂等级”从1到99,相当于“适应力*3+记忆力”从4到396、每次增加4。
                        其次,这个指标可以满足实际应用的需求。角色无论如何加点,都能找到与之对应的“适应力*3+记忆力”的取值。例如,无论是1适应69记忆、14适应30记忆、16适应22记忆、18适应18记忆,都代表了“适应力*3+记忆力”=72。
                        最后,这个指标能够准确反应闪避无敌帧的变化。为此,我进行过实测,可以确保真实性。而且,游戏本身就是按照“灵魂等级”来规定的闪避无敌帧、而且又规定了适应力对“迅速”的影响作用是记忆力的3倍。
                        //
                        因此,“适应力*3+记忆力”这个指标非常适合用来判定角色的闪避无敌帧取值。当然,为了应用方便,向新手介绍闪避无敌帧时可以粗略地用“显示迅速”来代替。因为在85以上、110以下,“显示迅速”也能够准确衡量闪避无敌帧。


                        IP属地:山东12楼2024-07-19 21:44
                        回复
                          接下来,举例说明本表的无敌帧计算,就以翻滚无敌帧的14帧无敌来举例,如下图。当“适应力*3+记忆力”=132时,计算得到“实际迅速”≈110.4286,而此时面板上的“显示迅速”=110。按照老数据,这时没到111的迅速,是不能达到14帧翻滚无敌的。但是,游戏中的翻滚无敌帧的计算过程却是如下的:
                          //
                          翻滚无敌帧 = 基础翻滚无敌帧 + 翻滚补正系数 * 补正翻滚无敌帧 - 1
                          //
                          我们知道,“基础翻滚无敌帧”永远为4、“补正翻滚无敌帧”永远为14。而根据上面发的列表,“适应力*3+记忆力”=132对应了“灵魂等级”=33,也就是说此时“翻滚补正系数”=0.786,那么计算结果如下:
                          //
                          翻滚无敌帧 = 4 + 0.786 * 14 - 1 = 14.004 ≈ 14。(结果不是四舍五入、而是向下取整)
                          //
                          所以,尽管此时“显示迅速”=110,但实际上角色已经拥有了14帧的翻滚无敌了。


                          IP属地:山东13楼2024-07-19 22:14
                          回复
                            dddd


                            IP属地:广东来自Android客户端14楼2024-07-20 00:45
                            收起回复
                              让我康康


                              IP属地:广东来自Android客户端15楼2024-07-20 12:06
                              收起回复