一、建系 1、名词定义 建立【名词定义表】,约定游戏中出现所有名词的定义、曾用名,可以有效降低游戏开发过程中的沟通成本。 2、编号规则 建立【编号规则表】,约定游戏中出现所有装备、角色、怪物、
.
一、建系
1、名词定义
建立【名词定义表】,约定游戏中出现所有名词的定义、曾用名,可以有效降低游戏开发过程中的沟通成本。
2、编号规则
建立【编号规则表】,约定游戏中出现所有装备、角色、怪物、关卡等需要大量编号的ID编号规则的规划。
3、数据表
建立【数据表】,枚举游戏中可能出现的所有数据类型的定义。
(玩家的整个游戏过程,其实就是我们通过定义的数据类型之间的相互计算,生成新的数据)
1)角色数据
a)一级属性
数据名(力智体敏)、数据类型、取值上限、备注。
b)二级属性
数据名(攻击防御血量)、数据类型、取值上限、备注。
c)其他属性
数据名(战力、经验、声望等)、数据类型、取值上限、备注。
d)经济属性
数据名(金币银币钻石等)、数据类型、取值上限、备注。
2)装备数据
同上。
3)其他数据
同上。
3、计算公式约定
建立【公式表】,约定以下规则:
a)运算原则
i)累乘与连乘
累乘是先相加再相乘,连乘是直接连续相乘。
ii)数据结构
这里是各种计算公式中关于数据来源的的计算模型,皆遵循以下规则:

iii)各属性的来源约定
游戏中所有计算公式中用到的各数据的来源的约定与规划。经过规划后,我们将清楚地知道每个地方的数据改变将对最终战斗结果产生什么样的影响。
比如攻击力的来源约定:

