logo资料库

数值基本知识与理论.doc

第1页 / 共30页
第2页 / 共30页
第3页 / 共30页
第4页 / 共30页
第5页 / 共30页
第6页 / 共30页
第7页 / 共30页
第8页 / 共30页
资料共30页,剩余部分请下载后查看
内容简介
战斗过程分析
引言
第一章标准战斗过程
第一节单个单位的战斗过程
第二节多个战斗单位的战斗过程
第三节单个单位与多个单位的战斗过程
第四节结论
第五节其它影响战斗过程的因素
战斗过程的基本原理 第一章 标准战斗过程 网易公司 理论研究组 宋悦 Ver 1.1
内容简介 对于大多数游戏来说,战斗过程是最重要和最基本的数学模型,在游戏中我们可以见到 各种各样的战斗,方式林林总总,数值名目繁多,过程千变万化。在这让人眼花缭乱的过程 背后,有没有基本的规律呢?是不是可以找到一种定量的方法,让我们对战斗过程的设计更 加丰富,对平衡性的把握更加准确呢?本文要做的,就是力图在这个方向上迈出第一步。 作为战斗过程分析的第一章,本文提出了战斗过程最基本的一个结论:任何一场战斗的 双方战斗力差值不变。给出了战斗力的基本算法,战斗力是输出对承受的积分,特别地, 在输出与承受无关的情况下,战斗力=输出*承受。并且针对单、多单位各种战斗情况进行 了分析,均证明了这一结论。 本文分为 5 个小节。其中引言部分,从心理学层面解释为什么战斗过程在游戏中如此频 繁,也说明战斗过程的设计对游戏非常重要。第一节分析了单个单位之间的战斗过程,提出 了最基本的战斗力计算方法以及结论,分析了常见的单体战斗力计算公式类型,举出了《暗 黑破坏神》、《英雄无敌》、《魔兽世界》与《魔兽争霸》的基本伤害公式,并进行了简单的分 析。第二节分析了多对多情况下由数量带来的战斗力平方增长效应,即兰彻斯特定律,进而 得到了在多单位战斗情况下战斗力的计算方法。第三节分析了单对多情况下的战斗力对比 图,验证了上述定律,并对一种特殊情况:AOE 过程进行了分析。第四节提出了在各种战 斗过程下的总的规律和结论。第五节对其它的因素进行了一些考量。包括战斗时间、随机化、 离散化对战斗造成的影响。 版本介绍 时间 06.9.11 06.9.18 版本 1.0 1.01 内容 完成了基本内容:战斗力计算方式与守恒定律 加入了事例分析、加入了 AOE 分析,加入魔法伤害简单评价, 更名为《战斗过程的基本数学原理》 内容简介............................................................................................................................................ 1 战斗过程分析.................................................................................................................................... 2 引言 ................................................................................................................................................ 2 标准战斗过程 ............................................................................................................ 4 第一章 第一节 单个单位的战斗过程............................................................................................4 第二节 多个战斗单位的战斗过程..................................................................................13 第三节 单个单位与多个单位的战斗过程......................................................................19 第四节 结论...................................................................................................................... 24 第五节 其它影响战斗过程的因素..................................................................................25 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
命,用以保证自己的生存。这个值在有些战斗情况下是人数/耐久等等,在这里统一定义为 承受。另一个是伤害,用以破坏对方的生存,在这里同样定义为输出。双方所比较的,其实 是时间,看谁能在最短的时间内破坏对方的生存条件。我们可以得到一个最简单的结论:战 斗的结果,取决于一个值: hp  X dpt Y hp Y dpt X 。 注:上述公式中,下标 X、Y 分别指在一场战斗中对立的双方,在这里,X 指玩家,Y 则指野猪。 其中 Xhp , Yhp 为玩家和怪物的生命,单位为点。 Xdpt 、 Ydpt 为玩家和怪物的单位时 间输出伤害,单位为点/单位时间。这个单位时间一般是秒,但在很多游戏里,不一定以秒 为单位时间,比如《暗黑破坏神 II》,常常采用的单位是桢(每秒为 24 桢)。 题外话:《暗黑破坏神 II》(1.09 版)也因此遇到过 Bug,其中德鲁伊可以用一个技能: 狂暴(Fury)。这个技能的效果除了伤害加成以外,在 20 技能等级的情况下会连续攻击 5 次。 有的玩家采用了相对较快的武器以后,平均每不到 5 桢就可以使用狂暴,这样系统就无法判 定每一次伤害发生在哪一桢了,最终结果是这个终极技能无法产生伤害。最后玩家被迫使用 相对较慢的装备来发动 Fury,这也直接导致了游戏里物理系德鲁伊没有多少人玩。 从式子看,前面一个数是玩家能够坚持的时间,后面一个数值则是玩家杀死怪物的时间。 就像两个水池,各自插了一个水管放水,比较哪个水池先被放空就可以了。玩家要战胜怪物, 只需要这个值大于 0 即可。也就是 h X dpt Y  h Y dpt X > 0 做一点简单的变换,也就是需要 h X * dpt X > h Y * dpt Y 我们可以将玩家的 dpt h * 定义成玩家的战斗力,记为 FC (Fighting Capacity)那么我 们就有了一个标准用以衡量角色的战斗能力。 在上述的战斗过程中,双方的战斗力之差是一个恒定的值。战斗过程,其实就是一个 FC 相减的过程,要预估战斗的结果,只需要用 FCX — FCY 即可,我们不仅仅可以判定战 斗的胜利者,还可以,我们还可以计算双方的战斗力比例和胜者所能保留的战斗力。在事例 1 中,我们可以计算出,战士的战斗力为 2000,而野猪为 900。因此如果一只一只的攻击, 一个战士可以在无恢复的情况下战胜两只野猪。同样还可以计算出,在战胜第一只后,战士 的战斗力还剩下 1100,由于每秒输出是 20,所以剩下 55 点血。在战胜了第二只野猪后,战 斗力还剩下 200,也就是 10 点血。这个战士就必须进行打坐、吃面包、绷带、喝药、治疗 等等补给措施了,因为他的实力已经不足够再战胜下一头野猪。玩家在战斗中常用的判断标 5
准就是自己的生命是不是过半,这是有道理的,因为伤害输出和生命的多少无关,生命过半 就意味着还有一半以上的战斗力。 在几乎所有的网络游戏中,玩家都会关注自己的生命值,一般能够加生命上限的装备和 道具,总是比较受玩家欢迎的。因为尽管输出方式千差万别,各种参数一时难以评估,但是 生命值,总是能够比较直接的影响到一个角色的战斗力。 如果以单位的承受作为横坐标,输出作为纵坐标,那么输出与承受所组成的图形面积, 就是一个单位的战斗力。如下图: 在实际策划中,如果我们要设计多个不同的战斗单位,他们的攻击力和血量都不相同, 那么,只要比较他们的战斗力,也就是生命和输出速度的乘积就可以得到他们的战斗力大小。 在图形上,我们可以画出多条 HP * dpt =C 的双曲线,观测其落点在那条双曲线即可,处 于同一条双曲线的,即可认为战斗力相等。如下图 6
战斗能力的等值曲线 基于以上推理,我们可以看到在战斗中的基本规则,如果我们定义一个战斗单位的输出 与承受的乘积为战斗力,(在以后的分析中,我们会将其推广到战斗力是输出对承受的积分, 特别地,在输出与承受无关的情况下,战斗力=输出*承受)那么: 在任何一场战斗中,战斗双方的战斗力差值不变。 这一规则,贯穿了所有标准战斗类型的过程。 在实际的战斗中,伤害总是按照次数和频率来进行的,我们可以用单次伤害值*伤害频 率来得到单位时间的伤害,也就是说,我们可以用 dmg*f 来代替,为简化方便,我们将 DMG 写成 d,那么,在一些情况下,我们可以将玩家的战斗力写成 。其中 d 和 f 对战斗 力的作用同等。比如说,我们设计了两个戒指,一个是伤害+1,一个是攻击速度加 10%, 那么我们可以将伤害转化成百分比进行计算。如果这 1 点造成的伤害加成大于 10%,即玩 家在没有佩戴戒指的时候单次伤害低于 10 点,那么前一个戒指是更有作用的,反之则是后 者。每次 10 点伤害是这两个道具的平衡点。 f*d*h 基于攻-防的战斗方式 最简单的战斗模型玩家只能进行很简单的控制,在实际的游戏中只进行这样简单的伤害 7
分享到:
收藏