游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4035|回复: 5

[讨论] 求教一个计算英雄DPS的数值模型!

[复制链接]

3

主题

13

帖子

27

积分

注册会员

Rank: 2

积分
27
发表于 2012-5-30 17:07:00 | 显示全部楼层 |阅读模式
    假设这样一个英雄,生命值2000、魔法值300、攻击力150、物理防御50、魔法防御30、 重击20、暴击率10% 、躲避15% 、攻击速度1秒/次  攻击丢失5%,格挡3%。
    不计算任何装备和光环效果,求英雄的攻击力计算公式,英雄的DPS计算公式,杀和自己同样的英雄需要的时间的计算公式!abc
    麻烦高手赐教!

161

主题

1372

帖子

2749

积分

金牌会员

Rank: 6Rank: 6

积分
2749
QQ
发表于 2012-5-30 20:34:00 | 显示全部楼层

Re:求教一个计算英雄DPS的数值模型!

有效生命:
  有效HP(HP即生命值,应该都懂吧--)
  我将介绍一个新术语“有效HP”
  护甲将被视为类似于“提供额外HP的护盾”
  然后
  有效HP=HP×(100+护甲)/100
  例如:
  1.拥有50护甲和1000HP意味着你有1500有效HP
  2.拥有100护甲和1000HP意味着你有2000有效HP
  3.拥有200护甲和1000HP意味着你有3000有效HP
  因此可以简单的将它看做:每1护甲将增加1%有效HP
  最优位置1.(单一种类伤害)
  稍微有点复杂的部分来了:
  1HP提供1+(护甲/100)有效HP
  例子:
  1.当你有100护甲时,购买1HP将得到2有效HP
  2.当你有200护甲时,购买1HP将得到3有效HP
  1护甲提供0.01有效HP
  例子:
  1.当你有1000最大生命值,购买1护甲将得到10有效HP
  2.当你有2000最大生命值,购买1护甲将得到20有效HP
  但是护甲和生命值的金币价值是不一样的!!这就是为什么我们开始时要先 计算他们,现在我们替换如下:
  1G可买到的HP给予你(0.385+0.00385护甲)有效HP
  并且
  1G可买到的护甲给予你(0.00062HP)有效HP
  我们可以找到一个最佳位置
  (0.00062HP)=(0.385+0.00385护甲)
  HP=6.2护甲+620
  这个方程式说明了何时HP和护甲价值相等
  基本上你应尽可能让HP等于620+6.2护甲。
  如果你的HP大于620+6.2护甲,则接下来请提高护甲,如果小于请提高HP。
  防御价值最佳点
  620hp时0护甲
  1000hp时61护甲
  1500hp时141护甲
  2000hp时222护甲
  2500hp时303护甲
  3000hp时383护甲
  魔抗价值最佳点
  1241HP时0护甲和魔抗
  1500HP时21护甲和魔抗
  2000HP时61护甲和魔抗
  2500HP时101护甲和魔抗
  3000HP时141.7护甲和魔抗
  3500HP时182护甲和魔抗
  4000HP时222护甲和魔抗

虽然不是最直接解答你的问题,但我知道的是首先有一个系数作随即,然后乘丢失、躲避、格挡,得到的是负数的话就为0,攻击无效,然后就是判断破防或者不破防御,一般都是出现负数就不破防呈现为-1,然后就根据加减乘除去转换成为伤害,再从伤害里面转换为整数呈现为生命,具体和上面的内容差不多,希望能帮助到你,祝你生活开心、游戏愉快、工作好好!~

161

主题

1372

帖子

2749

积分

金牌会员

Rank: 6Rank: 6

积分
2749
QQ
发表于 2012-5-30 20:31:00 | 显示全部楼层

Re:求教一个计算英雄DPS的数值模型!

从PC上的大部分RPG游戏来看,攻防公式的基本模型可以定义为以下几种,这几种按照地域来划分,可以分为日式公式和欧式公式,且不管他们怎么来叫,我们先看看这些公式模型是什么样的。

各类功防公式分析