b)伤害公式
按照上述约定,再次清楚地表述每个属性之间的运算关系,比如:
依据攻击力的来源约定,获得攻击力
第一步:攻击力*技能攻击力乘法修正+技能攻击力加法修正=技能攻击力
第二步:技能攻击力*100/(100+敌方防御力)=敌方HP损失
. 常用的伤害公式形式及其缺点:一、减法公式
减法公式最大的好处就是可以无限制的做长线成长,但是也有很多问题:
1、成长问题
攻击-防御=损血
成长过程中,战斗节奏失衡
攻击=防御+损血
左侧是攻击方属性,右边是防御方属性,所以攻击方一个数据,防御方两个数据会失衡但是这个可以调,需要精心调整战斗节奏。
2、破防问题
攻击没防御高的时候不破防。
3、定位不到玩家的能力线
攻击上升一定比例,伤害上升不同比。
无法根据某个属性线的上升推断玩家成长线的情况。
比如30级时攻击的范围为【100,1000】30级时防御的范围为【10,2000】这种东西就很无解,伤害战斗节奏怎么算?
不过现在的很多手游里没有玩家之间的强pvp,这一点问题没有某些端游里那么突出。
二、乘除法公式
1、比例数的封闭性
攻击*(1-防御率)=损血
防御率是一个比例数,是一个封闭数据,无法无限成长。
有种取巧的办法是,防御率=1/(防御力+1),营造一个函数,让防御力一直成长下去。
但是玩家不傻,玩家还是能感知到防御率是没成长的。
2、不好做长线成长
乘法公式到后期,如果想做长线成长,各项属性的值域会非常非常大(例如D3/DNF都是动不动就几万亿)。
我现在更喜欢用乘除法公式,一般在用乘除法公式做属性投放的时候,我会注意以下几点:
1、一一对应(至少是多对一)
公式里的每一个参数,只能作用于一个结果。
2、左右对称
即EDPS=EHP,这样可以让攻防双方的属性都在成长。
于是很多策划下意识的做成:
2*攻击力=防御力+损血
攻击力^2/防御力=损血(但是这个攻击力太猛)
于是 攻击力^2/(防御力+攻击力)=损血
但是又不等式两边不对称了(天龙八部的公式)
综上,我现在用攻击攻击*修正*防御率=损血,即攻击*攻击修正=1/防御率*损血
其中,攻击与血量是可以无限成长的值,可以做到左右对称。
攻击修正为技能系数/暴击加成等对攻击力的加成,取值范围大概在【1,10】左右。
防御率的取值范围大概在【0.1,1】,即1/防御率的范围也是【1,10】。
所以只要攻防属性合理投放,是可以保证等式两边属性一起成长的
(其实这就是暗黑三数值的设计的原则)
.c)命中、暴击等概率公式
与伤害公式类似,首先需要清楚地表述每个属性之间的运算关系。
(注:判定的次序一般用瀑布算法就行)
. 瀑布算法:按照给定的优先级,依次进行是否命中/是否暴击/具体伤害的计算一般来说命中、暴击等概率公式有以下几种计算形式:
没有公式
即直接投放命中率、暴击率。
减法公式
比如:实际命中概率=攻方命中概率-防方闪避概率。
相对上面那个来讲,这样做一下减法首先就使得闪避这个属性变得可控,其次,由于减法的存在,闪避/命中的投放是可以突破100%的,给了游戏投放更多空间。
但是在这个公式中,当命中小于闪避或者命中大于闪避+100%时,堆命中属性就失去了意义,因此游戏每个等级实际的数值投放必须严格控制。
除法公式
命中率=命中/(命中+闪避)
这里的命中/闪避其实是命中力/闪避力,这个公式相对上面来说更难理解,但是也解决了上面公式存在的问题——在这个公式中,属性的投放在理论上是不存在上限的,这为游戏后续的更新留了余地。这个公式最重要的两个特点时:
1. 属性达到一定数值时,边际效应变得非常明显,但不会完全无效。
2. 前期每增加一点属性会带来大量的提升。当希望在前期通过数值的刺激来促进玩家消费时,可以考虑一下这个公式。
等级除法公式
相对上面的除法公式,这个公式把玩家等级纳入了参数。
命中率=A*命中等级/(命中等级+B*人物等级+C)
这个公式最明显的特色就是,同样的属性值会随着玩家的升级不断贬值(但是这种公式实际的体验很不友好,崩坏三就是用的这个公式,天天被玩家骂)。
. . 现在我更倾向于不做命中的概率公式了,原因如下:目前我们的项目中,决定战斗结果的可以抽象为以下三条线:
1、命中线
2、出手速度线
3、基础战斗属性线
现在遇到的问题是,玩家无法在游戏过程中认知到应该优先追求哪条线,对战斗加值的认知产生了错乱。
比如我的一个宝石槽位,可以镶嵌命中率/出手速度/攻击力,我很难去做选择。
以后我做战斗的话,我会砍掉命中线。
因为它扰乱价值体系,并且战斗感受为负,命中无正面感受,未命中感受极差。
并且把剩下的速度和战斗线区分开速度作为一种稀缺属性去投放,玩家能明显感觉到速度最牛逼,并去追求然后再去追求暴击/暴击伤害然后再去培养战斗属性。
(其实这也是暗黑三的战斗数值设计思路。。我只能说暴雪确实厉害)
.二、描点
描点即为确定一个标准人的属性比例,属性比例的确定依据取决于我们期望的战斗节奏。
比如我们期望,在1~100级中,两个同等级标准人互砍的战斗节奏为10S结束战斗,则1~100级每一级的ehp/edps=10。
那么我们得到了各等级各属性之间的比例关系。
. 战斗节奏取决于游戏类型,即我们想给玩家什么样的战斗体验,一般来说RPG都是个位数刀数,ACT游戏(比如怪猎)都是几十刀,十数分钟的战斗时长。 .三、画线
确立标准人各属性的成长线的斜率。
各属性的累加,我们将之抽象为【战斗能力】。
. 【战斗能力】可以理解为EDPS*EHP,在乘法公式中存在可计算的绝对【战斗能力】。【战斗能力】成长曲线的斜率由我们期望X级的人打X-N级的人,跟X级打X级的人有多大差别。
即X-N级成长到X级,战斗力数值涨了多少,战斗节奏发生了什么样的变化,有没有质变
(我手残打不过你,我升个级涨了属性再来砍你)
此时我们将获得玩家1~100级时,每一级各属性的比例。以及1~100级各属性每级的成长比例。只需要约定一级的某个属性的具体值(定义值),即可获得玩家1~100级的各属性的具体值(推导值)。

