游戏设计战斗过程的基本数值知识与理论

更新时间:2024-04-24 08:30:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

酱油壕赠言:慢慢看,看懂数值你就入门了^_^

战斗过程的基本原理

第一章 标准战斗过程

网易公司

理论研究组 宋悦

Ver 1.1

内容简介

对于大多数游戏来说,战斗过程是最重要和最基本的数学模型,在游戏中我们可以见到各种各样的战斗,方式林林总总,数值名目繁多,过程千变万化。在这让人眼花缭乱的过程背后,有没有基本的规律呢?是不是可以找到一种定量的方法,让我们对战斗过程的设计更加丰富,对平衡性的把握更加准确呢?本文要做的,就是力图在这个方向上迈出第一步。 作为战斗过程分析的第一章,本文提出了战斗过程最基本的一个结论:任何一场战斗的双方战斗力差值不变。给出了战斗力的基本算法,战斗力是输出对承受的积分,特别地,在输出与承受无关的情况下,战斗力=输出*承受。并且针对单、多单位各种战斗情况进行了分析,均证明了这一结论。 本文分为5个小节。其中引言部分,从心理学层面解释为什么战斗过程在游戏中如此频繁,也说明战斗过程的设计对游戏非常重要。第一节分析了单个单位之间的战斗过程,提出了最基本的战斗力计算方法以及结论,分析了常见的单体战斗力计算公式类型,举出了《暗黑破坏神》、《英雄无敌》、《魔兽世界》与《魔兽争霸》的基本伤害公式,并进行了简单的分析。第二节分析了多对多情况下由数量带来的战斗力平方增长效应,即兰彻斯特定律,进而得到了在多单位战斗情况下战斗力的计算方法。第三节分析了单对多情况下的战斗力对比图,验证了上述定律,并对一种特殊情况:AOE过程进行了分析。第四节提出了在各种战斗过程下的总的规律和结论。第五节对其它的因素进行了一些考量。包括战斗时间、随机化、离散化对战斗造成的影响。

版本介绍 时间 06.9.11 06.9.18

内容简介 .......................................................................................................................................... 1 战斗过程分析 .................................................................................................................................. 2 引言 .............................................................................................................................................. 2 第一章 标准战斗过程 ........................................................................................................... 4 第一节 单个单位的战斗过程 ........................................................................................... 4 第二节 多个战斗单位的战斗过程 ................................................................................. 13 第三节 单个单位与多个单位的战斗过程 ..................................................................... 19 第四节 结论 ..................................................................................................................... 24 第五节 其它影响战斗过程的因素 ................................................................................. 25

版本 1.0 1.01 内容 完成了基本内容:战斗力计算方式与守恒定律 加入了事例分析、加入了AOE分析,加入魔法伤害简单评价,更名为《战斗过程的基本数学原理》 1

战斗过程分析

引言

战斗是网络游戏玩家进行游戏,尤其是练级的最主要方式。这主要是因为以下原因导致的:

1. 毁灭都是人天生的欲望之一。在进化心理学中,K.Lorentz认为正是有了攻击行为,种群的后代才能有最强壮的父母,物种才能代代相传。攻击行为是人类生活不可避免的组成部分。里查德.劳尔也认为,攻击性起源于人类的进化过程,并且因为其生存适应价值一直保存了下来。弗洛伊德的精神分析观点认为,人类存在一种死本能,死本能“极力把个体推向毁灭,减少个体的生命力,直至其回到原来的无生命状态”。当它指向人外部的时候,就表现为对他人的攻击与暴力行为。死本能指出了人有被驱动去攻击、侵略的行为本性。在一般的网络游戏中,新人的第一个动作经常就是关掉了所有对话,然后跑出去打怪,这里面既有人们进行网络游戏的游戏习惯,也说明了人类对于战斗的本能需求。

2. 游戏是对现实的一种模拟,而在现实中,战斗几乎贯穿了人类历史的始终,对于战斗的模拟和研究理论,也是非常成熟的。从中国的《孙子兵法》到克劳塞维茨的《战争论》,这些都对游戏中战斗的设计提供了非常好的理论依据。

从可实现性上来说,游戏是对现实进行数字化的模拟,对人的行为做出相对应的数学理论模型,并且在其中做出玩家可控的部分。战斗中的攻防和伤害,包括加入了神话、奇幻之后的魔法、诅咒,都能够进行很好的量化和数学模拟,如D&D之类的桌面游戏就是量化的方法之一,这些手段使得用计算机来建立模型,构建游戏成为非常容易实现的过程。

(吃饭也可以满足上面2个条件,为什么不能是游戏的主要玩法?)

3. 战斗过程中存在着矛盾和斗争,情形相对复杂,而且在战斗过程中可以做出丰富的音乐美术效果,满足人在视听方面的需求,存在着大量的信息量,在其中也可以加入非常多的元素供玩家进行控制,如装备的选择、技能的使用。用信息论的角度来看,一个战斗过程,带给玩家的信息要比其它的动作多的多,因此战斗成为网络游戏中玩家最经常体验的过程。

正因为如此,战斗过程,可以说是网络游戏中玩家经历的最多,最为经常的游戏体验。对于战斗过程的设计,包括和战斗过程相关的数值设计,也常常成为一个网络游戏设计非常重要的地方。《魔兽世界》能够受到广大玩家的喜欢,最大亮点之一就是战斗过程的设计,一个好的战斗过程,能够让玩家的游戏过程中充满乐趣,进而影响到玩家的代入感,在玩家看来,与此相关的装备、技能,包括经济系统都是有意义的,玩家也就愿意更投身到游戏中

2

去,体验与此相关的各个系统设计。

本文所提到的战斗过程,主要指狭义上的战斗,而非广义上的对抗,如泡泡糖的炸弹人、赛车、棋牌等,均不计算入本文所讨论的战斗范围。

3

第一章 标准战斗过程

第一节 单个单位的战斗过程

最简单的战斗示例

(出于数学分析方便,我们采用连续的函数,离散过程以后再进行讨论) 让我们首先来看一个最基本的战斗过程: 事例1:一个100血的战士出城,看到了一只血为90野猪,战士上去砍野猪,野猪同时开始反击。战士每秒的伤害是20,野猪每秒的伤害为10。当战斗进行了4.5秒,野猪被杀死。在此期间野猪一共对战士进行了总量为45的伤害,战士还剩下55点血。

(出于数学分析方便,我们采用连续的函数,离散过程以后再进行讨论)

整个战斗过程的图如下(不同颜色的线对应野猪的不同伤害值,从右至左分别为10,15,18,20,22.22):

