码迷,mamicode.com
首页 > 其他好文 > 详细

【转】【数值系列】我理解的游戏数值

时间:2017-11-23 11:01:16      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:一点   大量   噪声   教师   通过   游戏开发   注意   问题   模式   

一个游戏应该是由数值来驱动的,数值设计最重要的是应用(动词)数学。
 
看到太多的数值相关的讨论中,策划们更喜欢也更倾向于讨论一些诸如DPS、经验分配(利益分配相关)等的问题,每个人都举出了很多现象来证明自己推崇的公式,这是一种很有意义的交流。但是长久下来造成了一种很严重的不该有的结果——行业对于数值设计的理解被扭曲为了数值设计仅仅用于这些领域,且一个好的策划在数值方面的功底应该是这些“倒推能力”。我想这是一种已经形成了一定年数的思想误区,形成这种误区和执行至今有很多因素,我不想进一步讨论这些因素,因为这会带来很多人的不爽,这里我只想说说一个游戏中真正需要用到数值设计的地方(或者说,这才是“数值策划”所有应该做的工作)。
 
从实际项目出发,我们来进一步分析,那么我们必须先拟定一个项目,我就毫不客气的拍脑袋出来一个简单点的项目吧,便于分析且容易理解,那么这个游戏是这样的:
 
背景简述
 
玩家扮演的是一个骑士学院的高级教师,使命是传授那些来学校学习的骑士们实战经验,简单的说就是安排战术,让他们去参加一些实战活动,通过实战活动培养他们的能力,当骑士完成学业后,会加入王国的骑士团,根据其加入时的能力总和,国王给出评价来奖励玩家角色,如果骑士被直接选拔如皇家骑士团,奖励会非常丰厚。
 
系统简述
 
经营系统:一些基础的装备买卖,任务接受、完成等,都想得到,当然前提是这个游戏仅供我们讨论问题,而不是要做出来好玩且赚钱,所以这里不讨论挖坑问题。
 
养成系统:当然现在来看这游戏的养成就只有骑士了,至于是否加入其它挖坑系统来赚钱来使游戏更好玩?我的回答是否定的,因为我不靠它赚钱只靠他说事。玩家对于骑士的培养是从性格方面和能力2方面着手的,每次可以安排骑士突出培养自己某方面战斗能力(表现为训练项目),而安排其他的工作则影响他的性格和经营系统需要的收入等。
 
战斗系统:标准的SLG(火纹、曹操传之类的,别把神仙道说成SLG了,这是“后时代策划”的标志),放置型(战斗过程玩家无操作,你是训导师嘛,安排战术是你的责任),玩家要做的是开始的时候在允许的位置内安排出场的骑士(位置多于可上场的骑士),每一仗的目标都是一定回合内敌全灭,地图是随机的,根据骑士自己的性格和玩家对其的塑造方向,他在战场上会有不同的行为。
 
简单归纳:或者说上面这3段都是废话,好吧,这游戏就是玩家放置安排每个骑士训练生活(美少女梦工厂?)和安排SLG战斗(自动操作的火纹、梦模?)结合,这里不讨论最终好不好玩,我们只看主题——策划在这个项目中需要进行的数值设计:
 
角色属性、战斗数值等等基础设计
 
这些是“数值策划”们最喜欢谈论的内容之一,我觉得这里就没有必要反复说这是干什么的了,只是强调一个思路问题,很多时候策划认为我们先有了哪些属性,然后硬性的给这些属性附上其作用,但恰恰相反,优秀的游戏数值设计过程中,是先分析世界需要怎样的属性,然后分析我需要些什么属性,接下来是分析哪些属性必须被拆分(为了赚钱也好为了平衡也好),最后敲定了属性后,对其制作公式。
 
那么回到这个游戏,我们会有些什么属性呢?最基础的就是攻击力、血量(含上限)、移动力。这些都毫无疑问地用于负责分析每一个领域:攻击力决定对方血量的下降速度;血量决定角色能被攻击几次;移动力决定了角色在地图上一回合内移动的格子数。这个游戏的基本属性已经有了雏形了,完了?没呢,这点属性够吗?不够,这只是骨架子,我们接下来要给他血肉。
 
