什么叫游戏目录数值变化

记住游戏:数字_百度百科
清除历史记录关闭
声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。
记住游戏:数字
《记住游戏:数字》是一款卡片棋牌类游戏,运行环境支持Android2.2。
记住游戏:数字运行环境
支持Android 2.2
记住游戏:数字应用类型
卡片棋牌类游戏
记住游戏:数字应用介绍
当你玩这个游戏时,你看到很多图片的数字。每个级别的游戏带给你的注意一些图像数字可用,必须记住了。然后你会看到完整的图片的数字领域。  现在你需要找到一组那些图片,你记得在时间的计时器。你去更多的层次越多,图像的数字你必须记住!  大的软件训练你的记忆力和注意力!酷的益智游戏。
清除历史记录关闭常用的游戏数值 网游术语 ARPU APPU CCU等算法
我的图书馆
常用的游戏数值 网游术语 ARPU APPU CCU等算法
TA的最新馆藏
喜欢该文的人也喜欢后使用快捷导航没有帐号?
 论坛入口:
  |   |    |   | 
我要游戏策划
查看: 24224|回复: 33
策划如何用VBA调试游戏数值
游戏类型:手游游戏/平板游戏&  设计类型:【数值/经济系统/付费】&
  前段时间公司准备制作一款以植物大战僵尸为题材,类似捕鱼的射击游戏,之前没有接手过类似项目,所以发表了一篇《捕鱼类游戏计算方式的设计思路》(http://www.gameres.com/463918.html) 的文章来验证思路。
psb.jpg (257.69 KB, 下载次数: 53)
12:47 上传
  根据这个思路,我准备EXCEL自带的VBA做一个数值模拟来调整数值。
  本人是初学VBA,草草地看了几页书之后就开始动手撰写代码了,做完之后发现还行,所以就发出来,希望能给大家带来一些帮助。
  我们策划不是专业程序员,也不会什么精妙的算法。但我们确实可以借助代码来帮助我们解决某些问题。
  1、创建按钮  首先,我们打开EXCEL,新建一个页面,选择“开发工具”-“插入”-“按钮”,随便在屏幕上画一个按钮,画完之后,会弹出“制定宏”。
image001.png (33.65 KB, 下载次数: 15)
12:29 上传
按钮建议放在G列之后
image003.png (50.68 KB, 下载次数: 11)
12:30 上传
点击“新建”,即可打开代码窗口
  PS:可以右键点击按钮,选择“编辑文字”设定按钮的显示文字,或者右键选中,左键拖动按钮的位置和调整大小。
  2、打开代码窗口
  按钮创建好之后,也可以点击“开发工具”内的Visual Basic按钮打开代码窗口:
image005.png (36.63 KB, 下载次数: 10)
12:30 上传
点击右上角的VisualBasic按钮打开代码界面
  代码窗口打开后,你会发现只有两句代码,今后的代码之后写在这两句中间,点击之前创建的按钮,就可以执行写的代码了。
image006.png (21.82 KB, 下载次数: 10)
12:30 上传
  3、设置变量和常量
  首先我们以最基本的,豌豆射击普通僵尸的概率为例,豌豆攻击力是1,普通僵尸的生命值是10,则根据计算公式算出一颗豌豆杀死一只普通僵尸的概率为10%,也就是0.1。
  我们以0.1的击杀概率,进行多次模拟,看看实际情况下,金币支出、金币收入数值的变化。
  那么,我们可以先定义金币支出、金币收入的变量:
SumExp= 1SumInc= 0
image007.png (23.46 KB, 下载次数: 12)
12:31 上传
  定义一个变量的方法很简单:变量名 = 变量值
  后面绿色的字是注释,起说明作用,不写也可以。(单引号+ 注释内容)
  当然了,还有别的高大上定义变量的方法,例如:
Dim SumExpas string
  代码的意思是:Dim 变量名 as 变量类型
  这种方法可以不用先写好变量值,可以定义好变量类型,本文不涉及这些,有兴趣的小伙伴可以自行度娘研究哈。
  我们定义好了两个变量SumExp(总金币支出)、SumInc(总金币收入),和他们的初始值1和0。但为什么总支出是1,而总收入0呢,因为后面的代码中,如果SumExp为0的话,会发生除0错误,所以就从1开始。而且,大家可以这么想,我们模拟的情况是从打出第一炮之后开始的,此时金币已经扣1了,支出当然从1开始啦。
  有了这两个变量基本就够用了,但是还是建议再设置一个常量:击杀率。
  为什么要设置击杀率呢,原因就是方便修改,因为本来我们就是为了调试概率写的这个代码,这个击杀率应该会频繁地修改,后期代码复杂了,很多地方都需要引用击杀率,到时候一个个修改起来那感觉可是相当地酸爽,而且特别容易遗漏。
image008.png (23.83 KB, 下载次数: 9)
12:31 上传
  4、设置自动循环
  设定好变量后,就正式撰写代码,设置自动循环,让VBA帮忙“掷骰子”了。
  让VBA自动干活,大家需要这段代码:
  For i =1 To 1000  Next
image009.png (30.19 KB, 下载次数: 9)
12:31 上传
  其中,这个i是啥玩意,大家先不用去管它,就当它是计数器,关键看后面的数值1000,表示让代码循环运行1000次,具体运行什么代码,写在这两句代码中间就可以了。
  这个数值1000可以改成任何你需要模拟的次数数值。数值太小,样本不够看不出趋势,数值太大,VBA可是会累“死”的哦,一般来说1000至50000就差不多了。
  5、VBA掷骰
  要让VBA掷骰子,需要在循环代码中加入这段代码:
&&IfRnd & Per Then
& &SumInc = SumInc + 1
  Else
  End If复制代码
image011.png (26.77 KB, 下载次数: 8)
12:32 上传
  这段代码的意思是:
& &If&&这个判断 Then  对了运行我& &Else   错了运行我End If
  “这个判断”中的内容是:Rnd& Per
  Per大家很熟,就是之前设定的变量击杀率,为0.1
  Rnd是VBA内置的一个函数,效果是产生一个0到1之间的一个随机数(可度娘)
  如果Rnd产生出来小于0.1,那说明是击杀了,则Rnd & Per这句话是对的,所以应该运行“对了”那一块代码。
  如果Rnd产生出来大于或等于0.1,那说明是没击杀,则运行“错了”那一块的代码。
  这个判断,击杀了僵尸掉落金币,所以“对了”那一段代码就要把金币给加上去:
SumInc= SumInc + 1
  没有击杀僵尸什么事情也没有发生,所以“错了”这段代码为空,后面会用到。
  6、完成一个循环
  不管有没有击杀,每次豌豆打出去,总支出肯定是要加上去的,注意要加在掷骰代码外、循环代码内:
SumExp= SumExp + 1
image013.png (28.64 KB, 下载次数: 12)
12:32 上传
  这个时候,一个完整的循环已经完成,VBA按照我们的医院,以0.1的几率,进行1000次判断。每次判断都相当于豌豆进行一次攻击,判断中了,则将收入+1,如果不中,则不加。每次判断结束,不管中没中,支出一定要+1。
  这个时候其实可以返回EXCEL界面,点击按钮让VBA运行了。但是点击后,EXCEL表格没有任何反应。实际上代码已经是运行了,但是没有把相关的数据打印出来,我们看不到而已。
7、打印数据
由于每次循环,都产生了一次新的数值,需要每次都记录,所以需要在循环内,加入这两行代码:Sheet1.Cells(i,1).Value = SumExp
Sheet1.Cells(i,2).Value = SumInc复制代码
image015.png (29.65 KB, 下载次数: 12)
12:33 上传
加入代码后,点击按钮运行。哇,发现EXCEL表格内有数值了:
image017.png (27.49 KB, 下载次数: 8)
12:33 上传
那么,这两句代码的是什么意思呢?
Sheet1.Cells(i, 1).Value = SumExp
工作簿名字 . Cells函数(单元格坐标X,Y). 单元格值= 输入的值
单元格坐标Y,对应的就是EXCEL表的横坐标,1对应的就是A,2就是B,3就是C,以此类推。
单元格坐标X,大家看到了在第4章出现的i,在我们之前的循环体内,i表示的是计数器,从1到1000,当前循环到了哪一个,刚好可以作为单元格坐标的X。
随着循环的推进,i不停地推进,也就依次将值写入单元格,相当方便。最终,循环进行了多少次,单元格也就被写了多少行,不信大家看:
image019.png (5.98 KB, 下载次数: 8)
12:34 上传
  8、打印数据的优化
大家发现,如果豌豆击杀了普通僵尸,掉落的可是10金币啊,怎么每次收入是+1呢。还有最好可以看一下收入减支出,看一下收益情况如何。
这时候我们就要对代码进行一下调整:
1 增加变量Gold:
2 调整打印的数值:
Sheet1.Cells(i,1).Value = SumExp
Sheet1.Cells(i,2).Value = SumInc * Gold
Sheet1.Cells(i,3).Value = SumInc * Gold – SumExp复制代码
image021.png (35.83 KB, 下载次数: 11)
12:34 上传
  为什么要设置常量Gold呢,原因和Per一样——方便调试,因为僵尸掉落的金币数是我们需要频繁修改的,所以最好是设置成一个常量,方便每次更改,避免遗漏出错。
  新增的第3行代码和前面的基本一致,单元格坐标的Y表示在C列打印,方便查看。
image024.jpg (49.97 KB, 下载次数: 13)
12:35 上传
点击运行后就是密密麻麻的数据了
  9、折线图查看数据
  既然数据出来了,我们就可以使用EXCEL自带的折线图查看数据,对数据变化有一个宏观的了解。
image025.png (24.12 KB, 下载次数: 12)
11:36 上传
直接选中A、B两列所有单元格的数据(记得要点选A和B,不能只选中单元格)
  选中数据后,选择功能标签“插入”,图表功能栏内选择“二维折线图”,选择第一种折线图。
image027.png (9.24 KB, 下载次数: 8)
11:36 上传
image029.png (23.69 KB, 下载次数: 8)
11:36 上传
平稳的蓝色折线表示支出波动的红色折线表示收入蓝色折线在上表示亏钱红色折线在上表示赚钱
  另外,我们还可以插入一个单独的表格,查看纯收益情况。我们单独选中C列,插入折线图,得到:
image030.png (24.6 KB, 下载次数: 8)
11:36 上传
  折线图创建好之后,就可以点击按钮查看效果了,可以多次点击,折线图会动态更新。
  我们使用的模型是:一次豌豆1金币,击杀一只普通僵尸掉落10金币,击杀率为10%(也就是0.1)。理论上的效果是10*0.1=1,相当于不赚也不亏,达到了收支平衡。
  但是,实际情况下,虽然收支能大致保持平衡,但收入折线的波动非常厉害,而且经常出现“一边倒”的情况。所以,根据之前我写的《捕鱼类游戏计算方式的设计思路》,我们可以加入调整击杀概率的方式。
  10、查看击杀情况
  在击杀数据中,我们还想看一下,大概每隔多少次,豌豆可以击杀一次僵尸。
  所以我们在判断中,加入下面两条代码,当击杀发生时,记下1,没有击杀,记下0:
Sheet1.Cells(i, 4).Value = 1
Sheet1.Cells(i, 4).Value = 0复制代码
image032.png (12.45 KB, 下载次数: 10)
11:36 上传
  点击按钮运行,在D列里面,列出了击杀的情况:
image034.png (27.6 KB, 下载次数: 8)
11:36 上传
  但是,光是一串0和1,也是容易看眼花的,所以我们要使用条件格式,将1(击杀)的情况标记出来。
  选中D列整行,点击功能标签“开始”-“样式”-“条件格式”-“突出显示单元格规则”-“等于”,填入值为1,设置为“浅红填充色深红色文本”(也可以选中别的喜欢的颜色)。
image036.png (19.85 KB, 下载次数: 9)
11:36 上传
  设置好之后,1这个数值被高亮了,就可以很明显地在数据表中看到击中的情况了。
image037.png (6.06 KB, 下载次数: 8)
11:36 上传
  11、引入悲情值
  豌豆攻击普通僵尸,以 0.1的概率,理论数值10次就可以击杀一次,但实际情况可能20次甚至30次都不会中一次,会给玩家带来很大的挫败感。
  所以我们要引入一个叫做悲情值的概念,降低击杀与被击杀间隔时间的离散程度,降低玩家由于连续未击中后的挫败感。
  悲情值的运作方式为:
  1 初始化悲情值=0  2 当玩家攻击一次,未获得任何收益,则悲情值+1  当玩家攻击一次,获得任何收益,则悲情值重置为0  3 当悲情值到达某个值时,玩家下一次攻击的击杀率+100%(必定命中)
  在代码中,我们加入悲情值常量:M =10
image040.jpg (6.8 KB, 下载次数: 8)
11:36 上传
  在循环体中,加入相应的代码使其运作:
For i = 1 To 1000 '模拟次数
& &If Rnd & Per Then&&'子弹击杀了怪物
& &SumInc = SumInc + 1 '收入加起来
& &Sheet1.Cells(i, 4).Value = 1
& & N= M '重置悲情值
& &Else&&'子弹未击杀怪物
& &Sheet1.Cells(i, 4).Value = 0
& & N= N - 1
& && & If N &= 0 Then
& && & SumInc = SumInc + 1
& && & N = M '重置悲情值
& && & End If
End If复制代码
image041.png (24.85 KB, 下载次数: 8)
11:36 上传
  PS:这里注意了,其实变量N才是悲情值,循环体中将M的值赋给N,让N代为执行悲情值的功能,因为N是循环体内的局部变量,所以不需要特别声明就可以用。(或者说将M的值赋给N的时候就已经声明了)
  循环体中新增的一个判断
& && & If N &= 0 Then
& && & SumInc = SumInc + 1
& && & N = M '重置悲情值
& && & End If复制代码
  是用来执行悲情值的功能的,通过每次不命中减少N,当N减到0的时候,触发一定命中。无论是随机获得的命中,或者是悲情获得的命中,都需要再次重置悲情值。
  我们还可以加入一条代码,将悲情值的变化情况打印出来:
Sheet1.Cells(i,5).Value = N
image043.png (15.73 KB, 下载次数: 8)
11:36 上传
  这样,在EXCEL表格界面E列,就可以看到悲情值的变化情况了。
  同样,我们根据第10章学的方式,将E列加一个条件格式,设置0为高亮(0表示此次触发了一定命中),这样我们就可以很容易地看到哪些是概率命中的,哪些是悲情命中的。
image045.png (19.63 KB, 下载次数: 8)
11:36 上传
image046.png (26.97 KB, 下载次数: 8)
11:36 上传
  但是,引入悲情值后发现,玩家的收益率直线上升。经过多次模拟,收入线基本没有低于过支出线,这和我们所要求的“收支平衡”相违背。
image048.png (17.92 KB, 下载次数: 9)
11:36 上传
  要解决这个问题,有两种方法:
  1、提高悲情值,原先设定的值是10,设为15或20,收入线明显下降。但是过高调整悲情值,就违背我们设置这个值的初衷,导致它非常鸡肋。
  2、动态调整击杀率,将“高走”趋势拉低,“低开”趋势拔高,达到一种动态的平衡。
  12、动态调整击杀率
  要动态调整击杀率,首先我们要新增一个变量ap,加在Per上,来增加或减少击杀的几率。
image050.png (2.07 KB, 下载次数: 10)
11:36 上传
  默认ap为0,初始不调整击杀几率
  将ap加入到概率运算当中,使其生效:
image052.png (11.7 KB, 下载次数: 9)
11:36 上传
  在循环体中加入代码,使其能“动态调整”,收益高降概率,收益低提概率:
Select Case(SumInc * Gold - SumExp) / SumExp
& && && &&&Case Is &= 0
& && && && && && && && && && &&&ap = ap + 0.01
& && && &&&Case Is & 0
& && && && && && && && && && &&&ap = ap - 0.01
End Select
Sheet1.Cells(i,6).Value = ap + Per复制代码
image054.png (26.26 KB, 下载次数: 9)
11:37 上传
  Select Case是比If判断更好用的一种判断方式,可以判断多个值,执行多行代码
Select Case 需要检查的值
& && && &&&Case Is 值1
& && && && && && && && && && &&&执行1代码
& && && &&&Case Is 值2
& && && && && && && && && && &&&执行2代码
& && && &&&Case Is 值3
& && && && && && && && && && &&&执行2代码
......
End Select复制代码
&&如果大家希望对Select Case想更多的了解,可以度娘更深入学习。
&&加入了ap后,收入线变得“老实”了,跑高了自动会拉下来,落低了自动会拉上去,纯收益值像是股票走势一样“上上下下”了,但总的趋势还是位置在0上。
image056.png (38.16 KB, 下载次数: 9)
11:37 上传
&&另外,代码中也将调整后的概率打印在了表格内的F列内,可以将F列导出折线图,查看概率的变化情况:
image058.png (25.56 KB, 下载次数: 8)
11:37 上传
&&不过,我只是提供了一种思路,毕竟游戏是需要有一些趣味性的。玩家打了好半天,还是那些金币,不多也不少,是很容易乏味的。这就需要小伙伴们开脑洞了,充分利用Select Case可以设置多个条件的优势,比如:在游戏初期先调高概率,让玩家获利颇多,然后拉紧钱袋降低概率,刺激玩家充值等等。挖坑这种事应该是大家都喜闻乐见了的吧。
  13 、动态调整上下限
  在多次模拟后发现,动态调整值ap也会“失控”,一味地走高或走低,而且会变成负数。
  所以我们还需要加入apUp、apDown变量值,来限制ap所能达到的最高几率和最低几率,让ap在正常的范围内上下波动:
apUp= 0.05apDown= -0.05
image060.png (2.49 KB, 下载次数: 9)
11:37 上传
  apUp、apDown上下限制,建议幅度不要太大。也可以设定为只有上限无下限或无上限有下限,根据自己的需求制定。
  将apUp、apDown加入代码,参与对ap的调整:
& && & Select Case ap
& && && &&&Case Is &= apUp
& && && && && && && && && && &&&ap = apUp
& && && &&&Case Is & apDown
& && && && && && && && && && &&&ap = apDown
& && & End Select复制代码
image062.png (18.05 KB, 下载次数: 11)
11:37 上传
  这段代码的意思就是:当ap高过上限时,将其设置为上限值,当ap低于下限时,将其设置为下限值。
  导入了上下限的代码之后,概率值的折线变化为:
image063.png (25.88 KB, 下载次数: 12)
11:37 上传
  是不是规矩多了?而且纯收入的波动变得频繁且平稳,收入线和支出线如胶似漆地黏着,已经达到了理论上的数值平衡了。
image065.png (34.66 KB, 下载次数: 9)
11:37 上传
  而且我将悲情值设置为15,也对曲线的影响也很小。每打15炮不击杀下次一定击杀,这种感觉还是可以的。
  14、动态调整步长
  我们对概率的动态调整,是每一个循环都进行的,相当于每发射一次,概率就会变化一次。由于性能,或是玩家体验的考虑,我们会希望这个调整不是这么的频繁,可以每3炮调整一次,或者5炮调整一次,甚至是10炮后再调整。
  要实现这个功能,就需要增加一个动态调整的步长(或叫间隔)。
  比如,我们要设定每3炮调整一次,就这样调整。
  我们将动态调整的代码,嵌套到一个判断中去:
  If i Mod 3 = 0Then
  (这里放动态调整的整段代码)
  End If
image067.png (17.6 KB, 下载次数: 10)
11:37 上传
  If 判断我们已经很熟悉了,但是这段:iMod 3 = 0    是什么意思呢?
  大家还记得,在循环体里面,i是计数器,表示从1到1000,当前轮到第几位了。
  Mod是VBA的内置函数,用于取得两个整数相除后结果的余数。聪明的小伙伴应该已经发现,哪些数字取余数是0啊?3、6、9、13......等3的倍数,遇到3的倍数就执行一次代码,不就实现了我们需要的每隔3次就调整一次的目的了吗。
  不过,这个调整步长在调试中会经常修改,最好是能把它拨出来作为常量,方便调整。
  定义一个常量:
image070.jpg (2.59 KB, 下载次数: 9)
12:28 上传
  将代码修改为:
image072.jpg (63.35 KB, 下载次数: 13)
12:28 上传
  好了,现在概率“抖动”地不是太厉害了,你也可以把apt值得改大一些,让它变得更“迟钝”。
  15、结语
  我们已经搭建好了最基本的模型,小伙伴们就可以通过修改之前定义好的几个常量,写入各种数值进行调试了。
image074.jpg (90.77 KB, 下载次数: 10)
12:27 上传
image076.jpg (168.22 KB, 下载次数: 9)
12:27 上传
  希望这个教程能够帮助到大家,虽然这段短短的代码对于专业的程序员来说不算什么,但正所谓“策划写代码,神仙挡不住”。写的过程中,锻炼了我们的思维,联想到了更多的细节,另外这其中的成就感也是爆棚的。
  作为一个策划,仅仅完成这些数值的调整是不够的,我们所要做的其他工作更多。一个游戏需要成功,仅仅靠一个人写一段代码是完成不了的,需要项目组所有人共同发光发热,每个人提供的能量多一些,那整个团队的战斗力肯定会有非常明显的提升。
  祝大家早日实现自己的梦想!
  这次教程的全部VBA代码:
Sub 按钮1_Click()
SumExp = 1 '总支出
SumInc = 0 '总收入
Per = 0.1&&'击杀率
Gold = 10 '掉落金币
M = 14 '悲情值
ap = 0 '实时调整概率
apUp = 0.05&&'限制最高几率
apDown = -0.05&&'限制最低几率
apt = 3 '概率调整步长
For i = 1 To 1000 '模拟次数
& & If Rnd & (Per + ap) Then&&'子弹击杀了怪物
& & SumInc = SumInc + 1 '收入加起来
& & Sheet1.Cells(i, 4).Value = 1
& & N = M '重置悲情值
& & Else&&'子弹未击杀怪物
& & Sheet1.Cells(i, 4).Value = 0
& & N = N - 1
& & Sheet1.Cells(i, 5).Value = N '打印出悲情值
& && &&&If N &= 0 Then
& && &&&SumInc = SumInc + 1
& && &&&N = M '重置悲情值
& && &&&End If
& & End If
& &
SumExp = SumExp + 1 '支出加起来
Sheet1.Cells(i, 1).Value = SumExp '打印支出数值
Sheet1.Cells(i, 2).Value = SumInc * Gold '打印收入数值
Sheet1.Cells(i, 3).Value = SumInc * Gold - SumExp '打印纯收益数值
& & If i Mod apt = 0 Then& &'每隔apt炮调整一次概率
& && &&&Select Case (SumInc * Gold - SumExp) / SumExp& &'根据收益调整几率
& && &&&
& && && && &Case Is &= 0
& && && && && && && && && && &&&ap = ap + 0.01 '收入过低,提高概率
& && && && &Case Is & 0
& && && && && && && && && && &&&ap = ap - 0.01 '收入过高,降低概率
& && &&&End Select
& && &&&Select Case ap& && &'调整概率不超过上下限
& && && && &Case Is &= apUp
& && && && && && && && && && &&&ap = apUp
& && && && &Case Is & apDown
& && && && && && && && && && &&&ap = apDown
& && &&&End Select
& & End If
Sheet1.Cells(i, 6).Value = ap + Per '打印概率的变化情况
Next
End Sub复制代码
点赞。技术贴。
感谢,浅显易懂
不错,,学到东西了,讲解的很详细易懂
如果不是过程特别复杂,变量特别多的情况,我会直接用数学方法进行分析——用公式就足够了。毕竟调试代码也是需要时间的。
像楼主的教学例子,其实很少有正式的数值策划会用vba去模拟——这种程度的过程,在脑子里模拟,再用公式进行计算就足够了。
当然,我不是说VBA没用,相反,我被同事称为VBA原教旨主义者——就因为我坚持要用VBA来写技能逻辑脚本生成器……以及当某些家伙在概率论的分析面前不认账的时候,我会用VBA来模拟过程——过程就展现在面前,谁能不服?
干货,收藏。闲散后仔细看
。。。为分享点个赞吧,虽然感觉这种用表格计算就能得到结论的数值内容不需要用vba
干货 感谢分享 正好我有许多问题~
基本上excel能符合数值策划的使用需求了吧~ 这个用来加分的比较多.~~装bi利器啊一名策划2年后重新总结:MMORPG游戏数值建模怎么做?
来源:游戏陀螺
  导读:数值策划是游戏策划各细分工种中,一个具有相当分量的职位,并且在薪酬水平上,经常可以达到与主策划相比肩的程度。在MMORPG的规划设计中,为了便于梳理层次,使其清晰易读,我们通常需要将其分拆为社会、经济、养成、战斗四大模块。数值作为游戏内在的脉络,与这四大模块密切相关,所以在本文中,我们也将按照这种分类方式,对数值进行分拆设计。
  文/明澈流风
  一、写在之前
  本文主体部分完成于2013年初,作为当时入行两年以来,关于数值方面自学成果的一个总结。近年来夜间自学忙于他事,数值方面却是荒弃甚久,偶然在整理电脑的时候,发现昔日旧文,正好拂去尘土,晒晒阳光,也算发挥一下互联网开放、共享之精神。
  由于本人水平有限,且无赫赫战功以彰资历,因此文中所述难免纸上谈兵之嫌,还望初学者切勿囫囵接收,以免误人子弟;也欢迎各位同行高手对文中谬误或欠缺之处,及时加以指摘和补充,共同交流进步。
  二、数值进阶
  数值策划是游戏策划各细分工种中,一个具有相当分量的职位,并且在薪酬水平上,经常可以达到与主策划相比肩的程度。因此,转职为数值策划,是很多策划的阶段性职业目标,从而,将目标拆分细化,是很有必要的。
  在这里,我将数值策划所需掌握的能力,分拆为9个等级,如下表所示。
  常理上来说,升级嘛,应该是按部就班的从Lv.1,一级级的升到Lv.9,但游戏策划是一个新兴职位,尚没有严格的资质认证规范,也没有各种条条框框的约束;同时,由于人才的高度流动性、行业的普遍浮躁心态,使得公司对于人才价值的判定,更多的是依赖于其过往的项目经验(社招)和学历证书(新人)。
  虽然我自身比较倾向于稳扎稳打的学习方式,但从适应环境,获得更快发展的角度来说,我还是建议各位先升级、再弥补之前欠缺的能力。一方面,升级带来的直观收益是显而易见的;另一方面,升级之后,将拥有更远的视野,从而学习目标会更加明确。
  当然,能力升级之后,收益可能是上来了,但是并非人人都会去选择弥补之前欠缺的能力,毕竟站的更高,要忙的东西可能就会越多。但问题之一,你是否能及时找到合适的人选弥补自己的短板,降低项目中错误发生的几率?问题之二,在同等薪酬水平下,面对实力更加强大的竞争对手,你是否依然能够得到公司的青睐?所以,如果想在这一职位做出成绩,基本功是最好要打牢的。
  闲谈就到这里,下面我们就开始对LV.6――游戏数值建模,进行探讨。
  三、宏观设定
  在着手建立数值模型之前,我们首先需要对游戏的大致形态,拥有充分、准确的理解,因为数值模型一旦制定并投入研发,就很难经得起大改,即使你预留了充分的扩展空间。这就需要主策划在项目之初,就制定出一份相对详细、基本确定的框架设计纲要。
  在MMORPG的规划设计中,为了便于梳理层次,使其清晰易读,我们通常需要将其分拆为社会、经济、养成、战斗四大模块。数值作为游戏内在的脉络,与这四大模块密切相关,所以在本文中,我们也将按照这种分类方式,对数值进行分拆设计。
  下面,我需要临时客串一下主策划,对游戏的整体框架进行简单设计,点击这里可以查看参考框架草图(附件一)。
  通过如上图所示的类似的框架图,以及配套的说明文档(为了节省篇幅,还有几十页的规划文档我就不在这里贴出来了),主策划需要向全体研发成员展示游戏的宏观设定,数值策划需要从中归纳出构建数值模型所需的元素,并进行分类组装。
  四、社会体系
  通过对宏观设定规划文档的解读,在社会模块中,我们可以明确以下几个关键点。
  1、角色升级完全依赖于精品化设计的主线任务(任务形态类似于笑傲江湖OL),升级过程需要避免枯燥乏味,升级时间要大幅度精简。
  2、多个等级封印的存在,可使大多数玩家聚集在一起,从而缓解高级玩家背离世界、新手又被世界遗弃的情况。
  3、为了避免玩家在等级封印期间大量流失,一定要确保玩家始终有所追求。“历练”取代“经验”,作为玩家的主要追求目标。
  4、注意体验节点的排布,避免过度集中的知识点和过多的货币种类,给玩家造成认知负担。
  请使用Microsoft Office Excel 2007或以上版本,打开数值文档,启用宏,打开“目录”切页,点击“社会体系”按钮。
  启用宏的方法:在该文档刚被打开时,在数据区域上方的如下位置,点击“选项”按钮。
  在弹出的界面中,选择“启用此内容”,点击确定即可(放心,本文档不带宏病毒 = =)。在Excel被关闭前,将一直有效。每次打开该文档时,均需要进行同样的操作。
  1、游戏框架
  在“系统框架”切页中,我们需要根据宏观规划文档,剥离出游戏中所有的养成模块。此举的目的,一是提炼精简数值所用的信息,为各个养成系统的数值设定提供必要依据(如属性投放等级);二是作为养成系统的规划总纲,便于相关人员进行执行和测试。
  同样的道理,也适用于“玩法框架”切页。
  由于这部分内容与数值建模关联不大,在这里我就不进行详细设计和说明了。
  2、升级体验
  在“升级体验”切页中,需要先由主策划协同任务策划和场景策划,决定升级所需总时间、升级路线排布、任务数量等大致内容,以便于在我们的头脑中,勾勒出对角色升级的整体感受。同时,我们需要与主策划、任务策划,将“系统框架”、“玩法框架”中的知识点和指引内容,分拆到各个任务中。
  3、经验曲线
  根据升级感受,我们可以直接拍出整体的升级经验曲线。从规划可知:
  ①,多个封印等级,对应不同的能力阶段,在不同封印段之间,要划分出明显的梯度。
  ②,游戏采用全任务快速升级模式,在同一封印阶段中,经验曲线要保持平滑增长。
  结合以上两点,我们决定采用线性分段函数,y=kx+b,不同的封印等级段,对应不同的k、b值。x表示角色等级,k表示经验随等级提升的增量,b用于修正各分段间的衔接。
  在“经验规划”切页中设置参数之后,我们在表格中输入对应的公式,鼠标拖拽,即可得出每个等级的升级所需经验。此后,根据数值感受的反馈,我们之后还需要反复调整k、b值,直至达到理想的程度。
  PS:如是杀怪升级类游戏,经验设定方式会有所区别。例如其中的一种方法是,先确定杀怪效率和单位怪经验,然后根据升级时间,计算出升级总经验,任务和活动起到加速作用。
  4、任务经验
  使用各等级的升级所需经验,除以各等级的任务总数,可以得出每个任务的平均经验。“平均经验”在这里仅是一个参考数据,主要用于大概查看一下,高等级任务是否比低等级任务的平均经验要高,而不是实际填到具体的每个任务中。不合理的地方需要通过调整任务数量、修改任务类型、调整所占权重、凭感觉手调等方式,进行修正。
  “任务奖励”切页中,在配给任务经验时:
  一是要注意区分任务类型、任务难度、任务耗时等因素,厘定不同的权重系数。比如需要将2000经验分配到两个任务中,一个是对话,一个是杀5个精英怪,那么我们会选择给前者200经验,给后者1800经验,而不是相反或平均分配。
  小技巧:我们可以使用SUMIFS函数,对同等级各任务的经验权重求和,进而可以将一级的经验按权重自动分配到各个任务中。SUMIFS函数的格式为“SUMIFS(需要求和的区域,条件验证区域,验证条件)”。公式如G6单元格所示。
  二是要注意对各任务的经验奖励数值进行美化,拒绝出现类似305、1992这类的数字,四舍五入之后,需要保证各主线任务的经验总和,要略微高于升级所需经验。
  小技巧:我们可以使用“(∑实给任务经验 / 该级升级所需经验)-1”配合IF函数,检验实给任务经验是否足够升级,如果不足,会自动报错;如果超出,也可直观的看到超出的百分比。公式如J6单元格所示。
  5、社会系统
  在“社交系统”“世家系统”“学派系统”“帮派系统”“国家系统”切页中,各大系统的具体数值,需要在系统细节确定后,再进行详细设计。
  其中,以上系统拥有一定量的的属性可供使用,这部分属性来源于之后谈到的养成体系属性的分配,我们暂且不表,先往下继续。
  五、经济体系
  玩家在网游中需要追求不同的目标,游戏货币作为中间枢纽之一,可以对目标的实现程度进行量化,为了获得所需货币,玩家会参加各种活动,从而使玩家的游戏意愿得到正向驱动。
  游戏货币种类的数量,需要以游戏本身的特性作为依据。例如剑网3、征途2等重度游戏,货币种类非常繁多;而众轻度游戏,则只需要一两种货币,甚至可以完全没有。
  货币种类细分的好处,在于使各个活动的追求明确,避免某些产出相对较少的活动被玩家直接无视;而过多的货币种类,又会加重玩家的认知负担。所以,要根据实际需求进行权衡,并在规划设计层面上进行体验优化。
  请打开数值文档,打开“目录”切页,点击“经济体系”按钮。
  1、货币价值
  从宏观设定规划文档中,我们可以提炼出游戏内所有的货币类型(广义),以及各自的主要产出、消耗途径。详见“货币价值”切页。
  排除充值因素,游戏内的货币,均是玩家消耗时间和劳动力从系统中产出,此外,玩家的操作技巧、所处的社会环境,也会对货币的获取效率产生影响,因此,为了更加准确的衡量货币的价值,同时也是为了便于分配系统产出,我们采用的是时间、金钱、技术、社会四重权衡体系。
  “时间定产”,表示玩家通过个人劳作,在单位时间内可稳定产出的货币数量。结合游戏的宏观设定,我们以1天为单位。
  “金钱兑换”,表示玩家在单位时间(1天)内的个人劳作,可换取的金钱收益。我们暂定为一天10元,等价于1000黄金。
  “技术因素”,表示玩家通过自身的操作技巧,在单位时间内(1天)可获得的不稳定收益,由于规划文档中有周上限的设定,因此我们除以7,平均分配到每天即可。
  “社会环境”,表示玩家及所属社会群体在单位时间内(1天)可以获得的货币数量,由于社会环境因素动态多变,因此,在这里我们只取其上限值。
  将所有货币在不同等级阶段的日产量规划统计出来之后,我们可以通过求和得出每种货币的日产量上限,也就是其价值量权重的倒数,该数字越小,表示对应的货币就越值钱。
  依凭权重倒数,我们可以建立“货币度量衡”,用于量化玩家个人的劳动回报,即“100黄金=x官银=y碎银=z修为”这类的等式,该等式将在物品定价环节中发挥重要作用。
  需要注意的是,货币度量衡需要建立在“越少越稀有”的基础之上。在定义货币时,要根据获取难度的异同,给出相应的币值,例如某些稀有的货币,一天可能只产出1~2个,我们不能主观的认为在数字上不好看,就人为的美化成100~200,却不同时修改数值模型。
  货币度量衡的使用方法:
  前提是,某物品可以通过两种或以上种类的货币购买。
  确定所要查看的等级段,因为不同等级段的物价是不等同的。
  在等级段对应的橙色方格中,通过下拉菜单,选择货币A和货币B的种类。
  输入货币A的数量。例如某物品的价值是100单位的货币A,则输入100。
  在“等价值的货币B的数量”单元格中,可以查看该物品值多少个单位的货币B。
  2、黄金产销
  “黄金”即“人民币”,可直观体现一款游戏的官方收入。在本游戏的宏观设定中,黄金一是用来购买商城物品,二是用来购买增值服务。
  黄金流向图
  为了提高游戏收入,我们不得不保证黄金用途的独占性,而独占性过高,又会导致缺少黄金的底层玩家,无法正常进行游戏。因此我们需要推出金银交易系统,让底层玩家能够通过自身的劳动,换取RMB玩家手中的黄金,从而提高其生存能力。
  玩家在金银交易时,会以官方汇率作为参考,并提供更高的性价比。但玩家之间的行为并不可控(例如工作室),若玩家间交易汇率与官方汇率相差过远,会导致官方营收受到影响,因此我们需要添加“交易税”这一动态参数,对试图扰乱市场价格者,施以惩罚性“关税”,使市场逐渐回归至正常汇率。
  如“黄金”切页所示,我们临时拍定了金银交易的临界值税率,在游戏上线测试之后,我们需要依据游戏运营数据,制定合理的临界值分段区间,并推倒出相应的金银交易税率公式,写入服务器配置文件中。
  在对商城物品进行定价时,我们需要从多个层面对物品进行价值量化,例如能力上的提升效果、便利度、外观霸气程度、休闲收藏用途、地位和荣耀等因素。当然,各层面的重要程度视物品不同而不同,我们可以通过修正系数,对物品的最终价值进行调整。当确定最终价值后,我们可以通过“黄金价值比”,计算出每个商城物品的黄金价格。
  增值服务在我们游戏中,分“固定收费”和“梯度收费”两种方式。固定收费服务,例如“随身邮件”功能,可复用商城物品的定价策略;梯度收费服务,例如“提升指定货币的周获取上限”,则需要进行专门设计。
  在宏观规划文档的设定中,梯度收费服务的定位,在于初始时以极高的性价比,培养用户的付费习惯,提高付费渗透率;随着服务使用次数的提升,这一梯度会越发陡峭,大R为了获得更多的能力提升或享受更多的便利性,会选择支付更多黄金,进而可以为官方贡献更高的收入。
  3、官银产销
  “官银”是游戏内唯一的流通货币,为了平抑物价,延缓通货膨胀的速度,一方面我们需要严格控制“官银”的产出,另一方面需要保证足够大的消耗空间,做到疏堵结合。
  官银流向图
  在控制产出方面,需要严格回避“官银”产出于简单操作即可完成的活动,以防工作室大量挂机刷钱;另一方面,“黄金”兑换“官银”的汇率,要跟随全服“官银”总量,进行动态变化,以预防后期汇率过低,玩家不再通过官方途径兑换“官银”,导致产品营收受到影响。
  在设计消耗方面,要注意划分出消费梯度,不能简单粗暴的一刀切,一定要保证底层玩家能够生存下来,并且对“好生活”有持续的盼头。
  如“官银”切页所示,我们可以根据“货币价值”,得到官银在各等级段的日常产出,在与主策划确定好哪些活动产出官银后,以总产出乘以各自的权重比,即可得出每个活动的官银产出(为方便建模,暂以活动1~N代替具体的活动,预留出扩展空间,待活动规划确定后,再代入其中进行调节)。
  同样,我们需要与主策划确定好哪些系统功能消耗官银,各个系统的消耗定位是怎样的,平民or小资or土豪,或更细分的层级?之后,我们需要通过对百分比的反复调节,对各个系统的消耗总量进行分配(为方便建模,暂以功能1~N代替具体的系统功能,预留出扩展空间,待系统规划确定后,再代入其中进行调节)。
  分配之后,注意划分出消费梯度,保证“平民日消耗<劳动日产量<小资日消耗<<土豪日消耗”这样的消耗曲线。另外,在游戏前期,消耗不宜高于产出过多,以防止在游戏粘性尚未充分建立时,就过早的吓跑玩家。
  在得出各系统的官银消耗总量之后,我们可以在各个系统中,对数值分配进行进一步的细化,由于本文偏重于数值建模,对各个系统的具体设计关注不多,因此这部分内容在这里就不详细说明了。
  另外,我们使用“日常官银产出―平民日常消耗”,可以得出玩家在一天内积累的官银数量,进而可以辅助制定“官银”商店中部分物品的价格,例如某物品我们希望玩家攒20天官银才可获得,则该物品的价格,使用“(日常官银产出―平民日常消耗)×20”即可。
  4、碎银产销
  “碎银”是游戏内的非流通货币,主要用于游戏内的系统功能和日常消耗。由于不会流入市场,所以我们无需担忧通货膨胀的问题,但也要给出合适的消耗区间,既不可消耗过少导致碎银大量囤积,又不可消耗过多导致平民阶层难以生存。
  碎银流向图
  “碎银”切页中,碎银的日常产出和消耗,可以复用“官银”相关的设定思路,但由于碎银不可交易,且该货币的定位是“保底”,因此需要降低土豪、小资阶层玩家的消耗占比,保证“平民日消耗<小资日消耗<劳动日产量<土豪日消耗”这样的消耗曲线。
  说明:在使用碎银进行消费时,碎银不足的部分会扣除官银补足。此时,官银的“货币价值”被降格为碎银,在统计消耗时,应以碎银的货币价值作为依据。
  至于升级任务的碎银产出,我们可以手动进行分配,也可以采用类似于经验的分配方式,为各个等级段的各个任务,制定不同的权重。
  5、精力
  “精力”是玩家的生产力货币。通过“生活技艺”系统,玩家可以制作各种物品,加强角色自身的能力,或是经由交易换取官银;通过“寻宝”系统,玩家可以获得各种绑定实用物品和碎银。
  精力流向图
  “精力”切页中,我们需要先根据角色等级,设定玩家角色在各等级下的精力上限,然后设定精力在三种获取渠道下的每日恢复量。
  其中,“自动恢复”,代表系统每天自动恢复的精力,占当前等级下精力上限的百分比。
  除系统自动恢复之外,玩家可以通过生活技艺系统,制造可恢复精力的物品卖给他人,从而实现精力的交易;另外,商城中可以直接出售恢复精力的道具。
  如表格所示,我们暂定三种方式的恢复效率是一致的,非R玩家可以通过交易获取两倍于常人的恢复速度,RMB玩家的恢复速度,则最多可以达到3倍。
  说明:①,为了贴近现实,我们设定精力的恢复是一个持续的过程,即每隔1小时恢复一次精力。②,为了减少精力交易对制造类生活技能的价值产生的影响,我们设定烹饪、医术、纺织、锻造四种制造类生活技艺,均可产出精力恢复道具,且每类产出只可恢复该渠道恢复总量的1/4,以保证玩家对每类产出都会有所需求。
  6、历练
  “历练”是游戏内核心能力的养成货币,用于对武学技能的学习和升级。在升级武学时,根据武学的难度和其他影响系数,单位历练值可转化为不同数量的熟练度。
  “历练”的主要获取途径,分为:完成指定日常活动、击杀指定NPC、使用历练道具、使用加速历练道具四种。其中,前三种方式受周获取上限的限制,以保证大多数玩家在核心能力上拥有相同的起点;最后一种则无视周上限,主要用于老服拉新,使新入玩家能够以数倍于常规的能力成长速度,快速融入到社会群体之中。
  历练流向图
  “历练”切页中,我们根据“货币价值”切页,得出历练在各等级段的日常产出量,之后,根据宏观规划,我们为产出历练的各个活动,设定不同的权重,进而得出每个活动的历练产出量。
  与其他货币不同,“历练”的消耗途径单一,且无需区分用户梯度,因此在消耗层面上的设计,与各个武学技能直接关联即可,这部分内容我们将在战斗体系-武学升级模块中再加叙述。
  7、其他货币
  由于篇幅所限,其他个人扩展货币,在这里我们就不再叙述了。
  详见“修为”、“贡献”、“威望”、“功勋”、“师德”、“声望”各个切页。
  至于世家、帮派、国家所用的社会组织专用货币,分别在对应的系统中设计即可,本文暂且省略。
  8、生产系统
  生活技艺和寻宝,为玩家的生产系统,玩家可以付出劳动,从系统和玩家交易中获取必要的游戏货币和物品,生产力上限取决于“精力”的多寡。
  在“生活技艺”切页中,我们需要规划设计出各个技艺分支的升级所需经验、经验成长方式、配方、单次精力消耗、产出物品的使用效果等内容。其中,产物的使用效果(Buff),需要以生活技艺在当前等级段内所能提供的属性上限为依据,而属性上限,来源于后面会提到的养成系统的属性分配。
  在“寻宝”切页中,我们需要规划出玩家在各个地图、各个时段、不同福禄值下,所能获取到的物品和对应的几率,以及不同情况下精力的消耗量。
  这部分数值,需要以各系统的详细设计为前置,在本文中就不再进行细化了。
  9、物品产销
  在理想情况下,数值策划应该了解游戏内所有物品的功能,以及对应的产出、消耗途径,并形成文档,作为相关人员进行执行和测试的依据。这些内容需要记录在“物品总表”切页中。
  在“商店总表”中,需要规划出各个商店产出的物品、物品在对应商店的价格,以及每日个人购买限制,每日全服购买限制等内容。
  在“掉落总表”中,需要规划出各个NPC掉落的物品、物品数量、掉落几率、掉落上限等内容。
  以上三个切页的内容,需要在各个系统的细节、经济规划确定之后,再进行详细设计。
  六、养成体系
  养成体系是延续网游生命周期的关键所在。玩家在网游中花费大量的时间和金钱,其直接目的,就是通过自身“能力”的提升,获得与其他玩家进行交互的优势。这些“能力”,包括但不仅限于属性、技能、积分、排名、游戏中的社会地位,以及各个游戏系统带来的展示效果、便利性、战斗辅助等功能。
  对于数值策划来说,在MMORPG的养成体系中,我们主要关注属性和技能,其中,属性的配给方式,需要普遍适用于全职业的各个系统,一脉相承;而技能的设计,则需要添加各种变量,为战斗的结果提供多种可能性。因此,在数值建模时,我们多将“属性”归入养成体系,将“技能”归入战斗体系。
  请打开数值文档,打开“目录”切页,点击“养成体系”按钮。
  1、属性和公式
  在“属性一览”切页中,我们需要根据游戏整体规划,设计并罗列出游戏中的所有属性,并简单介绍属性的作用,以及其成长、转化方式。为便于整理归类、防止遗漏,我们将这些属性分为一级属性、二级属性、三级属性、附加属性、扩展属性五大层级。
  一级属性,为角色的基础属性,除悟性之外,均会按照一定的规则,折算为二级属性和三级属性。在本游戏的设定中,基础属性还将作为部分装备的使用限制、武学心法和招式的学习限制。
  二级属性,为攻、防、血相关属性。这部分属性,是大多数玩家都需要追求的共同目标。
  三级属性,为命中、闪避、会心、破防等战斗变量属性。这部分属性,同样是玩家需要追求的共同目标,区别在于,在几率的影响下,这部分属性将为战斗过程带来多种可能性。
  附加属性,为附加在武学心法、武学技能、装备、经脉等系统上、玩家需要根据职业特点和个人偏好,有针对性进行专门培养的属性。
  扩展属性,为饮食、天气、奇遇等特殊系统,以及运营活动和各种趣味玩法所用的属性。
  PS:属性分层并无绝对的标准,便于沟通交流即可,以上仅为其中一种分层方法。
  在“属性分类”切页中,我们需要将所有战斗相关属性提炼出来,分为直接属性和转化属性,并设定每个属性的属性上限(如果没有上限,则写出成长公式)。之后,根据直接属性成长方式的不同,将其再进一步划分为等级成长属性、非等级成长属性、技能相关属性三个类别。
  等级成长属性,顾名思义,是随着玩家等级而成长的属性,但注意,这并非是玩家升级就能直接获得,而是指玩家在该等级时,属性所能达到的上限。
  非等级成长属性,是虽然成长,但却不与等级直接相关的属性。这部分属性,其上限或为定值,或根据自有公式计算得出。
  技能相关属性,多指Buff、Debuff为玩家附加的临时属性。
  针对等级成长属性中的“直接属性”,我们可以制定“标准属性”的属性成长公式,该公式通常为线性公式,我们可以将公式设定为:f(Lv)=Lv×an + bn。其中,f(Lv)代表标准属性的上限;Lv代表角色的等级;an代表在当前等级段下,等级每提升一级,“标准属性”增加多少;bn用于修正两个等级段之间的f(Lv)值,使前后两段的曲线得到衔接。
  通过该公式,我们可以直观的看到,在玩家角色达到某等级时,“标准属性”的上限能够达到多少。以标准属性为基础,我们乘以相应的系数,即可得出每个等级成长属性,在对应等级时的属性上限。
  在“战斗公式”切页中,我们需要罗列出游戏中用到的所有战斗公式,并说明圆桌判定规则。记录之后,无论是后续的数值建模过程,还是作为检错、沟通、测试的依据,都将带来极大的便利性。
  根据本游戏的特性,我们采用乘法公式,伤害公式为:伤害=攻击×(1-防御减伤比)。
  “攻击”可以为直接数据,但为了美化和修饰数字表现,我们通常会加入一个修正系数,即,(实际)攻击力=(面板显示的)攻击点数×转化系数。
  “防御减伤比”不能大于等于1,因此,防御应为趋势函数,即,防御减伤比虽然会随防御点数的增加而增加,但只会达到允许的最大值。
  趋势函数,需要根据我们想要得到的感受,设定不同的公式。在这里,我们将其分为线性趋势函数和曲线趋势函数两类。
  线性趋势函数,我们可以用以下公式表示:Y=C×X/(f(Lv)×A)
  曲线趋势函数,我们可以用以下公式表示:Y=C×X/(X+f(Lv)×A)
  其中,C代表强度转化系数(影响单位“直接属性”可转化的“转化属性”的多寡)、A代表等级削减系数(影响“转化属性”与角色等级的关联程度),通过对C、A的调节,可以对曲线形状进行修正。在f(Lv)保持不变、X递增的情况下,这两个公式的曲线分别如下方左、右两图所示,从中可看到两种公式下,属性各自的成长趋势。
  同理,我们可以设定命中、闪避、会心、会意、破防、格挡、招架、御劲、化劲、识破、无双、五行抗性等属性的成长公式。详见“属性一览”切页。
  注:在理想情况下,趋势函数可以无限接近于某值,但外部因素并不可控,一旦误给,很容易出现超出上限的情况,例如破防达到200%。因此为了避免风险,需要在程序代码中添加上限值,当某一属性超过该上限时,强制将其转为该上限值。
  圆桌判定规则,想必各位早已耳熟能详,我就不再赘述,请详见“战斗公式”切页。
  2、最大模型
  “最大模型”,是指玩家角色所有战斗属性达到全满时的巅峰状态。通过该模型,一是可以调节出相对合理的各个属性成长公式的参数,二是便于属性在各个系统中的分配。
  在“最大模型”切页中,我们先拉出角色等级,并根据等级,得出标准属性的f(Lv),然后将所有战斗相关属性罗列出来。
  “直接属性”,可以使用转化系数C×f(Lv)直接得出;
  “间接属性”,通过各自的公式和参数C、A的值计算得出。
  属性得出之后,我们需要反复调节C、A的值,使其符合规划的设定。
  在“最大模型测算”切页中,我们需要对最大模型的各项数据规划的合理性进行测算,不合理或者感觉欠佳的地方,需要返回“属性分类”切页,调整对应项的规划数据,再在“最大模型”切页中,对相应的参数进行调整,如此往复。
  测算模型的建立方法:
  1、使用vlookup函数,索引出攻方和守方,在不同等级下各个直接属性的最大值,之后,通过公式,折算出攻守双方的转化属性。
  2、设定普通攻击参数,包括攻速、伤害区间上下限、伤害随机数(通过randbetween函数实现,详见F19单元格),以及其他修正参数。
  3、设定伤害圆桌,通过索引到的攻守双方的战斗变量属性,以及命中判定随机数,得出每次攻击的命中状态结果(可点击F9刷新)。其中,偏离几率=1-攻方命中率,识破几率=(受攻方无双修正后的)守方识破率,闪避几率=守方闪避率,会心几率=攻方会心率,格挡/招架几率=守方格挡率/招架率,平攻几率=1-偏离几率-识破几率-闪避几率-会心几率-格挡/招架几率。
  4、通过战斗公式,计算得出普通攻击平砍的预计伤害(只看攻方)、修正伤害(只看攻方,经圆桌修正)、最终伤害(兼看攻守双方、经圆桌修正)、最终期望伤害(兼看攻守双方、将几率折算为期望)、战斗轮次、战斗时间等数据。
  5、添加刷新按钮。F9刷新对于Excel老手来说不是问题,但为了便于程序、测试、以及其他策划查看,最好能够添加一个可视化的刷新按钮。添加按钮后,右键为其指定宏,通过VBA中的Calculate指令实现。
  3、属性分配
  当最大模型的属性调整完毕之后,在“属性分配”切页中,我们需要将最大模型中的所有等级成长属性,向下分拆到各个模块。
  “属性产出”一栏中,我们需要与主策划进行沟通,规划制定各个属性产出于哪些系统。非等级成长的部分,需要输入各自的上限值;随等级成长的部分,需要在下面的“成长属性分配”一栏中,指定各系统产出对应属性的权重;受到基础属性转化影响的属性,需要在“成长属性一览”一栏中,减去换算值,为属性的分配排除干扰。
  通过对权重的调节,可以联动所有养成系统中,各属性所能分得的上限。举例,50级的“外功防御”属性上限为100,经脉系统所占权重为10,总权重为50,则经脉的外功防御属性为100×10/50=20。当经脉系统的权重或总权重变化时,其外功防御属性上限也将随之动态变化。
  在分配成长属性时,要注意对应系统的属性养成方式,是否需要区分职业。其中,“定向养成”部分,为全职业玩家角色均可达到的属性上限,按权重直接分配即可;“自由养成”部分,需要根据职业特性,进行差别设计,这个地方的设计思路,我们在战斗体系中会加以讲解,暂且置后。
  4、角色系统
  角色系统,在本篇数值文档中,主要承载裸身属性、基础属性转化效果两方面内容。
  “角色”切页中,我们需要罗列出角色系统初始时的裸身属性,通过索引“属性分配”切页中的相关数据,配合自由加点,可以得出玩家在某一等级下,各个裸身属性的上限值。
  之后,我们需要规划出力道、根骨、身法、体质、元气五个基础属性所能转化的目标属性,以及各自的转化系数,从而得出转化属性的具体数值。出于设计体验角度考虑,五个基础属性彼此之间的差值不宜过大(使玩家角色看起来更像“人类”),为了突出养成系统的价值,主要的属性需要放在各个养成系统中,因此基础属性所能转化的属性,相对而言微乎其微。
  在大多数页游、手游中,为简化计算,令玩家更加易懂,通常会舍弃基础属性换算为二、三级属性的设定。本文之所以没有将其舍弃,是因为这些基础属性承载了相当程度的玩法,既作为某些武学心法和武学招式的学习限制,又对部分武学招式的伤害效果有一定的影响。总而言之,数值设计要从项目的实际需求出发。
  5、装备系统
  在“装备模板”切页中,我们需要为装备设定各个品质的属性系数,以及各部件所占的属性权重。之后,通过“属性分配”切页中的数据,可以得出装备系统分得的属性上限总和,该组数据乘以品质系数,可以得出对应品质全套装备的属性上限。再乘以各部件的属性权重,可以得出每件装备的属性。
  由于这部分的数据量过于庞大,不便于查阅,因此我们将数据部分单列至“装备数据”切页中,并辅之分组功能加以折叠。为从庞大的数据中提炼出想要查看的内容,我们添加了“装备属性查看工具”一栏,如此,输入装备的品质、等级,即可得出该条件下,全套装备各个部件的属性。
  在“装备强化”切页中,根据装备强化系统的设计思路,我们罗列出各强化等级的成功率、强化效果、强化合成消耗等内容。本游戏的强化设计思路,总结归纳如下:
  强化效果为按百分比提升原模板装备的属性;
  强化分五阶,每阶为5星,实质强化等级为25级;
  强化只能使用对应等阶的炼石,强化失败不降级;
  系统只产出一阶炼石,高阶炼石需要逐级合成;
  添加保底次数,在连续多次失败后,强化必然成功,降低玩家的挫败感。
  模型建立之后,需要通过调整强化和合成的成功率、消费数额,达到实际规划制定的感受预期。
  在“装备五行”切页中,需要罗列出装备五行系统的相关内容,设计思路总结归纳如下:
  装备五行通过金、木、水、火、土五种五行石的镶嵌来实现;
  镶嵌后,既可在攻击时产生五行伤害,又可在防御时产生相对应的五行抗性;
  只有最高伤害点数的五行元素,才会输出伤害;当某几个五行点数相同时,每次攻击时会随机一种五行效果。
  系统只产出一级五行石,高级五行石需要逐级合成;
  五行石合成的成功率 = 待消耗五行石的总能量 / 升级所需总能量;
  五行石镶嵌之后,需要将其摘取下来,才可继续合成;
  五行石的镶嵌、摘取,均有一定概率失败,可使用幸运道具进行祝福(后期开放);
  模型建立后,五行石各等级的效果数值,需要通过“属性系数”进行调节;五行石相关的经济数值,需要通过对应的镶嵌摘取的成功率、五行石能量、各项费用进行调节。
  在“装备签名”切页中,需要先行获取装备签名系统所有属性的上限,之后,为装备各部位设定相应的权重,之后再进行分拆即可。由于装备签名是一次性的行为,与装备直接绑定,不会随角色等级动态变化,因此我们可以将“额外提供模板装备X%的属性”,作为签名道具的作用。
  6、经脉系统
  经脉系统分为“十二正经”和“奇经八脉”两大部分。
  十二正经,为全民保底系统,玩家角色消耗定量的修为,可获得同等的属性提升。
  奇经八脉,为概率随机系统,玩家角色因运气的影响,彼此间的属性会产生较大差异。奇经初始成功率为100%,随着奇经层级的提高,成功率会越来越低,且冲脉失败后会降级。通过对概率的控制,可以制造出消耗的无底洞,从而使得玩家对“修为”这一货币始终有所追求。
  如“经脉”切页所示,我们先获取经脉系统所有属性的上限,然后取各等级段的属性数值,之后再将这些属性分拆成12+8组,作为十二正经和奇经八脉的节点属性。
  属性设计完毕之后,我们需要规划经脉各节点、各重数下的修为消耗量,之后,根据“货币价值”切页中修为的每日获取量,可以估算出经脉修炼到指定程度时的预计所需时间。
  7、坐骑宠物
  在本游戏中,坐骑的定位是“交通工具”和“伙伴”。在骑乘坐骑时,可以为玩家提供跑速和坐骑轻功值;在休闲环境下,坐骑是需要经常照顾的小伙伴,以巩固游戏粘性;在社交环境下,坐骑可以用来炫耀和展示。
  而宠物的定位则仅为“伙伴”,作为收藏、观赏、社交之用,同样需要玩家经常进行照顾。至于MMORPG常规概念下的宠物相关功能,在本游戏中,将通过门客系统的设计来实现。
  由于坐骑、宠物系统所承载的数值设计不多,在这里就不再赘述了。详见“坐骑”、“宠物”两个切页。
  七、战斗体系
  战斗,从数值的角度来看,就是属性、技能集合体之间的对抗。PVE是玩家角色与NPC之间的对抗,PVP是玩家角色与玩家角色之间的对抗。作为“集合体”的玩家角色和NPC,需要通过“属性”为之提供定量,通过“技能”为之提供变量。如果定量优势过大,则游戏就会呈现出数值碾压的局面,失去挑战的乐趣;如果变量优势过大,则养成体系的存在价值就会被大幅削弱,进而使产品营收受到影响。所以,在设计战斗模块时,要合理拿捏“变量”的“度”,以期玩家角色能够达到“以正合,以奇胜”的理想效果。
  请打开数值文档,打开“目录”切页,点击“战斗体系”按钮。
  1、武学心法
  武学心法在本游戏中,主要承载着各职业的属性差异化设计,玩家装配不同的武学心法,将获得不同的属性,以此实现高攻、爆发、肉盾等诸多职业的特色。
  属性差异与武学心法相关,而非直接与职业绑定,此举可以更加贴近武侠的世界观设定。例如,同样是令狐冲,兼具华山剑宗、吸星大法、独孤九剑、易筋经等诸多武功(心法),在不同时期不同地点,通过心法的更换,可以发挥出不同的战斗效果,即使脱离师门,这身本领仍会健在。
  除了影响属性之外,武学心法作还为部分武学招式的使用限制,例如“破剑式”只能在独孤九剑“总诀式”心法下才可使用。同时,切换武学心法需要较长时间的CD,避免玩家在战斗中连续多次切换心法,影响单局对战的稳定性。
  在“武学心法”切页中,我们需要设定不同心法下各属性的参数,之后,通过“属性分配”切页中的数据,获取到武学心法的总属性,再乘以各自的参数,即可得出每个心法下的全部属性。由于这部分的数据量较大,我们可以将其单列至“心法数据”切页中,并辅之分组功能加以折叠。
  为便于查阅,我们可以添加“心法属性查看”一栏,通过选择心法名称、输入等级,可以快捷的查看到相应的属性,方便进行比较、调试。
  2、 武学招式
  武学招式即技能,是本章开篇所讲的“变量”中的重要组成部分。
  武学心法会使玩家角色的属性产生差异化,使其在输出、防御、生存等方面的能力各不相同。但在相同养成状况的前提下,当我们仅以平砍进行PVP测算时,就会发现战局结果几乎不会发生太大的变化。而作为PVP网游,养成水平相同、操作水平相近、使用不同职业的两个玩家进行1V1对战,理想的胜率比应该无限相近于1,这就需要我们通过对技能的设计,去修正属性带来的影响,使之达到动态平衡的状态。
  技能的设计并不困难,借鉴、提炼、总结即可,但若想表现出鲜明的特色、制定尽可能多的组合克制策略、且达到理想的平衡性,就是非常复杂的事情了,我本身也并非技能系统的设计高手,就不在这里献丑了。
  在“武学招式”切页中,我们需要协同技能系统策划,列举出技能与数值相关的参数项,在技能设计完毕后,需要将各项参数填入表格。在之后的PVE、PVP测算环节中,可以直观的检验出各项参数设定的合理性,继而通过反复调试,得出相对合理的最终值。
  3、武学增益和秘籍
  武学增益即“Buff”,通过武学招式,可以为自身、友方或敌方,附加临时效果。
  武学秘籍即“技能修改器”,装配后,可以加强对应的武学招式。
  属性上的提升/减少,只是武学增益和武学秘籍的效果之一,其分配原理,与武学心法相似,就不再赘述,详见“武学增益”“武学秘籍”“武学数据”切页。
  至于攻速加成、攻击范围加成、按百分比提升伤害等其他效果,需要加以统一记录,并代入到PVP、PVE模型中进行反复测算和调整。由于本文成文较早,诸多因素没有考虑在内,因而这部分内容尚未纳入测算模型。
  4、武学升级
  基础武学、武学心法、武学招式,需要使用“历练”进行升级,不同的武学,难度不同,升级所需的熟练度和游戏币数量不同。
  在“武学升级”切页中,我们需要为各个等级段,设定好武学升级所需的熟练度、碎银的成长公式的参数,之后使用if函数拉表,即可得出模板武学在各个等级下的具体数值。
  使用“升级所需熟练度÷(每日获取历练值×熟练度系数×悟性)”,可以计算得出,获取足够用于升级武学所需历练的时间;
  使用“升级所需碎银÷每日碎银获取值”,可以计算得出,获取足够用于升级武学所需碎银的时间。
  武学升级模板确立之后,每新增一组武学,只需设置好“难度系数”和“耗费系数”,即可通过拉表,得出该组武学升级相关的数据。
  5、属性加载
  当各个属性养成系统的数值模型建立之后,我们需要将各个模块的属性养成情况,加载至一个统一的“属性集合体”中,便于进行之后的测算。
  属性集合体,在本游戏中,可以抽象成玩家、NPC、门客三种形态。
  玩家,需要加载所有养成模块中的属性数据;
  NPC,需要加载裸身属性、武学增益相关的数据;
  门客,在本游戏中的定位为“半个玩家”,可复用玩家角色的部分养成系统,需要加载裸身属性、经脉、装备、武学增益相关的数据。
  由三种形态的“属性集合体”,可以延伸出玩家vs玩家、玩家vs NPC、玩家vs 门客、NPC vs NPC、门客vs NPC、门客vs门客,共六种战斗模型。加载属性之后,我们便可以对属性集合体进行PVP、PVE的测算。
  在“属性加载”切页中,我们列举了玩家、NPC两类“属性集合体”的属性加载方式。至于门客部分,由于彼时该系统没有规划完毕,因此暂且搁置。
  6、PVP测算
  在“PVP测算”切页中,我们可以对玩家之间的PVP结果进行测算,用于辅助检验属性和技能设定的合理性。
  首先,我们需要在“属性加载”切页中,索引好玩家A和玩家B的属性养成情况;
  之后,输入玩家等级,通过vlookup函数,确定玩家A和玩家B的最终属性;
  再者,选择玩家A和玩家B的武学招式,输入对应的等级,索引招式的各项参数;
  其后,建立命中判定圆桌和计算辅助数据区,便于查看每次攻击的详细情况;
  最后,通过战斗公式建立测算工具,使用VBA模拟战斗过程(VBA代码详见数值文档)。
  制作血条的方法(Excel 2007):
  1、选择空白单元格(上下左右均为空白单元格),新建条形图;
  2、右键点击新建的图标区域,点击“选择数据”菜单项,选择血量百分比的单元格;
  3、左键点击坐标轴,在右键菜单中点击“设置坐标轴格式”选项;
  4、将坐标轴的最大值设置为“1”;
  5、删除坐标轴,横、纵坐标数据,以及图例标识,如下所示。
  6、拖拽数据区域周边,将其拉满至整个绘图区。
  7、在蓝色条形区域中点击“设置数据系列格式”菜单项,将分类间距设置为0
  8、将图表拖拽缩小至指定大小。
  9、选中图表,在“图表工具-设计”一栏中,可以修改图表的样式。
  10、最终效果如下。
  7、NPC设计
  通过对PVP的反复测算和调试,在玩家角色模型中,我们可以得到一套相对合理的属性和技能参数。之后,以玩家角色模型为参考,即可得出各个强度NPC的数值模型。
  “NPC属性”切页中,我们将所有战斗相关的属性罗列出来,每新增一种强度的NPC,就需要输入一组相对于玩家角色模型的属性系数。
  系数输入完毕之后,在“NPC数据”切页中,以标准NPC模型的属性,和各强度NPC的各个系数相乘,即可得出各强度NPC的所有属性。再返回“NPC属性”切页,通过辅助工具,可以直观的查看、比较各强度NPC在不同等级下的属性情况。
  8、PVE测算
  NPC设计完毕之后,我们需要对NPC各参数的合理性进行测算。
  如“PVE测算”切页所示。我们将PVE测算分为“玩家VS NPC”和“NPC VS NPC”两组,建模步骤与PVP测算基本一致,在这里就不再重复说明了。
  9、门客系统
  门客在本游戏中,定位与暗黑2的佣兵大体相似,但玩法和养成深度却大幅增强。玩家可以永久获得或临时雇佣门客,辅助自己进行PVE、PVP作战,或在闲暇休息时间,与门客进行各种互动。
  由于该系统设计文档,因本人时间安排的原因已被无限期推迟,因此“门客系统”切页中的相关内容暂且放缓。
  八、建模结语
  写到这里,数值模型的最外侧的框架算是基本完成,但离投入实际应用还有很长的一段路程要走。正如同刚刚建成的毛坯房,起重机还没有开走、高楼的外墙还没有贴砖、电梯和窗户还没有安装,而项目对我们的要求,却是舒服的入住。
  模型草创之后,我们需要填入几版临时数值,经测算没有发现重大问题之后,便可以与主策、程序开会讨论,制定数据结构并投入研发。
  此后,我们需要无限穿梭于游戏项目和数据表格之间,对各项参数的合理性进行反复调试,以期最终达到相对完美的数值感受,这个阶段,对于大中型MMORPG来说,少至数月,多者,可达数年之久。
  完美的数值感受,是数值策划工作的终极目标,而数值模型的建立,能够帮助我们有条不紊的快速向前,否则,面对茫茫数字之海,等待我们的,或许大多只有沉溺的结局。
  关于数值建模,我想在这里再提一下:如果我们不能接手全部的数值执行和数值测试的工作,最好能够形成一份高度可视化的文档,作为执行和测试的依据,否则,执行的人看不懂填错了数,测试的人看不懂将错误漏到了外网&&我想,各个公司,总会有大致的责罚吧。
  其实说实话,Excel文档,当时我用了大概两周晚上的时间就基本搞定;但写这篇说明文档,就用了不止两个月,当然,除了不知道写些什么、该怎么写、以及咬文嚼字耽误了很多时间之外,中途也算是被各种其他事情打断吧,这个过程对我来说,是非常痛苦的。但良好的习惯,从来就不是轻轻松松就能练成的,想到这里,于是心安。
  九、本文结语
  其实相对数值来说,我本人更喜欢研究各个网游和单机游戏的系统设计,并在业余时间鼓捣出了很多系统设计文档(例如“附件一”简单几笔带过的战斗系统),希望有一天能够做出心目中最完美的游戏。后来分心研究数值,多半是出于自身发展的角度来考虑,毕竟在一个并不鼓励创新的大环境下,“换皮系统”和“换皮数值”的身价,要差上很多。
  当时半夜不玩不睡、集中全部精力凝聚而成的数值模型,曾经自我感觉无限良好。但回首一年再望,只稍加端详,就在不经意间就发现了许多槽点,完美洁癖使然。但眼下,本人实在是抽不出时间对其进行修改了。
  之所以将本文发布于网上,一是希望能够结识更多行业内外的朋友,二是希望能够得到各位业内高手对本文的指点,希望大家不吝赐教。
  最后,祝愿大家的项目都会有一个好的收成!
  原文链接:http://www.youxituoluo.com/98655.html
  游戏陀螺:关注“泛游戏”产业,为游戏创业者服务是游戏陀螺的理念和口号,内容已涉及移动游戏,H5游戏,电视游戏、AR/VR游戏,智能硬件和第三方服务等游戏相关领域。
  欢迎关注游戏陀螺旗下官方微信号
  游戏陀螺:shouyoushouce
  游戏陀螺海外:youxituoluo
(责任编辑:刘鹏)
&&&&&&</div
网络视频正在成为一块炙手可热的蛋糕...[]
客服热线:86-10-
客服邮箱:

我要回帖

更多关于 修改游戏数值在变化 的文章

 

随机推荐