暗黑破坏神吧 关注:682,462贴子:20,599,898
  • 4回复贴,共1

D2法术动作结构浅析(二期),重新修订版

只看楼主收藏回复

----------------前言----------------
[SIZE=3]非常感谢贴吧大神yanhuang415对动作公式的指正。
再次修订并省去冗长的逻辑推理,直接以最终结果为导向重新撰写。
本文对法术动作结构公式、施法打断、全角色完整FCR分档做了简单讲解。[/SIZE]
----------------上图----------------


[SIZE=3]上两图为PLD和SOR的FCR表完整版,左侧为完整与分段动作两套公式与参数
由前置施法时间(i1)加后置硬直时间(i2)组成法术完整动作时间FPC(i0)
所有公式已通过大量实验数据验证,表格内可填写FCR值进行计算
全职业完整FCR表与下载链接见下一章[/SIZE]


IP属地:上海1楼2022-06-29 06:19回复
    D2法术动作结构浅析(二期)-1-公式与结构
    ----------------正文----------------
    一、法术动作公式与结构
    D2游戏内绝大多数动作都靠动作分段点分为前后两段,对程序计算结果套用一连串静止动画帧来表现出动作的连续性。比如普通攻击由<攻击开始-攻击命中-恢复站立姿态>这一整套动画来表现,出招动作为开始-命中这一段,收招动作则是命中-恢复站立姿态这一段,中间攻击命中动画对应的就是这一整套动作的分段点,在程序内部使用几套类似的动作公式来实现,不同角色模型有各种不同参数。
    各精华帖中对于攻击动作已有非常全面的解析,法术动作则没有更深入地探讨,本研究主要以实验数据逆向论证法术动作分段公式为主。
    1.法术动作公式
    法术动作分为一般法术与顺序法术,全都遵循同一套法术动作分段公式
    一般法术完整动作公式
    FPC={HitShift*FramePerDirection/[(BaseRate+EFCR)*AnimationSpeed/100]}-1
    顺序法术完整动作公式(闪电/连锁闪电随公式变化,其他顺序法术不受FCR影响)
    FPC={HitShift*FramePerDirection/[(BaseRate+EFCR)*AnimationSpeed/100]}
    以上两个公式为精华帖原有内容,只能计算完整法术动作时间
    以下公式参考回退动作公式中的FrameDataActionFlag参数,作为本系列实验主要论证内容
    法术动作分段公式
    FPC={HitShift*FrameDataActionFlag/[(BaseRate+EFCR)*AnimationSpeed/100]}
    2.法术动作结构
    与攻击动作原理类似,法术动作分段点决定了前置施法动作时间,该点决定了施法成功与打断和冷却起始时间点
    以下为法术类动作结构模型概念简图,分为一般法术动作与Delay法术动作两种

    自建新变量,动作长度i,单位为帧F
    i0:法术类动作完整动作长度
    i1:前置施法动作
    i2:后置硬直动作
    iA:固定间隔1F
    C0:法术动作分段点
    D0:Delay结束
    D1:GCD结束
    D2:Delay法术动作结束
    iA固定1帧和GCD功能在原版与重制版中有所改动
    (1)原版Delay技能前置施法动作完成,所有Delay技能进入冷却,间隔1帧(iA)后其他技能冷却GCD(12F),GCD结束(D1)才可施展其他技能
    (2)重制版Delay技能前置施法动作完成,所有技能立即进入冷却,间隔1帧(iA)后其他技能结束冷却,Delay技能动作完成后(D2),就可施展其他技能
    D2R从正式上线到2.3版已经移除GCD功能使其他技能不受GCD限制
    D2R2.4版进一步移除Delay联动冷却机制,使所有Delay技能之间解除了同步冷却限制
    为更直观地理解法术动作结构,截取FCR105档连续施展冰风暴实验数据,实例图解如下

    上面一排记录帧数从0开始是为了方便统计数据,实际帧数从0帧开始为第1帧
    FCR=105时,前5帧+后3帧组合成整个法术动作8帧,第9帧counter计数终止并重置同时开始新动作
    前半段动作的最后1帧(关键帧)为整个施法动作分段点,下1帧起为后半段硬直动作
    关键帧主要功能:前置施法动作完成、开始冷却
    ------------------------------------
    counter计数相关内容请参阅《资料室离线版第二版》中的<动作帧数详解>
    ------------------------------------
    下一章探讨完整FCR表的意义以及施法打断等相关内容


    IP属地:上海4楼2022-06-29 06:29
    回复
      D2法术动作结构浅析(二期)-2-关键点分析
      ----------------上图----------------

      此图为全职业完整FCR表,亚马逊档位随武器变化,随附武器类型代码表
      全职业完整FCR可计算表格下载链接见本章文末
      ----------------正文----------------
      二、关键点分析
      1.完整FCR表的意义
      FCR表并非游戏设计者发布,而是玩家们总结的一套程序运算结果汇总,法术动作分段点的重新认识,使每一个人物的FCR表有了更完整的前后施法档位细分。
      (1)从理论公式到实验论证,填补了多年来的法术动作结构空白,全面系统地验证了法术动作的不同前后档位,帮助玩家们更好地理解FCR作用,更清晰地认识到不同人物(甚至不同武器类型)在各种FCR档位下对前置施法速度的具体影响程度。
      (2)完整FCR表的档位细分,使玩家们能更系统直观地重新认识“前置施法”概念,而且在理解施法打断过程中起到关键作用。
      (3)FCR极限推算,按公式计算PLD在FCR232时法术完整动作可达8F,FCR250时前置施法时间还可进一步压缩至5F。游戏中正常装备极限为220/235(bar),本系列实验借助UdieToo修改了3组PLD超档测试,FCR分别为220、232、250,实验结果均为无变化,证明精华帖中<(BaseRate+SpeedIncrease)上限为175>的动作速度限制原理对于法术类动作同样有效,用EFCR公式计算得出FCR在超过207时EFCR就达到76,所以人物FCR最高有效上限为207。
      (4)闪电/连锁闪电作为唯一的可变长度顺序法术动作,无法得知分段公式能否正确应用,所以进行了大量的格挡打断施法实验,在得出足够的数据样本后,逆向验证了分段公式可正常生效。
      (5)目前最重要的受益方为重制版2.4的天堂之拳,Delay由2.4版前25F减少为2.4版9F,由于该法术后置动作被Delay覆盖的时间大幅缩短,所以前置施法档位细分成了提升效率的关键,在FCR86档时前置施法时间6F与FCR125档相同,相比FCR75档施法总间隔从16F减少到15F。
      2.格挡动作与施法打断
      (1)格挡动作触发时,对相应施法动作帧进行替换,使施法动作的counter计数提前终止导致施法动作被打断。
      (2)如格挡动作触发在后置动作时间内,则后置硬直动作被格挡动作替换。
      SOR-FCR200%(3F+4F=7F),FBR=35%(6F),block=1+6=7F

      上案例第4帧(关键帧)触发格挡,冰风暴前置施法动作完成前被格挡动作替换,施法被打断。
      下案例第5帧触发格挡,冰风暴前置施法动作已完成,格挡动作替换后置硬直动作。
      如果FBR足够高(圣盾优势),格挡恢复时间短于原本的施法动作后置硬直时间,反而会更快地开始下一次施法动作。
      PLD-FCR0%(9F+6F=15F),FBR=30%(4F),开启圣盾后格挡恢复为2F,block=1+2=3F

      该案例格挡触发在第10帧,未打断圣光弹,开启圣盾后格挡动作3F,替换了圣光弹的后置硬直动作6F,比原本未格挡时的后置动作提前3F开始下一个圣光弹的施法动作。
      3.格挡动作时间
      (1)格挡触发1F+格挡恢复时间组成了完整格挡动作,传统FBR表为格挡恢复时间,实际完整格挡动作还需要+1F。
      (2)大量实验数据中均未见格挡恢复时间延长或格挡期间再格挡现象。
      ----------------下载----------------
      SOR、PLD、others三张表格包含了两期实验所有数据
      FCR表完整版内为一张总表和各职业计算公式
      传送门:
      https://pan.baidu.com/s/1njdUGsvnS3hBsdaiennPDw
      mptm
      ----------------后记----------------
      21年下半年D2R已上线几个月而1.11新赛季将开未开之时的无聊期间,我抱着一些多年来的疑问尝试着做了第一期关于法术类动作的研究,因为对整个动作系统的认识非常片面浅显,所以带着一堆错误概念得出了一些混乱的结论,当时想了很久都没有办法解决那些当时看起来莫名其妙的问题。
      22年重制版2.4更新后,从蜗牛大佬视频得知贴吧有新的FCR档数据研究,在套用一期得出的分段动作公式后感觉贴吧的数据帧数不对,于是开始着手新的实验项目,想帮忙补完并订正一下档位数据,完善PLD的FCR表。
      实验中分析数据时发现1.11原版和2.4重制版在圣光弹的投射物出现时间点上有细微差别(4F/2F),但是完整施法时间是相同的,此时突然想到了一些非常关键的问题:所有法术类动作应该与攻击类动作一样都是分段实现的,投射物不能作为施法完成参照点。
      法术动作分段概念是开始这项研究的主要目的,其他参照点等错误都可以再修改,只要研究主体大方向是正确的那就还有救,所以才有第二期来修订与完善。
      本系列研究跨度较长,中间还经历了1.11开荒和长期封控没有继续做,其实总花费时间并不多,每天抽空做做大约1个多月吧,时间主要都花在了逐帧记录数据、表格调整和对游戏的思考与理解,玩游戏反而没这劲头足...主要还是对游戏底层功能没有清晰的认知,不过这个学习和探索的过程带给我的乐趣比单纯玩游戏要多。
      最后还要再次感谢贴吧大神yanhuang415对动作公式的指正,耐心地花费数小时探讨动作原理,帮我理清了动作公式的逻辑错误,最终使整个研究实验中的各种奇怪问题都迎刃而解了。
      ------------------------------------
      本文同步发表于贴吧、B站专栏与国内某论坛


      IP属地:上海5楼2022-06-29 06:32
      回复
        贴吧功能过于简陋,如某些图片无法正常显示,请打开补图地址:
        FCR105档连续施展冰风暴实验数据,实例图解
        s2.loli.net/2022/06/29/Ho7Wm54g1vb6QZq.png
        全职业完整FCR表
        s2.loli.net/2022/06/29/1cRIb2yOjSEQq69.png
        格挡动作与施法打断案例1
        s2.loli.net/2022/06/29/xAYRKcdX7Gw49ye.png
        ----------------------------------------------
        更佳阅览效果可移步B站专栏
        https://www.bilibili.com/read/readlist/rl514216?spm_id_from=333.999.0.0


        IP属地:上海6楼2022-06-29 06:42
        回复
          在b站回复你了


          IP属地:辽宁来自Android客户端7楼2022-06-29 13:51
          回复