铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 2046|回复: 15

[攻略秘籍] 关于攻防系统数值计算的纯数据分析

  [复制链接]
发表于 2012-3-18 00:01 | 显示全部楼层 |阅读模式
本帖最后由 xiaoyaojx 于 2012-3-18 16:30 编辑

通常长篇大论很少有人能看完,我就直接进入主题了
一个游戏的战斗系统,对于玩家而言最直观的就是伤害(注意不是攻击)和生命值了。因此其他一切分析可以等效换算成这两种形式。
就攻防计算而言,所有游戏无非是两种模式:数值减伤和百分比减伤。前者的基本表现形式是“攻击-防御=伤害”;后者则是“基础伤害*加成系数*减伤系数=最终伤害”。当然这
只是最基本的表现形式,实际计算方式可能更为复杂,只是无论多复杂,都脱离不了这两种基本形式。
对于大多数较为复杂的游戏来说,这两种攻防计算方式都是同时存在的,而一般较为成熟的系统是以百分比减伤为核心,数值减伤作为辅助。然而苍炎的攻防系统却是以数值减伤 为核心的,这就会带来很多问题,下面以纯数据的方式来还原。
另防御=0(这种模式只看攻防差,并不管单项数值大小,因此另防御等于0方便计算)
另基础生命值=1000
则攻击从20减到1等效于生命值的变化函数如下(这里等效的意思是假设自己的攻击不变,而对面的生命值增加了):


可以看到,曲线在初始阶段是非常平滑的,然而在低于8的时候会发生很大的突跃
这是相当好理解的:你的攻击能造成1点或2点伤害,在数值上只相差1点,但是却是两倍的巨大差距

这种计算会造成一个非常大问题,就是若是不能破防(即攻击<防御,注意这里的破防概念和苍炎不同,和点滴分析帖的也不同)则无法造成伤害。比如魔塔这个游戏,很多人都玩过,很多时候只要将自己的防御控制为稍高于或者等于敌人的攻击就行了。
而对于苍炎中的扫地僧和张三丰,玩家造成的伤害会非常低。上述计算是以20的伤害为基础的,而苍炎中100-200的伤害较为常见,所以上述数值要放大10倍来看。通过计算可以看到玩家只能对扫地造成30伤害,低于8*10=80,在突变较大的一个范围内,因此苍炎引入了一个最小伤害值的设定。即一次攻击判定两个伤害,当伤害1<伤害2时,则造成的伤害固定为伤害2的数值。
详细可以见点滴的分析:
http://www.txdx.net/thread-536809-1-3.html
最小伤害只跟玩家攻击力,内力,招式杀气有关。
这里点滴指出,这就是与三丰扫地战斗时高连武功的优势了,高低级武功仅仅相差十多点伤害。
实际上本质问题在于,最小伤害值的设定本来只是防止极特殊的情况出现;然而现在却成了战斗的主要部分,这不得不说非常坑爹。对于多数BOSS而言队友甚至很难破防。
实际上,苍炎的计算方式要比这个复杂一些,但是核心还是一样的,具体见最后一步分析

第二种计算方式就是百分比减伤
另基础生命值=1000
则百分比减伤从0%到90%等效于生命值的变化函数如下(这里等效的意思是假设对方防御不变,只是生命值多了):


如果你仔细对比这两幅图的画,你会发现其实函数图象是一样的。它们本质上都是负一次函数的图象。也就是说,无论数值减伤或者百分比减伤,在接近某个极端的时候都会出现很大的突跃。因此攻防系统的核心就在于尽量让计算远离这两个极端,而在相对平滑的区域内处理。
这图也相当好理解。假设你百分比减伤80%和90%,虽然只是10%的增长,但是却是两倍的伤害差距。
看到这里,也就不难理解为何大量欧美游戏的抗性上限是75%-85%了。

关于百分比减伤,再作一个多次运算叠加的分析。很多时候的百分比减伤并非加法叠加,而是乘法叠加。譬如有两个减伤源,减伤系数分别是A%和B%,那么最终伤害是“基础伤害*(1-A%)*(1-B%)”
当有多个减伤源的时候,玩家往往喜欢等效为一个减伤源。这样的叠加看起来是收益越来越低的,然而实际上等效于生命值则是较为平滑的。
另基础生命值=1000
假设每个减伤源减伤x,那么n次减伤等效于生命值的成长就是1000/(1-x)^n
现在给x赋一个值,比如25%(游戏里乾坤减伤30%,九阳减伤20%)
画出函数图象


可以看到函数在比较长的一段内是较为平滑的;因为一般游戏内不会出现超过5次的减伤源头。而且函数的斜率是越来越大的,即越到后面收益越高,只是不如上一个图明显而已。

这里需要注意一个很重要的问题:所有的“等效生命值成长”的含义仅仅是对于所有条件初始化的情况。
这样讲可能不是很好理解,我就举个例子。
比如生命值是1000,在减伤30%的时候等效生命值是1429,两个减伤30%的等效生命值是2041;而生命值+500同时减伤30%的等效生命值则是1500/0.7=2143,而不是1429+500=1929。当然这是非常好理解的,但是还是需要说明一下。可能读者有dota或者其他游戏的玩家,看到“多个减伤源的收益是逐渐增大的”这样的结论会产生异议,毕竟敌法出挑战收益低是常识。因为苍炎的生命值上限是999而且很容易达到,实际上就限制了生命值本身的增长这一条件。