在游戏中我们有物理和魔法两种攻击方式(体现剑与魔法的时代),那么我们规定魔法不会受到防御力影响,但是物理攻击会,因此我们必须加入一项防御力,区别出物理和魔法来;为了平衡魔法与物理的攻击,我们得给角色一项叫做灵性的属性,他决定了角色魔法的命中率(而物理的是必定命中的),此时我们不难看出本质上物理和魔法2者是平衡的,因为各有优缺点,换成赚钱思路,物理攻击这叫低风险低收益,而魔法则是高风险高回报。当然我不认为这是唯一的解决办法,更不认为这是最好的解决办法,这当然需要设计师自己根据游戏去设计。但是这里有一个核心问题就是——质的平衡,在数值设计中有质的平衡和量的平衡两点,哪个属性高了低了,叫做量的平衡,而质的平衡则描述了属性本身的价值。
 
如何去做质的平衡思路非常简单传统,给你一些就要剥夺一些,首先我们分析出世界上所有等价的事情,比如在这个游戏中,我们可以看到DPS,假如你的命中率100%,攻击力30,面对防御力10的怪物,造成20伤害(是的,就是减法,这里还没法说减法不好,当然也不在这里说,这里仅为说明质的问题),我们给他在这个世界中的估价就是20分(20x1),那么同等条件下,命中率80%的魔法,他的攻击力应该是25,不难看出他也是20分的(好吧,别说25x0.8x1=20你都算不出来)。这里x1代表伤害这个事件在世界中的价值,由于世界现在非常简单,没有其他因素影响,所以他就可以是1的,我们又何必把它定成0.5或者为了显示自己高端把它定义为一个1.3724之类的看起来很不规整的数字自寻烦恼呢?那么思路上上来说,我们给了物理攻击受到伤害减免的惩罚,影响了他在伤害这个事件的估价,而给了他一定命中这个“奖励”,影响了他在伤害事件的估价;我们给了魔法攻击无视防御这个特性影响了他在伤害事件的估价,却给了他可能未命中的“惩罚”影响了他在世界的估价。本质上,这两者平衡了,数据上,通过估价不难看出面对防御力10的怪物,他们两者表现相似(但不可能相等,至于具体差据,其实是一个概率问题,切比雪夫不等式会给你答案),至于再要进一步分析哪个好坏,我觉得你就进入了禁区了,因为我们已经制造了一个见仁见智的问题了,这就是给游戏提供了一个乐趣了,我们没必要进一步主观的去把科学的问题复杂化,最后做的要么做不出来要么感觉很不对。
 
思路确定后,我们看到可行,那么就加入这两个属性给角色。同时还有些不需要这样去分析的属性也可以被假如,比如我们需要移动方式——骑马、走路、飞行、木轮(运输队?),这些是因为游戏规则的允许,并且更好的体现世界观才产生出来的,只要道理上说的通,他就合理,但是有一条最基本的道理就是,至少这两两之间必须存在差异,如果我骑马和飞行在各种地形都消耗1点移动力,这就有些荒谬了。那么我们在这个基础上再加入一种移动模式——履带行不?你说呢?
 
简单的说,设计这种数值我们需要从实际出发分析问题,把问题存在的世界当作观察对象,进行简单的估价之后进行属性设计,然后公式化属性,让他起到自己的作用,而公式化的同时,你还需要注意到一点就是你想要的曲线是如何的?你想要的是y=x平方的还是还是y=x的1.2次放的?自己分析吧,看你的游戏需要什么,但你必须注意感觉要对劲。
 
那么是不是属性设计到这里就完了?当然不是,不然我也就不写这段了,除此之外,我们还会为AI、角色成长定一些“隐藏属性”,这些属性玩家肉眼看不到数字,但是你一个自称“数值策划”的人也看不到可就麻烦了。
 
随机地图产生算法数值设计
 
上面说的这些都只是基础的设计,如果你觉得一个数值策划要干的就是不断地“平衡”不断的“反复测试”上面这块就算工作了,那活该你的薪资低于期望了因为你的工作量也低于了期望了。在这个项目中,我们还会涉及到一些数值设计,这些数值设计是玩家肉眼看不到的(好吧我不重复相同的话了),但是他们能感觉得到,并且在游戏开发中需要用到。
 
