知乎用户,我的理想就是生活开心。 阅读原文 聊一下游戏。 为了避免歧义,我们先定义闪避率和减伤,按最大众化的理解: 10% 闪避率=受到伤害时有 10% 的概率完全规避这次伤害 10% 减伤=受到的所有伤害降低 10% 结论 1:理想模型下,相同初始条件时,两个属性价值相同。 我们先建立最简单的理想模型: 只考虑有 HP(生命值)与 ATK(攻击力)两种属性。 每受到一次攻击,被攻击方的 HP 会减少,即受到伤害,伤害值=攻击方的 ATK。 当被攻击方的 HP=0 时,被击败。 在讨论下一步之前,我们还需要引入一个 EHP(有效生命)的概念: EHP=HP 归零时累计受到的减免前伤害值(不考虑溢出伤害,就是说刚好受到那么多伤害就死了) EHP 的意义是表示实际击败一个单位需要付出的代价,换句话说也就是,有多抗打。 有了 EHP 的概念,我们就可以定义怎么叫做『更强』。 与生存相关的一切属性,我们都可以换算成为 EHP,闪避率和减伤率也不例外。如果某个属性能够提升更多的 EHP,那我们就可以认为这种属性更强。 首先我们看减伤率与 EHP 的关系可以表示为: 当减伤率=0 时,EHP=HP,也就是我们上面建立的理想模型。 当减伤率提升时,EHP 也随之提升,趋势曲线大致如下: 当减伤率=1 时,意味着该角色无敌,EHP 无限 从这条曲线可以看到,每提升 1%的减伤率,获得的 EHP 提升是不同的。初始减伤率越高,提升减伤率的收益就越高 然后我们看闪避率,其实从 EHP 的角度来说,闪避率与减伤率的计算方式完全一致: 当闪避率=0 时,EHP=HP,回归理想模型。 当闪避率提升时,EHP 的提升曲线与减伤率相同: 当闪避率=1 时,意味着该角色不可被击中,EHP 无限 因此,如果我们考虑一个理想模型下的角色,只有 HP 没有其他属性,那么此时给他 10%的减伤率和 10%的闪避率,在 EHP 上的提升都是相同的。 结论 2:大部分情况下,我们更偏好稳定的属性,减伤率更加珍贵。 玩过魔兽世界里坦克的玩家都知道,如果堆血甲可行,那就一定不要去堆闪避。为什么?因为就算你闪避 50%,被 BOSS 一刀打到脸那就等于 0,拼脸的事情,大家都不喜欢,除非你觉得自己可以一辈子都投色子出 6 点。 这就是一个很自然的人性,如果两个东西拥有相同的价值,大部分人会更偏好稳定,大起大落不是每个人都能接受。 减伤率就是一个完全确定的属性,减少多少伤害,白纸黑字,你可以完全估计出来。 闪避率就是一个波动的属性,减少多少伤害取决于概率,而概率这种东西,有时会让你怀疑人生。 但其实某些情况,玩家会更喜欢闪避率这种波动的属性,一个典型的场景就是以小博大。 当对手的攻击属性远超你的防御属性的时候,比如你只有 100 血而对手有 1000 攻击力,这时候减伤率的部分提升已经变得完全无用,如果想要取胜,那就只有搏一搏,期待能够闪避掉对手的攻击,从而争取到更多的机会击败对手。 当确定的事情已经是 bad ending,那就只有搏一搏,单车变摩托。 结论 3:实际游戏设计中,百分比属性的投放都比较谨慎,一般会做一次换算。 实际设计游戏属性的时候,直接投放 10%的闪避率和减伤率都是很离谱的,因为他们是非线性的。 原因就像在结论 1 里的那两幅图,如果一个玩家初始减伤率已经有 85%,那你再给他投放 10%的减伤,EHP 都得飙到天上,一个人打几十个不是梦。而如果他没有初始减伤率,那这 10%的减伤就不疼不痒,聊胜于无。 理想情况,我们会希望投放属性对能力的提升是线性的,这样无论玩家的初始属性如何,每提升一点属性,产生的价值都是一致的。 拿减伤率来举例子,我们实际投放的减伤率,会通过一个叫做『护甲』(Def)的中间属性来实现,而一般护甲与减伤率的换算关系如下: 其中 M 和 N 是常数,我们把这个减伤率带入结论 1 的 EHP 公式里,可得: 为了方便计算,我们令 M=N=1,则可得到: 假设 HP=100,护甲 -EHP 的提升曲线可以表示为: 此时可以看到,这是一个简单的线性关系,每提升一点护甲,EHP 的提升都是恒定的,不依赖于玩家的初始护甲是多少。这样价值恒定的属性投放,就可以有效避免很多问题。 同理,你现在也很少见到百分比闪避率 / 暴击率的投放,一般都会换算成闪避 / 暴击等级,这样即使游戏后期属性投放再多,它们的价值也是恒定的,不会发生越过某个节点价值跃升的设计缺陷。 最后聊聊所谓的属性性价比 在游戏里,资源是有限的,属性应该怎么堆性价比才最高?这是很多数值游戏里一个永恒的话题,也是玩家乐此不疲讨论的点。 还是以这个闪避和减伤的属性为例,假设我们投放的是闪避等级和护甲,他们对 EHP 的提升曲线完全相同,那是不是可以说不管怎么堆叠,性价比都是一样的? 我们还是回到 EHP 来,当考虑闪避和减伤两个属性后,公式可以写作: 按结论 3 中的简化公式: 闪避率=闪避等级 /(1+ 闪避等级) 减伤率=护甲 /(1+ 护甲) 带入后可得: 此时,在 HP 一定的前提下,EHP 就相当于以护甲和闪避等级为边围成的矩形的面积。我们都知道边长一定的前提下,正方形的面积最大,因此此时合理的堆叠方式,就是让护甲和闪避等级尽量相等。 这就是我们在聊『性价比』的时候,的一种最简单的设计策略。 实际情况属性会更多,参数价值也各不一致,但从设计意图上,我们需要让每一种属性都有具体的价值。 平衡堆叠多种属性,在不同的时期选择堆叠不同的属性,发掘有限资源下提升最大的属性堆叠方式,才能有游戏的乐趣。 阅读原文