永恒之柱吧 关注:18,742贴子:195,363

力量 感知 敏捷 分配与对物理攻击的影响

只看楼主收藏回复

自古一楼不言事


IP属地:内蒙古1楼2018-06-11 20:56回复
    力量、敏捷、感知
    一、前提:
    1. 2代版本1.1
    2. 只计算单独一种情况下,其他的 带入具体系数 以此类推。
    二、公式:
    1.命中,这里取100次攻击,roll 100 产生 1~100各出现一次(因为每个都是1%概率,1万亿次攻击 一乘一除最后结果一样)
    2.累计100次伤害,除以100,算出每次攻击伤害的平均值。
    3.dps=(每次攻击的伤害)/(每次攻击的所用时间)
    这里设 ,X 为 命中减去防御的值(感知影响),Y 为 力量影响值,Z 为敏捷影响值。
    其中Xc为技能或装备的精准加值,Yc(含直接加伤)、Zrc(含装备加减成速度)、Zac同理。
    当0<= X + Xc<=30时,
    100次攻击累计伤害的基础值 :dmg_base=(30 - X - Xc)* 0 + 20 * graze_function + 50 *(1+0.03Y + Yc)+ (X + Xc) * (1.55 + 0.03Y + Yc)
    单次攻击伤害:dmg=(dmg_base)*(dmg_roll)/100
    单次攻击时间:t=t_recovery_base/recovery_speed + t_action_base/action_speed=t_recovery_base/(1 + 0.03Z + Zrc)+t_action_base/(1+0.03Z+Zac)
    最终通用公式:
    dps=dmg/t=[(30 - X - Xc)* 0 + 20 * graze_function + 50 *(1+0.03Y + Yc)+ (X + Xc) * (1.55 + 0.03Y + Yc)] * [(dmg_roll)/100]/ [t_recovery_base/(1 + 0.03Z + Zrc)+t_action_base/(1+0.03Z+Zac)]
    其中
    1.graze_function 当(-1+0.03Y+Yc)为正值时为(0.03Y+Yc),负值时转为1/(2-0.03Y-Yc)
    2.其他大部分采用 正值算法,因为出现负的情况非常少(比如 命中 但是伤害加成值为负等情况)。
    三、问题
    1.不同bd 不同装备,Xc、Yc、Zrc、Zac 系数不同
    2.X、Y、Z、dps 为四维,没法画图展现,这里只从极值 最大值 简单计算下
    ---------------------------------------------------------------------------------------------------------------------------------------
    情况一 裸体白板
    系数说明
    1.Xc、Yc、Zrc、Zac 暂且设为0,graze_function 为 1/(2-0.03Y-Yc) 因为白板不可能加出44点力量值。
    2.0<= X <=30,等级相当的正常情况下。
    3.设 dmg_roll=20,t_recovery_base=4,t_action_base=0.8;
    系数设定
    graze_function = 1/(2-0.03Y-Yc)
    Xc=0;
    Yc=0;
    Zrc=0;
    Zac=0;
    t_action_base=0.8;
    t_recovery_base=4;
    约束条件
    -7<=X<=10;
    -7<=Y<=10;
    -7<=Z<=10;
    X+Y+Z=20;
    计算:略
    结果:
    str=
    7.322183754791489
    per=
    2.678977201900436
    dex=
    9.998834870309832
    maxVal=
    4.168446968589194
    --------------------------------------------------------------------------------------------------------------------------------------
    情况二 白板 双持(含有双持加成 双武器战斗风格)
    系数设定
    graze_function = 1/(2-0.03Y-Yc)
    Xc=0;
    Yc=0;
    Zrc=0.429+0.176;
    Zac=0;
    t_action_base=0.5;
    t_recovery_base=3;
    约束条件
    同上
    结果:
    str=
    9.999954232346251
    per=
    8.061944115581415
    dex=
    1.938099191159896
    maxVal=
    8.054968061497240
    --------------------------------------------------------------------------------------------------------------------------------------
    情况三 白板 单手
    系数设定
    graze_function = 1/(2-0.03Y-Yc)
    Xc=12;
    Yc=0;
    Zrc=;
    Zac=0;
    t_action_base=0.8;
    t_recovery_base=4;
    约束条件
    同上
    结果:
    str=
    9.999998298686778
    per=
    2.354658139736921e-06
    dex=
    9.999999146993291
    maxVal=
    5.360588175188809
    -------------------------------------------------------------------------------------------------------------------
    情况四 双持 魂刃 + 游荡 20级 带装备

    系数设定
    graze_function =(0.03Y+Yc)
    Xc=3(装备感知) + 5 (匕首额外带5)+ 10(致盲技能)= 18;(传奇装备+15精准,不累计在内)
    Yc=0.25(致盲)+0.6(偷袭)+0.5(致死)+0.2(吸能之鞭)+0.2(呕吐锥 疯狂醉汉)+0.6(传奇武器)= 2.35;
    Zrc=0.1(黑刃兜帽)+0.2(呕吐锥 疯狂醉汉)+ (0.05+0.03)(安格尔的敏捷之触)+ (0.15-0.03)(朗姆酒) + (-0.2 + 0.111)异端皮革 + 0.429(双持)+ 0.176(双武器姿态)= 1.016;
    Zac=0.1(黑刃兜帽)+0.2(呕吐锥 疯狂醉汉)+ (0.05+0.03)(安格尔的敏捷之触)+ (0.15-0.03)(朗姆酒)= 0.5;
    t_action_base=0.5;
    t_recovery_base=3;
    约束条件
    同上
    结果:
    str=
    2.176585404444776e-07
    per=
    9.999999836168605
    dex=
    9.999999892658657
    maxVal=
    41.154027387397889
    很明显,伤害加成都2.35,力量那10点真是毛毛雨。
    ---------------------------------------------------------------------------------------------------------------
    可以看出在后期,属性在物理攻击上的收益,基本上可有可无。
    最后 如果错误,欢迎 指正与讨论


    IP属地:内蒙古2楼2018-06-11 20:57
    收起回复
      广告
      立即查看
      我竟然认真看完了,当年学函数的时候都没有这么认真看过……


      来自手机贴吧3楼2018-06-11 21:15
      回复(1)
        这么多年数学都快忘了


        IP属地:阿联酋4楼2018-06-11 21:32
        回复
          这是楼主matlab的代码直接复制吧,还是建议截个图或者生成个图标,这个太不直观了(我居然看完了)


          IP属地:北京来自Android客户端5楼2018-06-11 21:37
          回复(3)
            %%
            clc;clear;
            syms X Y Z Xc Yc Zrc Zac t_recovery_base t_action_base
            dmg_roll=20;
            graze_function1 = (0.03*Y+Yc);
            %graze_function2 = 1/(2-0.03*Y-Yc);
            dmg_base = (30 - X - Xc)* 0 + 20 * graze_function1 + 50 *(1+0.03*Y + Yc)+ (X + Xc) * (1.55 + 0.03*Y + Yc);
            dmg=(dmg_base)*(dmg_roll)/100;
            t=t_recovery_base/(1 + 0.03*Z + Zrc) + t_action_base/(1+0.03*Z+Zac);
            dps=dmg/t
            %%
            % 白板
            clc;clear;
            syms Xc Yc Zrc Zac t_recovery_base t_action_base
            Xc=0;
            Yc=0;
            Zrc=0;
            Zac=0;
            t_action_base=0.8;
            t_recovery_base=4;
            dps_fuction = @(x)((-1)*((3*x(2))/10 + 10*Yc - 4/((3*x(2))/100 + Yc - 2) + ((x(1) + Xc)*((3*x(2))/100 + Yc + 31/20))/5 + 10)/(t_action_base/((3*x(3))/100 + Zac + 1) + t_recovery_base/((3*x(3))/100 + Zrc + 1)));
            lb = [-3,-3,-3];
            ub = [10,10,10];
            A = [1,1,1];
            b = [20];
            Aeq = [];
            beq = [];
            x0 = [7,3,10];
            [x,fval] = fmincon(dps_fuction,x0,A,b,Aeq,beq,lb,ub);
            disp('str=')
            disp(x(2))
            disp('per=')
            disp(x(1))
            disp('dex=')
            disp(x(3))
            disp('maxVal=')
            disp(-fval)
            %%
            % 神装
            clc;clear;
            syms Xc Yc Zrc Zac t_recovery_base t_action_base
            Xc=18;
            Yc=2.35;
            Zrc=1.016;
            Zac=0.5;
            t_action_base=0.5;
            t_recovery_base=3;
            dps_fuction = @(x)((-1)*((21*x(2))/50 + 14*Yc + ((x(1) + Xc)*((3*x(2))/100 + Yc + 31/20))/5 + 10)/(t_action_base/((3*x(3))/100 + Zac + 1) + t_recovery_base/((3*x(3))/100 + Zrc + 1)));
            lb = [-3,-3,-3];
            ub = [10,10,10];
            A = [1,1,1];
            b = [20];
            Aeq = [];
            beq = [];
            x0 = [7,3,10];
            [x,fval] = fmincon(dps_fuction,x0,A,b,Aeq,beq,lb,ub);
            disp('str=')
            disp(x(2))
            disp('per=')
            disp(x(1))
            disp('dex=')
            disp(x(3))
            disp('maxVal=')
            disp(-fval)


            IP属地:内蒙古7楼2018-06-11 21:39
            回复
              ヾ(●´∇`●)ノ哇~


              IP属地:江苏来自Android客户端8楼2018-06-11 21:41
              回复
                佩服佩服。


                来自手机贴吧9楼2018-06-11 21:45
                回复
                  广告
                  立即查看
                  所以,结论是啥?力量不太重要,敏捷感知加高?


                  IP属地:云南10楼2018-06-11 22:11
                  收起回复
                    就是如此,法师要力量,菜刀反而无所谓敏捷虽然对输出提升也不是那么不讲道理,但攻速对各种花式命中/暴击时触发XXXX却是实打实的。输出上,力量远不如感知敏捷重要。


                    IP属地:上海来自Android客户端11楼2018-06-11 22:12
                    回复
                      文科生表示进错吧系列……坐等楼主给结论


                      IP属地:广东来自iPhone客户端12楼2018-06-11 22:14
                      回复
                        没啥结论,基本就是缺什么补什么 做平衡点。但是 力量在后期(装备) ,由于装备加成太高,导致加力量收益太低。
                        四维 切片图,我后面再补。


                        IP属地:内蒙古13楼2018-06-11 22:28
                        回复(4)
                          楼主我不是挑事,你这只是怪躺着给你打的情况吧。和实际战斗不一样


                          IP属地:广西17楼2018-06-11 22:45
                          收起回复
                            要是柱子和魔兽一样有simc模拟就好了。。。


                            IP属地:北京18楼2018-06-11 23:25
                            回复