从这个图,我们可以看到一些规律:

战士和野猪的初始血量是整个曲线的起始点,整个战斗过程就是从起始点回到某个坐标轴的过程。整个战斗过程沿着直线移动,这条直线的斜率,就是战士和野猪的输出速度之比。

在这个过程中,我们可以看到,作为互相斗争的双方,都至少存在两个因素,一个是生

4

命,用以保证自己的生存。这个值在有些战斗情况下是人数/耐久等等,在这里统一定义为承受。另一个是伤害,用以破坏对方的生存,在这里同样定义为输出。双方所比较的,其实是时间,看谁能在最短的时间内破坏对方的生存条件。我们可以得到一个最简单的结论:战斗的结果,取决于一个值:

hpXhp?Y。 dptYdptX注:上述公式中,下标X、Y分别指在一场战斗中对立的双方,在这里,X指玩家,Y则指野猪。

其中hpX,hpY为玩家和怪物的生命,单位为点。dptX、dptY为玩家和怪物的单位时间输出伤害,单位为点/单位时间。这个单位时间一般是秒,但在很多游戏里,不一定以秒为单位时间,比如《暗黑破坏神II》,常常采用的单位是桢(每秒为24桢)。

题外话:《暗黑破坏神II》(1.09版)也因此遇到过Bug,其中德鲁伊可以用一个技能:狂暴(Fury)。这个技能的效果除了伤害加成以外,在20技能等级的情况下会连续攻击5次。有的玩家采用了相对较快的武器以后,平均每不到5桢就可以使用狂暴,这样系统就无法判定每一次伤害发生在哪一桢了,最终结果是这个终极技能无法产生伤害。最后玩家被迫使用相对较慢的装备来发动Fury,这也直接导致了游戏里物理系德鲁伊没有多少人玩。 从式子看,前面一个数是玩家能够坚持的时间,后面一个数值则是玩家杀死怪物的时间。就像两个水池,各自插了一个水管放水,比较哪个水池先被放空就可以了。玩家要战胜怪物,只需要这个值大于0即可。也就是

hXh?Y > 0 dptYdptX

做一点简单的变换,也就是需要

hX*dptX > hY*dptY

我们可以将玩家的h*dpt定义成玩家的战斗力,记为FC (Fighting Capacity)那么我们就有了一个标准用以衡量角色的战斗能力。

在上述的战斗过程中,双方的战斗力之差是一个恒定的值。战斗过程,其实就是一个FC相减的过程,要预估战斗的结果,只需要用FCX — FCY 即可,我们不仅仅可以判定战斗的胜利者,还可以,我们还可以计算双方的战斗力比例和胜者所能保留的战斗力。在事例1中,我们可以计算出,战士的战斗力为2000,而野猪为900。因此如果一只一只的攻击,一个战士可以在无恢复的情况下战胜两只野猪。同样还可以计算出,在战胜第一只后,战士的战斗力还剩下1100,由于每秒输出是20,所以剩下55点血。在战胜了第二只野猪后,战斗力还剩下200,也就是10点血。这个战士就必须进行打坐、吃面包、绷带、喝药、治疗等等补给措施了,因为他的实力已经不足够再战胜下一头野猪。玩家在战斗中常用的判断标

5

准就是自己的生命是不是过半,这是有道理的,因为伤害输出和生命的多少无关,生命过半就意味着还有一半以上的战斗力。

在几乎所有的网络游戏中,玩家都会关注自己的生命值,一般能够加生命上限的装备和道具,总是比较受玩家欢迎的。因为尽管输出方式千差万别,各种参数一时难以评估,但是生命值,总是能够比较直接的影响到一个角色的战斗力。

如果以单位的承受作为横坐标,输出作为纵坐标,那么输出与承受所组成的图形面积,就是一个单位的战斗力。如下图:

在实际策划中,如果我们要设计多个不同的战斗单位,他们的攻击力和血量都不相同,那么,只要比较他们的战斗力,也就是生命和输出速度的乘积就可以得到他们的战斗力大小。在图形上,我们可以画出多条HP * dpt =C的双曲线,观测其落点在那条双曲线即可,处于同一条双曲线的,即可认为战斗力相等。如下图

6

战斗能力的等值曲线

基于以上推理,我们可以看到在战斗中的基本规则,如果我们定义一个战斗单位的输出与承受的乘积为战斗力,(在以后的分析中,我们会将其推广到战斗力是输出对承受的积分,特别地,在输出与承受无关的情况下,战斗力=输出*承受)那么:

在任何一场战斗中,战斗双方的战斗力差值不变。

在实际的战斗中,伤害总是按照次数和频率来进行的,我们可以用单次伤害值*伤害频率来得到单位时间的伤害,也就是说,我们可以用dmg*f来代替,为简化方便,我们将DMG写成d,那么,在一些情况下,我们可以将玩家的战斗力写成h*d*f。其中d和f对战斗力的作用同等。比如说,我们设计了两个戒指,一个是伤害+1,一个是攻击速度加10%,那么我们可以将伤害转化成百分比进行计算。如果这1点造成的伤害加成大于10%,即玩家在没有佩戴戒指的时候单次伤害低于10点,那么前一个戒指是更有作用的,反之则是后者。每次10点伤害是这两个道具的平衡点。

这一规则,贯穿了所有标准战斗类型的过程。

基于攻-防的战斗方式

最简单的战斗模型玩家只能进行很简单的控制,在实际的游戏中只进行这样简单的伤害

7

是难以满足玩家要求的。在很多网络游戏中,常常会采用简单攻防加减的形式来进行战斗过程设计。这种设计的基本规则是:每次攻击造成的伤害=攻击方的攻击力-受攻击方的防御力。即dX?attX?defY;。dY?attY?defX。

下面我们来看看这种设计的数学效果是什么。 在这种情况下,我们来看双方的战斗力比值,一方为玩家,攻击力为attX,防御力为defY,,攻击频率为fX,另一方是怪物,攻击力为attY,防御力为defY,攻击频率为fY。那么双方的战斗力分别是

FCX=hX*(attX?defY)*fX FCY=hY*(attY?defX)*fY

双方的战斗力比值FCX / FCY为(这里采用比值更容易看清楚): FCX / FCY = hX*(attX?defY)*fX / hY*(attY?defX)*fY

对于以上的公式,我们可以至少看到以下规律:

1. 对于不同的敌人,玩家的战斗力不再取决于自己本身的数值,还跟玩家具体要面对