随机地图产生算法,我们说这个游戏的地图是随机产生的,那么第一我们就想到了柏林噪声,柏林噪声用于产生3D游戏中高低不平的起伏路,它的核心意义是“平滑”整个曲线,让她更柔美。事实上如果你把它抽象到另外一个世界,你可以把这些曲线的值域分段,形成我们这种游戏需要的地图元素,比如水总是挨着平地的,那么水可以是(0.25, 0.4],而平地则是(0.4, 0.77],好吧,这里的具体数值毫无根据是我拍脑袋来的,只是说明你这样可以让水和地面相连,你同样可以设计带草的地面是(0.44, 0.79],再取到0.48的时候我们再算一次到底带不带草就好。这个数值的值域规划是一个简单的数值工作,这个程序员没法替你完成,所以需要策划自己去完成,首先程序员对游戏现在有多少种地形,将来有多少种地形毫无兴趣,但是对于地形种类会变,可是很反感的,因为“变”总是意味着“麻烦”,因此一个优秀的策划可以用数学来解决这样的麻烦。
 
那是不是随机地图就有了?当然不是,柏林噪声嘛,你至少还得给版子定义倍频和持续度(BTW,在这个过程中你应该自己总结一下如何建表,因为我都说了需要的属性了,至于建表技巧,这里我就不再重复了)。
 
除此之外,如果为了游戏更精致,我们还需要进一步工作,那就是用曲线分析出我想要的大概地形,简单的说,我们的游戏虽然是随机地图,但是根据我们派遣骑士去的地方特征不同,他的地形应该随机中也大概有点规律,比如我派骑士去的是魔法森林,都是森林了总不能老都是水和山吧,森林地形应该更多,这不是一个x%的比率设计,x%的设计方式是给非游戏设计师(玩家)来用的,因为他们不需要具备这方面专业知识,而英雄无敌的随机地图生成也让我们看到了糟糕的x%模式,我们要做的是,从横向和纵向上对于一个区域进行横截面分析,产生多条曲线,这些曲线符合我们上面说的值域规则,比如说森林,他的曲线应该尽可能保证值域在平原和森林之间(还要在别的之间?当然可以,更优秀的数值设计师能创造更优秀的地图),最后程序根据你传入的横向纵向多条曲线、倍频数和持续度,产生出柏林噪声,然后通过映射到你的值域产生出随机地图来。
 
因此数值设计,更讲究的是如何应用数学来描述你想要的东西,而不是去用一个公式验算另一个公式达成否定推翻效果或者支持效果(这个工作也可以通过柏林噪声做的更好)。
 
寻路算法数值设计
 
是的,AStar应该是程序员去写,因为他们的优化能力远比策划好,但是有一点程序员写不了,那就是其中的估价算法,可见这样有地形的寻路中,简单的曼哈顿算法不再合适,那么程序员怎么去做呢?他/她会感到困惑,因为想了一些算法,可能都不太适合你的需要,你很勉强的接受了,也让他/她很为难。
 
因此策划在这里就需要去设计一个地图单元格的估价算法,这个估价算法是针对移动力的,首先移动类型决定了移动力的消耗,那么最简单的一个做法就是移动力x1就是这个格子消耗力,而程序逻辑中将加分变成减分即可。当然这个算法并非相当科学,以至于最后表现的时候,角色并不一定按照你真实想法来走,有时候会有些别扭。
 
好的数值设计师可以做到尽可能让他贴切于人的思想,这其中的关键也是看你如何去应用数学创造这个算法。
 
性格与行为AI数值设计
 
接下来最要命的问题来了,我们都说了游戏是放置型的,那么事实上怪物和我方的行动都是AI控制的,这里就有一个AI算法的问题,AI不是应该交给程序员才对嘛?那么程序员,你玩过SLG吗?火纹玩的如何?你对火纹的AI有多少了解?见鬼,老大当初怎么招了你这样一个不玩游戏的程序员了!——只能说你的抱怨毫无根据,因为优秀的程序员把大量的时间花在学习好的程序算法上了,就像好的策划会把大量时间花在研究游戏(而不是玩游戏)上一样,术业有专攻,因此AI设计是策划的工作。
 
AI的逻辑中其实是会有很多技巧的,我之前尝试了一个很棒的AI算法,让我写着玩的SLG游戏中双方的角色都非常狡猾,狡猾的以至于我身边很多火纹老手(即使是自称的,他们对于这类游戏也各有独到见解,算是比较Hardcore了)都无法直接理解他们的想法,直到几个回合后他们都拍手叫好,说这几步走的太妙了,太聪明的AI显然效果很不好,因为他们的行为超越了人的理解范围,是的,如果你教会计算机思考问题,他的力量是不可衡量的。当然AI逻辑是一方面,驱动这个逻辑的才是我们要说的,那就是——数值设计。
 
