1、 本文分为5个小节。其中引言部分,从心理学层面解释为什么战斗过程在游戏中如此频繁,也说明战斗过程的设计对游戏非常重要。第一节分析了单个单位之间的战斗过程,提出了最基本的战斗力计算方法以及结论,分析了常见的单体战斗力计算公式类型,举出了暗黑破坏神、英雄无敌、魔兽世界与魔兽争霸的基本伤害公式,并进行了简单的分析。第二节分析了多对多情况下由数量带来的战斗力平方增长效应,即兰彻斯特定律,进而得到了在多单位战斗情况下战斗力的计算方法。第三节分析了单对多情况下的战斗力对比图,验证了上述定律,并对一种特殊情况:AOE过程进行了分析。第四节提出了在各种战斗过程下的总的规律和结论。第五节对其它的因素进行了一些考
2、量。包括战斗时间、随机化、离散化对战斗造成的影响。版本介绍时间版本内容完成了基本内容:战斗力计算方式与守恒定律加入了事例分析、加入了AOE分析,加入魔法伤害简单评价,更名为战斗过程的基本数学原理战斗过程分析引言战斗是网络游戏玩家进行游戏,尤其是练级的最主要方式。这主要是因为以下原因导致的:1. 毁灭都是人天生的欲望之一。在进化心理学中,认为正是有了攻击行为,种群的后代才能有最强壮的父母,物种才能代代相传。攻击行为是人类生活不可避免的组成部分。里查德.劳尔也认为,攻击性起源于人类的进化过程,并且因为其生存适应价值一直保存了下来。弗洛伊德的精神分析观点认为,人类存在一种死本能,死本能“极力把个体推
3、向毁灭,减少个体的生命力,直至其回到原来的无生命状态”。当它指向人外部的时候,就表现为对他人的攻击与暴力行为。死本能指出了人有被驱动去攻击、侵略的行为本性。在一般的网络游戏中,新人的第一个动作经常就是关掉了所有对话,然后跑出去打怪,这里面既有人们进行网络游戏的游戏习惯,也说明了人类对于战斗的本能需求。2. 游戏是对现实的一种模拟,而在现实中,战斗几乎贯穿了人类历史的始终,对于战斗的模拟和研究理论,也是非常成熟的。从中国的孙子兵法到克劳塞维茨的战争论,这些都对游戏中战斗的设计提供了非常好的理论依据。从可实现性上来说,游戏是对现实进行数字化的模拟,对人的行为做出相对应的数学理论模型,并且在其中做出
4、玩家可控的部分。战斗中的攻防和伤害,包括加入了神话、奇幻之后的魔法、诅咒,都能够进行很好的量化和数学模拟,如D&D之类的桌面游戏就是量化的方法之一,这些手段使得用计算机来建立模型,构建游戏成为非常容易实现的过程。(吃饭也可以满足上面2个条件,为什么不能是游戏的主要玩法)3. 战斗过程中存在着矛盾和斗争,情形相对复杂,而且在战斗过程中可以做出丰富的音乐美术效果,满足人在视听方面的需求,存在着大量的信息量,在其中也可以加入非常多的元素供玩家进行控制,如装备的选择、技能的使用。用信息论的角度来看,一个战斗过程,带给玩家的信息要比其它的动作多的多,因此战斗成为网络游戏中玩家最经常体验的过程。正因为如此
5、,战斗过程,可以说是网络游戏中玩家经历的最多,最为经常的游戏体验。对于战斗过程的设计,包括和战斗过程相关的数值设计,也常常成为一个网络游戏设计非常重要的地方。魔兽世界能够受到广大玩家的喜欢,最大亮点之一就是战斗过程的设计,一个好的战斗过程,能够让玩家的游戏过程中充满乐趣,进而影响到玩家的代入感,在玩家看来,与此相关的装备、技能,包括经济系统都是有意义的,玩家也就愿意更投身到游戏中去,体验与此相关的各个系统设计。本文所提到的战斗过程,主要指狭义上的战斗,而非广义上的对抗,如泡泡糖的炸弹人、赛车、棋牌等,均不计算入本文所讨论的战斗范围。第一节 单个单位的战斗过程最简单的战斗示例(出于数学分析方便,
6、我们采用连续的函数,离散过程以后再进行讨论)让我们首先来看一个最基本的战斗过程: 事例1:一个100血的战士出城,看到了一只血为90野猪,战士上去砍野猪,野猪同时开始反击。战士每秒的伤害是20,野猪每秒的伤害为10。当战斗进行了秒,野猪被杀死。在此期间野猪一共对战士进行了总量为45的伤害,战士还剩下55点血。整个战斗过程的图如下(不同颜色的线对应野猪的不同伤害值,从右至左分别为10,15,18,20,): 从这个图,我们可以看到一些规律:战士和野猪的初始血量是整个曲线的起始点,整个战斗过程就是从起始点回到某个坐标轴的过程。整个战斗过程沿着直线移动,这条直线的斜率,就是战士和野猪的输出速度之比。
7、在这个过程中,我们可以看到,作为互相斗争的双方,都至少存在两个因素,一个是生命,用以保证自己的生存。这个值在有些战斗情况下是人数/耐久等等,在这里统一定义为承受。另一个是伤害,用以破坏对方的生存,在这里同样定义为输出。双方所比较的,其实是时间,看谁能在最短的时间内破坏对方的生存条件。我们可以得到一个最简单的结论:战斗的结果,取决于一个值: 。注:上述公式中,下标X、Y分别指在一场战斗中对立的双方,在这里,X指玩家,Y则指野猪。其中,为玩家和怪物的生命,单位为点。、为玩家和怪物的单位时间输出伤害,单位为点/单位时间。这个单位时间一般是秒,但在很多游戏里,不一定以秒为单位时间,比如暗黑破坏神II,
8、常常采用的单位是桢(每秒为24桢)。题外话:暗黑破坏神II(版)也因此遇到过Bug,其中德鲁伊可以用一个技能:狂暴(Fury)。这个技能的效果除了伤害加成以外,在20技能等级的情况下会连续攻击5次。有的玩家采用了相对较快的武器以后,平均每不到5桢就可以使用狂暴,这样系统就无法判定每一次伤害发生在哪一桢了,最终结果是这个终极技能无法产生伤害。最后玩家被迫使用相对较慢的装备来发动Fury,这也直接导致了游戏里物理系德鲁伊没有多少人玩。 从式子看,前面一个数是玩家能够坚持的时间,后面一个数值则是玩家杀死怪物的时间。就像两个水池,各自插了一个水管放水,比较哪个水池先被放空就可以了。玩家要战胜怪物,只需
9、要这个值大于0即可。也就是 0做一点简单的变换,也就是需要 我们可以将玩家的定义成玩家的战斗力,记为FC (Fighting Capacity)那么我们就有了一个标准用以衡量角色的战斗能力。在上述的战斗过程中,双方的战斗力之差是一个恒定的值。战斗过程,其实就是一个FC相减的过程,要预估战斗的结果,只需要用FCX FCY 即可,我们不仅仅可以判定战斗的胜利者,还可以,我们还可以计算双方的战斗力比例和胜者所能保留的战斗力。在事例1中,我们可以计算出,战士的战斗力为2000,而野猪为900。因此如果一只一只的攻击,一个战士可以在无恢复的情况下战胜两只野猪。同样还可以计算出,在战胜第一只后,战士的战斗
10、力还剩下1100,由于每秒输出是20,所以剩下55点血。在战胜了第二只野猪后,战斗力还剩下200,也就是10点血。这个战士就必须进行打坐、吃面包、绷带、喝药、治疗等等补给措施了,因为他的实力已经不足够再战胜下一头野猪。玩家在战斗中常用的判断标准就是自己的生命是不是过半,这是有道理的,因为伤害输出和生命的多少无关,生命过半就意味着还有一半以上的战斗力。在几乎所有的网络游戏中,玩家都会关注自己的生命值,一般能够加生命上限的装备和道具,总是比较受玩家欢迎的。因为尽管输出方式千差万别,各种参数一时难以评估,但是生命值,总是能够比较直接的影响到一个角色的战斗力。如果以单位的承受作为横坐标,输出作为纵坐标
11、,那么输出与承受所组成的图形面积,就是一个单位的战斗力。如下图:在实际策划中,如果我们要设计多个不同的战斗单位,他们的攻击力和血量都不相同,那么,只要比较他们的战斗力,也就是生命和输出速度的乘积就可以得到他们的战斗力大小。在图形上,我们可以画出多条HP * =C的双曲线,观测其落点在那条双曲线即可,处于同一条双曲线的,即可认为战斗力相等。如下图战斗能力的等值曲线 基于以上推理,我们可以看到在战斗中的基本规则,如果我们定义一个战斗单位的输出与承受的乘积为战斗力,(在以后的分析中,我们会将其推广到战斗力是输出对承受的积分,特别地,在输出与承受无关的情况下,战斗力=输出*承受)那么:在任何一场战斗中
12、,战斗双方的战斗力差值不变。这一规则,贯穿了所有标准战斗类型的过程。在实际的战斗中,伤害总是按照次数和频率来进行的,我们可以用单次伤害值*伤害频率来得到单位时间的伤害,也就是说,我们可以用dmg*f来代替,为简化方便,我们将DMG写成d,那么,在一些情况下,我们可以将玩家的战斗力写成。其中d和f对战斗力的作用同等。比如说,我们设计了两个戒指,一个是伤害+1,一个是攻击速度加10%,那么我们可以将伤害转化成百分比进行计算。如果这1点造成的伤害加成大于10%,即玩家在没有佩戴戒指的时候单次伤害低于10点,那么前一个戒指是更有作用的,反之则是后者。每次10点伤害是这两个道具的平衡点。基于攻-防的战斗
13、方式最简单的战斗模型玩家只能进行很简单的控制,在实际的游戏中只进行这样简单的伤害是难以满足玩家要求的。在很多网络游戏中,常常会采用简单攻防加减的形式来进行战斗过程设计。这种设计的基本规则是:每次攻击造成的伤害=攻击方的攻击力-受攻击方的防御力。即;。下面我们来看看这种设计的数学效果是什么。 在这种情况下,我们来看双方的战斗力比值,一方为玩家,攻击力为attX,防御力为defY,攻击频率为fX,另一方是怪物,攻击力为attY,防御力为defY,攻击频率为fY。那么双方的战斗力分别是 FCX= FCY= 双方的战斗力比值FCX / FCY为(这里采用比值更容易看清楚): FCX / FCY = /
14、 对于以上的公式,我们可以至少看到以下规律:1 对于不同的敌人,玩家的战斗力不再取决于自己本身的数值,还跟玩家具体要面对的怪物的防御力相关。同样,怪物的战斗力也与玩家的防御力相关。因此,玩家和怪物之间的胜负关系,在实力很接近的情况下,可能会无法形成传递关系。这里可以举一个很简单的例子,单位A:=1000,=50,=0,=1, 单位B:=1000,=100,=20,= 单位C:=1000,=25,=0,=3 如果这三个单位进行实际的对战,通过简单的战斗力计算,我们可以看到,AB,BC,而CA。在没有任何外加属性(如单位大小、五行等等)这就形成了一个循环相克的局面。2 将任何一方的FC公式展开,可以看到:在游戏中,一般来说,战斗力大致相近的玩家在值上是大致相近的,那么遇到怪物时所减少的战斗力决定于。某个单位的攻击频率越高,而对手的甲越厚,这个单位的战斗力就被抑制的最厉害。利用这一点可以做出很多配合,比如设计某种怪攻击力低但攻击频率高,如果加上攻击硬直效果,这种怪对于甲较弱的法系职业就是战斗力很高的,但是对于防高的战士类职业攻击效果就很差,可以促使玩家之间形成配合。3 战
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1