如何从0到1用Excel实现数值设计?
前言
经常有小伙伴说自己不是数值策划,又很希望能够试着做一些数值设计。数值文章也看了许多,道理几乎都懂,但有些不知从何下手。这里想通过视频的方式,分享具体如何使用Excel实现数值设计,包括Excel函数的运用,简单的VBA代码书写,以及MMORPG游戏的数值从0到1的制作全过程。这个系列会分为多篇文章来写,本篇的内容是《职业数值设计》。
二、角色基础模型设计
必须做出的预设
(1)设定游戏的角色等级(如果游戏有等级概念):假设为30级;
(2)站桩输出pvp的时间:假设为20秒。
角色基础模型的制作(写在前面的期望)
(1)伤害值初始数值是两位数;
(2)希望每成长一级等级,玩家的攻击、防御、伤害值都有成长;
(3)技能伤害百分比成长缓慢;
(4)技能数值成长相对正常;
(5)两个角色裸体对砍20秒。
一段简单的角色数值模型
(1)攻防公式(此公式只作为演示,实际以游戏需要为准):
(攻击-防御)*(1+技能伤害百分比)+技能数值
(2)运用到的公式(y=ax+b的一元一次函数):
攻击=参数1*(等级-1)+参数2
(3)运用到的Excel使用函数:Round(),对带小数点的数值进行取整。
具体的操作视频如下:
https://v.qq.com/txp/iframe/player.html?vid=m07347yfnkx&width=500&height=375&auto=0
视频中提到的第二种模型
根据经验和其他游戏的总结确定各数值投放比,简称投放比数值模型,在PVP竞技场时,对玩家的攻防血再进行数值修正。
假设,攻击:防御:血量 =1:X:Y,数值模型如下:
三、职业数值设计
几乎所有的RPG网游都有职业设定,对职业数值进行差异化设计。与此同时,除攻击、防御、血量二级属性外,也加入了如力量、敏捷、智力、体力等一级属性等概念,丰富游戏数值内容。其中,职业的差异化设计更多的是由技能设计体现,职业的属性数值差异化是锦上添花。
预设
(1)假定游戏有三个职业,战士、法师、盗贼。
(2)假设游戏包含:
一级属性:力量、智力、敏捷、体力。
二级属性:攻击、防御、暴击、血量、魔法。
确定各职业的属性关系
力量:影响战士的攻击、全部职业的生命(影响系数不同)。
智力:影响法师的攻击、全部职业的魔法上限(影响系数不同)。
敏捷:影响盗贼的攻击、全部职业的暴击等级,暴击等级可以转换为暴击率(影响系数不同)。
体力:影响全部职业的生命值(影响系数不同)。
属性设计思路
A.用攻击来决定每种职业追求哪种一级属性。
由于各职业需要有属性差异,过于复杂的属性结构不宜理解,所以采用了每个职业有一个主属性,主属性影响每个职业的攻击力,让玩家追求属性时能够抓住重点,有的放矢。尽量避免一个二级属性被多个一级属性影响,这样的设计也更容易把控。
B.遵循大家都一样的原则,是最简单直接的平衡性模型。
每个职业除攻击和通用一级属性外,被一级属性影响的数量一定相同。如,战士的力量只影响除攻击外的一个防御属性,智力只影响一个魔法上限,敏捷只影响一个暴击等级,体质是通用属性,可以适量影响多条属性。
基于以上,建立一个职业属性关系表:
各职业的属性数值设计
(1)以基础角色数值模型为原型,乘以各种系数变形出只有二级属性的各职业角色数值模型,以下是各职业详细数值。
(点击上图,可放大查看)
https://v.qq.com/txp/iframe/player.html?vid=i0734hpukkp&width=500&height=375&auto=0
(2)反推各职业的一级属性
很多情况下,属性面板是不会直接显示攻击、防御这些属性,只会显示力量、智力、敏捷、体质这些属性,用比较简单的乘除法就可以转换这些属性。
1点力量=1.5点战士攻击力、全职业防御(战士0.55,盗贼0.5,法师0.49)
1点智力=1.5点法师攻击力、全职业魔法值(职业不同系数也不同,魔法值的设定主要与技能循环有关,暂不在本文体现)
1点敏捷=1.5点盗贼攻击力、全职业暴击等级(职业不同系数也不同,敏捷转化为暴击等级与其他属性类似的方式就可以解决)
其中暴击等级需要通过特定公式转换为暴击率,在后面具体写出计算方法。
1点体力=全职业生命(战士90,盗贼80,法师77)
以下是已经调整好的一级属性数值:
https://v.qq.com/txp/iframe/player.html?vid=i0734hpukkp&width=500&height=375&auto=0
(3)使用(2)换算过的各属性转换系数,重新梳理各职业最终的二级属性及战斗节奏,进行数值校验。
战斗节奏与最初设计的基础模型可能存在偏差(标红处),但对于整体来说影响不大,可以忽略。
通过一级属性转换的防御、血量,一定和原来的预设是不一样的,所以我们需要做反验算和验证的过程,我们先把力量、敏捷、智力这些一级属性分别链接到二级属性表里各个职业对应的位置,使用“=”号即可。然后计算实际的二级属性,攻击是用力量乘以攻击系数,防御就是乘以防御系数,血量就是乘以血量系数,得到各个职业的攻击、防御和血量之后,用伤害与各个职业的血量进行对比,得出战斗时长。
我做了一个小小的预设,希望1V1的时候,战士能稍稍领先盗贼,盗贼能稍稍领先法师,那么战士打盗贼的时长要比盗贼打战士的时长要短,要能更快打死对方,我的系数调整之后,基本是符合预期的。
如果我们在验证的过程中,数值有偏差怎么办?要么就提升战士的攻击力,要么减少盗贼的血量,通过系数来调整。
暴击率计算
角色裸装暴击率控制在0%~3%左右比较保险。
(1)暗黑三式的暴击率计算
各种“率”的上限为100%,一般RPG网游成长周期比较久,投放百分之零点几又会被觉得太奇怪,一般都需要通过“暴击等级”、“致命”等这些中间值进行转换。
暗黑3的计算方式如下(我们可以把暗黑三的敏捷改为暴击等级,思路是一样的):
假设:玩家有600敏捷。
100 * 0.1% = 10.00% (0-100敏捷区间)
400 * 0.025%= 10.00% (100-500敏捷区间)
100 * 0.02%= 2.00% (500-1000敏捷区间)
敏捷提供的闪避总计:
(10.00%+10.00%+2.00%)= 22%
(2)DNF给出的另一个思路
DNF的伤害计算中,黄字和爆伤取的是所有装备中的最大值,这种计算方式是否可以用作游戏中的暴击率计算,也是可以来考虑考虑的事情。
小结:
当暴击率达到40%,给玩家的直观感受接近刀刀暴击/闪避,暴击是危险属性,需谨慎投放。可以通过“捆绑”投放(暴击和暴击抵抗同步投放)、边际效益递减(暗黑三闪避率计算)的方式投放。
四、结语
总而言之,研发阶段的数值设计是一个不断的拍脑门、反推、调整、重新计算、测试、再调整的过程,看似比较烦碎,但在不断的实践以及玩家的测试验证,都可以总结出适合自己习惯使用的数值方法论。
作者suelin系腾讯互动娱乐高级游戏策划
▼点击查看更多游戏干货内容