首先在这个项目中,我们就需要为角色定义一些属性(之前说没完么,是没完吧),来影响他思考。那么这个游戏里面角色要思考什么?无非就是移动到哪儿,然后考虑是否打人打谁。“啊呀,这简单,我个角色设定一个目标,然后他就冲着过去好了,比如血最少的”,那你看看效果好不好?当然这样的做法也没错,只是最后高移动力成了惩罚了。我们至少需要让每一个角色,对于地图上的每一个单元格进行估价,评估出本回合这些单元格的价值,最高的价值的那个就是他要去的,而走不到的价值肯定都是低于1的。
 
之前我的做法过于复杂,我让每一个角色都进行了深度思考,为他们设计了他们的团队精神、他们的进攻欲望、他们的自保心里等等属性,让他们既猥琐又勇猛,最后出来了一个“太聪明”的AI,这就是因为估价的时候考虑了太多的因素,比如“我走到这里,有多少人会打到我,这样我大概受到最大伤害如何(当然我走到这里了也会导致别人的行动范围变化,比如我走到了一个“卡口”那么同一时间只有一个敌人会近战命中我)?我又可能在多少个友军的庇护下?”想的太多,设计出公式酿成了错误。因此首先我们的数值策划必须定义好每个角色的想法,然后再用数学去描述出他来,程序员需要做的只是让角色选择一个估价最高的格子过去,至于算法你爱咋该咋改,当然你可以要求程序员为你优化你的算法,毕竟coding技巧不是策划擅长的而是程序员的强项,给他/她你的代码,然后告诉他/她你的想法。
 
还是那句话,好的数值设计师会让游戏的AI看起来更自然,数值设计的根本是应用数学。
 
那么策划在设计数值的时候究竟需要些什么相关的能力呢?我想这也是很多新手想知道的问题,从上面这些需要你去工作的项目来看,不难分析出你需要:
 
Feeling或者说是灵性
 
这对于数值策划来说非常重要,乍一看你会觉得数值策划嘛,应该更理性,更相信科学而不是感觉,但事实上由于你是在应用数学,用科学去描述想法,因此首先你必须要能建立出好的想法,符合游戏的Feeling的想法来,而一些基于这种灵感或者说Feeling的突破,才能被真正的称为是创意,更重要的是创意别人感觉得到,看不到,而你却用数学把他营造出来了让别人感觉到了。
 
会使用搜索引擎
 
知识在这个年代是廉价的,因为网络已经不再是神话,谁都能通过百度和谷歌找到想要的知识,而你需要掌握的是,知道我要的知识是什么,然后输入到搜索框,寻找出你想要的答案就好。我们不是搞教育的,不需要你“学生”把所有东西都背出来,用那些随手就能查到的东西来填充你的大脑。
 
善于建立函数(或者说一些人说的数学模型)
 
对于任何事物,请用建立函数的思想去思考,这很重要,这也是逻辑化的关键(同时我对于男性游戏策划的要求如此,而对于女性我要求的是在UI设计方面的灵感,人类的染色体造就的这两个方面的不同优势真是没法改变的,因此只能从区别要求出发),千万不要提“一般情况下”,这代表你根本没有用函数去思考,函数是一种自然规则——“当温度变成30度的时候,人会感到热、狗会吐出舌头;当温度到0度的时候人会感到冷、狗会……抱歉我没这方面知识,需要搜索一下。”这就是大自然,一个函数,而不是if 30度如何如何,else if 0度如何如何,那么28.34度呢?
 
应用数学分析并构建世界
 
当你有了idea之后,善于用数学去观察他,简单的用工作中的例子去看——你需要设计一个升级经验表,你希望这个数值增长是怎样的?用曲线去描述,肉眼一看就知道,之后就是把曲线函数做出来。进一步说明就是你的老大希望“我在20级是一个坎,60级是另外一个”,那么升级经验的2个点有了,再加入你的想法之后进行插值获得函数。当然这并不是单向的,还包括了获得等因素,但你思考的时候必须先统一为一个数去分析。
 
演算和验算能力
 
一些东西要会去演算会去抽象,演算是验算的基础,至少你先得搞清楚事情,才可能去分析事情的好坏,不仅仅是数学公式,世界上的一切都如此,因为你需要会用数学去分析世界。比如说本篇中我定义的这个游戏的玩法,你能演算出他最后是如何的吗?那么让你来做你会如何改进?

【转】【数值系列】我理解的游戏数值

标签:一点   大量   噪声   教师   通过   游戏开发   注意   问题   模式   

原文地址:http://www.cnblogs.com/mizime/p/7883311.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!