的怪物的防御力相关。同样,怪物的战斗力也与玩家的防御力相关。因此,玩家和怪物之间的胜负关系,在实力很接近的情况下,可能会无法形成传递关系。这里可以举一个很简单的例子,

单位A:hp=1000,att=50,def=0,f=1,

单位B:hp=1000,att=100,def=20,f=0.25 单位C:hp=1000,att=25,def=0,f=3

如果这三个单位进行实际的对战,通过简单的战斗力计算,我们可以看到,A>B,B>C,而C>A。在没有任何外加属性(如单位大小、五行等等)这就形成了一个循环相克的局面。

2. 将任何一方的FC公式展开,可以看到:FC?hp?(att?f?def?f)。在游戏中,

一般来说,战斗力大致相近的玩家在att?f值上是大致相近的,那么遇到怪物时所减少的战斗力决定于def?f。某个单位的攻击频率越高,而对手的甲越厚,这个单位的战斗力就被抑制的最厉害。利用这一点可以做出很多配合,比如设计某种怪

攻击力低但攻击频率高,如果加上攻击硬直效果,这种怪对于甲较弱的法系职业就是战斗力很高的,但是对于防高的战士类职业攻击效果就很差,可以促使玩家之间形成配合。

8

3. 战斗力对于攻击力和防御力的增加效果,不仅仅取决于该这个加成数值本身,也取

决于攻防双方的攻击力与防御力差值的大小。比如,一把武器上具有+3攻击力效果,如果攻方攻击力是200,防御方防御力是20,这时候+3的效果是不明显的,但是,如果防御方的防御力是180,这3点的效果就要明显的多了。所以,战斗数值对于攻、防加成是否敏感,取决于差值的设计。

4. 在这样的数学模型中,攻击力和防御力在不同的阶段,对于单位的战斗力影响是不

同的。一般来说,在同一情况下,攻击力对于战斗结果的影响效果是线性递减的,而防御力对战斗结果的影响效果是线性递增的。举例而言,经过攻防计算后,一个单位每次输出的伤害是10,受到的伤害是10。对于这个玩家而言,增加1点攻击力,所得到的伤害加成依次是10%,9.1%,8.33%......,而增加1点防御力所得到的伤害降低依次是10%,11.11%,12.5%......。所以我们可以看到,同样的攻防指数,在不同的阶段,所产生的结果是差异很大的。例如,在公认平衡性最好的《星际争霸》中,很多单位的防御升级费用常常是随等级递增的,甚至有的不是线性递增,而是几何级数的递增,如Protoss的离子盾防御1/2/3分别是100/200/400(Mine + Gas),就因为这些升级对于战斗的影响并不是相等的。

基于伤害的战斗方式

在有些游戏中,单位的属性中不仅仅包含了攻/防,还有伤害值,攻防不再是伤害的决定值,只对伤害起到加/减成的作用。在这里,由于各个游戏攻防的加成方法不同,因此只能给出一个具有不确定性的公式,此类战斗的基本计算公式是:

d*?dmgX?f(attX,defY)d*

注:这里d指产生的最终伤害,dmg指单位的标定伤害值

*一般情况下,f(attX,defY)的值和attX正相关,和defY负相关。具体情况要根据各个

*游戏的设计情况而定。在有的游戏中,也会导入其它的因素来影响d,如Diablo中的物理免疫。下面分别举几个游戏的例子:

1.《暗黑破坏神2》

《暗黑破坏神》的伤害公式比较奇特,其常见的defence数值并不作用于伤害大小,而是决定玩家的格档与闪避几率。而真正对伤害进行减成的,是由装备带来的damage reduce,也就是物理减免。这与D&D规则是非常类似的,最简单的公式如下:

d*?dmg?(1?dmgr)

%这里的dmgr指物理减免率。

当然《暗黑破坏神2》作为暴雪最成功的游戏之一。伤害的计算因素是非常之多的。其中人物角色具有力量(str)和敏捷(dex)两项是直接与物理伤害相关的。其中力量str对伤害进行加成,敏捷对命中率进行加成,(当然受攻击者的敏捷也对防御进行减成)。在不考虑装备以及盾牌格档的情况下,在采用最终伤害=标定伤害*加成*命中率的公式下,其伤害计算公式为:

9

d*?

dmg_max?dmg_minstr?100ar2Alvl**(1?dmgr)**

2100ar?drAlvl?Dlvl 其中dmg_max为武器攻击力上限,dmg_min为武器攻击力下限,ar是attack rating的简写,具体公式为ar?def?4.28;dr是defence rating的简写,具体公式为dr?dex/4(dex为受攻击方的数值)。

举例而言,当一个20级,力量敏捷均为50的野蛮人,在使用伤害为10-20的单手剑对同样等级,dex为60,物理减免50%的Boss进行攻击时,其单次平均伤害为10.35,用这个数值乘以输出频率(1/输出桢数),乘以该级别下野蛮人的血量,就可以得到该野蛮人在对该Boss的战斗力数值。 综合使用护甲与物理减免,这与D&D 的基本思路是类似的。 2.《魔兽争霸3》 《魔兽争霸3》中没有攻击力,只有防御力对伤害进行减成。其具体计算公式为:

d*?dmgX*1*f(ac,dc)

1?defY*0.06当DEFY>0的时候 当DEFY<0的时候

d*?dmgX*(2?0.94-defY)*f(ac,dc)

其中ac为攻击类型,如普通攻击、穿刺攻击、攻城攻击等,dc为防御类型,如轻甲、

中甲、重甲等。在《魔兽争霸3》里,不同的攻击类型和不同的防御类型组合,会产生不同的破坏系数。在这里,随着防御力增加,由此带来的防御力减小无限趋近于100%但不能达到。

这两个公式看似复杂,其实都蕴藏着很简单的数学原理。我们可以看到当defY增加1

的时候,对于X方来说,dmgX增加6%刚好可以抵消因为Y方defY加1带来的效果,而6%的伤害加成也就是6%的战斗力加成,因此对于魔兽争霸里单位的数值评估,每一点防御力对应了6%的战斗力。

当defY<0时,我们可以看到,防御力为-1,正好增加了6%的伤害。当防御力为-2的

时候,增加的伤害为11.64%,平均每点的效果接近6%,但是又略有降低,为什么不采用

dmgX*(1?0.06*defY)呢?个人猜测是因为这个公式规定了降低对方防御力的极限作

用,为200%。而另一方提升防御力的极限效果是攻击伤害为0。如下图

10

《魔兽争霸3》中的防御效果

整体来看,这样的公式效果使得攻击值就在0-200%之间摇摆。并且都在正常情况下,都趋近于每点防御力6%的效果。