减法攻防公式(日式):

一次攻击结算伤害=攻击者输出伤害-防守者防御总值

减法攻防公式是国内游戏设计者十分喜爱的一种攻防模型,因为这种模型看起来直观且简单,同时也十分便于计算。而且对于以免费游戏作为大环境的中国游戏市场,这种公式设计有利于玩家对防御值的不限追求(玩家的不限追求,就是我们的不限收入)。因为在游戏之中,当伤害在提高时,防御值必然也会跟着提高,而且,防御值的提升在游戏的战斗之中卓有成效。不过缺憾之处也十分明显,由于不同伤害对应相同防御值的一次攻击结算伤害会有所不同,导致数值平衡设计之中无法使用DPS来设定攻速不同武器的伤害值。因此,使用这类功放公式,想要给武器设定上增加攻击速度属性,是相当需要三思的问题。

乘法攻防公式(欧式):

一次攻击结算伤害=攻击者输出伤害*(1-防御值物免率)

防御值物免率换算方法1:

防御值物免率=1-1/(1+防守者防御总值/10)

防御值首先被转换未了防御值物免率,而需要达到的设计需求就是以上曲线所示——为了提高玩家对防御值数值上的提升需求,使得整体防御值越大时之后再增加防御值所转换得到的物免率逐渐衰减。

这种攻防公式在很多欧美游戏之中都可以看得到,例如最著名的3DMMORPG《魔兽世界》用的就是这种基本模型。运用此种攻防公式,会对数值平衡计算的难度要求并不高,而且可以很方便的作各种攻击速度不同的武器装备,不用考虑到减法攻防公式的弊端。但是,欧式攻防公式也有不好的地方,就是会导致后期玩家对防御值的提升需求会有所受限。毕竟, (1-1/(1+防守者防御总值/10))最多只能<=25%,而25%~100%的提升空间,足够么?往往这类攻防模型为基础的游戏,游戏后期,玩家对防御的追求容易止步不前,而伤害的追求则一如既往的在提升。这本身就是玩家对于属性追求上的不平衡。

防御值物免率换算方法2:

防御值物免率=防守者防御总值^0.3/100

这一种和第一种所需要的效果完全不同,这种曲线相对前者更接近于直线,不过初期的物免率提升还是相比于中后期更为明显。但是即便使用这种方法,依旧无法逃避提升空间有限的弊端。

除法攻防公式:

一次攻击结算伤害=攻击者输出伤害/防守者防御总值*10

这种攻防公式无法从常理上去理解,至少本人无法理解为什么会有这样的攻防公式。对此的研究十分少,根据公式来看,这样的设计似乎有突出伤害的重要性,但是却又未突出伤害的重要性。从玩家对伤害的追求来看,确实伤害的追求十分重要,不然杀伤力就会十分衰弱,但是从实际的效果来看,很可能则是相反的效果。总得来说,也要看数值设定的方法了,个人认为,这种除法攻防公式不是很好把握。

以上四种公式是目前我收集到的比较可行的攻防公式。目前几乎70%~80%的RPG会使用如上的算法,虽然并不完全相同,但是都是以这几种公式作为基本模型来进化得到的。

这里所说的:

防御总值:防御总值的解释是游戏中出现最多的防御值,不管他叫护甲也好叫别的什么也好,这里所说的防御总值就是所有RPG游戏中最常见的那个“防御值”。  

输出伤害:输出伤害这里的意思则是比较常见的物理伤害,即普通砍击时的伤害作为参照对象。

攻防公式的应用

以上所列的攻防公式的基本模型在实际制作运用上,会有各种变化,首先是会添加各种修正值以及修正系数,这些不用多说,完全按按照数值平衡的设计需要来看。

而其他的变化还表现在增加参数值的方法上。例如加入攻防两方的等级参数进入作为修正值或是修正系数也是十分常见,例如《魔兽世界》(如下)。

WOW的护甲是以伤害减免的原理体现出来的,护甲越高所能抵消的伤害就越高,具体的公式为:

DR=AC/(AC+85*LV+400)