然后分析一下苍炎攻防系统的两个基础公式:
一是 伤害=基础伤害*(攻击力/(攻击力+防御力)  
这里的攻击力是加成后的攻击,并非玩家的面板数值
二是 防御减伤=防御/8
实际上对于玩家而言,一般是低资200左右攻击,9500内力;高资是400左右攻击,5750内力。用的武功威力一般是1200左右。因此可以得到低资和高资的伤害一般为498和529,实际上差距很小。加成后的攻击则分别为510和635,略有差别。
即便经过这两个运算,得出的伤害也不是实际伤害,还要经过一系列的百分比减伤和加成计算,但是跟实际伤害是等比例的。因此只要计算这两步就行了。
以500伤害,620攻击(加成后)为标准,画出NPC防御从0-1000的等效生命成长曲线
另基础生命=1000,防御=0的时候等效于1000生命
函数是 等效生命=500000/ [500*620/(620+防御)-防御/8]


可以看到,在比较长的一个范围内,函数是非常平滑的,而防御力一旦大于700,函数就会发生明显的突变
而扫地僧在经过加成后防御高达1100,因此如果不引入最小伤害的话,玩家根本无法对扫地造成有效的伤害
另外以上的计算仅仅是对于主角;事实上多数队友的内力都无法达到上限,而且初始等级高也就是说总属性低,因此突变点还要更小。游戏本身设置的0-500防御是较为合理的。
结论:苍炎本身的计算公式是比较合理的,然而数据库内的数据加成后变成了一个不太恰当的范围
实际上将NPC的最终防御力控制在0-700内是非常好处理的;然而因为NPC光环和难度系数等一系列的原因,最终数据膨胀到了超出平滑的区域。本来数据库中NPC的防御力也和玩家一样是0-500的范围,但是经过膨胀后却变成了0-1000的范围,然而0-500范围和500-1000范围的处理是完全不同的;本来在区分难度时,对于玩家伤害乘一个系数或者给NPC一个百分比的减伤系数都是可以的,因为这样最终数值还是等比例的,但对防御数值直接进行加成则会造成数据失衡,为了平衡不得不引入另外的数据,越搞越复杂。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-18 00:07 | 显示全部楼层
辛苦了,数据相当精啊,我等懒人获益良多。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-3-18 00:02 | 显示全部楼层
然后还有关于闪避的问题,下次讲
先占个楼
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-18 00:03 | 显示全部楼层
本帖最后由 sfenks 于 2012-3-18 00:04 编辑

沙发支持,如此神贴,不顶对不起逍遥!
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-18 00:05 | 显示全部楼层
板凳支持数据党!
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-18 00:10 | 显示全部楼层
这曲线图做得厉害了哦
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-18 01:20 | 显示全部楼层
逍遥真是数据帝
佩服佩服
懒人又拜读了
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
头像被屏蔽
发表于 2012-3-18 08:33 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-18 13:09 | 显示全部楼层
扫地攻防500,内力1W
和其他NPC人物差距太大,无法在一个公式内达到平衡
只能算做特例了


【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-3-18 14:17 | 显示全部楼层
本帖最后由 xiaoyaojx 于 2012-3-18 14:19 编辑

回复 tsmdsyp 的帖子

但是主角的成长空间和内力也是最大的,也是特例
对于大多数队友来说,也无法对BOSS造成有效伤害,需要用到最小伤害的设定
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-18 14:55 | 显示全部楼层
做的好细致啊!
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-18 16:19 | 显示全部楼层
减伤必然是乘法叠加,因为0到10%和90%到100%是两个完全不同的概念

表面上看都是减伤提高10%,结果出入是很大的

如果是加法叠加,那么同样是10%落在不同的区间结果能差上十万八千里

还有等效生命论也不可靠,最值得信赖的还是等效存活时间

就是假设敌人攻击固定,每增加一点防御让你的多存活时间相同,这是最终目的

另外发个图:(扫地肯定是典型如果做数据平衡得特殊考虑)

【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-3-18 16:22 | 显示全部楼层
本帖最后由 xiaoyaojx 于 2012-3-18 16:26 编辑

回复 点滴 的帖子

等效生命值只是最直观的显示,之前就说了
而且我也强调过,必须是所有条件初始化的情况
在这个前提下,等效生命增长等同于等效存活时间增长
游戏中的减伤当然是乘法叠加,我只是作个说明罢了

王重阳防御和张三丰并列?那张三丰肯定有其他减伤
事实上打王重阳也不会有明显打不动的感觉
对于主角来说,打不动的也只有扫地和三丰
但对于队友,大多BOSS是打不动的
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-18 16:42 | 显示全部楼层
希望5,1版的仓炎能出一个剧情多和难度加强版的。。。。。。。。。。。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-18 16:46 | 显示全部楼层
本帖最后由 点滴 于 2012-3-18 16:48 编辑
xiaoyaojx 发表于 2012-3-18 16:22
回复 点滴 的帖子

等效生命值只是最直观的显示,之前就说了


确实王重阳和张三丰加成后的防御一样

估计感觉到打不动的原因有以下几个:

1.张三丰有兵器值减伤,对拳剑能减伤能达到30%左右吧,没算过估计的

2.张三丰有纯阳解毒、而王重阳一般都是被毒满才打的

3.张三丰由于太奥的原因内伤不容易叠上去,所以开始感觉很硬

4.张三丰基本都是强攻解决,而王重阳由于复生的原因都会把内力体力磨光,磨光内体的NPC是很脆的


点评

15正打老王,从来不用磨体内。即使没化功,老王也比三丰脆的多  发表于 2012-3-18 23:13
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-18 20:56 | 显示全部楼层
话说Miss的考虑是打算做期望算入么?有原本的等效生命*(1+miss%)?

点评

额,脑子糊涂了...是生命/(1-miss%)?  发表于 2012-3-18 23:19
显然不是啊,如果100%miss等效于生命无穷大  发表于 2012-3-18 23:12
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-9-30 18:29

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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