3.《英雄无敌3》

《英雄无敌》的大致伤害公式如下:

d*?dmg?[1?(attp?defm)?5%] (当attp?defm) d*?dmg?[1?(attp?defm)?2.5%] (当attp?defm)

另外,为了保证平衡性,设定了攻击力与防御力的效果上限,攻击力加成不超过400%,

防御力减成不超过70%。也就是说,当(attp?defm)超过60或者小于-28时,该项则达到极值。 当然,《英雄无敌》作为策略类游戏的经典之作,不会这么简单,其物理伤害的直接公式为:

(1) 若进攻方的攻击点数大于或是等于挨打方的防御点数时,单个生物的伤害公式

是:

d*?dmg?[1?(attp?defm)?5%?J?C?E]?(1?B)?(1?M)?(dmg?Y?Z)?F(2)若进攻方的攻击点数小于挨打方的防御点数时,伤害公式又改为:

d*?dmg?[1?(defm?attp)?2.5%]?(1?J?C?E)?(1?B)?(1?M)?(dmg?Y?Z)?F 其中J代表加大伤害的技能。如攻击术(近身)、箭术(远程)、骑兵的冲锋技能等;C代表幸运、致命一击等加成因素;E代表特定的兵种仇恨(天使与恶魔、泰坦与黑龙、火怪

11

与灯神);B代表护甲术;M代表降低伤害的魔法,如魔法盾(近身)、空气盾(远程);DMG是每个单位的平均杀伤力,在数值上等于上下限的均值;Y和Z分别代表由诅咒和祝福引起的伤害加成;F代表一些战场因素,如远距离情况下的射击折半、城墙情况下的射击折半、远程部队的近身攻击折半等等。 其简化公式为:

dmg*?d?N?(1??BN)??[1?In]

为什么要做以上设定呢,在《英雄无敌》里,影响伤害的因素是非常多的。从前面的公式可以看到,光对伤害进行加成的就有幸运、致命一击、兵种仇恨、祝福,对伤害减成的也有魔法、诅咒、距离、特定攻击类型等等。在同一方向的多重效果组合上面,对于伤害加成,如果采用连乘,那么伤害的上限将高到远远大于预设的地步。攻击加成*幸运*兵种仇恨*祝福加成的情况下,可以达到10倍于正常伤害的水平。而对于伤害减成,如果采用连加形式,将很快减少到0%以下。即使没有到0,在这种状况下,任何一点伤害减成都将对战斗力造成极大的影响。在这种情况下,为了保持攻防的相对稳定性,对于攻击加成采用连加,对于攻击减成采用连乘是非常合理的。

4.《魔兽世界》的伤害计算

在《魔兽世界》中,基础的伤害来自于武器,然后以角色的指数进行加成,而受攻击方的护甲则对伤害进行减成。在只考虑普通物理攻击的情况下,《魔兽世界》的输出公式如下:

其中Bn代表所有能够对攻击力造成加成的因素,In代表所有对攻击力造成减成的因素。

*以上《英雄无敌》部分资料引自www.heroworld.net.

d*?(dmg?AP0.75*AM)*(1?) 14AM?85lvl?400在这个公式下,我们看到,角色的能力影响,至少包含了如下因素,一、武器的直接伤

害值。二、角色的能力影响。主要体现在AP方面,因为AP主要取决于人物的力量、敏捷指数。三、对方的护甲值。护甲极限效果,是伤害减免75%。四、级别对护甲值产生反向影响。级别越高,角色的护甲值随之上升,如果缺少这一参数,伤害减免将越来越大,因此需要通过计算将之抵消掉。

12

第二节 多个战斗单位的战斗过程

在游戏中,玩家常常会组队与怪物进行战斗,会出现多个玩家与多个怪物战斗的情况。在有的游戏中,玩家甚至直接指挥多个单位,与怪物或者敌对势力进行战斗(如《破碎银河系》),那么,在多个单位的情况下,战斗的结果会如何呢?

法国元帅福煦曾经提出过这样一个模型:假设红军兵力是蓝军的2倍,每个人每分钟射出的子弹数一定,那么在相同的时间内红军射出的子弹就是蓝军的2倍。如果每枚子弹击中敌人的几率也一定,那么相同时间内蓝军的损失数量就是红军的2倍,而这将进一步加大两军的数量差距,直到蓝军被彻底击败。 在这里,福熙提到了多人战争的一个趋势,就是起初的优势会随着战斗过程的进行而被逐渐扩大,这让我们看到了多人战斗过程绝对不是直接采用承受乘以输出,然后相减这样简单,或者说,我们要换用一种方法来对FC进行计算。现在就用一个基本的数学模型来进行说明。

最简单的多单位战斗

我们先看最简单的战斗情况。在这里要提出几个基本条件:

基本假设:

一、 假设任何一个单位都能够连续不停的对对方的单位进行攻击,直至被摧毁或者

战斗结束。

二、 双方都采用最优的战斗模式。比如说一方每个单位的生命为100,那么在受

到240点伤害时,2个单位死亡,还有一个单位受到40点伤害,而不是60个单位受到4点伤害或者80个单位受到3点伤害。

三、 每方的攻击力与战斗单位的数量成正比。

