游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6692|回复: 9

[原创] 加法战斗力计算的改良

[复制链接]

1

主题

5

帖子

43

积分

注册会员

Rank: 2

积分
43
发表于 2016-12-30 17:36:38 | 显示全部楼层 |阅读模式
  11月入了个新坑-ARPG手游,战斗力计算为属性加权,本身该公式就不严谨,加上人物有设置了大量的百分比属性,容差已经突破天际,遂有了改良公式的想法,废话不多说直接上正文

1.1原战斗力公式

  战斗力=HP*A+AP*B+DP*C+...........           
        
    理论上这条公式的战斗力的算法并不严谨,但此公式能给用户带来非常直观的提升体验,同时此公式也是ARPG游戏的常用公式,因此公式并不存在方向性错误,我们只需要就此公式存在的缺陷进行改良,尽量的避免容差即可。
                  
公式存在问题                  

  在只存在攻、防、血三个属性的计算内,此公式并无存在很大的隐患,在诸如暴击率、暴击伤害、无视防御、免爆率、暴击抵抗、免伤等百分比的属性加入后,随着角色面板属性的增加,角色实际战斗力会逐渐高于面板计算得出战斗力,从而出现高战玩家打不赢低站玩家的情况出现。               

  注:                  
  高战玩家:等级较高获得较多基础属性,百分比的高级属性较少。
  低战玩家:等级较低基础属性稍微低一点,有较高的百分比属性。

战斗结果分析

  从战斗结果上来说“低战玩家”玩家的定义上存在偏差的,这些偏差是由以上的百分比属性对角色攻击或血量进行百分比加成,对角色的战斗力进行直接的放大,回到战斗的本源最后结果属性其实只有两个,其他的属性均可以转换为以下两个属性:

  生存属性:HP                  
  攻击属性:AP                  
                  
1.2业内当下流行公式
  以下为业内当前比较常用的战斗力计算公式  

  战斗力=HP*A+AP*B+DP*C+...........+M*LV^2*增伤+N*LV^2免伤

  此公式内加入了增伤与免伤对战斗力的加成部分,但M*LV^2 与N*LV^2部分处理上过于粗暴,脱离了战斗计算中增伤、免伤的影响对象攻击力、血量, 再者我们的等级设置跨度很大(目前1~400,并且很快就会拓展),等级的影响过大,因此以上公式并不严谨,同时也不适合我们。

变形公式                  

  在只存在HP、AP两个基础属性的战斗计算中,可近似的认为:
              
  EDPS=AP*(1+增伤)                  
  EHP=HP*(1+免伤)                  
  即:                  
  △EDPS=AP*增伤                  
  △EHP=HP*免伤                  
  由此可得                  
  增伤战斗力=AP*B*增伤                  
  免伤战斗力=HP*A*免伤                  
                  
  增伤计算:                  

  命中:在命中未达到100%时命中率≈增伤
  无视防御:在无视防御未达到100%时无视防御≈增伤
  伤害加成=增伤
  暴击率、暴击伤害:暴击率*(暴击基础伤害倍数+暴击伤害)+1-暴击率≈增伤
  麻痹:在麻痹未达到100%时麻痹≈增伤(麻痹效果不能移动不能使用技能,暂且粗暴处理,最后再做容差修正)
  定身:在定身未达到100%时定身≈增伤(定身效果不能移动不能使用技能,暂且粗暴处理,最后再做容差修正)

  以上属性在计算时是同级关系,因此在计算总增伤时使用乘法处理,由于以上属性均需进行概率性判断处理,因此在最后结果需要进行一次开方减小容差(兰切斯特方程猜想???)
                  
  即:

  △增伤=((1+命中)*(1+无视防御)*(1+伤害加成)*(1+麻痹)*(1+定身)*(暴击率*(暴击基础伤害倍数+暴击伤害)+1-暴击率)-1)^0.5
                  
免伤计算

  闪避:在闪避未达到100%时闪避≈免伤
  格挡:在格挡未达到100%时格挡≈免伤
  伤害减免=免伤
  免暴率、暴击抵抗:免暴率*(暴击基础伤害倍数+暴击抵抗)+1-免暴率≈免伤                  
麻痹抵抗:在麻痹抵抗未达到100%时麻痹抵抗≈免伤(麻痹效果不能移动不能使用技能,暂且粗暴处理,最后再做容差修正)

  定身抵抗:在定身抵抗未达到100%时定身抵抗≈免伤(定身效果不能移动不能使用技能,暂且粗暴处理,最后再做容差修正)

  以上属性在计算时是同级关系,因此在计算总增伤时使用乘法处理,由于以上属性均需进行概率性判断处理,因此在最后结果需要进行一次开方减小容差(有点兰切斯特方程演变的迹象)
            
  即:

  △免伤=((1+闪避)*(1+格挡)*(1+伤害减免)*(1+麻痹抵抗)*(1+定身抵抗)*(免暴率*(暴击基础伤害倍数+暴击抵抗)+1-免暴率)-1)^0.5         

