关于RPG攻防公式的设计探讨
游戏战斗模型之中,各种战斗公式的设计完全依照设计者的需求所致。这些战斗公式错中复杂,而且关联性十分紧密,因此我们在设计战斗模型时,必须先从宏观上来考虑战斗的整体流程。
数学公式的原理来自于设计师的概念,攻防公式也是如此。大多数游戏设计者,特别是游戏数据模型的游戏策划者通常会对攻防公式这一块有许多的疑问,本文旨在探讨这些疑问,并且尽力来解决这些疑问。
从PC上的大部分RPG游戏来看,攻防公式的基本模型可以定义为以下几种,这几种按照地域来划分,可以分为日式公式和欧式公式,且不管他们怎么来叫,我们先看看这些公式模型是什么样的。
源自:youxihun
游戏战斗模型之中,各种战斗公式的设计完全依照设计者的需求所致。这些战斗公式错中复杂,而且关联性十分紧密,因此我们在设计战斗模型时,必须先从宏观上来考虑战斗的整体流程。
数学公式的原理来自于设计师的概念,攻防公式也是如此。大多数游戏设计者,特别是游戏数据模型的游戏策划者通常会对攻防公式这一块有许多的疑问,本文旨在探讨这些疑问,并且尽力来解决这些疑问。
从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-对方的附加伤害
攻击强度是一个对最后结算伤害起到系数作用的属性,而这里,将抗性也加入了计算(实际上对抗性的计算也是攻防的一部分),对方的附加伤害则是无视各种防御力的修正值,具体用途不明。
如若转载,请注明出处:http://www.gamelook.com.cn/2009/09/3802