(DR:伤害减免,AC:护甲,HP:生命值,LV:等级)

该公式原型基本为DR=AC/(AC+400),和1-1/(1+防守者防御总值/400)概念相同。这个公式插入LV参数(该LV参数取自攻击者)之后,使得玩家对防御值的追求随着敌人等级的提高而增大。

而对于减法攻防公式来说,更多所害怕的是 攻击者输出伤害 < 防守者防御总值 的情况出现。通常这种情况,我们都是采用取最低伤害的方法,很多游戏在这种情况,会算得一次攻击结算伤害=1。而我更建议一次攻击结算伤害=攻击者输出伤害*5%,同时不得小于1。这样做,不至于导致伤害很高的玩家,最后打出的伤害却只有1的情况出现。

除此之外,我们对攻防公式略作修改,还可以得到其他可作为玩家追求的属性,例如穿刺伤害(无视防御的伤害):

一次攻击结算伤害=攻击者输出伤害*(1-防御值物免率)+攻击者穿刺伤害

而其他的改变也是十分有趣,例如有一些游戏会有攻击力这个属性:

一次攻击结算伤害=攻击者输出伤害*(1-防御值物免率)*攻击者攻击力

例如我们来看看赤壁的攻防公式(非完整版):

对你造成的伤害=(对方的攻击-你的防御)*对方的攻击强度*(100-你的直接抗性)/100-对方的附加伤害

攻击强度是一个对最后结算伤害起到系数作用的属性,而这里,将抗性也加入了计算(实际上对抗性的计算也是攻防的一部分),对方的附加伤害则是无视各种防御力的修正值,具体用途不明。

161

主题

1372

帖子

2749

积分

金牌会员

Rank: 6Rank: 6

积分
2749
QQ
发表于 2012-5-30 20:32:00 | 显示全部楼层

Re:求教一个计算英雄DPS的数值模型!

  伤害=攻击/(1+防御/100),  护甲值/(100+护甲值)=伤害减免百分比。
  比如说 你的护甲是50 对方物理攻击是100 那么伤害就是100*(100/150)=66.7  ------150=100+护甲值50
  1.拥有50护甲,受到的物理伤害将是原始值的2/3(阻挡了1/3的伤害)
  2.拥有100护甲,受到的物理伤害将是原始值的1/2(阻挡了1/2的伤害)
  3.拥有200护甲,受到的物理伤害将是原始值的1/3(阻挡了2/3的伤害)
  每1点护甲,意味着你的最大生命值所能承受的物理伤害多了1%。你有100点护甲的话,所能承受的物理伤害将是护甲为0时的两倍,也就是说,敌人需要输出双倍的物理伤害才能达到和以前一样的效果,也就是说,你所受的物理伤害是原来的一半。在你有300点的护甲时,你将只承受25%的物理伤害,以此类推。
  这会受到收益递减么?不尽然。虽然你的护甲所能减免的物理伤害,其收益是随护甲的成长而逐渐递减的,但是如果你有1000点生命值,那么每点护甲值意味着你可以在死前多承受10点物理伤害,并且这与你的现有护甲值毫无关系。所以,从这个角度来说,它的收益是线性的,并不存在收益递减。
  魔法抗性也是以相同方式运作的,唯一的区别就是减免的伤害类型不同,魔法抗性只作用于魔法伤害。护甲和魔法抗性之间互不干涉.(比如你有500点护甲并不会对魔法伤害有什么影响,有500点魔法抗性也不会对物理伤害有什么影响。)

12

主题

81

帖子

247

积分

中级会员

Rank: 3Rank: 3

积分
247
QQ
发表于 2012-5-31 19:34:00 | 显示全部楼层

Re:求教一个计算英雄DPS的数值模型!

LS真热心

3

主题

13

帖子

27

积分

注册会员

Rank: 2

积分
27
 楼主| 发表于 2012-6-5 17:11:00 | 显示全部楼层

Re:求教一个计算英雄DPS的数值模型!

感谢 moweiqi 的认真解答!非常感谢!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-29 09:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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