新闻动态 news

联系我们 contact us


  • 010-85898922
  • 北京市通州区万达广场B座1315室(八通线地铁A口出)
  • (售前技术)
  • 乘法战斗公式分析研究:有关防御减伤率与随机变动

  • 发布人:九四玩

乘法战斗公式分析研究:有关防御减伤率与随机变动 ...

  刚好在整理一些数值方面的东西,就乘法战斗公式这块我分享一下我整理的文章,仅供参考:

  最基本的公式:攻方伤害=攻方攻击力*系数

  系数包括且不限于以下几个方面的乘积:

  1. 防御减伤率:根据受击方的护甲/防御力而产生的一个减伤的系数

  a) 这个系数设计的基本思路有:

  i. 护甲越高,防御减伤率越高。

  ii. 护甲越高,所带来防御减伤率的边际收益越低。

  iii. 护甲值趋向于无限大的情况下,防御减伤率趋向于小于1的一个定值。

  b) 具体的一些思路/例子:

  i. 基本的反比例函数,构建一个满足上述条件的反比例函数。以DotA普攻为例,这个减 伤率=护甲*0.06/(1+护甲*0.06),在护甲值趋向于无穷大的情况下,减伤率趋向于1,由于游戏特性,这个值一般不会超高100,模拟出来的函数曲线是这样的:

乘法战斗公式分析研究:有关防御减伤率与随机变动 ...

1 小时前 上传


  ii. 分段函数:对于数值比较大,不断引入新系统投放防御属性的游戏(页游/端游),单纯的一个函数便不能满足需求,这时候需要根据属性投放制定分阶段的防御减伤率函数。下面拿之前项目的公式举个栗子:

  阶段1:当0≤数值防御≤500时

  防御免伤率=1-1/(1+数值防御/4500)

  阶段2:当500<数值防御《7000时

  防御免伤率=1-1/(125/117+数值防御/11700)

  阶段3:当7000<数值防御《30000

  防御免伤率=1-1/(108/69+数值防御/69000)

  阶段4:当数值防御>30000

  防御御免伤率=0.5+0.1*((数值防御-30000)/30000/((数值防御-30000)/30000+1)

  模拟出来的曲线是这样的:

乘法战斗公式分析研究:有关防御减伤率与随机变动 ...

1 小时前 上传


  2. 随机变动:为了增加战斗的随机性、观赏性抑或不稳定因素,或者是为了增加小属性的投放(数值言中的“挖坑”),往往会引入一些随机因素。主要的随机因素可能有以下一些:

  a) 随机数:纯粹的使得在特定的攻击者和攻击对象的情况下,多次伤害值在较小范围内浮动。产生这个随机数的常用做法有:

  i. 固定伤害值*单纯的在1左右随机,例如:Random(0.9~1.1),一般大数值的游戏常用这种做法。

  ii. 固定伤害值+数字数*骰子面数:DnD规则,后来魔兽争霸也沿用了这个设定,即为特定的单位定义骰子数,骰子面数,最终的值是抛掷骰子数次所得骰子面数的总和。例如使用3D9,即3个9面的骰子,攻击的浮动下限为3,上限为27。这种做法一般用在小数值的游戏里面。

  b) 暴击、格挡、破击、伤害加深/伤害减免等,这些系数的特点是有一个前提判定,如果判定成功,则一个系数生效:例如暴击成立,则伤害*2;格挡成立,则伤害*0.5;破击成立,则伤害*1.5;伤害加深,则伤害*(1+加深系数);受击方伤害减免,则伤害*(1-减免次数)。这些系数一般都是相乘的关系,对于判定的做法一般是这样的:

  • 计算公式为:产生概率 — 抵抗概率 = 理想概率

  • Random(1%—100%)得出实际概率

  • 实际概率 ≤ 理想概率,判定生效

  • 实际概率 > 理想概率,判定无效



  最后,

  • 如果随机数用的是随机系数的话,攻方伤害就是这样的:



  o攻方伤害=攻方攻击力*(1-防御免伤率)*随机数*暴击系数*格挡系数*破击系数*(1+攻方伤害加深)*(1-守方伤害减免)

  • 如果随机数用的是骰子的话,攻方的伤害就是这样的:



  o攻方伤害=攻方攻击力*(1-防御免伤率)*暴击系数*格挡系数*破击系数*(1+攻方伤害加深)*(1-守方伤害减免)+骰子数*骰子面数

  最后要说的是:做数值始于公式与拉表,但好的数值从来都不是表一拉就成了的。

  相关阅读

投资有风险,选择需谨慎