1.假设现在一方有X0个单位,另一方有Y0个单位,(假设X0>Y0),杀伤力为P(P为单位时间输出伤害与战斗单位生命的比值,比如《星际争霸》中,机枪兵对射,每个机枪兵攻击力为6,生命为40,那么杀伤力就是6/40。

那么战斗过程的微分方程为:

dx??Py (1) dt

dy??Px (2)dt加上初始条件,t=0时,x=X0,y=Y0

解这个方程,可以得到如下解

13

x=

X0?Y0?PtX0?Y0Pte?e 22X0?Y0?PtX0?Y0Pte?e 22 y=

当t=

1X0?Y022时,y=0,Y方被消灭,此时X方还剩下X0?Y0。 ln2PX0?Y0双方的战斗曲线图如下:(各条曲线分别代表100vs60,100vs80,100vs90,100vs95和100vs100情况下的战斗过程)

这个结果虽然精确,但是仍然不够直观,我们来对这个数学方程进行简单的变幻,将(2)式左右互换,然后与(1)式相乘,消去两边的-P,可以得到:

xdxdy?y dtdt进一步得到:

d(x2)d(y2)? dtdt从0到任何时间单位t积分,我们可以得到一个非常重要的结论:

222X0?x2t?Y0?yt

写成:

14

22X0?Y02?x2t?yt

也就是说,在任何时候,双方的人数平方的差距不变。那么按照前面“战斗力之差保持不变”的规则,这里的战斗力必然包括了一种平方关系。在多人战斗情况下,假设单个单位的战斗力为FC,那么对于n个单位,其战斗力显然与n2*FC成正比例.这也就是著名的兰彻斯特平方定律。这个平方律反应了战斗中的一个规模效应。当作战单位以一定数量增加时,战斗能力以平方关系增长。 由上述公式,可以得到几个比较重要的推论:

1. n个战斗单位同时投入战斗,要比一个一个的投入战斗强的多。我们可以计算,

n个战斗单位同时进行战斗的战斗力总量正比于n*FC,而让他们前后投入战斗,战斗力总量正比于n*FC,这个结果我们也可以直观的理解,因为当1个单位在承受伤害的时候,其他的单位都在进行输出,自然总的战斗力就增大了。 2. 即使战斗双方的力量不均衡,只要弱势的一方成功的使得对方不能以全部兵力

投入战斗,那么也有可能分成几次战胜对手。在军事上,也就是要造成局部以多打少的战术观点,其数学含义其实是:a×a+b×b<(a+b)(a+b)。

举两个例子:

星际争霸中的飞龙互拚

双方等级相同不同数量的飞龙在操作的情况下互拚。(不考虑飞龙随时间的自然涨血),A方12条,B方10条。

战斗开始,可以预见,A将获得胜利,12×12-10×10=44,44开方得6.63。说明会剩下6到7条。

但是,如果B通过操作或者某种战术,使得A的飞龙6条6条的参加战斗。由于6*6+6*6<10*10,因此B将获得胜利,并且还可以剩下10*10-6*6-6*6=28.再开方,得到5.29,也就是说A将还剩下将近1半的飞龙,可以说是一个了不起的成就了。这也是在这类游戏在中操作或者战术的作用。

在CS对战中,

两个CT MP5 vs 三个T MP5,都是射击胸部。按照CS的一般情况,MP5大约6枪能够杀死一个人。

第一轮,两个CT中某个CT挨了3枪,T中某个人挨了两枪;

第二轮,一个CT挨了累计6枪,死了,T中那个受伤的人挨了4枪。 第三轮,剩下CT挨了3枪,倒霉的T挨了5枪。

第四轮,剩下的CT也挨6枪,死亡,那个最倒霉的T累计了6枪,也死亡。。

在一次舞会上,一位贵妇人问拿破仑:“你为什么总是能以少数的兵力战胜比自己力量大的强敌呢?”拿破仑说:“哪有这回事?每次我都是指挥优势的兵力战胜敌人的。”这段对话虽然简单,但却说出了一个非常深刻道理,从战术上来看,人多打败人少是一个客观规律,但是,要达成战术上的兵力优势却不一定需要在总兵力上占优势。

“故胜兵若以镒称铢,败兵若以铢称镒。”古代24铢为1两,24两为1镒,以镒称铢就是说要以敌人576倍的优势兵力彻底压倒敌人。当然,这个576倍是一种夸张的说法,但是孙子在这里想要表达的意思是非常明确的:达成胜利的一个重要因素就是要在数量上压倒

15

敌人。

简单的推广 假设X、Y的生命和攻击力都不相等,比如星际争霸中的机枪兵和刺蛇的互射(暂时不考虑兴奋剂、护士、刺蛇自然回血的影响)。我们可以看到,它们所引起的变化其实是杀伤力的变化,也就是P的变化,我们假设X方的杀伤力为A,Y方的杀伤力为B,不妨假设X会胜利(我们一会儿可以看到其条件是什么)。同样可以得到方程:

dx??By (1) dt

dy??Ax (2)dt解这个方程,可以得到: x=

X0?Y0-e2X0?Y0-e2ABt?X0?Y0e2X0?Y0e2ABt

y=

ABt?ABt

2AX0?BY02X0?Y0当t=时,y=0,Y方被消灭,此时X方还剩下。 lnA2ABX0?Y012也就是说,如果AX0?BY02>0,那么X将取得胜利,反之为Y。

同样,按照上面的数学计算方法,我们可以得到

222A(X0?x2t)?B(Y0?yt)

同样变形得到:

22AX0?BY02?Ax2?Bytt

我们看到,在杀伤力不同的情况下,每个单位的杀伤力同样对实力产生影响。并且在战斗过程中,每个单位的杀伤力与数量平方乘积的差不变。

如果我们对杀伤力进行分析,在上述例子中,比较X和Y方的战斗结果,只需要看:

dX*fXd*fY2 — Y?X0?Y02是否大于0

hpYhpX也就是要比较

22 — dY*fY?hpY*Y0 dX*fX?hpX*X0那么是不是我们可以定义:FCx?dX*fX?hpX*X0;FCY?dY*fY?hpY*Y016

22 呢?这里我们来看一看我们对于战斗力的定义。战斗力是在承受与输出的所组成图形的面积,那么我们做一个输出与承受的图,可以看到:

无论采用积分还是采用三角形面积计算方法,都可以很容易的得到,多单位的战斗力等

于(承受能力*输出能力)/2。对于有n个单位的战斗团体来说,承受能力=n*hp,最大输出能力=d?f?n,所以最终的结果是:

n2FC??d?f?hp

2那么对于刚才的情况,可以得到:

12?X0?dX?fX?hpX 21FCY??Y02?dY?fY?hpY

2FCx?X2dX?fX?hpX FCx/FCY?2?YdY?fY?hpY

只要对比FCX和FCY,就可以很简单的得到X和Y作战的战斗结果。在后面单单位与

多单位战斗过程的计算中我们可以看到,这一结论是继续适用的。

17

与前面的计算结果相比,我们可以看到,战斗力的公式其实并没有质的变化,只是它随着人数的平方关系增长。这对于游戏中促进玩家的组队是有非常有利的。 如果我们对比多人战斗过程与单人战斗过程的公式,我们可以看到,在单体战斗中,我们认为输出是恒定的,而在多单位战斗中,输出与承受之间存在着正比例关系。这正是兰彻斯特平方律的来源。在单人战斗过程中我们并非就不能产生这种平方律关系,只需要把攻击力正比于生命即可达到这个效果。

综合上面的所有过程,可以看到,多人战斗过程仍然贯穿了前面所提到的两个基本定律: 1. 战斗力是输出对承受的积分,特别地,在输出与承受无关的情况下,战斗力=输

出*承受。 2. 战斗过程中仍然是战斗力差值不变的过程。

离散化对战斗过程的影响 在离散过程下,同样的,会产生一定值的数据偏差,下面我们就来看这种偏差的影响因素。 来看一个最简单的例子,如果X方有100个单位,Y方有50个单位。按照连续情况下的公式计算可以得到,在战斗后,X可以剩下86.6个单位。

1. 如果双方的杀伤力都为1,也就是说任何一个单位都可以一次杀死另一个单

位,那么X可以剩下50个单位。

2. 如果双方的杀伤力都为0.5,X剩下75个单位。

3. 如果双方的杀伤力都为0.3333,X剩下77.78个单位。 4. 如果双方的杀伤力都为0.25,X剩下80.47个单位。

......

通过以上的示例可以看到,在离散情况下,由于在最后一轮一定会产生攻击力的浪费,也就是战斗力的浪费,数值会产生一定的偏移,而且一定是向胜利者不利的方向偏移,杀伤力越小,离散情况越接近于连续过程。

18

第三节 单个单位与多个单位的战斗过程

在游戏中,除了单个单位的互相战斗和多个单位的互相战斗之外,还有一种情况,就是单个单位与多个单位的战斗,这种情况也是普遍的,玩家有时候会单人同时面对多个怪物,也会多人一起与一个boss进行战斗。这种情况当然可以看作多单位战斗的离散情况,但是要注意到,如果这样的战斗是实力接近的,比如一个玩家同时面临3个小怪,或者5个玩家同时面对1个boss,在这里,由于一方的数量很小(只有1个),离散化带来的影响已经不可以被忽略。因此有必要单独进行考虑。 这种模型下最大的特点在于不对称性。这里的不对称性在于:一方的输出是随着承受递减的,而另一方的输出则是恒定的。假设:

单个单位一方(x方)初始生命HX,伤害为Dx,频率为fx;

多个单位一方(y方)初始生命HY,伤害为DY,频率为fY;初始数量为Y0 可以得到数学方程:

dx??DY?fY?y dt

D?fdy??xx dtHY加上初始条件,t=0时,x=HX;y=Y0。要注意这里x,y的单位是不同的。x是生命

关于时间的变量,y是数量关于时间的变量。 解这个方程,可以得到:

x?DX?fX?DY?fY2?t?DY?fY?Y0?t?H0

2HYDx?fx?t HYHY?Y0的点,x

DX?fXy0?Y0?

x对时间的函数是一个二次曲线,y是一个递减的直线。并且在t?取到最小值,而y=0。图形如下,

19

单-多单位的战斗过程

注:该图数据如下:

数量 生命 伤害 频率

因此,只需要看这个最小值是否小于0,将这个t带入到方程的解中,容易得到:

X方 1 16000 6 1 Y方 20,30,40,50,60 30 4 1 xminDY?fYY02?H0???HY

DX?fX2

Y02也就是,只需要比较H0?DX?fX与HY?DY?fY?

2而且,将上面两个方程相乘,(2式左右互换乘1式),同时积分,可以得到,

Y02y2H0?DX?fX?HY?DY?fY? = x?DX?fX?HY?DY?fY?

22也就是说,在任何时候,双方的上述参数值之差不变,因此我们可以定义:

FCX?HX?DX?fX

FCY?HY?DY?fY?Y22

20

FCx/FCY?2Hx?DX?fX ?2YHY?DY?fY 跟上面多单位VS多单位的情况相比,在单对多的战斗过程中,我们看到,由于其中的一方输出恒定,而另一方输出随着承受力下降逐渐递减,因此多单位一方的战斗力并不能获得完全的平方加成。 在上诉的过程中,我们通过计算所得到的战斗力也是符合单VS单和单VS多的计算结果的。

离散化的影响

如果我们把这个过程离散化,我们可以看到。我们具体考虑Y方的情况,由于Y方实际上不是完全的连续过程,由于在每个单位受到伤害但未死亡的过程中,Y的输出是不变的,事实上,Y的战斗力减少是阶梯形的,如下图。

因此在实际计算中,如果我们考虑战斗力=伤害*承受的整体公式,那么可以得到,Y方的实际战斗力应该是:

FCY?HY?DY?fY?

Y(Y?1) 2这就是多人模式下考虑到离散情况以后Y方的实际战斗力。

21

一个特例:AOE战斗过程

在上述的所有示例中,任何战斗一方的输出相对独立,或者与承受正相关。那么,是否存在一种可能,使得自己的输出与对方的承受相关呢。事实上,在游戏中这种情况也是经常会出现的。这就是AOE过程。 AOE的全称是Area Effect Damage,范围伤害效果。它的特点就是对某个区域进行伤害,而不针对战斗对象。这种区域伤害能够伤害到部分或者全体的敌方单位。如《星际争霸》的离子风暴、《魔兽争霸》里的暴风雪、流星雨、《魔兽世界》中法师的奥术爆炸、《魔力宝贝》中的强力魔法和超强魔法、《梦幻西游》的龙卷雨击,《CS》中的手雷。

在这里我们只考虑一种相对简单的情况,也就是一方AOE总是能够攻击到对方的所有人员,而另一方的所有单位都相同。比较典型的例子是《魔兽世界》中法师的奥术爆炸,《魔力宝贝》中的超强魔法。

这一过程比较简单,不需要解微分方程,只需要用基本的战斗力计算公式即可:

假设X方生命为Hx,AOE对每个单体的伤害是Dx,攻击频率是fX,Y方生命为HY,

每个单体的伤害是DY,攻击频率是fY,当Y方的数量为Y时:

在单 VS 单的情况下:

FCx/FCY?Hx?DX?fX

HY?DY?fY在单VS 多的情况下

此时X方的伤害提升到N?Dx,但是我们要看到,Y方由于受到AOE攻击,此时X

并不是最优攻击模式,可以看作Y方单位均处于同时攻击与同时死亡,输出与承受无关,因此其战斗力为Y2*HY?DY?fY,因此有:

FCx?Y?HX?DX?fX

FCY?Y2?HY?DY?fY

FCx/FCY?1Hx?DX?fX ?YHY?DY?fY 和1V1 的情况相比,由于X方的伤害与Y成正比,因此降低了Y战斗力增长的2阶关系。从整体上看,虽然X的战斗难度仍然增大了,却没有像标准情况增长的那样迅速,而收益的增长速度是不变的,因此与标准情况相比,可以更快的获得收益。因此也经常为玩家所使用,在《魔兽世界》里,玩家经常会结队去爆怪,在《魔力宝贝》中,玩家也会经常组织弓手、法师的练级队,在梦幻里,龙宫的龙卷雨击也是非常常用的技能。 从上面的战斗力对比数值还可以看到一个有趣的结论:X与Y的战斗力比值,正好是X在无恢复情况下连续单独与Y方战斗的数值。也就是说,如果X采用该群体技能可以一个

22

接一个无恢复的消灭Y个对手,那么就可以一次用AOE群体消灭对方。

23

第四节 结论

战斗的双方一定都存在两个因素,一个是标识自身生存的因素,这个因素的量化称为承受。承受在单人情况下,表现为生命值,在多人情况下,表现为数量,或者生命值与数量的积。另一个量是破坏对方生存的因素,这个因素的量化,称为伤害输出,简称为输出。输出对承受的积分,特别地,在输出与承受无关的情况下,输出与承受的乘积,表明了该单位战斗能力的强弱,我们定义为战斗力。

战斗力是一个单位战斗能力的量化标识。战斗过程就是一个战斗力比较的过程,在这一过程中,战斗双方的战斗力不断下降,但是战斗力的差保持不变(在最简单战斗过程情况下)。战斗力之差在战斗过程中保持不变。这是战斗过程基本定律。

24

第五节 其它影响战斗过程的因素

以上所分析的过程,基本都是物理攻击过程,但是由于上文中所使用的主要参数包括伤害、承受。与攻击类型无关,因此对于魔法伤害,同样具有一致性。事实上,我们可以看到,魔法伤害与物理伤害在很多地方具有相似的属性。在这里列举如下: 物理 攻击 防御 闪避 致命一击 物理免疫 魔法 法术 抗性 抵抗 爆击 魔法免疫 对对方造成伤害 减低伤害效果 使一次行动不产生伤害 单次伤害加成(一般是增加100%) 伤害效果=0 效果 因此,对于魔法伤害过程,同样可以采用类似的办法处理,而不影响结论。值得一提的是,魔法值的设定,只是设定了采用魔法进行伤害的总输出上限,对于单次战斗而言,如果魔法值足够多(这也是大多数情况),那么魔法值对战斗力不产生任何影响。在有些情况下,魔法值也会成为战斗的瓶颈。比如双方魔法值不足、采用高消耗技能或者互相使用技能消耗对方的魔法值,但这种情况相对较少。对于战斗,魔法值的主要限制,在于玩家持续作战的时间,也就是玩家获取经验值的速度。在有些游戏中根据具体世界观设定有内力、能量、怒气等等其它称谓,但原理相同。

5.1 战斗时间

在实际设计中还有一个因素影响,所有的角色并不是战斗力相等就是平衡的。因为在这里,我们之考虑了在战斗中的胜负关系和实力比例,但是还没有讨论另外一个参数:战斗时间。

重新回到最简单的战斗过程,我们可以看到,战斗时间

hphpt?min(Y,X)

dptXdptY如果假定玩家一定可以获得胜利(这也是绝大多数情况),那么可以得到:

t?hpY dptX在这个战斗时间的公式里,我们可以看到,只有玩家的输出和怪物的生命对此有影响。对玩家而言,如果是基于PVP,他们更关注的是战斗的结果,即双方的战斗力比例。花20分钟去战胜另外一个玩家对手是令人激动的,但是在基于PVE的情况下,战斗的时间也同等重要,因为它决定了玩家获得经验值的速度,决定了玩家角色能力成长的速度。玩家不可能容忍每杀死一个普通怪物就需要这么多的时间。在综合了结果和时间两项因素之后,我们可以看到dpt这个参数更加重要,因此,一个输出高而承受力弱(并不一定就是生命值短,也可能因为防御力低、闪避低等等)的职业,如法师,和一个输出低而承受力强的职业相比,

25

如防御战士,咒术师,如果两者的战斗力评价相当,选择前者的玩家将比后者多的多,这是因为前者在PVE方面将具有高的多的效率。如果我们把视野从PVP拓展到一个游戏中发生的所有战斗过程。那么让后者在战斗实力上超过前者才是公平的,但是上限是不能让后者的输出速度超过前者,否则就是真正的不平衡了。一个典型的例子,就是在《魔兽世界》中,一个正常装备的盗贼杀怪速度一定快于一个同装备水准的防御战士,但是PK的结果一般是后者更有优势。 如果要保持职业之间的平衡,另外一个思路就是在其它方面对低输出职业予以补偿,比如给予他们比较强的战后回复技能,比如生命恢复速度、特定的恢复装备、快速恢复的技能等,如《魔兽世界》中的圣骑士可以补血,恶魔术士可以吸取宠物身上的魔法,通过缩短他们的平均休息时间,弥补战斗时间的差距,这样在整体的收益值效率上,达到两者的平衡。

5.2 随机性对游戏的影响

在现在几乎所有的游戏中,我们都可以看到,单位的攻击力都不是一个确定值,而是一个包含了上限与下限的区间。这使得我们虽然可以从概率上的数学期望计算出平均每次攻击的攻击力,并据此得到战斗力以及战斗结果的数据,但在每个单次的实际战斗中,常常会偏离这个结果。现在我们从数值上进行简单的分析。 在一般情况下,攻击力的计算公式一般是均匀分布的。比如一个战士的攻击力是10-20,那么攻击力取得在10-20之间的任何一个数值的概率都是相等的(离散情况),或者落在任何同等长度区间的概率都是相同的(连续情况)。当然游戏策划完全可以设计根据具体情况设计成其它分布,甚至是偏向一端的分布,但是会给游戏的设计和服务器端的计算带来非常大的麻烦。因此一般都采用平均分布的情况。

回到最简单的战斗状态,假设一个玩家的攻击力是10-20(取得10-20的任何一个数值,不一定是整数),生命为10,怪物的攻击力为10,生命为14。我们可以看到,按照平均伤害来计算战斗力, FCX=150, FCY=140。玩家将战胜怪物,但是在实际。FCX > FCY。

的战斗过程中,玩家每次将有40%的几率死亡。这样,战斗结果的不确定性就增加了。从一个确定过程变成了一个概率过程。

作进一步考虑,如果玩家和怪物的生命值同时上升1倍,分别为20和28,结果又如何呢?做一个简单的二维图,我们可以看到,此时玩家胜利的可能性从60%上升到了68%。玩家的胜利几率大大上升了。如果生命上升到三倍,即30和42,我们可以看到玩家胜利的可能性更是提高到了71.2%。从数学上说,任何概率的多次重复,都无限接近于方差不断减小的正态分布,也就是说,平均伤害落在数学期望附近的概率大大增加了。玩家的输出也就更加稳定,随机性随之减小。

一般来说,我们都希望战斗过程的随机性增大,但是我们不能将战斗过程设计的太短,杀伤力过高,比如玩家一次就可以战胜怪物或者一次就会被杀死将严重削弱游戏的操作性,玩家对于战斗过程不再具有控制力,而仅仅是运气的赌博。这样的战斗过程也是玩家无法接受的,因此在在杀伤力的控制上,一般都不会太低,但通过其它因素来增大随机性。如闪避和致命一击。

在网络游戏中常常还会引入闪避和致命一击这些因素,其实这也是另外一种随机性的因素,如果被闪避几率效果和暴击几率相等,玩家的战斗力仍然是相当的。但是加入这些因素后,一方面使得玩家可以追求的因素更多,游戏内容更加丰富,同时也增大了战斗的随机性。进而增加了战斗过程的乐趣。

26

现在来看一下随机性过程对于PVE和PVP过程的影响:

PVE:随机性使得玩家在打怪时需要关注更多的内容。即使在攻击力下限也可以确保胜利的情况下,玩家仍然必须关注战斗过程,因为玩家常常会在无恢复的情况下连续战斗,也就是经常在非完全战斗力的情况下战斗,在这个时候,如何评估下一场战斗的胜负,如何在一场战斗后选择休息回复还是继续作战,都是需要玩家思考的问题。

即使在确保胜利的情况下,玩家也会期望输出高的伤害,因为这样意味着更小的战斗力损失,以更高的效率获得经验、得到成长,并且在游戏中因为这种期望得到实现而获得满足。

PVP:随机性使得玩家的战斗结果不再确定。这也在一定程度上防止了“排座次”这种事件的发生。对于一个相对战斗力较高的玩家而言,如果在平均攻击力情况下可以剩下50点血战胜对手,在引入随机性后,剩下10点血战胜对手和剩下100点血战胜对手是没有区别的,但是一旦输出较低,却有可能输掉比赛。在这里可以看到,由于攻击力升高带来的效果被弱化了,但是由于攻击力较低带来的效果却被强化了,由于存在一定的随机性会输给战斗力中等水平的玩家,因此在挑起PK中也就有所顾忌。因此随机性在一定程度上是对弱者的保护。

从信息论的角度看,由于随机性使得先验概率更加平均化了(从100%胜利变成60%胜利,40%失败),因此也提高了战斗结果的信息量。另外,它也使得千篇一律的游戏过程产生了差异,产生了更多的信息,因此对提高游戏性是很有帮助的。

结论:1.随机性加大了游戏的信息量,增加了战斗过程的有趣性,为玩家提供了更多的帮助。2.随机性客观上是弱者的保护。3.随机性对于游戏是有利的。

正因为如此,我们可以看到在很多游戏中都采用了比较大的随机效果。比如《热血传奇》中的“炼狱”,可以达到0-25的伤害,在《暗黑破坏神2》中,玩家在镶嵌武器时,同样的数值下,宁愿选择加最大攻击也不愿意选择加平均伤害。在较早期的《魔兽世界》中,“奥金斧”由于存在较大的随机性,也常常成为战士用于对付布衣职业的利器。

5.3 离散化的影响

在这里,我们还必须注意到,离散化对于以上的结论也是有影响的。在数学方程上,我们可以看到,连续函数可以做出连续的曲线,而离散函数则是不连续的曲线。我们假设一个单位有320点血,而玩家角色的单次伤害为100,平均1秒攻击一次,即输出伤害为100/秒。在这种情况下,我们可以关注一下在连续和离散情况下的函数曲线。

27

离散过程的战斗效率图示

主要表现如下: 1. 连续函数是离散情况下的最佳情况。离散情况下的攻击效率为

hM/dpCeil(hM/dP)(在不能完全整除的情况下)

离散化会造成最后一击的攻击力浪费。比如一个单位有320点血,而玩家角色的单次伤害为100,玩家角色对每一个怪则需要4下而不是3.2下的攻击。这是因为在最后一下,将不可避免的产生80点的伤害浪费。在面对这个单位的时候,单次攻击在80-100之间的玩家战斗时间是相当的,如果玩家换一把武器,使得单次攻击力变为80,而攻击频率上升25%,可以在总战斗力一定的情况下最大的提升自己的战斗效率。只有在完全整除的情况下,战斗效率才能达到100%。 2. 由于离散函数存在攻击效率的问题,因此在一些关键性的点附近,细微的攻防变

化可能带来攻击效率的变化。进而带来更大更具有决定性的影响。

比较典型的例子是《星际争霸》中,在Protoss种族和Zerg种族对战时,

P族的Zealot攻击力为16(双手剑,表达为8*2),防御力为0/1,生命力为100/60 Z族的Zergling攻击力为5,防御力为0,生命值为35。

按照正常的计算,在Zealot VS Zergling 这样一个战斗中,对于Zealot而言,升级

28

1级攻击(攻击力+2)将获得2/16=12.5%的战斗力加成,而每升级1级防御力将使得对方获得1/5=20%的战斗力削弱,从数值上看,升级防御力显然比升级攻击力更为有效。

对于Zergling而言,升级一级攻击力将造成1/5=20%的攻击力加成,升级一级防御力(每次所受伤害-2)将使得对方获得2/16=12.5%的战斗力削弱。从数值上看,升级攻击力显然比升级防御力更加有效。

按照以上的计算,我们将认为P族升级防御力,而Z族升级攻击力是正常的选择。但是如果我们考虑到攻击效率的作用,对于Zealot而言,攻击效率为

35/16=72.91%,而在升级了一级攻击力之后,攻击效率提升到

Floor(35/16)35/18=97.22%,也就是说攻击效率得到了大幅的提升,而综合了这两个因素之

Floor(35/18)后,升级攻击力将导致

97.22%*112.5%=150%,在具体表现,就是以前Zealot3下攻

72.91%击才能杀死一个Zergling,升级1级攻击力以后,只需要2下攻击就可以,在时间上正好提升了50%。而作为Zerg,为了应对对方战斗力的大规模增强,就不得不升级1级防御力以抵消对方1级攻击力的效果。而P族为了保持该效果就不得不升级2级攻防。结果贯穿整个对战过程就成为P族的攻击力和Z族的防御力之间的军备竞赛。 以上过程也适用于一些战斗过程的设计,比如某个装备本身的属性提升不佳,但是在某个关键点附近可以使得玩家的战斗力正好跨越效率低谷,该装备对于玩家而言,就具有了远远大于该装备本身数值的意义。

29

本文来源:https://www.bwwdw.com/article/hgrp.html

Top