1.3新公式
              
  人物总战斗力=基础战斗力+增伤战斗力+免伤战斗力
  基础战斗力=HP*A+AP*B+DP*C+..........  
  增伤战斗力=((1+命中)*(1+无视防御)*(1+伤害加成)*(1+麻痹)*(1+定身)*(暴击率*(暴击基础伤害倍数+暴击伤害)+1-暴击率)-1)^0.5*AP*B
免伤战斗力=((1+闪避)*(1+格挡)*(1+伤害减免)*(1+麻痹抵抗)*(1+定身抵抗)*(免暴率*(暴
击基础伤害倍数+暴击抵抗)+1-免暴率)-1)^0.5*HP*A

  注:以上计算需在命中、无视防御、麻痹、定身、暴击率此类会溢出的属性在未溢出的前提下,即这些属性在投放是需注意不要溢出



1

主题

5

帖子

43

积分

注册会员

Rank: 2

积分
43
 楼主| 发表于 2016-12-31 00:04:14 来自手机 | 显示全部楼层
抛个砖,欢迎吐槽

8

主题

48

帖子

233

积分

中级会员

Rank: 3Rank: 3

积分
233
发表于 2017-1-3 19:52:47 | 显示全部楼层
看来你不懂啊

1

主题

5

帖子

43

积分

注册会员

Rank: 2

积分
43
 楼主| 发表于 2017-1-4 23:48:16 来自手机 | 显示全部楼层
molrw 发表于 2017-1-3 19:52
看来你不懂啊

请赐教,愿闻其详

8

主题

48

帖子

233

积分

中级会员

Rank: 3Rank: 3

积分
233
发表于 2017-1-5 15:26:26 | 显示全部楼层
aifenjie626 发表于 2017-1-4 23:48
请赐教,愿闻其详

先问一个问题,你知道目前常用战斗力公式里的系数哪里来的吗?

1

主题

5

帖子

43

积分

注册会员

Rank: 2

积分
43
 楼主| 发表于 2017-1-6 14:01:04 | 显示全部楼层
molrw 发表于 2017-1-5 15:26
先问一个问题,你知道目前常用战斗力公式里的系数哪里来的吗?

战斗价值定义属性价值

8

主题

48

帖子

233

积分

中级会员

Rank: 3Rank: 3

积分
233
发表于 2017-1-6 14:02:59 | 显示全部楼层
aifenjie626 发表于 2017-1-6 14:01
战斗价值定义属性价值

这说了还不如不说,战斗价值、属性价值哪里的?弄不懂就去做系统吧

3

主题

11

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2017-1-6 17:41:09 | 显示全部楼层
纯加法即可,玩家清晰明了,数值价值核算也简单
纯加法可以解决一个问题:一件加暴击的装备显示的战力始终不变,而乘法公式则不行。

为了解决高战打不赢低战的问题,有一种方法是:在伤害公式中加入战力差距影响系数,当然还有其它方法去平衡。只要玩家觉得战力高容易赢即可,不断优化这种感受,属性价值与加增加战力不符的问题反而就是次要的了。

乘法公式有个好处,在后期一点点属性都可以增加很多战力,玩家感觉花更少的钱得到了更多战力。

乘法和加法都用过,优劣各有,看取舍了

1

主题

5

帖子

43

积分

注册会员

Rank: 2

积分
43
 楼主| 发表于 2017-1-6 20:21:27 | 显示全部楼层
杜绝聪明 发表于 2017-1-6 17:41
纯加法即可,玩家清晰明了,数值价值核算也简单
纯加法可以解决一个问题:一件加暴击的装备显示的战力始终 ...

认同你的结论:只要"高战"打"低战"保持较高的胜率即可
      对于你的见解还是有点疑问
      但是暴击伤害,暴击率,伤害加成这些高级属性是直接放大伤害的,越到后期作用越大,而这些属性一般都要花钱才能提高到一个作用比较大的作用,如果这时候排行榜里面有个付费玩家AFK之后,非R会在一段时间内死活打不过他,要在 战斗力 高出很多之后才行

       说的比较乱,强调一下高战低战的定义
       高战玩家(非R):等级较高获得较多基础属性,百分比的高级属性较少。
  低战玩家(R):等级较低基础属性稍微低一点,有较高的百分比属性。

3

主题

11

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2017-1-7 12:57:14 | 显示全部楼层
aifenjie626 发表于 2017-1-6 20:21
认同你的结论:只要"高战"打"低战"保持较高的胜率即可
      对于你的见解还是有点疑问
      但是暴击伤 ...

我是这样暂时解决的:
1.高级属性本身加的战力高一些
2.在属性分配上做文章。R玩家在得到暴伤高级属性时,尽量同步得到攻击基础属性,这样战力才会同步提高。
3.合服或活动,按注册时间等条件重新排榜,再去竞争排名,剔除休眠玩家

暴伤这种高级属性,伤害公式决定了走加法战力必然不能完整反应价值属性。目前我还没找到完美解决方案,只能达到一定的平衡。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-5-13 22:57

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表