注:玩家的能力由两部分相乘获得,即edps×ehp,接下来对这两者分别进行讨论:
edps的构成:
edps=攻击力×暴击修正×技能修正……
其中各部分的成长曲线一般如下图所示:


这个问题其实很好,我们要搞清楚,玩家的成长感的本质是什么?
对于玩家来说,玩家对成长感的感受主要体现在以下几个方面:
1、我的属性有没有成长?
如果有就有成长感。但是具体成长了多少玩家很难有直观的感受,需要在战斗过程中去获得直观感受。
2、我一刀多砍了多少伤害?
即我的edps有了多少的提升。即暴击率虽然后期涨不动了,但是随着攻击-暴击率-暴击伤害-技能伤害等等属性的增长,玩家的edps始终在提升。基于上述曲线的成长率,我们可以画出edps的成长曲线。
.
这一点就是我们讨论过的数值成长的本质,即【战斗能力】=EDPS×EHP的成长,其成长曲线的斜率由我们期望X级的人打X-N级的人,跟X级打X级的人有多大差别。不过一般来说,玩家更关心edps的成长,因为edps的成长可以有效缩短玩家的战斗时间,即所谓的刷怪更快。
.ehp的讨论与之类似。
于是,我们获得了玩家每一级的每个属性的期望值。
接下来,再按照我们对各种培养系统的定位,将对应的属性值按照各自的比例横向分配到各培养系统中。然后再在每个培养系统中做纵向的拆分,获得每个系统每个培养等级的属性值。
. 在进行属性拆分的时候需要注意的点:有几个设计会影响同一个属性?
比如基础的属性设计分配。
有几个设计可能会影响同一个属性?
比如装备关键字等随机的。
有几个设计玩家可以设置为影响同一个属性?
比如玩家全带生命宝石。
.四、成面
考虑不同类型玩家的成长线,得到玩家的能力区间(阴影部分)。
. 注1:不同类型玩家的属性差异一般由付费引起,其差异的大小取决于我们期望同级的R可以锤几个同级的非R。注2:玩家的划分会更精细,比如非R、小R、中R、大R……但他们的能力总会在我们的规划范围之内。
.
引入怪物能力线,制作怪物数值。
如果决定一场战斗的胜负,由战前数值与战前战中策略决定的话,战前战中策略的比值不小时(比如ACT游戏),当正常来说标准怪物的能力线应该是这样的:

具体来说,某个等级怪物的数值的由该等级玩家的战斗能力和我们预期的战斗体验决定。
. 预期的战斗体验主要有以下几个参数:1、战斗时长
决定了战斗时间会持续多久,不同类型的游戏有不同的设计(比如现在的卡牌手游是一组怪10~30秒的量级,怪猎这种端游10~30分钟的量级),由战斗时长/玩家的EDPS可以求出对应等级怪物的EHP。
2、给玩家造成的损血量
这个决定了玩家的战斗压力有多大。由预期损血量/玩家EHP可以求出对应等级怪物的EDPS。 .
另外,为了战斗体验的多变性,同级怪物分不同品质,按比例获得不同的能力强度:

由此,我们可以获得各等级各品质的怪物数值,这些怪物会在之后制作关卡时被填进相应等级的关卡中。
往期精选
Unity3D游戏开发中100+效果的实现和源码大全 - 收藏起来肯定用得着
Shader学习应该如何切入?
喵的Unity游戏开发之路 - 从入门到精通的学习线路和全教程
声明:发布此文是出于传递更多知识以供交流学习之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与我们联系,我们将及时更正、删除,谢谢。
作者:良湘加速器
原文:https://zhuanlan.zhihu.com/p/57617471
More:【微信公众号】 u3dnotes
本文分享自微信公众号 - Unity3D游戏开发精华教程干货(u3dnotes)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。